pkg.sh and defs.mk: Add pkg.sh install-log -N, fix links

pkg.sh install-log now supports a -N option, meaning no-log-directories. This
installs directories, but doesn't log then in the install log, effectively
excluding them from being packaged. This is necessary for directories provided
by other packages. -N can be activated by adding LOG_INSTALL_EXTRA_OPTS += -N
to a Makefile, see changes in defs.mk.

pgk.sh install-log now also omits addition of %attr tags to symbolic links.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2018-10-18 12:02:23 +00:00
commit e37e7f91c1
2 changed files with 50 additions and 25 deletions

View file

@ -200,6 +200,10 @@ else
endif endif
endif endif
USE_COMPILER_OPTIMIZATION_OPTS = false
USE_COMPILER_DEBUG_OPTS = true
COMPILE_DEBUG_CODE = true
BUILD_CFLAGS += $(CFLAGS) BUILD_CFLAGS += $(CFLAGS)
BUILD_CPPFLAGS += $(CPPFLAGS) BUILD_CPPFLAGS += $(CPPFLAGS)
BUILD_LDFLAGS += $(LDFLAGS) BUILD_LDFLAGS += $(LDFLAGS)
@ -497,7 +501,7 @@ INSTALLED_CGI += $(addprefix $(INSTALL_CGIDIR)/,$(EXE_CGI))
# -- HTML # -- HTML
INSTALLATION_FILE_TYPES += HTML INSTALLATION_FILE_TYPES += HTML
BUILD_HTMLDIR = $(TOPDIR)/htdocs BUILD_HTMLDIR = $(TOPDIR)/htdocs
LOCAL_HTML += $(filter-out $(DONT_INSTALL),$(wildcard *.html *.css *.php *.js *.cgi) $(FONTS) $(IMAGES)) LOCAL_HTML += $(filter-out $(DONT_INSTALL),$(wildcard *.html *.css *.php *.js) $(FONTS) $(IMAGES))
HTML_SUBDIR ?= $(shell $(PWD) | $(SED) '/.*\/htdocs\(\/\|$$\)/!d; s%.*/htdocs\(/\|$$\)%%') HTML_SUBDIR ?= $(shell $(PWD) | $(SED) '/.*\/htdocs\(\/\|$$\)/!d; s%.*/htdocs\(/\|$$\)%%')
ifeq ($(HTML_SUBDIR),) ifeq ($(HTML_SUBDIR),)
INSTALL_HTMLDIR ?= $(PROJECT_HTMLDIR) INSTALL_HTMLDIR ?= $(PROJECT_HTMLDIR)
@ -707,25 +711,27 @@ ifeq ($(LOG_THREAD_NAMES), true)
endif endif
ifdef INSTALL_LINK ifdef INSTALL_LINK
INSTALL = $(SUDO) $(LOG_INSTALL_SH) -WA INSTALL = $(SUDO) $(LOG_INSTALL_SH) -WA $(LOG_INSTALL_EXTRA_OPTS)
LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS)
else ifdef INSTALL_SYMLINK else ifdef INSTALL_SYMLINK
INSTALL = $(SUDO) $(LOG_INSTALL_SH) -LA INSTALL = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS)
LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS)
else else
ifdef INSTALL_LOG ifdef INSTALL_LOG
INSTALL=$(LOG_INSTALL_SH) -p -l $(INSTALL_LOG) INSTALL = $(LOG_INSTALL_SH) -p -l $(INSTALL_LOG) $(LOG_INSTALL_EXTRA_OPTS)
LINK_LIB=$(LOG_INSTALL_SH) -L -l $(INSTALL_LOG) LINK_LIB = $(LOG_INSTALL_SH) -L -l $(INSTALL_LOG) $(LOG_INSTALL_EXTRA_OPTS)
else else
ifndef INSTALL ifndef INSTALL
INSTALL = install INSTALL = install
endif endif
ifndef LINK_LIB ifndef LINK_LIB
LINK_LIB=$(LOG_INSTALL_SH) -L LINK_LIB = $(LOG_INSTALL_SH) -L
endif endif
endif endif
endif endif
INSTALL_FILE ?= $(INSTALL)
INSTALL_DIR ?= $(INSTALL)
# ----- function definitions # ----- function definitions

View file

@ -679,9 +679,10 @@ cmd_log_install()
local c_opmode=opmode_install local c_opmode=opmode_install
local c_absolute=0 local c_absolute=0
local c_wrap=0 local c_wrap=0
local c_no_log_dirs=0
local install_opts local install_opts
set -- `getopt 'DLWi:a:f:l:bg:cdm:o:psS:vA' $*` set -- `getopt 'DLWi:a:f:l:bg:cdm:o:psS:vA:N' $*`
cfgfile_macro() cfgfile_macro()
{ {
@ -744,6 +745,8 @@ cmd_log_install()
c_wrap=1;; c_wrap=1;;
-A) -A)
c_absolute=1;; c_absolute=1;;
-N)
c_no_log_dirs=1;;
*) *)
echo unknown option \"$1\". Exiting. >&2 echo unknown option \"$1\". Exiting. >&2
exit 1;; exit 1;;
@ -753,7 +756,7 @@ cmd_log_install()
shift shift
local args="`echo " $args" | sed -e 's/ -l *[^ ]*//g; s/ -f *[^ ]*//g; s/\b-a\b//g;'`" local args="`echo " $args" | sed -e 's/ -l *[^ ]*//g; s/ -f *[^ ]*//g; s/\b-a\b//g; s/ -N / /g'`"
if [ -z "$c_use_attr" ]; then if [ -z "$c_use_attr" ]; then
#args="`echo " $args" | sed -e 's/ -g *[^ ]*//g; s/ -m *[^ ]*//g; s/ -o *[^ ]*//g;'`" #args="`echo " $args" | sed -e 's/ -g *[^ ]*//g; s/ -m *[^ ]*//g; s/ -o *[^ ]*//g;'`"
@ -808,6 +811,7 @@ cmd_log_install()
local file mode installd_file cfgfile dir local file mode installd_file cfgfile dir
if [ "$c_mode_dir" = true ]; then if [ "$c_mode_dir" = true ]; then
for file in $*; do for file in $*; do
[ "$c_no_log_dirs" = 0 ] || continue
echo "%dir %attr($c_mode,$c_owner,$c_group) $file" >> $c_logfile echo "%dir %attr($c_mode,$c_owner,$c_group) $file" >> $c_logfile
done done
else else
@ -821,6 +825,7 @@ cmd_log_install()
cfgfile=`cfgfile_macro "$installed_file"` cfgfile=`cfgfile_macro "$installed_file"`
else else
if [ -d "$file" ]; then if [ -d "$file" ]; then
[ "$c_no_log_dirs" = 0 ] || continue
dir="%dir " dir="%dir "
mode=0755 mode=0755
else else
@ -829,7 +834,9 @@ cmd_log_install()
mode=0644 mode=0644
fi fi
fi fi
echo "$dir%attr($mode,$c_owner,$c_group) $cfgfile$installed_file" | local attr="%attr($mode,$c_owner,$c_group)"
[ -l $file ] && attr=""
echo "$dir$attr $cfgfile$installed_file" |
sed "s/^$c_ignore_prefix//" >> $c_logfile sed "s/^$c_ignore_prefix//" >> $c_logfile
done done
else else
@ -848,7 +855,11 @@ cmd_log_install()
mode=0644 mode=0644
fi fi
fi fi
echo "$dir%attr($mode,$c_owner,$c_group) $cfgfile$c_target" | sed "s/^$c_ignore_prefix//" >> $c_logfile local attr="%attr($mode,$c_owner,$c_group)"
[ -l $file ] && attr=""
if [ -z "$dir" -o "$c_no_log_dirs" != 0 ]; then
echo "$dir$attr $cfgfile$c_target" | sed "s/^$c_ignore_prefix//" >> $c_logfile
fi
fi fi
fi fi
} }
@ -878,11 +889,17 @@ cmd_milk_install_log()
chmod 755 $1 chmod 755 $1
} }
cat_log()
{
cat $in | $user_filter
}
local type name prefix in out subpackages local type name prefix in out subpackages
subpackages="run devel" local subpackages="run devel"
local user_filter=cat
eval set -- `getopt -- ht:p:n:s: "$@"` eval set -- `getopt -- ht:p:n:s:F: "$@"`
while [ "$1" != -- ]; do while [ "$1" != -- ]; do
case $1 in case $1 in
-h) -h)
@ -895,6 +912,8 @@ cmd_milk_install_log()
prefix="$2"; shift;; prefix="$2"; shift;;
-s) -s)
subpackages="$2"; shift;; subpackages="$2"; shift;;
-F)
user_filter="$2"; shift;;
*) *)
echo -e "Unexpected argument >$1<\n" >&2 echo -e "Unexpected argument >$1<\n" >&2
milk_install_log_usage 1;; milk_install_log_usage 1;;
@ -908,8 +927,8 @@ cmd_milk_install_log()
milk_install_log_usage 1 milk_install_log_usage 1
} }
in=$1 local in=$1
out=$2 local out=$2
local filter_devel="/include$\|/include/$name$" local filter_devel="/include$\|/include/$name$"
filter_devel="$filter_devel\|/include/[^/]*.h$\|/include/$name/[^/]*.h$\|/include/[^/]*.hpp$\|/include/$name/[^/]*.hpp$" filter_devel="$filter_devel\|/include/[^/]*.h$\|/include/$name/[^/]*.h$\|/include/[^/]*.hpp$\|/include/$name/[^/]*.hpp$"
@ -919,19 +938,19 @@ cmd_milk_install_log()
# TODO: simplify this # TODO: simplify this
case $type in case $type in
rpm) rpm)
cat $in | sed "s% $prefix% %" | grep -ve $filter_devel > $in.$name-run cat_log | sed "s% $prefix% %" | grep -ve $filter_devel > $in.$name-run
cat $in | sed "s% $prefix% %" | grep -e $filter_devel > $in.$name-devel cat_log | sed "s% $prefix% %" | grep -e $filter_devel > $in.$name-devel
# TODO: this is unimplemented for debian packages # TODO: this is unimplemented for debian packages
echo $subpackages | grep -q devel || cat $in.$name-devel >> $in.$name-run echo $subpackages | grep -q devel || cat $in.$name-devel >> $in.$name-run
;; ;;
deb) deb)
cat $in | grep -v "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-run.install cat_log | grep -v "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-run.install
cat $in | grep -v "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-devel.install cat_log | grep -v "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-devel.install
cat $in | grep "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-run.dirs cat_log | grep "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-run.dirs
cat $in | grep "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-devel.dirs cat_log | grep "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-devel.dirs
#cat $in | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel > $out/conffiles #cat_log | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel > $out/conffiles
cat $in | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel > $out/conffiles.$name-run cat_log | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel > $out/conffiles.$name-run
cat $in | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel > $out/conffiles.$name-devel cat_log | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel > $out/conffiles.$name-devel
for p in run devel; do for p in run devel; do
postinst=$out/$name-$p.postinst postinst=$out/$name-$p.postinst