timestamp-macros: fix creation and add cleanup

As described in #3765
This commit is contained in:
Jürgen Buchmüller 2016-03-07 01:32:14 +01:00
parent e8780fffcb
commit 8ce51e70cf
3 changed files with 42 additions and 13 deletions

View File

@ -1,13 +0,0 @@
if [ -n "$SOURCE_DATE_EPOCH" ]; then
CFLAGS+=" -Wno-builtin-macro-redefined -include$XBPS_STATEDIR/timestamp-macros.h"
CXXFLAGS+=" -Wno-builtin-macro-redefined -include$XBPS_STATEDIR/timestamp-macros.h"
printf "" > $XBPS_STATEDIR/timestamp-macros.h
for i in "DATE,%b %d %Y" "TIME,%H:%M:%S" "DATETIME,%b %d %Y %H:%M:%S"; do
mcr=${i%%,*}
val=$(LC_ALL=C date --date "@$SOURCE_DATE_EPOCH" +"${i#*,}")
cat >> $XBPS_STATEDIR/timestamp-macros.h <<EOF
#undef __${mcr}__
#define __${mcr}__ "${val}"
EOF
done
fi

View File

@ -0,0 +1,24 @@
# Remove leaked CFLAGS and CXXFLAGS parts which were defined
# by common/hooks/pre-configure/03-timestamp-macros.sh
# from shell scripts, perl scripts, package config files etc.
hook() {
local f mimetype
local strip=" -Wno-builtin-macro-redefined -include${XBPS_BUILDDIR}/\.xbps-.*/timestamp-macros\.h"
[ -n "$XBPS_USE_BUILD_MTIME" ] && return 0
[ -z "$SOURCE_DATE_EPOCH" ] && return 0
# Clean up shell scripts, perl files, pkgconfig files etc.
for f in $(grep -r -l -e "$strip" "$PKGDESTDIR" ); do
mimetype=$(file --mime-type "$f" | awk '{ print $2 }')
if [ "$mimetype" == "text/plain" -o "$mimetype" == "text/x-shellscript" ]; then
sed -i "$f" -e "s;$strip;;"
msg_warn "Cleaned up ${f#${PKGDESTDIR}} ...\n"
else
# Unhandled mime-type file contains the $strip string
# E.g. binaries containing the build environment as a string
msg_warn "Can't clean ${f#${PKGDESTDIR}} (mime-type: $mimetype) ...\n"
fi
done
}

View File

@ -0,0 +1,18 @@
# This hook overwrites timestamp macros.
#
hook() {
local i mcr val macros="$XBPS_STATEDIR/timestamp-macros.h"
[ -n "$XBPS_USE_BUILD_MTIME" ] && return 0
[ -z "$SOURCE_DATE_EPOCH" ] && return 0
msg_normal "Creating $macros\n"
CFLAGS+=" -Wno-builtin-macro-redefined -include$macros"
CXXFLAGS+=" -Wno-builtin-macro-redefined -include$macros"
rm -f "$macros"
for i in "DATE,%b %d %Y" "TIME,%H:%M:%S" "DATETIME,%b %d %Y %H:%M:%S"; do
mcr=${i%%,*}
val=$(LC_ALL=C date --date "@$SOURCE_DATE_EPOCH" +"${i#*,}")
echo "#undef __${mcr}__" >> "$macros"
echo "#define __${mcr}__ \"${val}\"" >> "$macros"
done
}