CHANGES file for the src2pkg and trackinstall programs by Gilbert Ashley This file is meant to briefly summarize the changes to src2pkg from one version to the next -concentrating on changes which are visible to the average user or that affect the usability in some way. For a more complete and detailed listing of changes between versions, see the ChangeLog file. == Version 1.9.7 == This version includes many fixes and improvements. Notes on upgrading: * The syntax in the /etc/src2pkg.conf file has changed. If you already have a previous version of src2pkg installed, you should remove or change the name of the old src2okg.conf file before upgrading the src2pkg package. * The src2pkg-helpers version has been upgraded, so if you have a previous version of src2pkg installed, you'll need to run the command: 'src2pkg --setup' as user root after upgrading to this version of src2pkg Notes for first installation of src2pkg: * If you are installing src2pkg for the first time, simply use 'installpkg' to install the src2pkg package (src2pkg-X.X.X-noarch-X.tgz). Then, while still logged in as user 'root', run the command: 'src2pkg --setup' to setup src2pkg for use on your system. * The version of the libsentry program and library has been upgraded. This requires the src2pkg-helpers package to be upgraded for use with src2pkg. src2pkg now includes code which detects the version of any installed package of src2pkg-helpers and notifies the user of the need to upgrade when the new src2pkg version is unstalled. The old src2pkg-helpers does not have to be manually removed. Simply running 'src2pkg --setup' after src2pkg os installed will build and package the new src2pkg-helper and install the package. * Added the ability to copy the src2pkg script used to build a package into the package itself. The default behaviour is to not do this. But it can be configured to do so, and include the src2pkg script in a configurable location. * Added new src2pkg variables which can be used in src2pkg scripts. The most useful of these variables are BIN_DIR and DOC_DIR, but the set includes all the common locations: BIN_DIR, SBIN_DIR, LIBEXEC_DIR, SYCONF_DIR, SHAREDSTATE_DIR, LOCALSTATE_DIR, etc. See the lines beginning at 733 of the file /usr/libexec/src2pkg/01-pre_process for the full list and syntax. * Added a new directory of example src2pkg scripts for building and packaging the kernel and/or kernel-modules. There is also an interesting example for building a very small 2.6 kernel which could fit on a floppy. * automatic configuration using cmake now handles EXTRA_CONFIGS * Some extra files have been removed from the src2pkg-helpers archive so about 3MB is saved when installing the src2pkg package. * Made a lot of changes to the 'tracklist' program to improve usability. command-line parsing was added with options for showing usage and help. Plus, options were added for turning on the debugging function and to optionally quieten the normal output from the tracked commands. Functionality was extended to include the tracking of these programs: link, ln, chown, chmod, rm, rmdir, mv A man-page has also been added for the tracklist program. * Added a new variable called FHS_POLICY which allows the user to choose a directory layout compatibility style. This allows for creating packages which conform to the slack, lsb or a custom directory layout. * Added a mechanism for authorizing users. AUTHORIZE_USERS allows a sysadmin to control who can run src2pkg on a multi-user system. AUTHORIZE_USER_CONF allows the administrator to control which users can use personal src2pkg.conf files in the HOME directory. * The command 'src2pkg -N -Q tarball-name' shows the NAME and VERSION guessed by src2pkg and allows them to be changed before writing a new src2pkg script. * added routines which detect the installed version of src2pkg-helpers and prompt the user if the package needs to be upgraded. This version of src2pkg will prompt you to upgrade src2pkg-helpers when you install the package. * Compilation of perl modules now accepts passing options to the Makefile. This can be done using either the '-m=?' (MAKE_COMMAND) or '-e=?' (EXTRA_CONFIGS) options. * Added new command-line options for controlling the use of configuration options found in configure scripts or in RPM *.spec files or debian 'rules' files. -ACF looks for rules or spec files and tries to parse useful options from them. -ACN checks for standard options inside the configuration script itself and fills in (usually) sane default values. The list of possible options to search for can be confiured using the AUTO_CONFIG_OPTIONS variable. The default values match those of whichever FHS_POLICY is being used. Both of these options are off by default, which makes it possible to use the -A option without having the configuration options searched for automatically. This was done because sometimes src2pkg cannot correctly parse the rules or *.spec file and would try to configure using 'garbage' values which would cause configuration to fail. The new code is more powerful, more flexible and more controllable. * Added the ability to use 'extensions' to src2pkg. When enabled with the configuration option ALLOW_USER_EXTENSIONS=YES, the user can create the directory $HOME/src2pkg/extensions and place files there which contain extra code which can be run before or after each named instruction function during the build. See the full ChangeLog for further explanation of this feature. * The 'help' messages for both src2pkg and trackinstall ahve been split into two separate pages of help, with the advanmced options hsown on the second page. Viewing the extended options is done by calling the program with the '-hh' switch. * When DESTDIR is used, src2pkg now verifies the list of installed files using the program 'tracklist' which comes with src2pkg. This allows src2pkg to alert the user when DESTDIR is only partially supported and installs some files to the real root file system instead of inside the DESTDIR. src2pkg copies these 'misplaced' files into the package content but does not remove the originals. * A routine was added which lists all files and directories in the package which have 'unusual' permissions or ownership. The routine is part of improved routines for handling package permissions and ownerships. Directories which are not set with chmod 755 are reported, as are files which are not either chmod 644 or 755. The exceptions to these are several common system dirs which use known perms other than 755 -like /var/run and var/lock. Files and dirs with unusual ownership are also reported. The fact that files or dirs are listed does not necessarily mean that they are wrong and need to be fixed. But, the extra information is handy to have as it allows the user to quickly verify the correctness of package content. * Handling of compression of binary files has been improved with support for exepak as well as upx or upx-ucl. Also, when file compression is used, the compressed files are listed in a file which gets included with the documents. * Support has been added for using aria2c as the DOWNLOADER program. You can also now use the variable DOWNLOADER_OPTIONS to set the command-line options for aria2c or wget * Support has been added for creating 'tbz' or 'tlz' packages which use bzip2 or lzma as the archive compression method. * Added a file named src2pkg-special-files.txt to the documents which explains about the various extra files which src2pkg may create or use when creating packages. * A new routine has also been aded that warns you when application of a patch has failed. By setting EXIT_ON_PATCH_FAILURE=YES in the src2pkg.conf file, the default behaviour of only warning can be changed so that src2pkg exits when patch failures are encountered. The default is to only warn because patch doesn't always 'tell the truth' and sometimes reports failures (rejects) when, in fact, the patch has been correctly applied. * Added an option to log the output of the 'configure', 'make' and 'make install' commands each to a separate file inside the SRC_DIR. This option is available always by uncommenting the LOG_COMMANDS line in the src2pkg.conf file, or can be activated with the src2pkg command-line option '-LOG' * Re-introduced a feature to src2pkg which used to be the default. The -SAFE switch causes src2pkg to use INSTALL_TYPE=REAL and activates the backup feature of libsentry so that if running 'make install' is going to overwrite a file which is already on your system, it will first be backed up and then restored before package creation finishes. Although you must be logged in as user 'root' to use this feature, it provides the most accurate method of creating package content while providing excellent safety for your system at the same time. This method of creating package content was the only way that src2pkg worked for a very long time, so the routines are well developed and debugged. * A routine has been added which warns the user if the package contains the /usr/etc or /usr/var directories. Slackware compliant packages normally use sysconfdir=/etc and localstatedir=/var so the presence of these dirs under /usr is considered bad practice. src2pkg now warns you when it detects these dirs in the package and suggests that you add --sysconfdir=/etc and/or --localstatedir=/var to the configuration settings. These paths become hard-coded into the programs that use them, so the directories can't simply be moved. Instead, you must add the options to EXTRA_CONFIGS (with the -e='??' option) and rebuild the package.