opkbuild 4.1.0 released

About
=====

opkbuild is a distribution build system -- a set of tools for building
software packages.  From source packages it builds binary packages for
use with the opkg package manager.

Currently one format of source package is supported by opkbuild:
ProteanOS Source Package Format 2.0:

    http://specs.proteanos.com/spf-2.0/

opkbuild is similar in function to the development library and utilities
of dpkg, the Debian package manager:

    https://packages.debian.org/sid/dpkg-dev
    https://packages.debian.org/sid/libdpkg-perl
    https://wiki.debian.org/Teams/Dpkg/

Downloading
===========

Source archives are available from the files site by HTTP or FTP:

    http://files.proteanos.com/pub/opkbuild/4.1.0/
    ftp://files.proteanos.com/pub/opkbuild/4.1.0/

Here are the MD5 checksums:

    5d445460be2cf1780612b6b3afb87b6d  opkbuild-4.1.0.tar.gz
    7ebcf4b6bad44ae49720d610d5f47c2e  opkbuild-4.1.0.tar.bz2
    20d8b063937ea270f7702c4171a4e2e1  opkbuild-4.1.0.tar.xz

Here are the SHA-256 checksums:

    b37da5aa54726d5230b6aa51853392fc2bd4edb3afcdb4e34c32d78eba852def  opkbuild-4.1.0.tar.gz
    63ebaa1006401769c0bbc14c8a80b57942e2ab7debc82581236e6befc625c47f  opkbuild-4.1.0.tar.bz2
    9522f8c7e770c896d64db9fc007a035a07da5795167d20239e6f0e8ac83a4496  opkbuild-4.1.0.tar.xz

The sources are maintained in a Git repository:

    http://git.proteanos.com/opkbuild/opkbuild.git/
    git://git.proteanos.com/opkbuild/opkbuild.git/

This release is marked by the "opkbuild/4.1.0" tag.

NEWS for Version 4.1.0
======================

The "build-dependency hell and determinism" release.

Utilities:

  * opkbuild now sets the standardized "SOURCE_DATE_EPOCH" environment
    variable to assist in making builds reproducible.  See specification
    at <https://reproducible-builds.org/specs/source-date-epoch/>.
  * ob-buildopk now strives to build reproducible opk archives.
    Specifically, archive and member modification times are set to a
    package's changelog date, owners and groups are set to 0, and file
    ordering is now deterministic.  Setting modification times of
    symbolic links requires a "touch" utility that accepts the non-
    standard "-h" option (supported in BusyBox 1.22.0 and later);
    without it, packages with symbolic links won't be fully
    reproducible.
  * ob-gencontrol now generates source package control files with
    "Binary" and "Build-Depends" fields.
  * ob-installplatconf now supports platconf directories with upstream
    versions containing pattern matching notation (e.g. "foo_1.*").
    This complies with the latest draft of SPF 2.0.
  * ob-installplatconf is now covered by the test suite.

libopkbuild:

  * New functions ob_rfc822_mktime() and ob_iso8601_gmtime() have been
    added.
  * ob_set_source_substvar(), ob_set_binary_substvar(), and
    ob_substvars() are now covered by the test suite.
  * ob_get_system_path() with the "platconf" path_id now accepts a
    single "plat" argument.  The three-argument form is now deprecated.
  * ob_get_system_path() with the "buildflags" or "platconf" path_id now
    accepts an "OB_TEST_DATADIR" to override the data directory prefix.

Build system:

  * configure now checks for fakeroot, touch (preferably with the "-h"
    option), tar (with the "-T" and "--no-recursion" options), and gzip.

Documentation:

  * The manual is now called "OPK Build System" instead of the ambiguous
    "Distribution Build System".

Shortlog of Changes Since Version 4.0.2
=======================================

Patrick McDermott (76):
      Makefile.am: Add spaces around "="
      tests/lib/ob_substvars.sh: New test file
      ob_set_*_substvar(), ob_substvars(): Use lowercase eval vars
      _ob_parse_control_error(): Make arg vars local
      tests/lib/ob_parse_control.sh: Use tests/aux/common.sh
      tests/aux/common.sh: Check whitespace in cmd_is()
      Makefile.am: Make detached OpenPGP signatures
      lib/time.sh: New file
      tests/lib/ob_rfc822_mktime.sh: New file
      ob_rfc822_mktime(): Fix parsing
      tests/lib/ob_rfc822_mktime.sh: Make all tests after 1970 local time
      ob_rfc822_mktime(): Parse month
      tests/lib/ob_rfc822_mktime.sh: Test Y2k38
      ob_rfc822_mktime(): Drop "+" TZ sign
      tests/lib/ob_rfc822_mktime.sh: Fix test result
      tests/lib/ob_iso8601_gmtime.sh: New file
      ob_iso8601_gmtime(): Fix dates after leap days
      opkbuild: Set SOURCE_DATE_EPOCH
      ob-buildopk: Make archive member mtimes deterministic
      ob-buildopk: Add control.tar.gz before data.tar.gz
      ob-buildopk: Make archive member ordering deterministic
      ob-buildopk: Make archive member owners/groups deterministic
      TODO: Scrap outer archive conversion to ar
      TODO: Reproducible .opk's is done?
      TODO: Add more tasks
      opkbuild: Drop useless fake privileges
      tests/data/pkg/changelog: Change date
      tests/aux/common.sh: Set SOURCE_DATE_EPOCH
      tests/exe/ob-genchanges.sh: Update date (changed in 895ed22)
      tests/exe/ob-buildopk.sh: Run ob-buildopk with fakeroot
      tests/exe/ob-buildopk.sh: Test member ordering
      tests/exe/ob-buildopk.sh: Remove directories from test results
      ob-buildopk: Don't reverse sort archive members with -T
      configure.ac, config.sh.in: Check whether touch accepts -h
      ob-buildopk: Use ${TOUCH}
      ob-buildopk: Use ${HAVE_TOUCH_NODEREF}
      ob-buildopk: Use chown -h
      tests/exe/opkbuild.sh: Update and check archive member ordering
      MD5SUMS, SHA256SUMS: Exclude from Git
      ob-gencontrol: Move Installed-Size calculation into separate func
      tests/data/pkg/control: Add B-D
      tests/exe/opkbuild.sh: Don't check build deps
      ob-gencontrol: Generate different fields for source packages
      tests/exe/ob-gencontrol.sh: Test source package control contents
      ob-gencontrol: Sort source package Binary field value
      NEWS, configure.ac: Set version to 4.0.2+dev
      NEWS: List recent changes
      NEWS: Mention SOURCE_DATE_EPOCH
      ob_get_system_path(): Allow package-less platconf
      ob_get_system_path(): Allow overriding DATADIR
      tests: Add platconf
      tests/exe/ob-installplatconf.sh: New file
      ob-installplatconf: Match upstream version patterns
      tests: Add data for commit dfb9fee
      tests: Generate rather than distribute platconf data
      TODO: Drop unnecessary task
      configure.ac, config.sh.in: Check for fakeroot
      configure.ac: Fix copy/paste error in "touch" section
      opkbuild, tests: Parameterize fakeroot
      NEWS, configure.ac: Set version to 4.1.0
      NEWS: Add slogan, SPF note, and configure changes
      man/local.mk: Rename manual
      ob-gencontrol: Fix missing "src-" in source package names
      configure.ac, config.sh.in: Check for tar with options
      configure.ac: Unquote ${TOUCH} in test
      configure.ac: Fix line continuations
      configure.ac: Don't check for tar --numeric-owner
      Revert "tests/exe/ob-buildopk.sh: Remove directories from test results"
      tests/exe/opkbuild.sh: Add directories to test results
      ob-buildopk: Re-add directories to archives
      ob-buildopk, ob-unpacksource, tests: Use ${TAR}
      configure.ac: Redirect test output to config.log
      configure.ac, config.sh.in: Find gzip
      ob-buildopk: Fix non-deterministic mtimes in gzip headers
      NEWS: Eliminate reference link
      NEWS: Release opkbuild 4.1.0

Diffstat of Changes Since Version 4.0.2
=======================================

 .gitignore                      |   2 +
 Makefile.am                     |   4 +-
 NEWS                            |  48 +++++++++
 TODO                            |   9 --
 config.sh.in                    |   5 +
 configure.ac                    | 144 ++++++++++++++++++++++++-
 lib/control.sh                  |  34 +++---
 lib/local.mk                    |   3 +-
 lib/metadata.sh                 |   8 +-
 lib/metadata/proteanos.sh       |  20 +++-
 lib/time.sh                     | 183 ++++++++++++++++++++++++++++++++
 man/local.mk                    |   6 +-
 src/ob-buildopk.sh              |  45 ++++++--
 src/ob-gencontrol.sh            |  89 +++++++++++++---
 src/ob-installplatconf.sh       |  26 +++--
 src/ob-unpacksource.sh          |   4 +-
 src/opkbuild.sh                 |  14 ++-
 tests/aux/common.sh             |  73 ++++++++++++-
 tests/data/pkg/changelog        |   2 +-
 tests/data/pkg/control          |   1 +
 tests/data/pkg/platconf         |   1 +
 tests/exe/ob-buildopk.sh        |   8 +-
 tests/exe/ob-genchanges.sh      |   2 +-
 tests/exe/ob-gencontrol.sh      |  17 ++-
 tests/exe/ob-installplatconf.sh |  37 +++++++
 tests/exe/ob-unpacksource.sh    |   2 +-
 tests/exe/opkbuild.sh           |  10 +-
 tests/lib/ob_iso8601_gmtime.sh  |  43 ++++++++
 tests/lib/ob_parse_control.sh   |  18 +---
 tests/lib/ob_rfc822_mktime.sh   |  43 ++++++++
 tests/lib/ob_substvars.sh       |  45 ++++++++
 tests/local.mk                  |   7 ++
 32 files changed, 839 insertions(+), 114 deletions(-)

-- 
Patrick McDermott, CEO
Libiquity
Putting customers in control of high-quality technologies
http://www.libiquity.com/

Attachment: pgpYSfe7fShfn.pgp
Description: OpenPGP digital signature