[Dev] libretools 20130914 release anouncement

Luke T. Shumaker lukeshu at sbcglobal.net
Sun Sep 15 00:39:00 GMT 2013

I just released libretools 20130914.

There hasn't been a libretools release announcement in a while (the
last one was for 20130605.1) because most of the changes since the
last announcement have been minor or bugfixes.

Significant changes from 20130605.1 to 20130812:
 * Add man pages
 * Add `libregit`, a git downloader
 * libremakepkg:
   * Add -N flag to enable networking
   * Add distcc support
 * librefetch:
   * Simplify invocation
   * Add -P flag for debugging
   * A bugfix changed the check-sums for svn-based tarballs.

From 20130812 to 20130914:

The major changes are internal, but they are big enough that users
should be aware, because big changes frequently mean bugs or

There are two major changes:
 * (partial) internationalization
 * updating to the new devtools

User-facing changes:
 * librechroot: Add -r and -w flags to configure bind mounts
 * libremakepkg:
   * Networking is no longer enabled during prepare()
   * Sources are downloaded before entering the chroot
   * The output format changed significantly
 * libremessages:
   * `lock_open_write` was renamed to `lock`
   * `lock_open_read` was renamed to `slock`
 * Helper programs (mkarchroot, chcleanup, distcc-tool) are no longer
   in PATH.  This means there is less user-facing complexity.

 * libre{stage,release}: Issue #379: The staging directory is locked
   so that librerelease won't delete files that it didn't really
 * libremakepkg: Issue #380: Handle {PKG,SRC,LOG}DEST being set but
   not existing.
 * libremakepkg: Issue #388: Will now correctly copy in VCS source
   directories, even though you shouldn't be using them.

Updating devtools

There have been some major changes in devtools, so this had to be
reflected in libretools.

  * `lock_open_write` was renamed to `lock`
  * `lock_open_read`  was renamed to `slock`

  * archroot got split into mkarchroot and arch-nspawn
  * All helper scripts (archroot/mkarchroot/arch-nspawn, distcc-tool,
    chcleanup) are no longer installed to PATH, meaning that
    user-facing complexity has gone down.

  libremakepkg now only uses librechroot, it never uses arch-chroot or
  friends manually.  To support this, librechroot had to learn flags
  to control bind mounts, which is how the new devtools copies in
  source files (this feature happens to be our issue #251).  Other
  than this, the changes to librechroot are pretty trivial and
  straight-forward.  The biggest change is to accommodate archroot
  being split.

  Looking at the diff isn't even helpful; there were major changes.
  Honestly, the changes to libremakepkg probably could have been a
  lot smaller, but... I wanted to do it right/be clean.  makechrootpkg
  in devtools got cleaned up a lot, actually a lot of the same changes
  I was making.  But, the small differences between the way we did
  things made it less than simple to adjust.  The biggest changes in
  terms of conflict for me are how devtools now uses bind-mounts to
  put files in the chroot, and that the /chrootbuild file is more
  I handled a lot of the complexity by moving things out of the main
  program, and adding hooks for non-core functionality, including
  chcleanup, distcc compatibility hacks, and PKGBUILD/pkg
  checking. Unfortunately, the files containing the hooks are
  currently hard-coded.  Perhaps they will be truly plug-able in the
  future.  That might be neat.  Or over-complicated.  We'll see where
  it goes.

  I then changed the output format to be more clear about the
  hierarchy; the output of the commands it calls was at the same level
  as its own output.  Now, the output of sub-commands is prefixed with
  " |  ", which hugely increases the ability to tell what is going on,
  but means that some of it doesn't have color.


This is fairly unlikely to break anything.

The internationalization is incomplete, but the *framework* is there.
All message printing functions are gettext-aware, and we have
functions for dealing with prose in --help text--something that is
very difficult to do in shell scripts.  The build system also knows how
to create .pot files for all programs.  What's left is:
 * making sure no programs use string interpolation for messages
 * teaching the build system to create and install .mo files
 * using the functions for dealing with prose in all programs
There may also be issues with the locale and/or translation files not
transferring into the chroot properly, even though the programs in the
chroot are internationalized.  Then, there's the translating itself.
It will take time and testing.

If you want to use the new internationalization functions, they are
(in libremessages):

 * prose: Prints a word-wrapped printf-formatted string
 * bullet: Like prose, but adds a bullet point to the first line, and
   indents the rest.
 * flag: The first argument is a flag (non-translated), and the second
   argument is a (translated) description of the flag that is


Detailed changes for all the releases I skipped doing announcements for:

From 20130605.1 to 20130608:
 * Change default value for DIFFTOOL
 * is_built: make the version argument optional
 * libremakepkg: add -N flag to enable networking, for distcc support
 * librerelease: is more verbose
 * pkgbuild-check-nonfree: add -c flag to not download a new blacklist
 * aur: lots of fixes
 * libreblacklist:
   * update: work when on the left side of '||'
   * don't prompt before overwriting blacklist cache
 * librerelease:
   * Fail when it's not possible to sign packages 
   * work with pinentry-curses
 * librestage:
   * fix bugs with staging for multiple architectures
   * don't require PKGDEST to be set
 * pkgbuild-check-licenses: the previous version didn't work at all

From 20130608 to 20130611:
 * libremakepkg:
   * add support for distcc without using -N
   * set PACKAGER int he chroot to reflect the value outside
 * librechroot: fix status message when deleting a chroot copy
 * libremakepkg: don't leak temporary files on error

From 20130611 to 20130622:
 * librechroot: improve documentation
 * librelib+lib directory got split into a separate/split package.
 * librerelease: sort list output (`librerelease -l`)
 * librechroot: clean-pkgs: don't spit a warning if /build already

From 20130622 to 20130627:
 * conf.sh: add {load,unset}_PKGBUILD routines
            This lets us more safely load PKGBUILD files.
 * chcleanup: set CARCH
 * pay attention to librefetch variables in aur, pkgbuild-check-*

From 20130627 to 20130706: (bugfix only)
 * librefetch: fix regular expression error when parsing SRCBUILDs.
 * pkgbuild-check-nonfree: also check optdepends
 * toru: there was a syntax error

From 20130706 to 20130714:
 * add `libregit`: a git downloader
 * librefetch:
   * make invocation simpler
   * add more information to --help output
   * drop compatibility for makepkg older than 4.1
 * librefetch:
   * don't create temporary files in help/version modes
   * print usage errors to stderr
   * fix bug with creating package symlinks
   * make BUILDDIR logic more robust

From 20130714 to 20130727: (bugfix only)
 * pkgbuild-check-*: load conf.sh, I don't know how this wasn't caught
 * librefetch:
   * correctly handle file-names starting with '-'
   * fix how pkgdir is set with makepkg 4.1 in split packages

From 20130727 to 20130727.1:
 * Add man pages

From 20130727.1 to 20130812
 * librefetch: add -P for print mode/debugging.
 * pkgbuild-check-nonfree: change the messages to be about being
   blacklisted, not free/unfree.
 * librefetch:
   * fix bug with split packages
   * add .makepkg/ to PURGE_TARGETS, it is created by download_svn()
     Warning: This changes the output for svn tarballs.


Happy hacking,
~ Luke Shumaker

More information about the Dev mailing list