pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/mk/install Replaced the shell substitution ${egfile#${...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/5cb7321313c7
branches:  trunk
changeset: 497794:5cb7321313c7
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Thu Aug 04 15:03:39 2005 +0000

description:
Replaced the shell substitution ${egfile#${PREFIX}/} with a shell
function that does the same. The Solaris /bin/sh does not know this type
of substitution. Now we could only have problems with /bin/sh which do
not know functions, but as we are using shell functions in many other
places, this should be fine.

diffstat:

 mk/install/bsd.pkginstall.mk |  45 +++++++++++++++++++++++++++++++------------
 1 files changed, 32 insertions(+), 13 deletions(-)

diffs (145 lines):

diff -r bb9e832d0d8e -r 5cb7321313c7 mk/install/bsd.pkginstall.mk
--- a/mk/install/bsd.pkginstall.mk      Thu Aug 04 14:22:58 2005 +0000
+++ b/mk/install/bsd.pkginstall.mk      Thu Aug 04 15:03:39 2005 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkginstall.mk,v 1.5 2005/07/29 21:41:04 jlam Exp $
+# $NetBSD: bsd.pkginstall.mk,v 1.6 2005/08/04 15:03:39 rillig Exp $
 #
 # This Makefile fragment is included by bsd.pkg.mk to use the common
 # INSTALL/DEINSTALL scripts.  To use this Makefile fragment, simply:
@@ -13,6 +13,21 @@
 
 .include "../../mk/bsd.prefs.mk"
 
+# The Solaris /bin/sh does not know the ${foo#bar} shell substitution.
+# This shell function serves a similar purpose, but is specialized on
+# stripping ${PREFIX}/ from a pathname. 
+_FUNC_STRIP_PREFIX= \
+       strip_prefix() {                                                \
+         { echo "$$1"; echo ${PREFIX:Q}/; }                            \
+         | ${AWK} 'NR==1 { s=$$0 } NR==2 { prefix=$$0 }                \
+           END { plen = length(prefix);                                \
+             if (substr(s, 1, plen) == prefix) {                       \
+               s = substr(s, 1 + plen, length(s) - plen);              \
+             }                                                         \
+             print s;                                                  \
+           }';                                                         \
+       }
+
 DEINSTALL_FILE=                ${PKG_DB_TMPDIR}/+DEINSTALL
 INSTALL_FILE=          ${PKG_DB_TMPDIR}/+INSTALL
 
@@ -182,6 +197,7 @@
 
 ${INSTALL_PERMS_FILE}: ../../mk/install/perms
        ${_PKG_SILENT}${_PKG_DEBUG}(                                    \
+       ${_FUNC_STRIP_PREFIX};                                          \
        eval set -- ${SPECIAL_PERMS} ;                                  \
        ${TEST} $$# -gt 0 || exit 0;                                    \
        ${ECHO} "# start of install-perms";                             \
@@ -199,7 +215,7 @@
        while ${TEST} $$# -gt 0; do                                     \
                file="$$1"; owner="$$2"; group="$$3"; mode="$$4";       \
                shift; shift; shift; shift;                             \
-               file="$${file#${PREFIX}/}";                             \
+               file=`strip_prefix "$$file"`;                           \
                ${ECHO} "# PERMS: $$file $$mode $$owner $$group";       \
        done;                                                           \
        ${ECHO} "EOF_PERMS";                                            \
@@ -255,6 +271,7 @@
 
 ${INSTALL_FILES_FILE}: ../../mk/install/files
        ${_PKG_SILENT}${_PKG_DEBUG}(                                    \
+       ${_FUNC_STRIP_PREFIX};                                          \
        eval set -- ${CONF_FILES} ${SUPPORT_FILES} ${CONF_FILES_PERMS} ${SUPPORT_FILES_PERMS} ; \
        ${TEST} $$# -gt 0 || exit 0;                                    \
        ${ECHO} "# start of install-files";                             \
@@ -272,16 +289,16 @@
        while ${TEST} $$# -gt 0; do                                     \
                egfile="$$1"; file="$$2";                               \
                shift; shift;                                           \
-               egfile="$${egfile#${PREFIX}/}";                         \
-               file="$${file#${PREFIX}/}";                             \
+               egfile=`strip_prefix "$$egfile"`;                       \
+               file=`strip_prefix "$$file"`;                           \
                ${ECHO} "# FILE: $$file c $$egfile ${CONF_FILES_MODE}"; \
        done;                                                           \
        eval set -- ${SUPPORT_FILES} ;                                  \
        while ${TEST} $$# -gt 0; do                                     \
                egfile="$$1"; file="$$2";                               \
                shift; shift;                                           \
-               egfile="$${egfile#${PREFIX}/}";                         \
-               file="$${file#${PREFIX}/}";                             \
+               egfile=`strip_prefix "$$egfile"`;                       \
+               file=`strip_prefix "$$file"`;                           \
                ${ECHO} "# FILE: $$file c $$egfile ${SUPPORT_FILES_MODE}"; \
        done;                                                           \
        eval set -- ${CONF_FILES_PERMS} ${SUPPORT_FILES_PERMS} ;        \
@@ -289,8 +306,8 @@
                egfile="$$1"; file="$$2";                               \
                owner="$$3"; group="$$4"; mode="$$5";                   \
                shift; shift; shift; shift; shift;                      \
-               egfile="$${egfile#${PREFIX}/}";                         \
-               file="$${file#${PREFIX}/}";                             \
+               egfile=`strip_prefix "$$egfile"`;                       \
+               file=`strip_prefix "$$file"`;                           \
                ${ECHO} "# FILE: $$file c $$egfile $$mode $$owner $$group"; \
        done;                                                           \
        ${ECHO} "EOF_FILES";                                            \
@@ -361,6 +378,7 @@
 
 ${INSTALL_DIRS_FILE}: ../../mk/install/dirs
        ${_PKG_SILENT}${_PKG_DEBUG}(                                    \
+       ${_FUNC_STRIP_PREFIX};                                          \
        eval set -- ${PKG_SYSCONFSUBDIR} ${CONF_FILES} ${CONF_FILES_PERMS} ${SUPPORT_FILES} ${SUPPORT_FILES_PERMS} ${RCD_SCRIPTS} ${MAKE_DIRS} ${OWN_DIRS} ${MAKE_DIRS_PERMS} ${OWN_DIRS_PERMS} ; \
        ${TEST} $$# -gt 0 || exit 0;                                    \
        ${ECHO} "# start of install-dirs";                              \
@@ -385,27 +403,27 @@
        eval set -- ${MAKE_DIRS} ;                                      \
        while ${TEST} $$# -gt 0; do                                     \
                dir="$$1"; shift;                                       \
-               dir="$${dir#${PREFIX}/}";                               \
+               dir=`strip_prefix "$$dir"`;                             \
                ${ECHO} "# DIR: $$dir m";                               \
        done;                                                           \
        eval set -- ${OWN_DIRS} ;                                       \
        while ${TEST} $$# -gt 0; do                                     \
                dir="$$1"; shift;                                       \
-               dir="$${dir#${PREFIX}/}";                               \
+               dir=`strip_prefix "$$dir"`;                             \
                ${ECHO} "# DIR: $$dir mo";                              \
        done;                                                           \
        eval set -- ${MAKE_DIRS_PERMS} ;                                \
        while ${TEST} $$# -gt 0; do                                     \
                dir="$$1"; owner="$$2"; group="$$3"; mode="$$4";        \
                shift; shift; shift; shift;                             \
-               dir="$${dir#${PREFIX}/}";                               \
+               dir=`strip_prefix "$$dir"`;                             \
                ${ECHO} "# DIR: $$dir m $$owner $$group $$mode";        \
        done;                                                           \
        eval set -- ${OWN_DIRS_PERMS} ;                                 \
        while ${TEST} $$# -gt 0; do                                     \
                dir="$$1"; owner="$$2"; group="$$3"; mode="$$4";        \
                shift; shift; shift; shift;                             \
-               dir="$${dir#${PREFIX}/}";                               \
+               dir=`strip_prefix "$$dir"`;                             \
                ${ECHO} "# DIR: $$dir mo $$owner $$group $$mode";       \
        done;                                                           \
        ${ECHO} "EOF_DIRS";                                             \
@@ -428,6 +446,7 @@
 
 ${INSTALL_SHELL_FILE}: ../../mk/install/shell
        ${_PKG_SILENT}${_PKG_DEBUG}(                                    \
+       ${_FUNC_STRIP_PREFIX};                                          \
        eval set -- ${PKG_SHELL} ;                                      \
        ${TEST} $$# -gt 0 || exit 0;                                    \
        ${ECHO} "# start of install-shell";                             \
@@ -442,7 +461,7 @@
        eval set -- ${PKG_SHELL} ;                                      \
        while ${TEST} $$# -gt 0; do                                     \
                i="$$1"; shift;                                         \
-               i="$${i#${PREFIX}/}";                                   \
+               i=`strip_prefix "$$i"`;                                 \
                ${ECHO} "# SHELL: $$i";                                 \
        done;                                                           \
        ${ECHO} "EOF_SHELL";                                            \



Home | Main Index | Thread Index | Old Index