Am Montag, den 13.05.2019, 00:47 +0100 schrieb Ken Moffat via lfs-dev: > On Sun, May 12, 2019 at 10:25:34PM +0200, Thomas Trepl via lfs-dev wrote: > > Hi all, > > > > i just started a build of a new system. To my surprise, it failed in > > chap6 at e2fsprogs where it never stopped before. > > The reason for stopping is > > > > <snip> > > ake[1]: Leaving directory '/autolfs/sources/e2fsprogs-1.45.0/build/po' > > making install in scrub > > make[1]: Entering directory '/autolfs/sources/e2fsprogs- > > 1.45.0/build/scrub' > > MKDIR_P /usr/lib/e2fsprogs > > MKDIR_P yes > > INSTALL yes/e2scrub_all > > /usr/bin/install: cannot create regular file 'yes/e2scrub_all': No > > such file or directory > > make[1]: *** [Makefile:447: install-crond] Error 1 > > make[1]: *** Waiting for unfinished jobs.... > > make[1]: Leaving directory '/autolfs/sources/e2fsprogs- > > 1.45.0/build/scrub' > > make: *** [Makefile:434: install-progs-recursive] Error 1 > > make: *** Waiting for unfinished jobs.... > > make[1]: Leaving directory '/autolfs/sources/e2fsprogs- > > 1.45.0/build/lib/et' > > making install-shlibs in lib/ss > > make[1]: Entering directory '/autolfs/sources/e2fsprogs- > > 1.45.0/build/lib/ss' > > </snip> > > > > A look to the build/Makefile showed > > > > <snip> > > HAVE_UDEV = no > > UDEV_RULES_DIR = > > HAVE_CROND = yes > > CROND_DIR = yes > > HAVE_SYSTEMD = no > > SYSTEMD_SYSTEM_UNIT_DIR = > > </snip> > > > > Note the setting of CROND_DIR. I checked the configure script and > > found in line ~14500 a check on option $with_crond_dir=[yes,no]. If > > not set, yes is assumed. Later on, in case $with_crond_dir == yes, the > > test if /etc/cron.d exists and set with_crond_dir to /etc/cron.d if > > the directory is there. It remains "yes" if that directory does not > > exist. I assume that is the reason why CROND_DIR set to "yes" in the > > Makefile. > > > > What i really do not understand is why that happens now and never > > before? We have e2fsprogs-1.45.0 a good amount of time in the book, > > there is nothing new but if my reading of the configure script is > > correct, there is a fulminant logical error in it. Wonder why that > > never came up before. > > > > What do you think, am i right in interpreting the section in the > > configure script that there is a logical bug in it? If so, i do not > > get it why it comes up now and not at all the previous builds too... > > > > Btw, i specified --with-crond-dir=no and compilation/installation of > > e2fsprogs went fine. > > > I've just looked at my build from a couple of days ago - > > checking for udev... no > checking for udev rules dir... no > checking for system crontab dir... yes > checking for systemd... no > > make[2]: Entering directory '/building/e2fsprogs-1.45.0/build/scrub' > ../util/subst -t -f ../util/subst.conf ../../scrub/e2scrub_all.cron.in > e2scrub_all.cron > make[2]: Leaving directory '/building/e2fsprogs-1.45.0/build/scrub' > make[2]: Entering directory '/building/e2fsprogs-1.45.0/build/scrub' > ../util/subst -t -f ../util/subst.conf ../../scrub/e2scrub_all_cron.in > e2scrub_all_cron > chmod a+x e2scrub_all_cron > make[2]: Leaving directory '/building/e2fsprogs-1.45.0/build/scrub' > > make[1]: Entering directory '/building/e2fsprogs-1.45.0/build/scrub' > MKDIR_P yes > make[1]: Leaving directory '/building/e2fsprogs-1.45.0/build/scrub' > make[1]: Entering directory '/building/e2fsprogs-1.45.0/build/scrub' > MKDIR_P /usr/lib/e2fsprogs > make[1]: Leaving directory '/building/e2fsprogs-1.45.0/build/scrub' > make[1]: Entering directory '/building/e2fsprogs-1.45.0/build/scrub' > INSTALL yes/e2scrub_all > make[1]: Leaving directory '/building/e2fsprogs-1.45.0/build/scrub' > make[1]: Entering directory '/building/e2fsprog > INSTALL /usr/lib/e2fsprogs/e2scrub_all_cron > make[1]: Leaving directory '/building/e2fsprogs-1.45.0/build/scrub' > > From that, I would expect to have a directory called 'yes'. > Fortunately, it was not *that* broken.
Sure? It should be in ~/e2fsprogs-1.45.0/build/scrub/. I just rerun $ sudo make install and e voila, here in ~/e2fsprogs-1.45.0/build it is: $ dir scrub/ insgesamt 68 drwxr-xr-x 3 lfs users 4096 13. Mai 08:21 . drwxr-xr-x 15 lfs users 4096 13. Mai 07:56 .. -r-xr-xr-x 1 lfs users 6738 13. Mai 07:57 e2scrub -r--r--r-- 1 lfs users 1751 13. Mai 07:57 e2scrub.8 -r-xr-xr-x 1 lfs users 4107 13. Mai 07:57 e2scrub_all -r--r--r-- 1 lfs users 1068 13. Mai 07:57 e2scrub_all.8 -r--r--r-- 1 lfs users 154 13. Mai 07:57 e2scrub_all.cron -r-xr-xr-x 1 lfs users 1942 13. Mai 07:57 e2scrub_all_cron -r--r--r-- 1 lfs users 559 13. Mai 07:57 e2scrub.conf -r--r--r-- 1 lfs users 147 13. Mai 07:57 e2scrub.rules -rw-r--r-- 1 lfs users 13999 13. Mai 07:56 Makefile drwxr-xr-x 2 root root 4096 13. Mai 08:21 yes Btw, the hard breakage seems to be caused by using MAKEFLAGS=-j5. I left that out and install runs thru (but still doing that 'yes' stuff). > > From my log of what got installed: > > /usr/lib/e2fsprogs/e2scrub_all_cron > > But since you disabled it to get the install to complete (and no, > I've no idea why the test has passed on all of my builds so far), > let's look at the script it installs: > > > #!/bin/bash > > # Copyright (C) 2018 Oracle. All Rights Reserved. > # > # Author: Darrick J. Wong <darrick.w...@oracle.com> > # > # This program is free software; you can redistribute it and/or > # modify it under the terms of the GNU General Public License > # as published by the Free Software Foundation; either version 2 > # of the License, or (at your option) any later version. > # > # This program is distributed in the hope that it would be useful, > # but WITHOUT ANY WARRANTY; without even the implied warranty of > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > # GNU General Public License for more details. > # > # You should have received a copy of the GNU General Public License > # along with this program; if not, write the Free Software Foundation, > # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. > > # Run e2scrub_all from a cronjob if we don't have systemd and we're not > # running on AC power. > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > So, the cron job doesn't get run on systemd, and it only gets run if on > battery power. So my desktop systems where it has been installed, > but not referenced by my cron scripts, will not run it (see the rest > of the script, below). > > on_ac_power() { > local any_known=no > > # try sysfs power class first > if [ -d /sys/class/power_supply ]; then > for psu in /sys/class/power_supply/*; do > if [ -r "$psu/type" ]; then > type=$(cat "$psu/type") > > # ignore batteries > [ "$type" = "Battery" ] && continue > > online=$(cat "$psu/online") > > [ "$online" = 1 ] && return 0 > [ "$online" = 0 ] && any_known=yes > fi > done > > [ "$any_known" = "yes" ] && return 1 > fi > > # else fall back to AC adapters in /proc > if [ -d /proc/acpi/ac_adapter ]; then > for ac in /proc/acpi/ac_adapter/*; do > if [ -r "$ac/state" ]; then > grep -q on-line "$ac/state" && return 0 > grep -q off-line "$ac/state" && any_known=yes > elif [ -r "$ac/status" ]; then > grep -q on-line "$ac/status" && return 0 > grep -q off-line "$ac/status" && any_known=yes > fi > done > > [ "$any_known" = "yes" ] && return 1 > fi > > # Can't tell, just assume we're on AC. > return 0 > } > > test -e /run/systemd/system && exit 0 > on_ac_power || exit 0 > > exec /sbin/e2scrub_all > > > Hmm, some of that looks as if it runs IFF on ac power (which in my > opinion would seem more sensible - running something which uses the > disk(s) when on battery sounds like a recipe for draining the > battery). > > HOWEVER, when I look at e2scrub_all (a script, to remove snapshots) > I see that it seems to be run automatically from systemd. > > Until now, I've relied on e2fsprogs, but this makes me start to > question that. It all sounds VERY weird. > > ĸen > -- -- Thomas -- http://lists.linuxfromscratch.org/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page