login: Add back libutil as an empty library
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
dj/TryBot-32bit |
success
|
Build for i686
|
Commit Message
There are several packages like sysvinit and buildroot that expect
-lutil to work. Rather than impacting them with having to change
the linker flags provide an empty libutil.a.
---
login/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
* Stafford Horne via Libc-alpha:
> There are several packages like sysvinit and buildroot that expect
> -lutil to work. Rather than impacting them with having to change
> the linker flags provide an empty libutil.a.
This produces a libutil.so.1 as well, right?
I think we should still prevent that. It's not clear to me what the
proper approach would be, though. We have a bunch of existing
examples: libmcheck.a, libg.a. But those do not use the usual library
mechanism AFAICS.
Maybe this will work?
libutil-inhibit-o = $(filter-out .o,$(object-suffixes))
And do not set libutil-routines and libutil-shared-only-routines for
new architectures.
On Wed, Oct 13, 2021 at 02:56:38PM +0200, Florian Weimer wrote:
> * Stafford Horne via Libc-alpha:
>
> > There are several packages like sysvinit and buildroot that expect
> > -lutil to work. Rather than impacting them with having to change
> > the linker flags provide an empty libutil.a.
>
> This produces a libutil.so.1 as well, right?
Ah, thats right, I thought I checked that, but the .so files are still there.
> I think we should still prevent that. It's not clear to me what the
> proper approach would be, though. We have a bunch of existing
> examples: libmcheck.a, libg.a. But those do not use the usual library
> mechanism AFAICS.
>
> Maybe this will work?
>
> libutil-inhibit-o = $(filter-out .o,$(object-suffixes))
Yes, it does seem to work, thanks.
> And do not set libutil-routines and libutil-shared-only-routines for
> new architectures.
I think this I am skipping via the existing if statement.
-Stafford
So maybe something like this?
--
--- a/login/Makefile
+++ b/login/Makefile
@@ -46,10 +46,10 @@ vpath %.c programs
tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
tst-pututxline-lockfail tst-pututxline-cache
-ifeq ($(have-GLIBC_2.33),yes)
# Empty compatibility library for old binaries.
extra-libs := libutil
extra-libs-others := $(extra-libs)
+ifeq ($(have-GLIBC_2.33),yes)
libutil-routines := libutil-compat
libutil-shared-only-routines := libutil-compat
@@ -57,6 +57,8 @@ libutil-shared-only-routines := libutil-compat
# link is not installed.
install-lib-ldscripts = libutil.so
$(inst_libdir)/libutil.so:
+else # not $(have-GLIBC_2.33)
+libutil-inhibit-o = $(filter-out .o,$(object-suffixes))
endif # $(have-GLIBC_2.33)
include ../Rules
* Stafford Horne:
> I think this I am skipping via the existing if statement.
>
> -Stafford
>
> So maybe something like this?
>
> --
>
> --- a/login/Makefile
> +++ b/login/Makefile
> @@ -46,10 +46,10 @@ vpath %.c programs
> tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
> tst-pututxline-lockfail tst-pututxline-cache
>
> -ifeq ($(have-GLIBC_2.33),yes)
> # Empty compatibility library for old binaries.
> extra-libs := libutil
> extra-libs-others := $(extra-libs)
> +ifeq ($(have-GLIBC_2.33),yes)
> libutil-routines := libutil-compat
> libutil-shared-only-routines := libutil-compat
>
> @@ -57,6 +57,8 @@ libutil-shared-only-routines := libutil-compat
> # link is not installed.
> install-lib-ldscripts = libutil.so
> $(inst_libdir)/libutil.so:
> +else # not $(have-GLIBC_2.33)
> +libutil-inhibit-o = $(filter-out .o,$(object-suffixes))
> endif # $(have-GLIBC_2.33)
>
> include ../Rules
Yes, at least it matches my expectations. I'm not familiar enough
with the build system to confirm it's correct, but hopefully it
unblocks your port.
On Wed, Oct 13, 2021 at 04:19:48PM +0200, Florian Weimer wrote:
> * Stafford Horne:
>
> > I think this I am skipping via the existing if statement.
> >
> > -Stafford
> >
> > So maybe something like this?
> >
> > --
> >
> > --- a/login/Makefile
> > +++ b/login/Makefile
> > @@ -46,10 +46,10 @@ vpath %.c programs
> > tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
> > tst-pututxline-lockfail tst-pututxline-cache
> >
> > -ifeq ($(have-GLIBC_2.33),yes)
> > # Empty compatibility library for old binaries.
> > extra-libs := libutil
> > extra-libs-others := $(extra-libs)
> > +ifeq ($(have-GLIBC_2.33),yes)
> > libutil-routines := libutil-compat
> > libutil-shared-only-routines := libutil-compat
> >
> > @@ -57,6 +57,8 @@ libutil-shared-only-routines := libutil-compat
> > # link is not installed.
> > install-lib-ldscripts = libutil.so
> > $(inst_libdir)/libutil.so:
> > +else # not $(have-GLIBC_2.33)
> > +libutil-inhibit-o = $(filter-out .o,$(object-suffixes))
> > endif # $(have-GLIBC_2.33)
> >
> > include ../Rules
>
> Yes, at least it matches my expectations. I'm not familiar enough
> with the build system to confirm it's correct, but hopefully it
> unblocks your port.
OK, I sent a v2 as per above which I am keeping on my port branch for now. I'll
wait for feedback for now.
-Stafford
@@ -46,10 +46,10 @@ vpath %.c programs
tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
tst-pututxline-lockfail tst-pututxline-cache
-ifeq ($(have-GLIBC_2.33),yes)
# Empty compatibility library for old binaries.
extra-libs := libutil
extra-libs-others := $(extra-libs)
+ifeq ($(have-GLIBC_2.33),yes)
libutil-routines := libutil-compat
libutil-shared-only-routines := libutil-compat