pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc
Module Name: pkgsrc
Committed By: rillig
Date: Tue Feb 11 01:59:30 UTC 2020
Modified Files:
pkgsrc/mk/pkginstall: bsd.pkginstall.mk
Added Files:
pkgsrc/regress/conf-files-spaces: DESCR Makefile PLIST spec
Log Message:
mk/pkginstall/files: allow spaces in configuration file names
Fixes PR pkg/42191.
To generate a diff of this commit:
cvs rdiff -u -r1.72 -r1.73 pkgsrc/mk/pkginstall/bsd.pkginstall.mk
cvs rdiff -u -r0 -r1.1 pkgsrc/regress/conf-files-spaces/DESCR \
pkgsrc/regress/conf-files-spaces/Makefile \
pkgsrc/regress/conf-files-spaces/PLIST \
pkgsrc/regress/conf-files-spaces/spec
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/mk/pkginstall/bsd.pkginstall.mk
diff -u pkgsrc/mk/pkginstall/bsd.pkginstall.mk:1.72 pkgsrc/mk/pkginstall/bsd.pkginstall.mk:1.73
--- pkgsrc/mk/pkginstall/bsd.pkginstall.mk:1.72 Fri Nov 30 18:38:20 2018
+++ pkgsrc/mk/pkginstall/bsd.pkginstall.mk Tue Feb 11 01:59:30 2020
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkginstall.mk,v 1.72 2018/11/30 18:38:20 rillig Exp $
+# $NetBSD: bsd.pkginstall.mk,v 1.73 2020/02/11 01:59:30 rillig Exp $
#
# This Makefile fragment is included by bsd.pkg.mk and implements the
# common INSTALL/DEINSTALL scripts framework. To use the pkginstall
@@ -60,7 +60,7 @@ _SORTED_VARS.pkginstall= *_SUBST
# 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= \
+_PKGINSTALL_FUNCS_SH= \
strip_prefix() { \
${AWK} 'END { \
plen = length(prefix); \
@@ -69,6 +69,10 @@ _FUNC_STRIP_PREFIX= \
} \
print s; \
}' s="$$1" prefix=${PREFIX:Q}/ /dev/null; \
+ }; \
+ \
+ shquote_backslash() { \
+ ${ECHO} "$$1" | ${SED} 's,[^-A-Za-z0-9.\/_],\\&,g'; \
}
_PKGINSTALL_DIR= ${WRKDIR}/.pkginstall
@@ -418,7 +422,7 @@ _INSTALL_DATA_TMPL+= ${_INSTALL_PERMS_D
${_INSTALL_PERMS_DATAFILE}:
${RUN}${MKDIR} ${.TARGET:H}
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${SPECIAL_PERMS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -505,7 +509,7 @@ _INSTALL_RCD_SCRIPTS= ${RCD_SCRIPTS}
privileged-install-hook: _pkginstall-postinstall-check
_pkginstall-postinstall-check: .PHONY
${RUN} p="${DESTDIR}${PREFIX}"; \
- ${_FUNC_STRIP_PREFIX}; \
+ ${_PKGINSTALL_FUNCS_SH}; \
canon() { f=`strip_prefix "$$1"`; case $$f in [!/]*) f="$$p/$$f"; esac; echo "$$f"; }; \
needargs() { [ $$3 -ge $$2 ] || ${FAIL_MSG} "[bsd.pkginstall.mk] $$1 must have a multiple of $$2 words. Rest: $$4"; }; \
set args ${_INSTALL_RCD_SCRIPTS}; shift; \
@@ -540,7 +544,7 @@ _pkginstall-postinstall-check: .PHONY
${_INSTALL_FILES_DATAFILE}:
${RUN}${MKDIR} ${.TARGET:H}
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${_INSTALL_RCD_SCRIPTS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -549,17 +553,19 @@ ${_INSTALL_FILES_DATAFILE}:
egfile="${RCD_SCRIPTS_EXAMPLEDIR}/$$script"; \
${ECHO} "# FILE: $$file cr $$egfile ${RCD_SCRIPTS_MODE}"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${CONF_FILES}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
egfile="$$1"; file="$$2"; \
shift; shift; \
egfile=`strip_prefix "$$egfile"`; \
+ egfile=`shquote_backslash "$$egfile"`; \
file=`strip_prefix "$$file"`; \
+ file=`shquote_backslash "$$file"`; \
${ECHO} "# FILE: $$file c $$egfile ${CONF_FILES_MODE}"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${REQD_FILES}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -569,7 +575,7 @@ ${_INSTALL_FILES_DATAFILE}:
file=`strip_prefix "$$file"`; \
${ECHO} "# FILE: $$file cf $$egfile ${REQD_FILES_MODE}"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${CONF_FILES_PERMS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -580,7 +586,7 @@ ${_INSTALL_FILES_DATAFILE}:
file=`strip_prefix "$$file"`; \
${ECHO} "# FILE: $$file c $$egfile $$mode $$owner $$group"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${REQD_FILES_PERMS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -643,7 +649,7 @@ _INSTALL_DATA_TMPL+= ${_INSTALL_DIRS_DAT
${_INSTALL_DIRS_DATAFILE}:
${RUN}${MKDIR} ${.TARGET:H}
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
exec 1>>${.TARGET}; \
case ${PKG_SYSCONFSUBDIR:M*:Q}${CONF_FILES:M*:Q}${CONF_FILES_PERMS:M*:Q}"" in \
"") ;; \
@@ -667,7 +673,7 @@ ${_INSTALL_DIRS_DATAFILE}:
"") ;; \
*) ${ECHO} "# DIR: ${RCD_SCRIPTS_DIR:S/${PREFIX}\///} m" ;; \
esac
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${MAKE_DIRS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -675,7 +681,7 @@ ${_INSTALL_DIRS_DATAFILE}:
dir=`strip_prefix "$$dir"`; \
${ECHO} "# DIR: $$dir m"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${REQD_DIRS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -683,7 +689,7 @@ ${_INSTALL_DIRS_DATAFILE}:
dir=`strip_prefix "$$dir"`; \
${ECHO} "# DIR: $$dir fm"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${OWN_DIRS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -691,7 +697,7 @@ ${_INSTALL_DIRS_DATAFILE}:
dir=`strip_prefix "$$dir"`; \
${ECHO} "# DIR: $$dir mo"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${MAKE_DIRS_PERMS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -700,7 +706,7 @@ ${_INSTALL_DIRS_DATAFILE}:
dir=`strip_prefix "$$dir"`; \
${ECHO} "# DIR: $$dir m $$mode $$owner $$group"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${REQD_DIRS_PERMS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -709,7 +715,7 @@ ${_INSTALL_DIRS_DATAFILE}:
dir=`strip_prefix "$$dir"`; \
${ECHO} "# DIR: $$dir fm $$mode $$owner $$group"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${OWN_DIRS_PERMS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -770,7 +776,7 @@ ${_INSTALL_INFO_FILES_FILE}: ../../mk/pk
install-script-data: install-script-data-info-files
install-script-data-info-files:
.if defined(INFO_FILES)
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
if ${TEST} -x ${INSTALL_FILE}; then \
${INFO_FILES_cmd} | \
while read file; do \
@@ -826,7 +832,7 @@ _INSTALL_DATA_TMPL+= ${_INSTALL_SHELL_D
${_INSTALL_SHELL_DATAFILE}:
${RUN}${MKDIR} ${.TARGET:H}
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${PKG_SHELL}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -932,7 +938,7 @@ FILES_SUBST+= X11_ENCODINGSDIR=${X11_EN
${_INSTALL_FONTS_DATAFILE}:
${RUN}${MKDIR} ${.TARGET:H}
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${FONTS_DIRS.ttf}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -940,7 +946,7 @@ ${_INSTALL_FONTS_DATAFILE}:
dir=`strip_prefix "$$dir"`; \
${ECHO} "# FONTS: $$dir ttf"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${FONTS_DIRS.type1}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -948,7 +954,7 @@ ${_INSTALL_FONTS_DATAFILE}:
dir=`strip_prefix "$$dir"`; \
${ECHO} "# FONTS: $$dir type1"; \
done
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
set -- dummy ${FONTS_DIRS.x11}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
@@ -996,7 +1002,7 @@ ${_INSTALL_ICON_THEMES_DATAFILE}:
.PHONY: install-script-data-icon-themes
install-script-data: install-script-data-icon-themes
install-script-data-icon-themes:
- ${RUN}${_FUNC_STRIP_PREFIX}; \
+ ${RUN}${_PKGINSTALL_FUNCS_SH}; \
if ${TEST} -x ${INSTALL_FILE}; then \
${ICON_THEMES_cmd} | \
while read theme; do \
Added files:
Index: pkgsrc/regress/conf-files-spaces/DESCR
diff -u /dev/null pkgsrc/regress/conf-files-spaces/DESCR:1.1
--- /dev/null Tue Feb 11 01:59:30 2020
+++ pkgsrc/regress/conf-files-spaces/DESCR Tue Feb 11 01:59:30 2020
@@ -0,0 +1,2 @@
+Demonstrates that the names of CONF_FILES can contain spaces and that
+these can be quoted using backslashes, double quotes or single quotes.
Index: pkgsrc/regress/conf-files-spaces/Makefile
diff -u /dev/null pkgsrc/regress/conf-files-spaces/Makefile:1.1
--- /dev/null Tue Feb 11 01:59:30 2020
+++ pkgsrc/regress/conf-files-spaces/Makefile Tue Feb 11 01:59:30 2020
@@ -0,0 +1,28 @@
+# $NetBSD: Makefile,v 1.1 2020/02/11 01:59:30 rillig Exp $
+#
+# Requires bmake from 2015 or later, since in previous versions, the .for
+# loop did split the variable values strictly on spaces, without taking
+# backslashes or quotes into account.
+
+PKGNAME= conf-files-spaces-2020.02.11
+CATEGORIES= misc
+DISTFILES= # none
+
+COMMENT= Demonstrates spaces in configuration file names
+LICENSE= 2-clause-bsd
+
+BUILD_DIRS= # none
+EGDIR= share/${PKGBASE}
+EGFILES= back\ slash.conf "d quot.conf" 's quot.conf'
+
+.for file in ${EGFILES}
+CONF_FILES+= ${EGDIR}/${file} ${PKG_SYSCONFDIR}/${file}
+.endfor
+
+do-install:
+ mkdir ${DESTDIR}${PREFIX}/${EGDIR}
+.for file in ${EGFILES}
+ ${INSTALL_DATA} /dev/null ${DESTDIR}${PREFIX}/${EGDIR}/${file}
+.endfor
+
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/regress/conf-files-spaces/PLIST
diff -u /dev/null pkgsrc/regress/conf-files-spaces/PLIST:1.1
--- /dev/null Tue Feb 11 01:59:30 2020
+++ pkgsrc/regress/conf-files-spaces/PLIST Tue Feb 11 01:59:30 2020
@@ -0,0 +1,4 @@
+@comment $NetBSD: PLIST,v 1.1 2020/02/11 01:59:30 rillig Exp $
+share/conf-files-spaces/back slash.conf
+share/conf-files-spaces/d quot.conf
+share/conf-files-spaces/s quot.conf
Index: pkgsrc/regress/conf-files-spaces/spec
diff -u /dev/null pkgsrc/regress/conf-files-spaces/spec:1.1
--- /dev/null Tue Feb 11 01:59:30 2020
+++ pkgsrc/regress/conf-files-spaces/spec Tue Feb 11 01:59:30 2020
@@ -0,0 +1,30 @@
+# $NetBSD: spec,v 1.1 2020/02/11 01:59:30 rillig Exp $
+#
+# Up to February 2020, pkgsrc could not handle configuration files with
+# spaces in their names.
+
+do_setup() {
+ $TEST_MAKE deinstall clean
+}
+
+do_test() {
+ PKG_CONFIG=yes $TEST_MAKE install >> "$TEST_OUTFILE"
+
+ sysconfdir=`$TEST_MAKE show-var VARNAME=PKG_SYSCONFDIR`
+ for file in "back slash.conf" "d quot.conf" "s quot.conf"; do
+ test -f "$sysconfdir/$file" || regress_fail "'$file' not found"
+ done
+
+ PKG_CONFIG=yes $TEST_MAKE deinstall >> "$TEST_OUTFILE"
+}
+
+check_result() {
+ exit_status "0"
+ output_require ": copying .*/back slash.conf to .*/back slash.conf"
+ output_require ": copying .*/d quot.conf to .*/d quot.conf"
+ output_require ": copying .*/s quot.conf to .*/s quot.conf"
+}
+
+do_cleanup() {
+ $TEST_MAKE deinstall clean
+}
Home |
Main Index |
Thread Index |
Old Index