update-buildspace

Description

The update-buildspace utility, usually located at /usr/bin/update-buildspace, is a helper application used by the update-buildspaces application to perform an update of the target build-space. In brief the following operations are performed:

  • Perform a pretend update so that we know what will be modified
  • Check that the space for distribution files is available
  • Download any distribution files required by the update
  • Build the updated binary packages
  • Rebuild the system glibc library if the linux-headers version has changed
  • Merge new configuration files
  • Clean any orphaned dependencies
  • Remove any redundant libraries
  • Repair any libtool archives which were broken during the update
  • Rebuild any binaries which were broken during the update
  • Rebuild python packages using python-updater if required
  • Rebuild perl packages using perl-cleaner if required
  • Remove any redundant binary packages

Configuration

The update-buildspace utility uses the same configuration file as all the other applications in the buildspace-scripts package which is usually located at /etc/buildspace on a standard installation.

/etc/buildspace
# Name of the build space
BUILDSPACE_NAME="x86-64bit-workstation"

# Base path for logs
LOGPATH="/var/log/autobuild"

# List of configuration files to protect from updates.
CONFFILES="aliases bashrc buildspace clock hosts layman.cfg locale.gen make.conf resolv.conf ssmtp.conf"

# List of kernel sources which should not be automatically cleaned.
KERNELS="sys-kernel/gentoo-sources"

Use

As mentioned above the update-buildspace utility is a helper application used by the update-buildspaces application to perform an update of a build-space and is therefore not designed to be invoked directly by end users. As the update-buildspace utility could be useful in other scenarios a brief example of its use is given below.

64bit-WKS build update-buildspace --send-email
Starting automated update of [x86-64bit-workstation] buildspace. 
 
Performing pretend update...ok. 
Fetching required distfiles...ok. 
 
Key package versions [pre update] 
    dev-lang/perl-5.8.8-r8 
    dev-lang/python-2.6.5-r2 dev-lang/python-3.1.2-r3 in slot(s) 2.6 3.1 
    sys-apps/portage-2.1.8.3 
    sys-devel/gcc-4.4.3-r2 in slot(s) 4.4 
    sys-kernel/linux-headers-2.6.30-r1 
    sys-libs/glibc-2.11.2 
 
Building updated packages...ok. 
 
Key package versions [post update] 
    dev-lang/perl-5.8.8-r8 
    dev-lang/python-2.6.5-r2 dev-lang/python-3.1.2-r3 in slot(s) 2.6 3.1 
    sys-apps/portage-2.1.8.3 
    sys-devel/gcc-4.4.3-r2 in slot(s) 4.4 
    sys-kernel/linux-headers-2.6.30-r1 
    sys-libs/glibc-2.11.2 
 
Merging new default configurations...ok. 
Cleaning orphaned dependencies...ok. 
Removing redundant libraries...ok. 
Fixing broken .la files...ok. 
Rebuilding broken binaries (pass 1 - pretend)...ok. 
Rebuilding broken binaries (pass 1 - remerge)...ok. 
Rebuilding broken binaries (pass 2 - pretend)...ok. 
Touching all required distfiles...ok. 
Cleaning unused packages...ok. 
Fixing package cache...ok. 
 
Automated update of [x86-64bit-workstation] buildspace completed. 

As you can see from the above example the update-buildspace utility accepts a command line option, --send-email or -e which will result in an email of the output above, including the logs of each operation as attachments, to be sent to the email address configured for the root user in the build-space. If the update-buildspace utility is not run from a TTY, such as when being invoked by cron, the --send-email option is implied.

The update-buildspace utility can also be instructed to produce no output by using the --quiet or -q option. If this option is supplied then the --send-email option is implied.