login: Add back libutil as an empty library

Message ID 20211013125042.2347805-1-shorne@gmail.com
State New
Headers show
Series
  • login: Add back libutil as an empty library
Related show

Commit Message

Noah Goldstein via Libc-alpha Oct. 13, 2021, 12:50 p.m.
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(-)

-- 
2.31.1

Comments

Florian Weimer Oct. 13, 2021, 12:56 p.m. | #1
* 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.
Noah Goldstein via Libc-alpha Oct. 13, 2021, 1:21 p.m. | #2
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
Florian Weimer Oct. 13, 2021, 2:19 p.m. | #3
* 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.
Noah Goldstein via Libc-alpha Oct. 13, 2021, 9:22 p.m. | #4
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

Patch

diff --git a/login/Makefile b/login/Makefile
index 4e6b97734d..5d3f8650fa 100644
--- 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