ProteanOS Development Kit 1.1.0 released


This is prokit, the ProteanOS Development Kit.

prokit can install a ProteanOS system, run a ProteanOS shell and other
commands, manage software packages in an installed ProteanOS system, and
build packages for ProteanOS (with build dependencies automatically
installed and removed).

prokit is similar in function to the debootstrap, pbuilder, and sbuild
programs of Debian and derivatives.

Here is the Web page for the ProteanOS Development Kit:


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

Here are the MD5 checksums:

    92656cce044fa455d75cddd6bad1b547  prokit-1.1.0.tar.gz
    afbe178da9a6e8431e45d18b97b801c6  prokit-1.1.0.tar.bz2
    5bb43073f4af3b086baaed8fa94f98eb  prokit-1.1.0.tar.xz

Here are the SHA-256 checksums:

    2bd986a8196c4ac9f896cb974ffd58085fddb832bfb36813129601170366ec22  prokit-1.1.0.tar.gz
    857b6947ddc9ca888a1069738e21afa94a477b50b2a143ddcfdb912005d6c859  prokit-1.1.0.tar.bz2
    515faba2bc93b7cb60a25d7779db675094d4835314748133da637580d0601bcc  prokit-1.1.0.tar.xz

The sources are maintained in a Git repository:

This release is marked by the "prokit/1.1.0" tag.

NEWS for Version 1.1.0

Changes in this release:

  * The previously missing prokit-install(8) manual page is now
    distributed and installed.
  * Some logic of "prokit install" has been simplified as ProteanOS
    packages now have the necessary data files and control fields.
  * "prokit build" now parses substvars files without errors.
  * The current working directory is bind mounted within the isolated
    file system environment and used as the working directory for the
    "prokit shell" and "prokit opkg" commands.
  * Compatibility with older versions of opkbuild has been dropped.
    Before running "prokit build", make sure your ProteanOS system has
    version 3.0.0~beta6-1 or later of the opkbuild package.
  * The list of mirrors has been updated.  Thanks to Morten 'Jobbe'
    Jakobsen for providing another mirror.
  * Session management has been added to allow multiple instances of
    prokit to run simultaneously.  The first instance started will mount
    the basic file systems, and the last instance exited will unmount
    them.  A mutex is used to eliminate race conditions on changes to
    the sessions pool.
  * Whitespace in arguments to "prokit shell" and "prokit build" is now
  * Signals are handled during active sessions with callbacks for the
    "prokit opkg" and "prokit build" commands, to ensure that the
    isolated file system environment is left in a clean state when a
    signal like SIGINT (Ctrl+C) is received.

Shortlog of Changes Since Version 1.0.0

    P. J. McDermott (50):
          cmd/build: Add a missing printf argument
          man/ Add man/prokit-install.8in
          .gitignore: Add manual pages
          cmd/install: Don't create /etc/os-release
          profile_get_os_release(): Drop
          prof_proteanos_include_pkg(): Drop base-files
          package_2_set_substvars(): Fix parse_control call
          cmd/shell: Mount working directory within root
          package_2_set_substvars(): Fix parse_control call
          prof_proteanos_include_pkg(): Drop more packages
          cmd/build: Drop handling of old opkbuild
          prof_proteanos_include_pkg(): Drop Package check
          profile/proteanos: Update list of mirrors
          mutex_*(): New functions
          profile_file_systems_mounted(): New function
          session_*(): New functions
          locale/en_US: Add string from lib/
          session_begin(): Fix a function call
          cmd/shell: Switch to using sessions
          profile_bind_*mount(): New functions
          session: Bind mount a dir to the session dir
          session_exec(): New function
          cmd/shell: Use session_exec()
          cmd/opkg: Switch to using sessions
          cmd/shell: Drop unnecessary variable.
          session_dir(): New function
          session: Run commands in a "wd" subdirectory
          cmd/build: Switch to using sessions
          cmd/build: Update builddeps.opk generation
          cmd/build: Split heredoc into up to three shells
          opkg_install_all(): Switch to using sessions
          session_begin(): Make /prokit if it doesn't exist
          cmd/install: Make /prokit and /prokit/installing
          session_begin(): Check for /prokit/installing
          mutex_is_unlockable(): New function
          session_end(): Don't lock mutex if we have it
          session: Handle signals
          mutex_lock_timeout(): Rename to mutex_timedlock()
          session_end(): Run session exit callback
          error(): Die by signal
          session_end(): Block signals for func's lifetime
          cmd/opkg: Factor cleanup code into sig handler cb
          cmd/build: Factor cleanup code into sig handler cb
          cmd/build: Drop some whitespace in option handling
          cmd/opkg: Clean up packages before session_end()
          Merge branch 'feature/sessions'
          lib/ Remove
 Set package version to 1.1.0
          NEWS: Add section for 1.1.0
          NEWS: Release prokit 1.1.0

Diffstat of Changes Since Version 1.0.0

    .gitignore               |   2 +
    NEWS                     |  32 ++++++             |   2 +-
    lib/            |  82 --------------
    lib/cmd/         | 176 ++++++++++-------------------
    lib/cmd/       |   8 +-
    lib/cmd/          |  28 +++--
    lib/cmd/         |  10 +-
    lib/             |   3 +-
    lib/             |  57 ++++++++++
    lib/              |   6 +-
    lib/            |   5 +-
    lib/package/         |   4 +-
    lib/           |  38 +++++--
    lib/profile/ |  81 ++++++-------
    lib/           | 219 ++++++++++++++++++++++++++++++++++++
    locale/          |   5 +
    man/             |   1 +
    18 files changed, 488 insertions(+), 271 deletions(-)

Patrick "P. J." McDermott
Lead Developer, ProteanOS