diff options
author | Rich Megginson <rmeggins@redhat.com> | 2006-11-02 03:11:40 +0000 |
---|---|---|
committer | Rich Megginson <rmeggins@redhat.com> | 2006-11-02 03:11:40 +0000 |
commit | e5ead29c3e278442b37138bc09acbfdc682fd72b (patch) | |
tree | a04f6b59b6dd0a2b5eb744e872055ed76b7a292a /install-sh | |
parent | 55654f531c5bb4135fa7b0f461a721c44fab3302 (diff) | |
download | ds-e5ead29c3e278442b37138bc09acbfdc682fd72b.tar.gz ds-e5ead29c3e278442b37138bc09acbfdc682fd72b.tar.xz ds-e5ead29c3e278442b37138bc09acbfdc682fd72b.zip |
Bug(s) fixed: 213352
Bug Description: autotools: support redhat/fedora rpmbuild %configure
and %makeinstall
Reviewed by: nhosoi (Thanks!)
Fix Description: The standard way to do an rpmbuild on fedora/redhat is
to use the %configure
macro in the %prep section of the spec file and the %makeinstall macro
in the
%install section. These set all of the bindir, libdir, datadir, sysconfdir,
etc. paths used by the application. %configure sets them to their "real"
runtime locations e.g. /usr/lib, and %makeinstall sets them to their
paths used
for rpm packaging e.g. /var/tmp/fedora-ds-foo-bar-baz/usr/lib. There
were a few
places in our autotools files where we were running afoul of this.
Another thing is that configure defines bindir etc. as literally
'${exec_prefix}/bin' so that the real value doesn't get expanded until
make or
make install time. This means that we cannot create scripts from
templates in
configure, we have to do that in make. So this adds a sed command to
Makefile.am in order to do all of the script and config file path
replacement at
make time.
Since we do the subst this way, whatever $prefix is set during make will be
incorporated into the value of $bindir etc. so we can omit directly
referencing
@prefix@ in the template files.
Platforms tested: RHEL4
Flag Day: no
Doc impact: no
Diffstat (limited to 'install-sh')
-rwxr-xr-x | install-sh | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2004-09-10.20 +scriptversion=2005-05-14.22 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -109,7 +109,7 @@ while test -n "$1"; do shift continue;; - --help) echo "$usage"; exit 0;; + --help) echo "$usage"; exit $?;; -m) chmodcmd="$chmodprog $2" shift @@ -134,7 +134,7 @@ while test -n "$1"; do shift continue;; - --version) echo "$0 $scriptversion"; exit 0;; + --version) echo "$0 $scriptversion"; exit $?;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -213,7 +213,7 @@ do fi # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` # Make sure that the destination directory exists. @@ -226,7 +226,8 @@ do oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' - set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift IFS=$oIFS pathcomp= @@ -295,7 +296,7 @@ do || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit + (exit 1); exit 1 } else : @@ -306,12 +307,12 @@ do $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } - fi || { (exit 1); exit; } + fi || { (exit 1); exit 1; } done # The final little trick to "correctly" pass the exit status to the exit trap. { - (exit 0); exit + (exit 0); exit 0 } # Local variables: |