This appendix lists the change log for each release of the
EPM software.
Changes in EPM v3.7
- Fixed init script support for Tru64 packages.
- AIX output now correctly generates the inventory file
for files in /usr and /opt.
- The Slackware packaging code swapped the output
directory and product name when generating the
post-install script.
- RPM dependencies of the form "%requires package >=
version" are now correctly written in the spec file.
- AIX output now correctly lists file sizes by directory
and handles /opt properly.
- RPM output now correctly handles installing,
upgrading, and removing init scripts.
- RPM output did not work with filenames that contained
a dollar sign ($).
- Added Slackware packager support based upon a patch
contributed by Alec Thomas.
- The file copy code reported write errors for the
source filename and not the (correct) destination
filename.
- Fixed the handling of absolute output directories when
generating RPM packages.
- The configure script did not support the OPTIM
environment variable for custom optimization settings.
- Portable packages updated the permissions of
configuration files before they were copied.
- Portable installations did not remove empty
installation directories when the remove script was
run.
- Portable patch installation did not correctly
determine when root or /usr files were present in the
patch.
- OSX packages incorrectly looked in /System/Library for
the init scripts instead of /Library.
- RPM building did not work properly when --output-dir
was specified using an absolute path.
- Made cosmetic changes to the setup/uninstall GUIs.
- The setup GUI did not support software patches.
- The documentation incorrectly specified runlevels()
instead of runlevel().
- The portable distributions incorrectly used
/usr/local/src/rc.d as a fallback location for init
scripts.
Changes in EPM v3.6
- Added a GUI uninstall program to be distributed with
portable distributions with a setup image.
- MacOS X portable packages now support graphical setup
and uninstall using the Apple authorization API.
- Debian packages did not include the (required)
trailing period when running the update-rc.d script.
- BSD packages now create directories using postinstall
commands instead of listing them directly. This
should eliminate errors from the FreeBSD pkg_delete
command.
- File dependencies were incorrectly specified in RPM
spec files.
- IRIX portable distributions didn't write the chkconfig
commands properly.
- The mkepmlist utility didn't support files as well as
directories.
- EPM didn't do variable expansion of imported files
("<foo.txt") or in-line data ("<<FOO")
- Now build gzip'd depot files as well as the tar.gz
files when creating HP-UX software packages.
- Now correctly use --libdir setting to locate the setup
GUI.
- Now use rpmbuild command, if available, to build RPM
files since newer versions of RPM may not map the
"-bb" option to build a package.
- Now set the RPMDIR environment variable when building
with older versions of RPM that don't understand the
"topdir_" variable.
- Now handle dependencies of the form "package >=
version" in Debian packages.
- Portable distributions that didn't have any files in
/usr or in / would look for a non-existent .sw or .ss
file.
- EPM's sample list file didn't include the man pages
for setup or setup.types, and installed the epm list
file format man page in the wrong directories.
- EPM would quote the ":" character in filenames but
didn't need to.
- EPM tried to move the wrong RPM file on non-intel
systems.
Changes in EPM v3.5.1
- OSX packages did not set the "install as root" package
type, so package installation usually failed.
- OSX packages installed init scripts in
/System/Library/StartupItems, but non-Apple packages
should be installed in /Library/StartupItems.
- Added support for "requires(foo)", "uses(foo)",
"provides(foo)", and "order(foo)" as options for init
scripts. These options are currently only used when
creating OSX packages.
Changes in EPM v3.5
- Added support for MacOS X package generation.
- No longer need/use RPMDIR when building RPMs, just
set the "topdir_" variable in the spec file.
- The portable removal scripts didn't correctly write
the list of init scripts to remove.
- Added a new --output-dir option contributed by
Geoffrey Wossum.
- Not all implementations of the "id" command support
the "-u" option, so EPM now looks at the default
output.
- RPM dependencies with a single version number didn't
get written to the spec file properly.
- Added support for file options - nostrip(),
runlevel(12345), start(nn), and stop(nn).
- Filenames can now contain spaces, either by putting
the full name in quotes ("file with spaces")
or using the backslash character
(file\ with\ spaces).
- The mkepmlist utility didn't handle symlinks properly.
- BSD packages needed to list the directories to remove
separately and in reverse order.
Changes in EPM v3.4
- No longer install init scripts in run levels 2 and 5
under Solaris, which runs all init scripts in each run
level.
- The tar files produced by EPM didn't conform to the
POSIX 1003.1 spec. EPM now puts the POSIX version
number (00) and supports "long" filenames up to
255 characters in length.
- AIX packages did not use the correct path for files
placed in the root partition.
- Now install init scripts for *BSD in
/usr/local/etc/rc.d.
- Portable installation scripts now issue chown and
chgrp commands for all installed files that are not
owned by user root.
- No longer use or pad empty tar files, which saves 5k
of disk space per distribution.
Changes in EPM v3.3
- UnixWare 7 needs the absolute path when transferring
an AT&T package directory to a .pkg file.
- Now use the "id" command (POSIX) instead of "whoami"
(BSD) to check that the installing user is root.
- Various fixes for OpenServer.
- Now use the "-ln" option when checking for the size
of the distribution files in portable distributions.
- New C implementation of mkepmlist, based on a
contribution from Andreas Voegele.
- The portable install and patch scripts now change the
permissions of the installed "remove" script to 544.
- The wildcard character * did not match 0 characters if
the pattern and the filename string differed only by
the trailing * (e.g. "Courier" and "Courier*").
- IRIX pre/postremove scripts are now copied after
installation so that they can be executed when removing
the inst/tardist package.
- HP-UX postinstall/preremove scripts would execute init
scripts from /sbin/init.d/sbin/init.d.
- The copyright string wasn't being quoted in portable
installation scripts.
- EPM now checks to see if an executable file is a
shell script before running the "strip" command.
Changes in EPM v3.2.1
- The check for Darwin (MacOS X) in the portable
installation scripts was using "==" instead of just
"=".
Changes in EPM v3.2
- Added "SHELL=/bin/sh" line to portable installation,
patch, and remove scripts in case the root shell is
not /bin/sh or a compatible shell.
- The epminstall utility didn't support the EPMLIST
environment variable as documented.
- The "native" distribution format is now "deb" if
the "dpkg" command is installed in /usr/bin.
- Debian packages did not use the release number in
the Version: keyword.
- Changed the portable installation script support
for init scripts to look for scripts in both rc2.d
and rc3.d, and to check for the existence of all
rc directories before installing into them.
- Changed the portable installation script to prepend
/bin, /usr/bin, and /usr/ucb to the beginning of the
PATH variable so the "tar", "rm", and "mv" commands
can be found in whatever directory the local system
uses.
- AIX packaging now works.
- Added support for the Darwin (MacOS X) tar command
in portable packages (sudo ./foo.install :)
- IRIX inst packages incorrectly had the postinstall commands
in the preinstall and removal scripts.
- The setup GUI now requires FLTK 1.1.x.
Changes in EPM v3.1
- Added support for "<<end ... end" and "<filename" to
insert descriptions and commands in-line and from a
file.
- Added new --software-dir option which specifies the
location of the EPM software directory (default
/etc/software).
- Added new %if, %ifdef, %elseif, %elseifdef, %else, and
%endif directives for list files (addition contributed
by J. Nordell.)
- The GUI setup program left the "Next" button enabled
after the license check.
- Fixed the dependency strings created for HP-UX
swinstall (fix contributed by R. Begg.)
- Wasn't installing the man pages in section 5.
- When generating Debian packages, the DEBIAN directory
might not have the correct permissions due to a
restrictive umask. EPM now forces the correct
permissions for the package archive.
- HP-UX swinstall packages now use the prerequisites
rule instead of corequisites to ensure that the
%requires dependency is enforced.
- Dependencies for Debian packages are now listed on a
single line per type rather than one line per
dependency.
- EPM now detects RPM 4.0.3, which (mysteriously) now
uses "--target arch" instead of "--target=arch".
Changes in EPM v3.0
- Added new documentation.
- Added new "-a arch" option to support specific
architectures (e.g. i586, i686, ultrasparc, etc.)
- Added support for the *BSD package format using
pkg_create.
- Added support for the AIX package format using
the backup program.
- Added new epminstall utility to build list files
from "make install" targets.
- Added snprintf/vsnprintf functions for systems that
don't provide them, and use snprintf and vsnprintf
for all formatted strings that aren't just numbers.
- Added new run_command() function to replace use of
system() function.
- Added new %provides directive.
- Revamped the setup GUI, including support for
installation types in the setup GUI, so that you can
select groups of products or choose a custom
installation.
- The mkepmlist utility had a bad regular expression
that thought that any argument (directory names, etc.)
with a dash ("-") in it was an unsupported option.
- Fixed a bug in the removal script: config files were
removed by the remove script...
- Changed the config file install logic to copy the new
config file (instead of moving it), so that an
unchanged config file can be detected and removed.
This provides the best of both worlds: unchanged
config files are update automatically by an
upgrade/install, while changed ones are preserved.
Changes in EPM v2.8
- The line breaking code did not include an extra
space, so filenames in the portable install/patch/
remove scripts would be joined instead of separated.
- The setup GUI did not allow the user to toggle a
software product for distribution if the product was
selected (nav box around it).
- The mkepmlist program didn't get the permissions of
each file (just the parent directory.)
- The portable installation scripts used the -L or -h
option to test for symlinks with the test command. The
choice of option was based on the build platform,
making the script non-portable. Now use -h exclusively
since it is supported on all UNIX's we have access to,
even with GNU test even though it isn't documented...
Changes in EPM v2.7
- Fixed a bug in the configuration script with the
--with-fltk-includes option.
- Tru64 UNIX distributions now use the name "tru64"
instead of "dunix". "dunix" is still supported
in list files for compatibility with old list files.
- Added support for portable scripts under AIX.
- Fixed the space checking code in portable installation
scripts.
- Now break up long lines in the portable install/patch/
remove scripts.
Changes in EPM v2.6
- Changed the automatic version number generation code to
properly handle patch, beta, and pre releases.
- Added support for release numbers in RPM files.
- Added support for version number ranges in dependencies,
either as "low-version high-version", "< version", or
"> version".
- Eliminated some GCC warnings about using a char to
index into an array.
- Added a disk space check to the portable installation
scripts.
- Added a new mkepmlist utility, based on a Perl script
by Christian Lademann.
- Added a "keep files" option (-k) to epm to keep the
intermediate (spec, etc.) files around after building
the binary distribution.
- Added support for Tru64 UNIX software packages (setld).
- Patch distributions were incorrectly backing up the
original files, causing the original backup to be lost.
- Pre/post install/remove scripts were not using the
right filename for Solaris PKG distributions.
Changes in EPM v2.5
- Added support for pre-install, post-install, pre-patch,
post-patch, pre-remove, and post-remove commands.
- There was no way to use a literal $ in scripts or in
filenames. Use $$ to include a single $.
- The config and license file support for AT&T software
packages did not check to see if the source file had
an absolute path. This would produce an invalid
prototype file.
- The RPM --target option was not being called with an
equal sign, which caused problems with RPM 4.0.
- Updated the Debian packager to use the prerm and postrm
script names to match reality.
- Updated the Debian packager to support the Replaces
dependency.
- Updated the portable and RPM distributions to check
for the new SuSE 7.1 init.d directories.
- RPM distributions now use %config(noreplace) for
config files, to duplicate the behavior that is
expected.
- The portable scripts now use the autoconf echo test to
determine the proper options for echo (-n or \c),
rather then hardcoding this based on the build system.
Changes in EPM v2.4
- The [] wildcard matching did not skip over the
character that was matched. This prevented matches in
most cases...
Changes in EPM v2.3
- Fix for an incredibly stupid bug in the portable
distribution code - was using ! instead of ~ to mask
off the write permission bits in the distribution
archive.
- Now use getpwuid() instead of getlogin() to get the
username of the packager.
- The RPM distributions now use the same init.d script
logic as portable distributions. This should make them
portable to all known Linux distributions as well as
avoid a *very* nasty installer bug in RedHat 7.0.
- The HP-UX swinstall code did not properly handle
directories or config files.
- The [] wildcard matching rule did not accept ranges
(e.g. "[a-z]", "[0-9]", etc.)
- Added VPATH support and distribution targets to
Makefile.
- Added support for defining variables in list files;
the format is "$name=value".
- The variable expansion code didn't check for ${name}.
Changes in EPM v2.2
- New HTML documentation files.
- Updated the BuildRoot directive in RPM spec files to
be an absolute path; RedHat 6.2's version of RPM adds
a leading slash otherwise.
- IRIX defaults to run level 2...
- The setup GUI now displays an error message if run by
a non-root user.
- The setup GUI now provides "Install All" and "Install
None" buttons in the software selection pane.
- Added a "native" distribution format to select the
native format for a particular OS (Linux defaults to
RPM format...)
- The tar file generation code now always appends at
least 2 zeroed blocks to the end of the archive. This
eliminates error messages from Solaris tar and seems
to be compatible with all other tar programs.
- Added the SuSE RPM directory to the standard search
path.
- Added support for a new %packager directive.
- The strip command used was redirecting stderr before
redirecting stdout.
- The portable distributions now set the umask to avoid
problems with buggy tar programs and Linux
distributions.
- Added command-line option to specify the location of
the setup program.
- Added support for wildcards in source filenames.
- The OS version number is now truncated to only contain
the major and minor release numbers.
Changes in EPM v2.1
- Moved setup program to /usr/lib/epm ($prefix/lib/epm)
to avoid name clash with RedHat setup program.
- Added Debian distribution files from Jeff Licquia.
- Configure script changes for GCC 2.95.x and Solaris.
- Portability fixes.
- Now look for RPMS in different "standard" locations
after building them; the RPMDIR environment variable
can be used to override the default locations.
- The sample project list file (epm.list) was missing
from the 2.0 distribution.
- Now check for write permission in /usr by writing a
test file (/usr/.writetest); this should make diskless
client installations more reliable.
- Added support for variables on the command line
(name=value); insert into project filenames using
$name.
- Variable expansion is now done on all lines and fields.
This allows variables to be used in scripts and in the
permissions field, for example.
- Now only specify run levels 0 and 3 for init scripts
(0, 3, and 5 for Linux.)
- Now support init scripts in /sbin/init.d and
/sbin/init.d/rcN.d (SuSE.)
- RPM distributions should now work OK for non-Red Hat
based systems, in particular for init scripts.
- PKG distributions are now also generated in the
"package stream" format as well as the directory and
tar.gz file formats.
Changes in EPM v2.0
- New "-f" option to generate vendor-specific software
distributions. Now support AT&T, Debian, HP-UX, IRIX,
and Red Hat software distributions.
- New "-s" option to include the ESP Software Wizard (GUI)
with portable distributions.
- The "-t" option (test) is no longer supported.
- New "-v" option to control the amount of information
that is reported.
- New graphical setup program for portable distributions.
- New "description" directive.
- New "format" directive.
- New "include" directive.
- New "replaces" directive.
- Portable distributions should now be more portable.
Changes in EPM v1.7
- The %requires and %incompat directives now support
specification of files as well as products.
- The init script installation code now creates a link in the
init.d subdirectory to avoid frustrating well-trained
fingers.
- The progress messages for shared and non-shared software were
the same.
Changes in EPM v1.6
- Installation archives were missing the ".ss" and ".pss"
files that were added to support diskless installations.
- The scripts didn't handle removing distributions that
had no non-shared components.
- The scripts didn't return a non-zero exit status if the
user did not agree with the license or want to install.
Changes in EPM v1.5
- Now support diskless installations; all files destined for
/usr are put in a separate archive and are installed (or
removed) only if /usr is read+write.
Changes in EPM v1.4
- Now map group "sys" to "system" for Digital UNIX and "root" for
Linux.
- The initialization script installation now checks for the presence
of run levels 4 and 5.
Changes in EPM v1.3
- Now use the "p" option to tar to ensure that file permissions
are created properly. This is normally the default for the
super-user, but not under Digital UNIX!
- Initialization scripts are now linked to run levels 0, 2, 3, 4,
and 5.
Changes in EPM v1.2
- Patch distributions were not correctly named.
- Added new "initialization script" file types "i" and "I". The
new file types place the scripts in /etc/software/init.d and
make links to the appropriate system-specific rc.d
directories and run the scripts to start and stop things
accordingly.
Changes in EPM v1.1
- The "whoami" command isn't always in the user's path, so
scripts now use a hard-coded path (setup by the configure
script) to the program.
- Added a check for IRIX64 (64-bit kernel instead of n32.)
- The %system directive now supports release numbers, e.g.
"irix-6.5".
- The %system directive now supports "!" (not) operator so you
can do things like "%system irix !irix-6.5" to select any
IRIX release except IRIX 6.5.
- Files that already exist on the system are renamed to
"filename.O" on installation and back to "filename" when
removed (except for config files, which don't overwrite and
aren't removed.)
- Prerequisites (%required directive) now look for required
product in the current directory and install it automatically
if it is available and not already installed.
- The copyright notice in the installation script was not
displayed if the user used the "now" option.