Message ID | 1491100601-7867-1-git-send-email-casantos@datacom.ind.br |
---|---|
State | Superseded, archived |
Headers | show |
Hi all, On Sun, Apr 2, 2017 at 4:36 AM, Carlos Santos <casantos@datacom.ind.br> wrote: > Since e2fsprogs depends on util-linux, it's built after it. So you can't > have e2fsck from e2fsprogs along with the fsck wrapper from util-linux > (which is better maintained and compatible with systemd) because we end > up deleting the fsck from util-linux. > > Fix this issue by disabling e2fsprogs' fsck if the one from util-linux > is selected. > > Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> > Signed-off-by: Carlos Santos <casantos@datacom.ind.br> > --- > Changes v1->v2 > - Add depenndece on !BR2_PACKAGE_UTIL_LINUX_FSCK to > BR2_PACKAGE_E2FSPROGS_FSCK > - Add comment telling that the fsck from util-linux has preference. > - Pass "--enable-fsck" conditionally to configure > - Remove the guard around the removal of /usr/sbin/fsck, since the > fsck from busybox and util-linux are installed at /sbin > - Improve comments and commit message > > In the long run the e2fsprogs recipe deserves an extreme overhauling > like we did for util-linux but right now these changes are enough to > fix the specific problem of fsck. > --- It's almost working, but there's a trick for systemd (*tadaaa*) To have fsck work at boot time, you *MUST* have the fsck (the wrapper) from util-linux, because systemd passes arguments that do not exists in the e2fsprogs wrapper. But you should use the e2fsck program and its link. So for this to truly work, if systemd is selected, you should select util-linux's fsck, disable e2fsprogs fsck wrapper and enable e2fsck. Note that in case of failure, systemd will try to run emergency.target and all kinds of things may happen if you haven't created some post-build or other scripts. > package/e2fsprogs/Config.in | 4 ++++ > package/e2fsprogs/e2fsprogs.mk | 12 +++++++++--- > 2 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/package/e2fsprogs/Config.in b/package/e2fsprogs/Config.in > index d1914a9..418f877 100644 > --- a/package/e2fsprogs/Config.in > +++ b/package/e2fsprogs/Config.in > @@ -59,8 +59,12 @@ config BR2_PACKAGE_E2FSPROGS_FILEFRAG > > config BR2_PACKAGE_E2FSPROGS_FSCK > bool "fsck" > + depends on !BR2_PACKAGE_UTIL_LINUX_FSCK > default y > > +comment "the fsck from util-linux has preference over this one" > + depends on BR2_PACKAGE_UTIL_LINUX_FSCK > + > config BR2_PACKAGE_E2FSPROGS_FUSE2FS > bool "fuse2fs" > depends on !BR2_STATIC_LIBS # libfuse > diff --git a/package/e2fsprogs/e2fsprogs.mk b/package/e2fsprogs/e2fsprogs.mk > index 3f235c5..b4b96c3 100644 > --- a/package/e2fsprogs/e2fsprogs.mk > +++ b/package/e2fsprogs/e2fsprogs.mk > @@ -11,7 +11,7 @@ E2FSPROGS_LICENSE = GPL-2.0, BSD-3-Clause (libuuid), MIT-like with advertising c > E2FSPROGS_LICENSE_FILES = NOTICE lib/uuid/COPYING lib/ss/mit-sipb-copyright.h lib/et/internal.h > E2FSPROGS_INSTALL_STAGING = YES > E2FSPROGS_DEPENDENCIES = host-pkgconf util-linux > -# we don't have a host-util-linux > +# We don't need host-util-linux, since we disable libblkid, libuuid. > HOST_E2FSPROGS_DEPENDENCIES = host-pkgconf > > # e4defrag doesn't build on older systems like RHEL5.x, and we don't > @@ -24,11 +24,11 @@ E2FSPROGS_CONF_OPTS = \ > $(if $(BR2_PACKAGE_E2FSPROGS_DEBUGFS),,--disable-debugfs) \ > $(if $(BR2_PACKAGE_E2FSPROGS_E2IMAGE),,--disable-imager) \ > $(if $(BR2_PACKAGE_E2FSPROGS_E4DEFRAG),,--disable-defrag) \ > + $(if $(BR2_PACKAGE_E2FSPROGS_FSCK),--enable-fsck,) \ > $(if $(BR2_PACKAGE_E2FSPROGS_RESIZE2FS),,--disable-resizer) \ > --disable-uuidd \ > --disable-libblkid \ > --disable-libuuid \ > - --enable-fsck \ > --disable-e2initrd-helper \ > --disable-testio-debug \ > --disable-rpath > @@ -146,10 +146,16 @@ E2FSPROGS_DEPENDENCIES += busybox > define E2FSPROGS_REMOVE_BUSYBOX_APPLETS > $(RM) -f $(TARGET_DIR)/bin/chattr > $(RM) -f $(TARGET_DIR)/bin/lsattr > - $(RM) -f $(TARGET_DIR)/sbin/fsck > $(RM) -f $(TARGET_DIR)/sbin/tune2fs > $(RM) -f $(TARGET_DIR)/sbin/e2label > endef > + > +ifeq ($(BR2_PACKAGE_E2FSPROGS_FSCK),y) > +# We only build fsck if it's not selected in util-linux, so at this > +# point /sbin/fsck must have come from busybox. > +E2FSPROGS_REMOVE_BUSYBOX_APPLETS += $(RM) -f $(TARGET_DIR)/sbin/fsck > +endif This part doesn't work with systemd as you will remove the fsck wrapper from util-linux which is the only one that can be used. And since e2fsprogs depends on util-linux, you are screwed :/. > + > E2FSPROGS_PRE_INSTALL_TARGET_HOOKS += E2FSPROGS_REMOVE_BUSYBOX_APPLETS > endif > > -- > 2.7.4 >
> From: "Maxime Hadjinlian" <maxime.hadjinlian@gmail.com> > To: "Carlos Santos" <casantos@datacom.ind.br> > Cc: "buildroot" <buildroot@buildroot.org> > Sent: Sunday, April 2, 2017 7:13:18 AM > Subject: Re: [PATCH v2] e2fsprogs: keep util-linux's fsck if chosen > Hi all, > > On Sun, Apr 2, 2017 at 4:36 AM, Carlos Santos <casantos@datacom.ind.br> wrote: >> Since e2fsprogs depends on util-linux, it's built after it. So you can't >> have e2fsck from e2fsprogs along with the fsck wrapper from util-linux >> (which is better maintained and compatible with systemd) because we end >> up deleting the fsck from util-linux. >> >> Fix this issue by disabling e2fsprogs' fsck if the one from util-linux >> is selected. >> >> Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> >> Signed-off-by: Carlos Santos <casantos@datacom.ind.br> >> --- >> Changes v1->v2 >> - Add depenndece on !BR2_PACKAGE_UTIL_LINUX_FSCK to >> BR2_PACKAGE_E2FSPROGS_FSCK >> - Add comment telling that the fsck from util-linux has preference. >> - Pass "--enable-fsck" conditionally to configure >> - Remove the guard around the removal of /usr/sbin/fsck, since the >> fsck from busybox and util-linux are installed at /sbin >> - Improve comments and commit message >> >> In the long run the e2fsprogs recipe deserves an extreme overhauling >> like we did for util-linux but right now these changes are enough to >> fix the specific problem of fsck. >> --- > It's almost working, but there's a trick for systemd (*tadaaa*) > To have fsck work at boot time, you *MUST* have the fsck (the wrapper) > from util-linux, because systemd passes arguments that do not exists > in the e2fsprogs wrapper. But you should use the e2fsck program and > its link. > So for this to truly work, if systemd is selected, you should select > util-linux's fsck, disable e2fsprogs fsck wrapper and enable e2fsck. Do you mean something like this in package/systemd/Config.in? select BR2_PACKAGE_UTIL_LINUX_FSCK select BR2_PACKAGE_E2FSPROGS select BR2_PACKAGE_E2FSPROGS_E2FSCK I agree, but that must be done in a subsequent commit. > Note that in case of failure, systemd will try to run emergency.target > and all kinds of things may happen if you haven't created some > post-build or other scripts. I'm not well versed on systemd (not even poorly versed, in fact). Feel free to educate me. :-)
On Sun, Apr 2, 2017 at 2:03 PM, Carlos Santos <casantos@datacom.ind.br> wrote: >> From: "Maxime Hadjinlian" <maxime.hadjinlian@gmail.com> >> To: "Carlos Santos" <casantos@datacom.ind.br> >> Cc: "buildroot" <buildroot@buildroot.org> >> Sent: Sunday, April 2, 2017 7:13:18 AM >> Subject: Re: [PATCH v2] e2fsprogs: keep util-linux's fsck if chosen > >> Hi all, >> >> On Sun, Apr 2, 2017 at 4:36 AM, Carlos Santos <casantos@datacom.ind.br> wrote: >>> Since e2fsprogs depends on util-linux, it's built after it. So you can't >>> have e2fsck from e2fsprogs along with the fsck wrapper from util-linux >>> (which is better maintained and compatible with systemd) because we end >>> up deleting the fsck from util-linux. >>> >>> Fix this issue by disabling e2fsprogs' fsck if the one from util-linux >>> is selected. >>> >>> Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> >>> Signed-off-by: Carlos Santos <casantos@datacom.ind.br> >>> --- >>> Changes v1->v2 >>> - Add depenndece on !BR2_PACKAGE_UTIL_LINUX_FSCK to >>> BR2_PACKAGE_E2FSPROGS_FSCK >>> - Add comment telling that the fsck from util-linux has preference. >>> - Pass "--enable-fsck" conditionally to configure >>> - Remove the guard around the removal of /usr/sbin/fsck, since the >>> fsck from busybox and util-linux are installed at /sbin >>> - Improve comments and commit message >>> >>> In the long run the e2fsprogs recipe deserves an extreme overhauling >>> like we did for util-linux but right now these changes are enough to >>> fix the specific problem of fsck. >>> --- >> It's almost working, but there's a trick for systemd (*tadaaa*) >> To have fsck work at boot time, you *MUST* have the fsck (the wrapper) >> from util-linux, because systemd passes arguments that do not exists >> in the e2fsprogs wrapper. But you should use the e2fsck program and >> its link. >> So for this to truly work, if systemd is selected, you should select >> util-linux's fsck, disable e2fsprogs fsck wrapper and enable e2fsck. > > Do you mean something like this in package/systemd/Config.in? > > select BR2_PACKAGE_UTIL_LINUX_FSCK > select BR2_PACKAGE_E2FSPROGS > select BR2_PACKAGE_E2FSPROGS_E2FSCK > > I agree, but that must be done in a subsequent commit. Oh yes, absolutely. Also, the busybox's fsck won't work with systemd, so you must also take that into account. > >> Note that in case of failure, systemd will try to run emergency.target >> and all kinds of things may happen if you haven't created some >> post-build or other scripts. > > I'm not well versed on systemd (not even poorly versed, in fact). Feel > free to educate me. :-) Well, in this case, I am just putting this here to share the knowledge, but I don't think Buildroot specifically should do anything about this. It's not our role I think. Maybe we could add a pointer in the "Help" in the menuconfig to the systemd's documentation or something. > > -- > Carlos Santos (Casantos) - DATACOM, P&D > “The greatest triumph that modern PR can offer is the transcendent > success of having your words and actions judged by your reputation, > rather than the other way about.” — Christopher Hitchens
> From: "Maxime Hadjinlian" <maxime.hadjinlian@gmail.com> > To: "Carlos Santos" <casantos@datacom.ind.br> > Cc: "buildroot" <buildroot@buildroot.org> > Sent: Sunday, April 2, 2017 9:10:45 AM > Subject: Re: [PATCH v2] e2fsprogs: keep util-linux's fsck if chosen > On Sun, Apr 2, 2017 at 2:03 PM, Carlos Santos <casantos@datacom.ind.br> wrote: >>> From: "Maxime Hadjinlian" <maxime.hadjinlian@gmail.com> >>> To: "Carlos Santos" <casantos@datacom.ind.br> >>> Cc: "buildroot" <buildroot@buildroot.org> >>> Sent: Sunday, April 2, 2017 7:13:18 AM >>> Subject: Re: [PATCH v2] e2fsprogs: keep util-linux's fsck if chosen >> >>> Hi all, >>> >>> On Sun, Apr 2, 2017 at 4:36 AM, Carlos Santos <casantos@datacom.ind.br> wrote: >>>> Since e2fsprogs depends on util-linux, it's built after it. So you can't >>>> have e2fsck from e2fsprogs along with the fsck wrapper from util-linux >>>> (which is better maintained and compatible with systemd) because we end >>>> up deleting the fsck from util-linux. >>>> >>>> Fix this issue by disabling e2fsprogs' fsck if the one from util-linux >>>> is selected. >>>> >>>> Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> >>>> Signed-off-by: Carlos Santos <casantos@datacom.ind.br> >>>> --- >>>> Changes v1->v2 >>>> - Add depenndece on !BR2_PACKAGE_UTIL_LINUX_FSCK to >>>> BR2_PACKAGE_E2FSPROGS_FSCK >>>> - Add comment telling that the fsck from util-linux has preference. >>>> - Pass "--enable-fsck" conditionally to configure >>>> - Remove the guard around the removal of /usr/sbin/fsck, since the >>>> fsck from busybox and util-linux are installed at /sbin >>>> - Improve comments and commit message >>>> >>>> In the long run the e2fsprogs recipe deserves an extreme overhauling >>>> like we did for util-linux but right now these changes are enough to >>>> fix the specific problem of fsck. >>>> --- >>> It's almost working, but there's a trick for systemd (*tadaaa*) >>> To have fsck work at boot time, you *MUST* have the fsck (the wrapper) >>> from util-linux, because systemd passes arguments that do not exists >>> in the e2fsprogs wrapper. But you should use the e2fsck program and >>> its link. >>> So for this to truly work, if systemd is selected, you should select >>> util-linux's fsck, disable e2fsprogs fsck wrapper and enable e2fsck. >> >> Do you mean something like this in package/systemd/Config.in? >> >> select BR2_PACKAGE_UTIL_LINUX_FSCK >> select BR2_PACKAGE_E2FSPROGS >> select BR2_PACKAGE_E2FSPROGS_E2FSCK >> >> I agree, but that must be done in a subsequent commit. > Oh yes, absolutely. Also, the busybox's fsck won't work with systemd, > so you must also take that into account. That could be handled in the util-linux recipe building busybox before, like e2fsprogs does. However, util-linux installs fsck unconditionally while busybox avoids overriding an existing /sbin/fsck, so their build and installation should be irrelevant. A good test is to run $ make clean systemd busybox $ make clean busybox systemd after making the required changes in the systemd recipe and Config.in, of course. In both cases $(TARGET_DIR)/sbin/fsck should have come from util-linux and no $(TARGET_DIR)/usr/sbin/fsck should exist. >>> Note that in case of failure, systemd will try to run emergency.target >>> and all kinds of things may happen if you haven't created some >>> post-build or other scripts. >> >> I'm not well versed on systemd (not even poorly versed, in fact). Feel >> free to educate me. :-) > Well, in this case, I am just putting this here to share the > knowledge, but I don't think Buildroot specifically should do anything > about this. It's not our role I think. Maybe we could add a pointer in > the "Help" in the menuconfig to the systemd's documentation or > something. I agree, but I don't feel confident to change the systemd recipe beyond the minimal requirements to fix the fsck issue.
> From: "Carlos Santos" <casantos@datacom.ind.br> > To: "Maxime Hadjinlian" <maxime.hadjinlian@gmail.com> > Cc: "buildroot" <buildroot@buildroot.org> > Sent: Sunday, April 2, 2017 11:30:37 AM > Subject: Re: [Buildroot] [PATCH v2] e2fsprogs: keep util-linux's fsck if chosen > like e2fsprogs does. However, util-linux installs fsck unconditionally > while busybox avoids overriding an existing /sbin/fsck, so their build > and installation should be irrelevant. A good test is to run build and installation *order* should be irrelevant
On 02-04-17 12:13, Maxime Hadjinlian wrote: > Hi all, > > On Sun, Apr 2, 2017 at 4:36 AM, Carlos Santos <casantos@datacom.ind.br> wrote: >> Since e2fsprogs depends on util-linux, it's built after it. So you can't >> have e2fsck from e2fsprogs along with the fsck wrapper from util-linux >> (which is better maintained and compatible with systemd) because we end >> up deleting the fsck from util-linux. >> >> Fix this issue by disabling e2fsprogs' fsck if the one from util-linux ^^^^ To be clear: we're only talking about the fsck wrapper here, not about e2fsck itself. So I would put that explicitly in the commit message, i.e. "fsck wrapper" instead of just "fsck". >> is selected. >> >> Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> >> Signed-off-by: Carlos Santos <casantos@datacom.ind.br> >> --- >> Changes v1->v2 >> - Add depenndece on !BR2_PACKAGE_UTIL_LINUX_FSCK to >> BR2_PACKAGE_E2FSPROGS_FSCK >> - Add comment telling that the fsck from util-linux has preference. >> - Pass "--enable-fsck" conditionally to configure >> - Remove the guard around the removal of /usr/sbin/fsck, since the >> fsck from busybox and util-linux are installed at /sbin >> - Improve comments and commit message >> >> In the long run the e2fsprogs recipe deserves an extreme overhauling >> like we did for util-linux but right now these changes are enough to >> fix the specific problem of fsck. >> --- > It's almost working, but there's a trick for systemd (*tadaaa*) > To have fsck work at boot time, you *MUST* have the fsck (the wrapper) > from util-linux, because systemd passes arguments that do not exists > in the e2fsprogs wrapper. But you should use the e2fsck program and > its link. Which is exactly what this patch does, no? It will use the fsck wrapper from util-linux, not the one from e2fsprogs. What this patch does NOT do is to make sure that BR2_PACKAGE_UTIL_LINUX_FSCK is selected, but as Carlos wrote, that should be a separate patch. > So for this to truly work, if systemd is selected, you should select > util-linux's fsck, disable e2fsprogs fsck wrapper and enable e2fsck. So in systemd/Config.in: select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_FSCK select BR2_PACKAGE_E2FSPROGS_E2FSCK although the latter is only relevant if there actually is an ext2 filesystem, I guess. > > Note that in case of failure, systemd will try to run emergency.target > and all kinds of things may happen if you haven't created some > post-build or other scripts. > >> package/e2fsprogs/Config.in | 4 ++++ >> package/e2fsprogs/e2fsprogs.mk | 12 +++++++++--- >> 2 files changed, 13 insertions(+), 3 deletions(-) >> >> diff --git a/package/e2fsprogs/Config.in b/package/e2fsprogs/Config.in >> index d1914a9..418f877 100644 >> --- a/package/e2fsprogs/Config.in >> +++ b/package/e2fsprogs/Config.in >> @@ -59,8 +59,12 @@ config BR2_PACKAGE_E2FSPROGS_FILEFRAG >> >> config BR2_PACKAGE_E2FSPROGS_FSCK >> bool "fsck" >> + depends on !BR2_PACKAGE_UTIL_LINUX_FSCK >> default y >> >> +comment "the fsck from util-linux has preference over this one" >> + depends on BR2_PACKAGE_UTIL_LINUX_FSCK >> + >> config BR2_PACKAGE_E2FSPROGS_FUSE2FS >> bool "fuse2fs" >> depends on !BR2_STATIC_LIBS # libfuse >> diff --git a/package/e2fsprogs/e2fsprogs.mk b/package/e2fsprogs/e2fsprogs.mk >> index 3f235c5..b4b96c3 100644 >> --- a/package/e2fsprogs/e2fsprogs.mk >> +++ b/package/e2fsprogs/e2fsprogs.mk >> @@ -11,7 +11,7 @@ E2FSPROGS_LICENSE = GPL-2.0, BSD-3-Clause (libuuid), MIT-like with advertising c >> E2FSPROGS_LICENSE_FILES = NOTICE lib/uuid/COPYING lib/ss/mit-sipb-copyright.h lib/et/internal.h >> E2FSPROGS_INSTALL_STAGING = YES >> E2FSPROGS_DEPENDENCIES = host-pkgconf util-linux >> -# we don't have a host-util-linux >> +# We don't need host-util-linux, since we disable libblkid, libuuid. >> HOST_E2FSPROGS_DEPENDENCIES = host-pkgconf >> >> # e4defrag doesn't build on older systems like RHEL5.x, and we don't >> @@ -24,11 +24,11 @@ E2FSPROGS_CONF_OPTS = \ >> $(if $(BR2_PACKAGE_E2FSPROGS_DEBUGFS),,--disable-debugfs) \ >> $(if $(BR2_PACKAGE_E2FSPROGS_E2IMAGE),,--disable-imager) \ >> $(if $(BR2_PACKAGE_E2FSPROGS_E4DEFRAG),,--disable-defrag) \ >> + $(if $(BR2_PACKAGE_E2FSPROGS_FSCK),--enable-fsck,) \ Although the rest of the .mk file doesn't do this yet, the proper way is to have both the --enable and --disable options, so let's do that here. With that fixed I think it's good to go. >> $(if $(BR2_PACKAGE_E2FSPROGS_RESIZE2FS),,--disable-resizer) \ >> --disable-uuidd \ >> --disable-libblkid \ >> --disable-libuuid \ >> - --enable-fsck \ >> --disable-e2initrd-helper \ >> --disable-testio-debug \ >> --disable-rpath >> @@ -146,10 +146,16 @@ E2FSPROGS_DEPENDENCIES += busybox >> define E2FSPROGS_REMOVE_BUSYBOX_APPLETS >> $(RM) -f $(TARGET_DIR)/bin/chattr >> $(RM) -f $(TARGET_DIR)/bin/lsattr >> - $(RM) -f $(TARGET_DIR)/sbin/fsck >> $(RM) -f $(TARGET_DIR)/sbin/tune2fs >> $(RM) -f $(TARGET_DIR)/sbin/e2label >> endef >> + >> +ifeq ($(BR2_PACKAGE_E2FSPROGS_FSCK),y) >> +# We only build fsck if it's not selected in util-linux, so at this >> +# point /sbin/fsck must have come from busybox. >> +E2FSPROGS_REMOVE_BUSYBOX_APPLETS += $(RM) -f $(TARGET_DIR)/sbin/fsck >> +endif > This part doesn't work with systemd as you will remove the fsck > wrapper from util-linux No, read the command and the ifeq above: this will only be done if BR2_PACKAGE_UTIL_LINUX_FSCK is NOT selected. Regards, Arnout > which is the only one that can be used. And > since e2fsprogs depends on util-linux, you are screwed :/. >> + >> E2FSPROGS_PRE_INSTALL_TARGET_HOOKS += E2FSPROGS_REMOVE_BUSYBOX_APPLETS >> endif >> >> -- >> 2.7.4 >> > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot >
diff --git a/package/e2fsprogs/Config.in b/package/e2fsprogs/Config.in index d1914a9..418f877 100644 --- a/package/e2fsprogs/Config.in +++ b/package/e2fsprogs/Config.in @@ -59,8 +59,12 @@ config BR2_PACKAGE_E2FSPROGS_FILEFRAG config BR2_PACKAGE_E2FSPROGS_FSCK bool "fsck" + depends on !BR2_PACKAGE_UTIL_LINUX_FSCK default y +comment "the fsck from util-linux has preference over this one" + depends on BR2_PACKAGE_UTIL_LINUX_FSCK + config BR2_PACKAGE_E2FSPROGS_FUSE2FS bool "fuse2fs" depends on !BR2_STATIC_LIBS # libfuse diff --git a/package/e2fsprogs/e2fsprogs.mk b/package/e2fsprogs/e2fsprogs.mk index 3f235c5..b4b96c3 100644 --- a/package/e2fsprogs/e2fsprogs.mk +++ b/package/e2fsprogs/e2fsprogs.mk @@ -11,7 +11,7 @@ E2FSPROGS_LICENSE = GPL-2.0, BSD-3-Clause (libuuid), MIT-like with advertising c E2FSPROGS_LICENSE_FILES = NOTICE lib/uuid/COPYING lib/ss/mit-sipb-copyright.h lib/et/internal.h E2FSPROGS_INSTALL_STAGING = YES E2FSPROGS_DEPENDENCIES = host-pkgconf util-linux -# we don't have a host-util-linux +# We don't need host-util-linux, since we disable libblkid, libuuid. HOST_E2FSPROGS_DEPENDENCIES = host-pkgconf # e4defrag doesn't build on older systems like RHEL5.x, and we don't @@ -24,11 +24,11 @@ E2FSPROGS_CONF_OPTS = \ $(if $(BR2_PACKAGE_E2FSPROGS_DEBUGFS),,--disable-debugfs) \ $(if $(BR2_PACKAGE_E2FSPROGS_E2IMAGE),,--disable-imager) \ $(if $(BR2_PACKAGE_E2FSPROGS_E4DEFRAG),,--disable-defrag) \ + $(if $(BR2_PACKAGE_E2FSPROGS_FSCK),--enable-fsck,) \ $(if $(BR2_PACKAGE_E2FSPROGS_RESIZE2FS),,--disable-resizer) \ --disable-uuidd \ --disable-libblkid \ --disable-libuuid \ - --enable-fsck \ --disable-e2initrd-helper \ --disable-testio-debug \ --disable-rpath @@ -146,10 +146,16 @@ E2FSPROGS_DEPENDENCIES += busybox define E2FSPROGS_REMOVE_BUSYBOX_APPLETS $(RM) -f $(TARGET_DIR)/bin/chattr $(RM) -f $(TARGET_DIR)/bin/lsattr - $(RM) -f $(TARGET_DIR)/sbin/fsck $(RM) -f $(TARGET_DIR)/sbin/tune2fs $(RM) -f $(TARGET_DIR)/sbin/e2label endef + +ifeq ($(BR2_PACKAGE_E2FSPROGS_FSCK),y) +# We only build fsck if it's not selected in util-linux, so at this +# point /sbin/fsck must have come from busybox. +E2FSPROGS_REMOVE_BUSYBOX_APPLETS += $(RM) -f $(TARGET_DIR)/sbin/fsck +endif + E2FSPROGS_PRE_INSTALL_TARGET_HOOKS += E2FSPROGS_REMOVE_BUSYBOX_APPLETS endif