| 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?>