
	CHANGES file for the src2pkg and trackinstall programs
		by Gilbert Ashley <amigo@ibiblio.org>
	
	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 2.0 ==
	Notes on upgrading:
		* Some new functionality has been added which makes it
		possible to create new kinds of packages. A couple of 
		new options have been added to the src2pkg configuration
		file in: /etc/src2pkg/src2pkg.conf
		to accomodate the creation of these new package
		formats. Unless you are going to use src2pkg to create
		these new types of packages, you can ignore or remove
		the file /etc/src2pkg/src2pkg.conf.new which gets
		installed when you upgrade src2pkg from a previously-
		installed version.
		
	* The src2pkg documentation has been completely rewritten
	  to reflect the many changes that have been made to src2pkg
	  over the last couple of years. Hopefully, the new docs
	  are more clearly written and useful, while being smaller
	  than the former documents. Documentation for some of the 
	  advanced features still needs to be added, though.
	  
	* src2pkg now uses the -JAIL option by default for creating
	  package content. Up till now, we have used DESTDIR as the
	  default INSTALL_TYPE, but even though DESTDIR is well known,
	  it has some serious drawbacks. Even though the JAIL method
	  will sometimes fail, it will fail less than DESTDIR, and
	  will not do the damage that DESTDIR can do when used while
	  running src2pkg as the 'root' user.
	  
	* src2pkg can now create installable debian-type packages
	  which use the '.deb' suffix, '.pet' packages as used by
	  Puppy Linux and its' derivatives, '.rpm' packages as used
	  by fedora and other distros, and '.tazpkg' packages as
	  used by the slitaz distro. 
	  Providing the functionality for creating these other types
	  of packages didn't require major changes in the existing
	  src2pkg code, but adds about 700-80 lines of new code which
	  is still being improved.
	 
	* The usage of the '-Z?' option has been slightly changed. A quick
	  look at the man-page or the advanced help page shown when running
	  'src2pkg -hh'
	  will show the new 'order' of the -Z1 to -Z4 options.
	  
	* A new command-line option '-CWD' has been added which makes
	  it easy to override the default SRC_DIR and PKG_DIR locations
	  under /tmp, so that everything gets doen in the same directory
	  where src2pkg is run from.
	  
	* A new command-line '-BUMP' option has been added which will
	  automatically increment the BUILD (release) number for the
	  package and update the src2pkg script to reflect the change.
	  
	* New functionality has been added which allows packages to be
	  split into several smaller packages. Packages can be split into
	  'devel' (or 'dev'), 'i18n' (or 'nls'), 'docs' (or 'doc') and
	  'solibs' (or 'libs') packages along with the main package. In
	  all cases except for the 'solibs' package, files which should
	  go into a separate package are *moved* into the split package.
	  In the case of 'solibs', the files (shared libraries) are
	  *copied* into the split package as the main package will, most
	  likely, need the libraries to be functional. There are a few
	  cases where one might want or need just the libraries without
	  the main program and this is where a separate solibs package
	  can be useful. An example is the blackbox Window Manager, which
	  includes libbbt which is used by several programs which are not
	  part of blackbox. If you want to use these programs, but don't
	  want to install the full blackbox, a 'solibs' package of the
	  blackbox libs makes this possible.
	  
	  Split packages can be created for all the package formats
	  supported by src2pkg, so we have gone from creating just one
	  type of package, to being able to produce 25 package types -
	  5 types for each of 5 package formats.
	  
	  Creating separate packages can be done with the command-line
	  option '--splitpkg=??' where '??' is a single, or comma-separated
	  list of the split package types. Example:
	  src2pkg --splitpkg=devel,solibs,i18n,docs name-of-tarball
	  The example shows all the possible options, which can be given
	  in any order
	  
	* src2pkg itself now comes packaged in each of the five package
	  formats it supports and the 'src2pkg --setup' routine creates
	  and installs the src2pkg-helpers in the native package format,
	  or you can tell it which type of package to create and install,
	  if you are using a system which supports multiple packaging tools.
	  'src2pkg --setup' also supports generic systems which have
	  no package manager at all.
	  
	  
== 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.