svn commit: r549723 - head/sysutils/e2fsprogs
Matthias Andree
mandree at FreeBSD.org
Wed Sep 23 12:44:18 UTC 2020
Author: mandree
Date: Wed Sep 23 12:44:16 2020
New Revision: 549723
URL: https://svnweb.freebsd.org/changeset/ports/549723
Log:
- make /sbin/e2fsck and /sbin/fsck_ext2fs visible in pkg catalog/"pkg which",
so that "pkg which /sbin/e2fsck" yields the proper result.
* this entails symlinking from $PREFIX/sbin to /sbin, and the pkg-install
script will attempt to replace the symlinks by hard links if possible.
pkg 1.15.4 cannot deal with packaged hard links and will fail.
* Note that it is unavoidable that these be in /sbin because /usr/local or
/usr may not be mounted and consequently ext2 file systems could not
be fsck-ed or mounted from /etc/fstab.
There will be no port option to avoid /sbin installs for now. We have too
many options already and the testing effort increases exponentially.
- make sure pkg-message appears on both install and upgrade
- clean up and document/comment pkg-install so that armchair experts
will not pester me with meaningless change requests
- bugfix/change: logic of mke2fs.conf upgrade handling to present less work for
users on port/package upgrades
- bump PORTREVISION
PR: 249284 (related)
Modified:
head/sysutils/e2fsprogs/Makefile
head/sysutils/e2fsprogs/pkg-install
head/sysutils/e2fsprogs/pkg-message
head/sysutils/e2fsprogs/pkg-plist
Modified: head/sysutils/e2fsprogs/Makefile
==============================================================================
--- head/sysutils/e2fsprogs/Makefile Wed Sep 23 12:31:14 2020 (r549722)
+++ head/sysutils/e2fsprogs/Makefile Wed Sep 23 12:44:16 2020 (r549723)
@@ -3,7 +3,7 @@
PORTNAME= e2fsprogs
PORTVERSION= 1.45.6
-PORTREVISION?= 3
+PORTREVISION?= 4
CATEGORIES?= sysutils
MASTER_SITES= KERNEL_ORG/linux/kernel/people/tytso/${PORTNAME}/v${PORTVERSION}
@@ -252,7 +252,8 @@ post-build:
&& ${MAKE_CMD} e2fsck V=1 \
LIBS="-static-libgcc -lc -Bstatic ../lib/libsupport.a ../lib/libext2fs.a ../lib/libcom_err.a \
${_staticlibs} /usr/lib/libexecinfo.a /usr/lib/libelf.a \
- ${LOCALBASE}/lib/libblkid.a ${LOCALBASE}/lib/libuuid.a ${libintl} ../lib/libe2p.a "
+ ${LOCALBASE}/lib/libblkid.a ${LOCALBASE}/lib/libuuid.a ${libintl} ../lib/libe2p.a " \
+ && ${STRIP_CMD} e2fsck
# Regression check: avoid a port (not upstream!) regression from 1.40.5,
# check that e2fsck isn't dynalinked against anything but libc.so:
@${ECHO_CMD} -n "===> checking that e2fsck depends on no shared objects outside /lib: "
@@ -292,7 +293,24 @@ post-build:
.endif
post-install:
- ${INSTALL_PROGRAM} ${WRKSRC}/fsck_ext2fs ${STAGEDIR}${PREFIX}/sbin/
+ # pkg workaround time again;
+ # the whole purpose of this dance is to move the necessities for
+ # /etc/fstab fsck'ing into /sbin, and symlink to these guys
+ # in the regular hierarchy, normally $PREFIX/sbin. Hard links may
+ # crash the install if /usr[/local] is a separate file system from /,
+ # and pkg 1.15.4 can't automatically unroll or install relative symlinks.
+ ${MKDIR} ${STAGEDIR}/sbin
+ ${MV} -f ${STAGEDIR}${PREFIX}/sbin/e2fsck ${STAGEDIR}/sbin/ # from INSTALL_TARGET
+ ${INSTALL_PROGRAM} ${WRKSRC}/fsck_ext2fs ${STAGEDIR}/sbin/ # from port
+ # according to TPH 6.1.1 Handling Symbolic Links, these are to be absolute,
+ # yet stage-qa warns about these on 2020-09-16:
+ ${LN} -fs /sbin/fsck_ext2fs ${STAGEDIR}${PREFIX}/sbin/
+ ${LN} -fs /sbin/e2fsck ${STAGEDIR}${PREFIX}/sbin/
+ # these are made hardlinks to symlinks - -P avoids following them to /sbin:
+ ${LN} -fP ${STAGEDIR}${PREFIX}/sbin/e2fsck ${STAGEDIR}${PREFIX}/sbin/fsck.ext2
+ ${LN} -fP ${STAGEDIR}${PREFIX}/sbin/e2fsck ${STAGEDIR}${PREFIX}/sbin/fsck.ext3
+ ${LN} -fP ${STAGEDIR}${PREFIX}/sbin/e2fsck ${STAGEDIR}${PREFIX}/sbin/fsck.ext4
+ # now the remainder of the usual post-install jobs:
${INSTALL_MAN} ${FILESDIR}/fsck_ext2fs.8 ${STAGEDIR}${PREFIX}/man/man8/
.if ${PORT_OPTIONS:MDOCS}
${MKDIR} ${STAGEDIR}${DOCSDIR}
@@ -300,7 +318,7 @@ post-install:
${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR}
.endfor
.endif
-# remove or relocate files installed by other ports already, or shadowing system files:
+ # remove or relocate files installed by other ports already, or shadowing system files:
cd ${STAGEDIR}${PREFIX} && \
${XARGS} <${FILESDIR}/unwanted ${RM} && \
${RMDIR} include/e2fsprogs/blkid include/e2fsprogs/ss share/ss
Modified: head/sysutils/e2fsprogs/pkg-install
==============================================================================
--- head/sysutils/e2fsprogs/pkg-install Wed Sep 23 12:31:14 2020 (r549722)
+++ head/sysutils/e2fsprogs/pkg-install Wed Sep 23 12:44:16 2020 (r549723)
@@ -1,41 +1,44 @@
#!/bin/sh
-set -e
+set -eu
PKGNAME="$1"
MODE="$2" # PRE-INSTALL, POST-INSTALL, DEINSTALL, POST-DEINSTALL
case "$MODE" in
POST-INSTALL)
- # install fsck tool and wrapper.
- err=0
- for i in e2fsck fsck_ext2fs ; do
- ln -f ${PKG_PREFIX}/sbin/${i} /sbin 2>/dev/null \
- || cp -p ${PKG_PREFIX}/sbin/${i} /sbin \
- || err=1
- done
- if test $err = 1 ; then
- echo '========================================================================'
- echo 'Warning: cannot install fsck to /sbin!'
- echo 'Requesting ext2fs to be checked from /etc/fstab can cause boot failures!'
- echo '========================================================================'
- echo ''
+ # try to replace the e2fsck and its wrapper, fsck_ext2fs,
+ # symbolic links by hard links if possible (pkg ships them as symlinks)
+ d1=${PKG_ROOTDIR}/sbin/ ; dev1=$(stat -Lf %Xd "$d1")
+ d2=${PKG_ROOTDIR}${PKG_PREFIX}/sbin/ ; dev2=$(stat -Lf %Xd "$d2")
+ if [ "$dev1" = "$dev2" ] && [ "$(realpath "$d1")" != "$(realpath "$d2")"; then
+ for i in e2fsck fsck_ext2fs ; do
+ ln -fhP ${d1}${i} ${d2}${i}
+ done
+ for i in ext2 ext3 ext4 ; do
+ ln -fhP ${d2}e2fsck ${d2}fsck.$i
+ done
fi
#
- # install configuration file and update
+ # install configuration file and update config files from
+ # old "ext4dev" to current "ext4" name.
#
- if test -f ${PKG_PREFIX}/etc/mke2fs.conf; then
+ if test -s ${PKG_PREFIX}/etc/mke2fs.conf; then
if cmp -s ${PKG_PREFIX}/etc/mke2fs.conf.dist \
- ${PKG_PREFIX}/etc/mke2fs.conf; then
+ ${PKG_PREFIX}/etc/mke2fs.conf; then
true
else
- if grep -q ext4dev ${PKG_PREFIX}/etc/mke2fs.conf ; then
+ rc=0
+ grep -q ext4dev ${PKG_PREFIX}/etc/mke2fs.conf || rc=$?
+ case $rc in
+ 1) # ext4dev not found (old name)
cp -f -p ${PKG_PREFIX}/etc/mke2fs.conf.dist \
${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-new
echo "==========================================================================="
echo "Warning: installing mke2fs.conf in ${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-new"
echo "Check to see if you need to update your ${PKG_PREFIX}/etc/mke2fs.conf"
echo "==========================================================================="
- else
+ ;;
+ 0) # ext4dev found (old name)
mv ${PKG_PREFIX}/etc/mke2fs.conf \
${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-old
cp -f -p ${PKG_PREFIX}/etc/mke2fs.conf.dist \
@@ -45,17 +48,19 @@ POST-INSTALL)
echo "${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-old. Please check to see"
echo "if you have any local customizations that you wish to preserve."
echo "==========================================================================="
- fi
- echo " "
+ ;;
+ *) # grep failed
+ exit $rc
+ ;;
+ esac
fi
else
- cp -f -p ${PKG_PREFIX}/etc/mke2fs.conf.dist \
+ # missing -> install
+ cp -p ${PKG_PREFIX}/etc/mke2fs.conf.dist \
${PKG_PREFIX}/etc/mke2fs.conf
fi
;;
DEINSTALL)
- rm -f /sbin/fsck_ext2fs /sbin/e2fsck \
- || echo "Could not remove /sbin/fsck_ext2fs /sbin/e2fsck. Please remove manually."
if cmp -s ${PKG_PREFIX}/etc/mke2fs.conf \
${PKG_PREFIX}/etc/mke2fs.conf.dist
then
@@ -64,13 +69,13 @@ DEINSTALL)
echo "If and only if you are deleting e2fsprogs forever,"
echo "remember to delete ${PKG_PREFIX}/etc/mke2fs.conf."
fi
+ # e2fsck.conf is no longer part of the distribution, but still supported,
+ # => no pkg-list @sample line possible
+ # and no reference e2fsck.conf.sample or e2fsck.conf.dist is available
if test -f ${PKG_PREFIX}/etc/e2fsck.conf
then
echo "If and only if you are deleting e2fsprogs forever,"
echo "remember to delete ${PKG_PREFIX}/etc/e2fsck.conf."
fi
- ;;
-PRE-INSTALL|POST-DEINSTALL)
- true
;;
esac
Modified: head/sysutils/e2fsprogs/pkg-message
==============================================================================
--- head/sysutils/e2fsprogs/pkg-message Wed Sep 23 12:31:14 2020 (r549722)
+++ head/sysutils/e2fsprogs/pkg-message Wed Sep 23 12:44:16 2020 (r549723)
@@ -1,3 +1,8 @@
+[
+{ message: <<EOM
Note: this is a modified version of the e2fsprogs package, not the official
package. Report all building and run-time trouble that originates in the
package to the port maintainer, mandree at FreeBSD.org.
+EOM
+}
+]
Modified: head/sysutils/e2fsprogs/pkg-plist
==============================================================================
--- head/sysutils/e2fsprogs/pkg-plist Wed Sep 23 12:31:14 2020 (r549722)
+++ head/sysutils/e2fsprogs/pkg-plist Wed Sep 23 12:44:16 2020 (r549723)
@@ -1,3 +1,5 @@
+/sbin/e2fsck
+/sbin/fsck_ext2fs
bin/chattr
bin/e2fsprogs-compile_et
%%FUSEFS%%bin/fuse2fs
More information about the svn-ports-all
mailing list