opkbuild version 4.0.0 ---------------------- Released: 2019-03-18 This is a major new release of opkbuild. Major user-facing changes include xz decompression and binary package substitution variables. There are also many behind-the-scenes improvements to code quality, safety, and test suite coverage. Trivia: Since opkbuild was part of opkhelper in versions up to and including the incomplete and unreleased 2.0.0, and since version 3.0.0 never officially left "beta" status, version 4.0.0 is technically the first released version of opkbuild in its seven-year history. Utilities: * ob-unpacksource now supports decompression of xz-compressed upstream archives. * ob-gencontrol now substitutes variables from ".substvars" files in the build work area, enabling new use cases such as automatic shared library dependencies. * ob-applypatches now tracks and skips applied patches, instead of re-running the patch command and throwing an error. * Manual pages for all utilities have been updated/written and are now built and installed for the first time since opkhelper 1.0.0. * Utilities can now be run in-place without installation by setting libopkbuild's OB_LIB_BUILDDIR and OB_EXE_BUILDDIR environment variables to the "locale" directory in the build directory. * All utilities except ob-checkbuilddeps and ob-installplatconf are now covered by the test suite. libopkbuild: * libopkbuild's "shared object version" has been bumped to 2 to reflect a new incompatible API. * libopkbuild now aborts the program, instead of just returning 125 if any function is called with missing arguments. * The following functions have been removed from the libopkbuild API: - ob_match_arch() -- use ob_arch_is_concerned() instead - ob_match_plat() -- use ob_plat_is_concerned() instead - ob_parse_package_metadata() -- merged into ob_init_package() - ob_set_locale_path() -- set OB_LIB_BUILDDIR and/or OB_EXE_BUILDDIR environment variables to load localized messages from a build directory - ob_summarize_package_arch() -- was an unimplemented stub - ob_summarize_package_plat() -- was an unimplemented stub - ob_use() -- libopkbuild modules are now "linked" together into one library file, so this function is no longer needed * ob_set_substvar() has been renamed to ob_set_source_substvar(), a new function ob_set_binary_substvar() has been added, and ob_substvars() now has an optional "package" operand. * ob_parse_changelog() and ob_parse_control() now pass arguments to user callbacks instead of setting global variables. * Option letters have changed for ob_parse_dep(), ob_reduce_deps(), and ob_get_binary_packages(). * All libopkbuild functions are now documented in manual pages generated from inline comments. * Test suite coverage has improved slightly. Build system: * The build system is now generated by GNU Autoconf and Automake. * libopkbuild is now distributed as a sort of shared library object, "linked" by the shld linker tool. By default, it is installed into "/usr/local/share/sh/". * The test suite now uses the Test Anything Protocol and Automake's TAP driver. * The mksysconf tool (used to generate "proteanos_arch" and "proteanos_plat" system configuration files for testing opkbuild) has been removed. Bug fixes and minor changes: * A bug in the option parsing of ob_parse_dep(), ob_reduce_deps(), ob_parse_version(), ob_parse_package_metadata(), and ob_get_binary_packages() that affects GNU Bash and possibly other shells has been fixed. * A bug in opkbuild that would ignore errors from the "build" makefile's "build" target has been fixed. * ob_set_substvar()'s (now ob_set_source_substvar()'s) return value on success has been fixed. * ob-gencontrol now drops trailing commas and spaces in dependencies. * ob-installdocs now correctly handles "docs" file lines with destinations omitted. * Underscores are no longer allowed in substitution variable names, in stricter compliance with SPF 2.0. * Code quality has been improved: eval commands are now safer against mistakes in input validation/escaping, echo commands have been replaced with printf and here-documents, errors are handled (making the shell "-e" option safe), no undefined variables are expanded (making the shell "-u" option safe), obselescent [ (test) command options have been replaced, commands are protected from variable arguments beginning with "-", and printf commands are protected against variable format strings that might contain "%". Legal: * The minimum version of the GNU General Public License has been bumped to version 3. opkbuild version 3.0.0-beta7 ---------------------------- Released: 2014-10-25 Changes in this release: * parse_dep() now correctly parses the "<<" version relation operator. Previously, a version restriction like "(<< 1.21.1-12)" would be parsed into a relationship of " <" and version of "<1.21.1-12", resulting for example in the generation of a few uninstallable packages on ProteanOS. opkbuild version 3.0.0-beta6 ---------------------------- Released: 2014-09-23 Changes in this release: * ob-genchanges and ob-gencontrol now strip newline characters in the "Maintainer" field. * An "optstring" file is installed for use by prokit. * opkbuild's platform option is now -p. * opkbuild now supports -B and -P options to build only architecture- dependent and platform-dependent binary packages, respectively. opkbuild version 3.0.0-beta5 ---------------------------- Released: 2014-05-15 Changes in this release: * ob-checkbuilddeps now sets substitution variables for use in the "Build-Depends" field. * ob-checkbuilddeps now recognizes packages with a status of "install user installed". * ob_arch_is_concerned() and ob_plat_is_concerned() now correctly handle host values of "all" with negated values in package fields. These functions are also now covered by the test suite. opkbuild version 3.0.0-beta4 ---------------------------- Released: 2014-05-13 Changes in this release: * ob_match_plat() now checks for exact platform name matches. This will be necessary to build the linux-libre source package for the dev platform without building linux-image and linux-sysmap binary packages. * ob-installplatconf now correctly installs configuration files without a "/" in their specified destinations. * ob-checkbuilddeps has been implemented. opkbuild now uses its opkg dependency. Package build dependency checking can be disabled using opkbuild's "-d" option. * The default architecture in mksysconf.in is now "amd64-linux-glibc". * NEWS now contains summaries of changes in each released version. * Tests data files are now distributed in released tar archives. opkbuild version 3.0.0-beta3 ---------------------------- Released: 2014-03-07 Changes in this release: * Make ob-genchanges only list .opk files that are built for the host architecture and platform. * Preserve file modification times, owners and groups, and modes in source packages. * Find packaging helpers at run time using helper configuration scripts instead of at build time with configure options. As of version 3.0.0, opkhelper provides such a helper configuration script. opkbuild version 3.0.0-beta2 ---------------------------- Released: 2014-01-19 Changes in this release: * Fix minor issues in opkbuild and ob-applypatches that occur when updating the "source" targets of some packages. * Make ob-genchanges perform substitutions in package descriptions. * Make ob-installdocs support patterns in *.pkg/docs. opkbuild version 3.0.0-beta1 ---------------------------- Released: 2013-09-07 Changes in this release: * Fix ob-applypatches to work with BusyBox patch. * Implement ob-genchanges. * Remove _ob_local() and _ob_return() kludges and use the built-in local utility instead. opkbuild version 3.0.0-alpha5 ----------------------------- Released: 2013-06-16 Changes in this release: * Escape single quotes in substitution variable values. * Exit on failure to parse package metadata. * Fix "Bad binary package name" warning when there are no binary package metadata directories. * Fix output of changelog parsing errors. * Set "Host-Arch" and "Host-Plat" substitution variables, which were recently added to the SPF 2.0 specification. * Make build system non-recursive and faster. * Centralize build system logic into the top-level input makefile to make the build system smaller and more easily maintainable. * Distribute the "mksysconf.in" input makefile. Previously this was missing from the tar archives. * Better handle unrecognized options to configure. * Fix some issues with fakeroot option handling. opkbuild version 3.0.0-alpha4 ----------------------------- Released: 2012-11-16 Changes in this release: * Make ob-unpacksource not consider a lack of sources to be an error. * Support the use of multiple build helpers. * Move _ob_dep_arch_is_concerned() and _ob_dep_plat_is_concerned() to the public API. * Support negation in binary package "Architecture" fields. * Optionally reduce platforms in ob_get_binary_packages(). * Make ob-unpacksource work on tar archives without explicit entries for directories. * Don't print an error when there's no substvars file. * Set an "OPK_TOOL_PREFIX" environment variable (needed for packages that use kbuild). * Remove code related to the table of upstream build system architectures. * Replace testsetup.sh with a slightly better "mksysconf" makefile. * Add some error handling to opkbuild. * Reduce platforms for OPK_PACKAGES. opkbuild version 3.0.0-alpha3 ----------------------------- Released: 2012-10-26 Changes in this release: * Fix the creation of source package documentation directories. * Fix license information in opkbuild and configure output messages and testsetup.sh source code. * Add the build helper directory to the beginning, rather than the end, of PATH. This should prevent the unintended use of old versions of build helper utilities. * Fix and improve ob-installplatconf. * Reduce binary package relationship fields in ob-gencontrol. * Support substitution variables in control field values. * Fix quotes in the "install" target of man/Makefile.in. * Better support multiple invocations of ob-unpacksource and ob-installdocs. * Reduce platform specifiers in dependency strings. * Support comments in control files. opkbuild version 3.0.0-alpha2 ----------------------------- Released: 2012-10-16 Changes in this release: * Don't rely on POSIX-conformant parsing of makefile comments. * Make ob-gencontrol write "Platform" and "Maintainer" fields. * Fix names of opk files written by ob-buildopk. * Get an "Uploader", not "Maintainer", field from SPF 2.0 changelogs. * Make testsetup.sh print informational and error messages. * Additionally license everything for use under the terms of the GNU GPL version 2.0. opkbuild version 3.0.0-alpha1 ----------------------------- Released: 2012-10-11 Changes in this release: * Split the core distribution build system into its own package. * Provide a fairly well-designed library, libopkbuild, with an API that is to be stable and versioned. * Rewrite build system. * Internationalize messages. * Write unit tests for some library functions. * Support source package formats and distribution metadata through plugins. * Support SPF 2.0. * Heavily refactor utilities. * Set up package build helpers (currently only opkhelper-3.0). Older Versions -------------- opkbuild was split from opkhelper on 2012-09-04, after opkhelper versions 1.0.0 and 2.0.0 (unreleased). See "NEWS.opkhelper" for changes in released versions of opkhelper before opkbuild was split into its own package. Copyright Information --------------------- Copyright (C) 2012-2014, 2018 Patrick McDermott Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.