Skip site navigation (1)Skip section navigation (2)


| raw e-mail | index | archive | help
diff --git a/contrib/bc/LICENSE.md b/contrib/bc/LICENSE.md
index c8f6758e6d4b..e5d44dee6dab 100644
--- a/contrib/bc/LICENSE.md
+++ b/contrib/bc/LICENSE.md
@@ -1,6 +1,6 @@
 # License
 
-Copyright (c) 2018-2024 Gavin D. Howard <gavin@gavinhoward.com>
+Copyright (c) 2018-2025 Gavin D. Howard <gavin@gavinhoward.com>
 
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:
@@ -60,7 +60,7 @@ The files `src/rand.c` and `include/rand.h` are under the following copyrights
 and license:
 
 Copyright (c) 2014-2017 Melissa O'Neill and PCG Project contributors<br>
-Copyright (c) 2018-2024 Gavin D. Howard <gavin@gavinhoward.com>
+Copyright (c) 2018-2025 Gavin D. Howard <gavin@gavinhoward.com>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/contrib/bc/MAINTENANCE-TERMS.md b/contrib/bc/MAINTENANCE-TERMS.md
new file mode 100644
index 000000000000..ef24202cc6c2
--- /dev/null
+++ b/contrib/bc/MAINTENANCE-TERMS.md
@@ -0,0 +1,80 @@
+# Maintenance Terms
+
+> Last Updated: 27 June 2025
+
+The code, text, and other materials in this repository are provided as-is under
+the terms of the repository's [`LICENSE.md`][0] file, as a gift to the commons
+and the common good. In providing this software as-is, its author(s) admit no
+further obligations from anyone using the software for any reason, particularly
+with respect to:
+
+* Releases,
+* Response time,
+* Change review and integration,
+* Disclosure schedules,
+* Discretionary, proprietary or otherwise secretive communications, and
+* Any other non-contractual obligations or conventions, regardless of their
+  presumed urgency or severity.
+
+Should anyone wish to make a contract with me (Gavin Howard) to ensure that work
+he or she deems critical gets done, the terms are as follows:
+
+* Compute time will be charged at \$25/hr.
+* My time will be charged at \$100/hr.
+* All issues deemed critical by either me or the requester, that also change the
+  source code (anything in `gen`, `include`, or `src`) will require at least two
+  weeks of fuzzing without error.
+	* If errors are found, those hours will still be charged on top of the final
+	  two weeks.
+* All changes will require running the [release script][2] on Linux (GCC), Linux
+  (Clang), FreeBSD, OpenBSD, macOS, Windows.
+* Any hours spent on bugs or code that have been, or are suspected to have been,
+  generated by "AI" will be charged double rates.
+
+Compute time includes, but is not limited to:
+
+* Fuzzing.
+* Running my [release script][2].
+* Running tests and my [release script][2] on macOS.
+
+My time includes, but is not limited to:
+
+* Code review.
+* Reading bug reports.
+* Design.
+* Coding.
+* Any compute time that interferes with my ability to do any other work:
+	* Fuzzing makes my computer unusable, so fuzzing for the 8-12 hours of the
+	  day that I could be working will be charged at \$100/hr.
+	* Same with running my [release script][2] because I run two instances on my
+	  machine and two in VMs at the same time.
+	* Running my [release script][2] or any other compute time on Windows
+	  because Windows blocks me from doing my main work on Linux.
+	* Any other instances of blocking compute time.
+
+All amounts will be billed by, and paid to, [Yzena, LLC][2]. Invoices will be
+provided, including line items for what each hour was spent on.
+
+It is suggested that the following amounts be budgeted:
+
+* At least \$3000 for a non-critical issue or change.
+
+  The release script takes about 10 hours, and I would need to run it once on
+  Linux (and others at the same time) and once on Windows, which is 20 hours.
+  Most of that won't be at the \$100/hr rate, but some probably will be. Then
+  an extra \$1000 for other work.
+
+* At least \$15,000 for a critical issue or change.
+
+  The \$3000 above is the start, which leaves \$12,000. Fuzzing is expected to
+  cost \$11,400 (6 days a week, 8 hours a day, at \$100, the rest at \$25), and
+  rounded up to \$12,000 for good measure.
+
+---
+
+This document is inspired by [Mike Hoye's Maintenance Terms][1].
+
+[0]: LICENSE.md
+[1]: https://github.com/mhoye/maintenance-terms
+[2]: scripts/release.sh
+[3]: https://yzena.com/
diff --git a/contrib/bc/Makefile.in b/contrib/bc/Makefile.in
index c63dc242e79a..f8b120c1328e 100644
--- a/contrib/bc/Makefile.in
+++ b/contrib/bc/Makefile.in
@@ -1,7 +1,7 @@
 #
 # SPDX-License-Identifier: BSD-2-Clause
 #
-# Copyright (c) 2018-2024 Gavin D. Howard and contributors.
+# Copyright (c) 2018-2025 Gavin D. Howard and contributors.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -38,6 +38,8 @@ GENDIR = $(ROOTDIR)/gen
 
 BUILDDIR = %%BUILDDIR%%
 
+VERSION = %%VERSION%%
+
 SRC = %%SRC%%
 OBJ = %%OBJ%%
 GCDA = %%GCDA%%
@@ -99,17 +101,16 @@ BC_FUZZER_C = $(BIN)/$(BC)_fuzzer_C
 DC_FUZZER = $(BIN)/$(DC)_fuzzer_c
 DC_FUZZER_C = $(BIN)/$(DC)_fuzzer_C
 
-BC_TEST_OUTPUTS = tests/bc_outputs
 BC_FUZZ_OUTPUTS = tests/fuzzing/bc_outputs1 tests/fuzzing/bc_outputs2 tests/fuzzing/bc_outputs3
-DC_TEST_OUTPUTS = tests/dc_outputs
 DC_FUZZ_OUTPUTS = tests/fuzzing/dc_outputs
 
 LIB = libbcl
 LIB_NAME = $(LIB).a
 LIBBC = $(BIN)/$(LIB_NAME)
 BCL = bcl
-BCL_TEST = $(BIN)/$(BCL)
-BCL_TEST_C = $(TESTSDIR)/$(BCL).c
+
+GENERATE_TESTS = %%GENERATE_TESTS%%
+PROBLEMATIC_TESTS = %%PROBLEMATIC_TESTS%%
 
 MANUALS = manuals
 BC_MANPAGE_NAME = $(EXEC_PREFIX)$(BC)$(EXEC_SUFFIX).1
@@ -152,11 +153,11 @@ BC_ENABLE_EXTRA_MATH = %%EXTRA_MATH%%
 BC_ENABLE_NLS = %%NLS%%
 BC_EXCLUDE_EXTRA_MATH = %%EXCLUDE_EXTRA_MATH%%
 
-BC_ENABLE_AFL = %%FUZZ%%
-BC_ENABLE_OSSFUZZ = %%OSSFUZZ%%
-BC_ENABLE_MEMCHECK = %%MEMCHECK%%
+BC_ENABLE_AFL = 0
+BC_ENABLE_OSSFUZZ = 0
+BC_ENABLE_MEMCHECK = 0
 
-LIB_FUZZING_ENGINE = %%LIB_FUZZING_ENGINE%%
+LIB_FUZZING_ENGINE = 0
 
 BC_DEFAULT_BANNER = %%BC_DEFAULT_BANNER%%
 BC_DEFAULT_SIGINT_RESET = %%BC_DEFAULT_SIGINT_RESET%%
@@ -189,10 +190,6 @@ KARATSUBA = $(SCRIPTSDIR)/karatsuba.py
 LOCALE_INSTALL = $(SCRIPTSDIR)/locale_install.sh
 LOCALE_UNINSTALL = $(SCRIPTSDIR)/locale_uninstall.sh
 
-VALGRIND_ARGS = --error-exitcode=100 --leak-check=full --show-leak-kinds=all --errors-for-leak-kinds=all
-
-TEST_STARS = ***********************************************************************
-
 BC_NUM_KARATSUBA_LEN = %%KARATSUBA_LEN%%
 
 BC_DEFS0 = -DBC_DEFAULT_BANNER=$(BC_DEFAULT_BANNER)
@@ -218,7 +215,7 @@ CPPFLAGS6 = $(CPPFLAGS5) -DBC_ENABLE_NLS=$(BC_ENABLE_NLS)
 CPPFLAGS7 = $(CPPFLAGS6) -D$(BC_ENABLE_EXTRA_MATH_NAME)=$(BC_ENABLE_EXTRA_MATH)
 CPPFLAGS8 = $(CPPFLAGS7) -DBC_ENABLE_HISTORY=$(BC_ENABLE_HISTORY) -DBC_ENABLE_LIBRARY=$(BC_ENABLE_LIBRARY)
 CPPFLAGS9 = $(CPPFLAGS8) -DBC_ENABLE_MEMCHECK=$(BC_ENABLE_MEMCHECK) -DBC_ENABLE_AFL=$(BC_ENABLE_AFL)
-CPPFLAGS = $(CPPFLAGS9) -DBC_ENABLE_OSSFUZZ=$(BC_ENABLE_OSSFUZZ)
+CPPFLAGS = -DVERSION=$(VERSION) $(CPPFLAGS9) -DBC_ENABLE_OSSFUZZ=$(BC_ENABLE_OSSFUZZ)
 CFLAGS = $(CPPFLAGS) $(BC_DEFS) $(DC_DEFS) %%CPPFLAGS%% %%CFLAGS%%
 LDFLAGS = %%LDFLAGS%%
 
@@ -293,236 +290,10 @@ help:
 	@printf '    check           alias for `make test`\n'
 	@printf '    clean           removes all build files\n'
 	@printf '    clean_config    removes all build files as well as the generated Makefile\n'
-	@printf '    clean_tests     removes all build files, the generated Makefile,\n'
-	@printf '                    and generated tests\n'
 	@printf '    install         installs binaries to "%s%s"\n' "$(DESTDIR)" "$(BINDIR)"
 	@printf '                    and (if enabled) manpages to "%s%s"\n' "$(DESTDIR)" "$(MAN1DIR)"
-	@printf '    karatsuba       runs the karatsuba script (requires Python 3)\n'
-	@printf '    karatsuba_test  runs the karatsuba script while running tests\n'
-	@printf '                    (requires Python 3)\n'
 	@printf '    uninstall       uninstalls binaries from "%s%s"\n' "$(DESTDIR)" "$(BINDIR)"
 	@printf '                    and (if enabled) manpages from "%s%s"\n' "$(DESTDIR)" "$(MAN1DIR)"
-	@printf '    test            runs the test suite\n'
-	@printf '    test_bc         runs the bc test suite, if bc has been built\n'
-	@printf '    test_dc         runs the dc test suite, if dc has been built\n'
-	@printf '    time_test       runs the test suite, displaying times for some things\n'
-	@printf '    time_test_bc    runs the bc test suite, displaying times for some things\n'
-	@printf '    time_test_dc    runs the dc test suite, displaying times for some things\n'
-	@printf '    timeconst       runs the test on the Linux timeconst.bc script,\n'
-	@printf '                    if it exists and bc has been built\n'
-
-run_all_tests: bc_all_tests timeconst_all_tests dc_all_tests
-
-run_all_tests_np: bc_all_tests_np timeconst_all_tests dc_all_tests_np
-
-bc_all_tests:
-	%%BC_ALL_TESTS%%
-
-bc_all_tests_np:
-	%%BC_ALL_TESTS_NP%%
-
-timeconst_all_tests:
-	%%TIMECONST_ALL_TESTS%%
-
-dc_all_tests:
-	%%DC_ALL_TESTS%%
-
-dc_all_tests_np:
-	%%DC_ALL_TESTS_NP%%
-
-history_all_tests:
-	%%HISTORY_TESTS%%
-
-check: test
-
-test: %%TESTS%%
-
-test_bc: test_bc_header test_bc_tests test_bc_scripts test_bc_errors test_bc_stdin test_bc_read test_bc_other
-	@printf '\nAll bc tests passed.\n\n$(TEST_STARS)\n'
-
-test_bc_tests:%%BC_TESTS%%
-
-test_bc_scripts:%%BC_SCRIPT_TESTS%%
-
-test_bc_stdin:
-	@export BC_TEST_OUTPUT_DIR="$(BUILDDIR)/tests"; sh $(TESTSDIR)/stdin.sh bc %%BC_TEST_EXEC%%
*** 37551 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?>