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.9 == Notes on upgrading: * One new option (COMPAT_NAME_SUFFIX) has been added to the /etc/src2pkg/src2pkg.conf(.new) file, but most users will not need to worry about it. COMPAT_NAME_SUFFIX controls the suffix which is added to a package name when building 32-bit packages for a 64-bit system. * src2pkg now supports multi-lib and cross-compile environments. The new command-line options -M32, -M64 or --machine= can be used to specify the '-m??' option to gcc. For instance, when using src2pkg to create a 32-bit program for use on a Slackware64 multi-lib system, passing -M32 causes gcc to build for the proper machine. The -L32, -L64 and --libdirsuffix= options control the library paths used for compiling and packaging. Use the -L options to set the proper options if the src2pkg defaults are not correct for your system. With Slackware64, you should only need to use the -M32 option in order to build 32-bit programs or libraries, provided you have installed the necessary 32-bit environment. The options --cc=?? and --cxx= can be used to specify which compiler to use when using src2pkg with cross-compilers or any other non-standard compiler. * A change has been made in the src2pkg API, but without breaking backward-compatibility. A new, optional instruction named 'build' has been added. src2pkg build scripts which contain a function named 'build' will use that instead of running the configure_source, compile_source and fake_install functions. This makes it much easier to copy and paste code from other build scripts, including SlackBuild scripts or 'port'-style scripts. * A new tool named sb2sp has been added. sb2sp 'translates' SlackBuild scripts into the src2pkg format. Translating code from other scripts is tricky, but this tool usually gets it right for most commonly-found SLackBuild formats, including the official build scripts and those found on slackbuilds.org. Most scripts can be translated in either a short or long form. The short form simply uses the options to the configure script which are found in the SlackBuild. The long form copies and translates all the useful middle parts of the SlackBuild, as well as the Copyright info. Many users will wonder what advantages there are to translating an already good SlackBuild, but using src2pkg can help to ensure complete and correct package creation, while keeping the build system cleaner. This is especially true for sources which do not respect the DESTDIR variable, or those which do not properly install all the needed files. By using src2pkg you can avoid ever having to 'spam' your system to create a package or having 'orphaned' files left behind after creating a package. * Commands for stripping executables and libraries are now fully configurable. * drag-n-drop support has been added to the standard installation. src2pkg-dnd has been added to the files installed under /usr/bin and a src2pkg-dnd.desktop file has been added to the installation. This has only been tested with XFCE, but should be working for KDE desktops also. * Added the ability to pause the execution of a build at a named function. * Added 'instroot', 'DIST_ROOT' and 'BUILDROOT' to the list of supported DESTDIR types. == Version 1.9.8 == Notes on upgrading: * New options have been added to the /etc/src2pkg/src2pkg.conf file, so you may want to have a look and see if you want to use them. If you have customized your src2pkg.conf file, the new one will be installed as: /etc/src2pkg/src2pkg.conf.new without over-writing your changes * The src2pkg-helpers version has been updated, so if you upgrade src2pkg from an earlier version you'll be prompted about needing to run 'src2pkg --setup' so that the src2pkg-helpers package gets updated. * Added a method for packaging tcl script programs * Added a routine which can automatically create *.desktop files * Added support for AUDIO_NOTIFICATION. src2pkg can now notify you when package-building succeeds, fails or is cancelled. Notification can be done using a 'beep' sound from the PC speaker, by playing a recorded sound, or by speaking an error text. Text-to-Speech can use either the 'flite' or 'festival' programs * Added a routine which creates a *.desktop file when applicable and possible This option is off by default, but can be enabled by putting AUTO_DESKTOP=YES in your srcpkg.conf file. A routine has also been added which checks and corrects any installed *.desktop files if possible. * Added support for *.zip source files * Added support for *.lzma patches * Added the ability to include --build=??, --host=?? flags in the configure options. host can also be added as a stand-alone option after all other options. When used, these options are not added directly to EXTRA_CONFIGS but are treated separately so that build scripts remain arch-agnostic. These options are off by default. To enable the latter style, uncomment the line for ADD_HOST=YES in your conf file. To enable the former style, uncomment the line ADD_EXPLICIT_HOST=YES in your conf file. When using the ADD_EXPLICIT_HOST option, the options are only added if the configure script appears to support them. See the ChangeLog for more about these options. * Added the ability to resume package creation. See man-pages for more info. * Added the ability to pause the build before or after each package-creation step. * Added many more package sanity checks and informative checks just before compressing the package. * Added a new INSTALL_TYPE called UNION, which uses a unionfs/chroot environment for package content creation. This method makes content creation extremely safe while running as root. The new option can be specified from the command-line with the '-UNION' option or by setting the INSTALL_TYPE option to UNION in your src2pkg.conf file * Added support for creating 'txz' packages using the xz file compression tools. * Added support for a configurable LOG_DIR location. By default, logs are written to the OBJ_DIR(usually the same as SRC_DIR) if logging is requested. * Upgraded libsentry in src2pkg-helpers to support glibc 2.8 to 2.10 * Support Slackware64 * Many other small improvements and bug-fixes == 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.