ChangeLog of Spack
                       S(eb's|lack) package manager.



Syntax:

    === <version> (<date>)

        + Normal change

        = Bug fix

=== 3.11 (20140202)

    + With two or three releases per year during the last two years, I
      think we can say the project is already almost frozen. So, maybe
      a jump to a new branch would be now somewhat artificial, wouldn't
      it? That's how it seems to me, and that's why we will finally stick
      with this nicely sleepy branch 3, where there remains in my todo a
      very little work to complete, not to say nothing.

      The only real task to plan or not is a potential modification of
      the UI, in order to remake it in the BSD/POSIX fashion I like very
      much: "spackfoo -a -b -c /dir" could be as well written "spackfoo 
      -abc/dir" and the long options would be replaced with new short
      ones. It's not such a big work to complete, but I really don't know
      if it worth coding and disturbing you. So, if whereas me you've a
      strong opinion about this project, let me now: sbb-AT-tuxfamily.org.

    = spackadd: escape the slashes so the input won't clash with the AWK
      syntax when used as a pattern.

    + spackcook: drop the code keeping the compatibility with the branch
      2 of the project (check your recipes using the updated DEPRECATED
      file) and add some trivial improvments.

    = spackcook: make the find expressions POSIX in fixmod() and leave
      alone the stuff which is not regular file nor directory.

=== 3.10 (20130901)

    + spackcook: improve the routine to guess the name, version and
      build number of the package. The default for the package name's
      from now on the one of the source directory.

    + spackpkg: improve the outputs by sorting the files before
      archiving them.
      (thanks to appzer0 for the suggestion)

=== 3.9 (20130113)
    
    = spackadd: assume the specified root can be a relative path.
      (thanks to Ren Shijun for the report)

    = spackadd: don't exit the script on non-fatal errors.

    = spackcook: honor the --gccflags option setting.

    = spackcook: don't set any default for CFLAGS and CXXFLAGS, which
      otherwise causes breakages on non-x86 platforms. Consequently,
      the default for the architecture field is from now on "noarch".
      (thanks to Ren Shijun for having raised the problem)

    = spacklist: close the file descriptor after having read each
      file content.

    + spacklist: added the ability to look for/at post-install scripts.
      This has drawn to replace the "--logdir" option with the generic
      "--directory" one (updated DEPRECATED).

    + spacktidy: touch the archives before moving them into the trash
      directory, so this one can then be purged using some external
      timestamp-based tools.

    = configure: added the --(no-)slackware options to the help screen.

=== 3.8 (20120908)

    = spackedit: handle correctly the packages given with a relative path.
      (thanks to appzer0 for the report)

    = spackfind: a pattern beginning with a slash can describe an absolute
      path.

=== 3.7 (20120513)

    + spackadd: look for and use the "ldconfig" command in $ROOT, not the
      one of the system.
      (thanks to appzer0 for the suggestion)

    + spackcook: search and strip the "ar" archives.
      (thanks to appzer0 for the suggestion)

    + spackcook: more portable cleaning routine, using the "ps" command
      instead of procfs.

    = spackcook: remove the .ownerships file after having applied it.

    = spackcook: set the TMPDIR environment variable for spackpkg, so it
      uses the right temporary directory for its intermediate packaging
      steps.

    = spackcook.8: minor fixes and improvments.

=== 3.6 (20111111)

    + spackedit: new command, which provides some facilities for
      tweaking/fixing a package without having to rebuild it from scratch.

    + spackpkg: neither allow the source to be a Slackware package nor attempt
      to fix the Slackware install stuff when the Slackware compatibility mode
      is disabled.

    = spackadd: fixed a tiny bug in the link extraction research.

    = spackcook.8: fixed the mess in the explanation of the ".ownerships"
      file usage.

=== 3.5 (20110923)

    + all: the configure script now allows to select arbitrary paths for
      the package management stuff, instead of the traditional 
      "/var/log/{packages,scripts,removed_packages,removed_scripts}". Thus,
      you can use Spack to manage in a totally independent way your
      "/usr/local" stuff on any distro. However, BE CAREFUL if you use
      to install Spack in your Slackware "/usr/local", as the default
      value for these paths will be from now on "/usr/local/var/{packages,
      scripts,removed_packages,removed_scripts}".

    + all: shrunk the growl() functions (no need to read stdin anymore).

    + spacklist: use the new --logdir=<dir> option to specify an
      alternative package log directory instead of using the "ROOT"
      environment variable (updated DEPRECATED).

    = spackcook: don't clobber the package install stuff already set by the
      make.sh.

    = configure: when the install prefix is "/usr/local" and the FHS
      compliance is requested, the default "/var" directory must be
      "/var/local", not "/usr/local/var".

=== 3.4 (20110831)

    + spacktidy: added long option to the UI and made it ignore Slackware
      packages when the compatibilty mode is off. Also improved a bit the
      code, and added a new "MATCHCASE" option to case-insentive requests 
      while looking for the sub-directories.

    = spacktidy: fixed tidy-sample.conf, which said the field separator for
      the sub-directories was still "," while it has been being ":" since
      the branch 3 (also fixed in DEPRECATED).

    + spackcook: if the argument of the "--recipe" option does not contain
      any slash, look for it into the cookbook (updated spackcook.8).

=== 3.3 (20110807)

    + spacklist: added long options to the UI and slightly improved the code.
      The exit code should also from now on be right in every realistic cases.

    = spackcook: use the correct tar option to open xziped archives.

    = spackrm: escape RE-wise meaningful characters in the given patterns.

=== 3.2 (20110722)

    + spackdesc: cleaner UI. Plus, it is from now on based on POSIX 'awk'
      instead of the undescribed 'fmt' command, attempts to guess the package
      name, and generates a totally Slackware-like output.

    + spackcook/spacktidy: shrunk the names of the configuration files and 
      centralized them in the <sysconfdir>/spack directory (updated the
      DEPRECATED file).

=== 3.1 (20110602)

    + spackfind: better code, which wipes out all the non POSIX options for the
      commands described by the standard. It is a bit faster than the old one,
      uses POSIX Extended Regex Expressions for search patterns, and do not
      need anymore to write any intermediate file on the disk.

    + spackindex: mostly rewritten to be much more flexible. You can from now
      on easily update or remove the entries, and it ensures the content is
      properly sorted. The support for parsing and storing the native Spack
      package format was also added. To enjoy this, you will though have to
      remake or convert the existing data basis, see the DEPRECATED file for
      further details.

=== 3.0 (20110424)

    + This branch inaugurates the last big mutation of the project. Spack now
      becomes a complete and standalone package manager instead of being a
      simple Slackware package generator. It will use its own format, but still
      be able to deal with the traditional Slackware package, so you can still
      use it with this distro as an alternative for the pkgtools.

      The purpose of the branch 3 is to transform the bunch of scripts Spack is
      currently into a coherent toolkit. This will be made step by step, by
      reviewing all of the commands in order to improve their code and unify
      their UI. Once we'll get all this work done, it will be time for the
      branch 4, where the changes in the code will be almost bugfixes and the
      efforts will be first of all put into the documentation.

      However, you have not to worry if for you Spack was just a mere Slackware
      packager. The project will stay modular enough to be plenty usable in this
      way, be sure.

    + spack/tools: renamed using the "spack" prefix, "spack" -> "spackcook",
      "spkadd" -> "spackadd", "spkcpio" -> "spackpkg",  "spkdb" -> "spackindex",
      "spkdesc" -> "spackdesc",  "spkdock" -> "spacktidy",  "spklist" ->
      "spacklist", "spkreq" -> "spackfind".

    + DEPRECATED: added. It explains what is supposed to clash and what you
      should change to conform with the definitive implementation of the
      project (which will not be frozen before at least a year -- don't panic! )

    + spackcook: general revision of the code. Made a better UI, with "score
      score" long options, and short options when it is possible.

      The default output package format is from now on the Spack's one. So the
      internal routines to make traditional Slackware packages were removed.
      The Slackware makepkg script is instead required and used to generate this
      kind of packages.

      A new and more consistent nomenclature is also used, but backward
      compatibility is preserved. See the DEPRECATED doc for further details.

    + spackcook.8: updated.

    + spacktidy: updated to support .spack suffixed packages. It now uses
     "spacktidy.conf" as configuration file. 

    + spackpkg/spackadd: generate and expect .spack suffixed packages.

    + configure/Makefile: recoded to let the user choose the command he wants.
      Moreover, the options of the configure are prefixed with two scores, and
      try to follow the autotools nomenclature.

    + README/HISTORY: updated.
      (thanks to Richard Harris for kindly having tried to fix my bad English)

    + UPGRADE/upgrade: removed, Spack 2.0 is more than one year old.

=== 2.10 (20101212)

    = spkcpio: apply CRC to the leading CPIO archive and NEWC to files.?z, not
      the contrary.

    = spkadd: hid long options that should not be handled by spkrm.

    + spkadd: new -s/--stdin option, which allows to pass requests through its
      standard input. This should make the command more script-friendly. :)

    + spkadd: new -i/--install option, which makes the command not attempt to
      first upgrade the packages. This is expected to speed-up things on distros
      that use spkadd for their initial installation. 

    + spkadd: be kind and no longer consider a package containing no files
      or/and no directories is broken.
      (thanks to appzer0 for pointing out this limit)

=== 2.9 (20101107)

    = spkadd: when looking for the packages to remove, ensure the package name
      is literal before passing it to awk.
      (same player again: thanks to appzer0 for the report ;)

    + spktag: removed. It was a nice little script doing its job, but not very
      handy to use in certain regards. If you look for an equivalent, you may
      try its successor, GUST (Generates Ur Slackware Tagfiles), which will be
      maintained as a separate project:

            http://requiescant.tuxfamily.org/pages/PAGE20101026G.html

=== 2.8 (20101022)

    = spkadd: fixed another problem on the previously mentioned regex, which
      caused the same bug. Shame on me, things should work well from now on
      -- I really hope.
      (thanks to appzer0 for the report)

=== 2.7 (20101021)

    = spkadd: fixed a flawed regex which caused the packages containing the
      basename of the removed package in their own basenames to be removed too.
     (thanks to appzer0 for the report)

=== 2.6 (20101002)

    + spkman: splitted into two commands, spkadd and spkrm, the last being just
      a symlink pointing on the first. This will make the UI more direct.
      Moreover, the spkadd default action is from now on an "upgradepkg
      --install-new" equivalent, the thing you want most of the time. You can
      still force a mere upgrade mode by using the "-u" option.

    + spkdock: replace the invokations of spkman with ones of spkadd.

=== 2.5 (20100822)

    = spkman: during the upgrades, parse the post-install.sh of the new package
      while evaluating the symlinks to remove from the old one(s).

    + spkcpio: handle .t[gx]z Slackware(R) packages as source directory. This
      allows to convert an existing package without rebuilding it from scratch.

=== 2.4 (20100801)

    + spkcpio: new command. It introduces a new and experimental package format,
      which could become the native package format of Spack if the tests are
      conclusive.

      As you've maybe guessed, this format is based on CPIO instead of tar-1.13,
      which is now a quite old piece of software (it was released in 1999). It
      aims to be 100% compliant with the Slackware(R) pkgtools, making no
      difference with a traditional package once installed.

      You can test it if you wish, by using the added "-cpio" option or the
      "cpio" toggle.

      However, don't panic if you heavily use Spack to package your softwares.
      As this new format mainly aims to explore other way to package, it is not
      planed to totally wipe out the tar format output. So, be sure the
      Slackware(R) makepkg support will remain, whatever happens. :)

    + spkman: new command. Manage (install, upgrade, remove) the new CPIO
      package format.

    + spkdock: added support for the new CPIO format.

    = spkdock: escape "+" before passing package name to AWK.

    = spkreq: handle the ".txz" extension of the stored packages when ignoring
      the installed one is requested.

    + spack: added support for the new CPIO format.

    + spack: force locale to "C" to avoid unexpected locale-dependent output
      changes.

    = spack: make the symlink checking right and strict (import the dedicated
      spkcpio routines).

    = README: typo fixes.

    + spack.8: updated.

=== 2.3 (20100422)

    + spack: excluded symlinks from source permission initialization (prevents
      mess in output when these ones are dead).

    = spkdock: move *.asc and *.txt files before attempting the upgrade which
      can end the function (also speeds up the upgrading process).

    = spkdock: fixed the path of the alternative config file example in the help
      digest.

=== 2.2 (20100320)

    + spkdock: Major code cleanup. Most of the parameters can be specified from 
      the  command-line with the new -pkgdir, -srcdir, -subdir and -trashdir
      options. There is also the possibility to select an alternative
      configuration file through the -config option or a spkdock-<conf> symlink
      pointing on the command. The syntax of main variables has a little bit
      changed in a cleaner way and new options've appeared: NOSUBDIR (replaces
      $lazy_mode), AUTOPATH (allows a more strict management of docks), AUTOTXT
      (to automatically store the .txt associated to packages) and AUTOASC
      (does the same with the .asc files). This new code should also handle
      correctly the paths containing spaces.

    + spkdock.conf: updated to reflect changes in spkdock. 

    + spack: added support for xz-compressed source tar archives.

    = spack.8: minor fixes.

=== 2.1 (20100104)

    + spack: guess the root directory of archives, even when they don't
      explicitely store it.

    + spklist: support for "glob" patterns plus character classes in package
      names. This replaces the "-e" and "-b" options.

    = spkdb: guess the source file type upon its base name instead of the
      complete path.

    = spack.8: minor fixes.

=== 2.0 (20090909)

    + spack: new AWK-based parsers to get definitions in the configuration and
      in the make.sh scripts. These ones support multi-lines definitions and
      from now on you can always redefine definitions from the command-line.

      All apologies, to achieve that I needed to change the syntax. This makes
      the files written for prior versions of Spack incompatible with this one:

        * there's no more 'default' profile, instead of "arch[default]", you
          just write "arch";
        * all of the main definitions can be profiled (yes, the reposito...
          er... farm, too :), instead of the deprecated <definition>[<profile>]
          one, you specify this through the new <profile>.<definition> syntax;
        * the definitions exported in the make.sh's environment are in uppercase
          (e. g. NAME, VERSION, ... ) and you can redefine these ones from the
          scripts with the special "#define DEFINITION value" syntax.

      Refer to "man 8 spack" for further information. Scout's honour, in the
      future I will try to keep as much as possible backward compatibility. :)

      Nevertheless, and in hope to be forgiven for this time, I added little
      'upgrade' AWK script, which should help you to convert your files. Read
      the new 'UPGRADE' file for further information.

    + spack: use the "+" POSIX punctuation in find expressions used to fix
      permissions. This should speed up the process and doesn't break anything
      provided your source directory doesn't contain more than 131072 (or the
      `getconf ARG_MAX` value of your system) files/directories (let me know if
      you meet such a source ;).

    + spack: added a "-debug" option, which just shows the variables exported
      by Spack in the environment of the executed script, before exiting.

    + spack: use AWK for centerized output.

    + spkreq: added "LANG=C" as first instruction in order to speed up "grep" in
      UTF-8 environments (assume that files packaged use only ascii characters
      in their names; this is the case of the official Slackware packages and
      should be the case for yours).

    + Updated spack.8.

=== 1.1 (20090721)

    + tools: added support for the new txz package format in spkdb, spkdock and
      spktag.

    + tools: use the growl() function of spack everywhere (unify the output
      style).

=== 1.0 (20090719)

    + spack: added support for xz package compression. The gzip compression is
      still available through the new "-oldfashion/oldfashion" option/toggle and
      is automatically used on systems where xz is not installed.

      Notice that Spack won't support as many formats as the official makepkg
      script does. As a matter of fact, the tar-xzipped format seems to be the
      only one that will be widely used in the future, so add support for others
      will probably bloat the script for very little gain. Let me know if you
      have some different thinks on the subject, though. :)

    + spack: added the sysconfdir environment variable in the make.sh
      environment. This one is equal to "/etc" if the prefix is "/usr" and
      "$prefix/etc", otherwise.

    + spack: added symlink-based profile selection. This allows to automatically
      use a profile by invoking spack through a spack-<profile> symlink. 

    = spack: made the "-prepend" option to work properly with the spack
      packaging method.

    = spkdock: removed the ugly "/", prepended to the paths.

    = Fixed the Makefile targets "spack" and "tools".

    + Updated spack.8.

=== 0.7 (20081008)

    = spack: don't let the custom profiles overwrite the variables of the build.

    + spack: fetch sources over the net when the source name begins with
      "http(s):" or "ftp(s)". Wget is required to use this feature (spack.8
      updated).

=== 0.6 (20080823)

    + First public release.

    + spack: the configuration file is from now on "$sysconfdir/spack.conf".

    + spack: try to find a "default" named build before using the dumb process.

    + spack: use "ls" to test if $pkgdir is empty.

    + spack: replaced bibliography() and bookworm() by oook(), which supports
      special expansions in the "docs" profile definition.

    + spack: new fish() function, dedicated to the parameter expansion.

    + spack: removed alias support, symlinks are a more simple and flexible
      solution.

    + Updated spack.8

=== 0.5 (20080812)

    + Use a configure/Makefile process to install.

    + Integrated the frogz-tools, renamed in a more identifiable fashion
      (binocle -> spklist, mirza -> spkreq, mirzadb -> spkdb,
       tagliatelle -> spktag, tank -> spkdock).

    + spkreq: code cleanup.

    + all: precise the license in the help screen.

    + New script: spkdesc, which helps to create well-formatted slack-desc
      files.

    = spkdock: upgrade only on demand.

    + Added a README file, summarizing what is Spack and explaining how to
      install it.

    + Added a manual: "spack.8".

    + Added an HISTORY file, to say some words about frogz.

=== 0.4 (20080628)

    = Don't attempt to overwrite the definitions set in the script from the
      command-line (warn instead).

    + Don't control final ownership from the build, but from the package (with
      the "$pkgdir/install/ownership" file).

    + Automatically search and put docs in the package.

    + Renamed "spackopt" "toggles", more significant...

=== 0.3 (20080506)

    = s/dummy/dumb/, more appropriate to qualify the option.

    + Install spack in <prefix>/sbin then create a symbolic link in <prefix>/bin.

    + Export sign and build informations to the "make.sh".

=== 0.2 (20080416)

    = Reset the package root to 755 in the superuser code part (prevent "/" from
      being set to 700 when the package is installed).

    = Put the docs in $prefix/doc/$soft-$version (was $prefix/$soft-$version).

    + Export name, version and architecture informations to the "make.sh".

    = Don't try to get the docs with the "-ready" option.

=== 0.1 (20080405)

    + First private functionnal release.

    + Supported options: -local, -noclean, -nodesc, -nodoc, -nodummy, -nofix,
      -nopkg, -nostrip, -nozip, -pedantic, -prepend, -ready, -arch=, -build=,
      -docs=, -gccflags=, -name=, -prefix=, -profile=, -sign=, -tmpdir=, -use=,
      -version=.