diff mbox series

[iproute2] Revert "Makefile: ensure CONF_USR_DIR honours the libdir config"

Message ID 20231106001410.183542-1-luca.boccassi@gmail.com (mailing list archive)
State Accepted
Commit deb66acabe44d103c8368b62a76ef37aa074748d
Delegated to: Stephen Hemminger
Headers show
Series [iproute2] Revert "Makefile: ensure CONF_USR_DIR honours the libdir config" | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Luca Boccassi Nov. 6, 2023, 12:14 a.m. UTC
From: Luca Boccassi <bluca@debian.org>

LIBDIR in Debian and derivatives is not /usr/lib/, it's
/usr/lib/<architecture triplet>/, which is different, and it's the
wrong location where to install architecture-independent default
configuration files, which should always go to /usr/lib/ instead.
Installing these files to the per-architecture directory is not
the right thing, hence revert the change.

This reverts commit 946753a4459bd035132a27bb2eb87529c1979b90.

Signed-off-by: Luca Boccassi <bluca@debian.org>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Petr Machata Nov. 10, 2023, 1:34 p.m. UTC | #1
luca.boccassi@gmail.com writes:

> From: Luca Boccassi <bluca@debian.org>
>
> LIBDIR in Debian and derivatives is not /usr/lib/, it's
> /usr/lib/<architecture triplet>/, which is different, and it's the
> wrong location where to install architecture-independent default
> configuration files, which should always go to /usr/lib/ instead.
> Installing these files to the per-architecture directory is not
> the right thing, hence revert the change.

So I looked into the Fedora package. Up until recently, the files were
in /etc, but it seems there was a deliberate change in the spec file
this September that moved them to /usr/lib or /usr/lib64.

Luca -- since you both sent the patch under reversion, and are Fedora
maintainer, could you please elaborate on what the logic was behind it?
It does look odd to me to put config files into an arch-dependent
directory, but I've been out of packaging for close to a decade at this
point.

Thanks!

> This reverts commit 946753a4459bd035132a27bb2eb87529c1979b90.
>
> Signed-off-by: Luca Boccassi <bluca@debian.org>
> ---
>  Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index 54539ce4..7d1819ce 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -17,7 +17,7 @@ endif
>  PREFIX?=/usr
>  SBINDIR?=/sbin
>  CONF_ETC_DIR?=/etc/iproute2
> -CONF_USR_DIR?=$(LIBDIR)/iproute2
> +CONF_USR_DIR?=$(PREFIX)/lib/iproute2
>  NETNS_RUN_DIR?=/var/run/netns
>  NETNS_ETC_DIR?=/etc/netns
>  DATADIR?=$(PREFIX)/share
Petr Machata Nov. 10, 2023, 1:54 p.m. UTC | #2
Petr Machata <petrm@nvidia.com> writes:

> luca.boccassi@gmail.com writes:
>
>> From: Luca Boccassi <bluca@debian.org>
>>
>> LIBDIR in Debian and derivatives is not /usr/lib/, it's
>> /usr/lib/<architecture triplet>/, which is different, and it's the
>> wrong location where to install architecture-independent default
>> configuration files, which should always go to /usr/lib/ instead.
>> Installing these files to the per-architecture directory is not
>> the right thing, hence revert the change.
>
> So I looked into the Fedora package. Up until recently, the files were
> in /etc, but it seems there was a deliberate change in the spec file
> this September that moved them to /usr/lib or /usr/lib64.
>
> Luca -- since you both sent the patch under reversion, and are Fedora

Ugh, I mean Andrea, not Luca. Sorry!

> maintainer, could you please elaborate on what the logic was behind it?
> It does look odd to me to put config files into an arch-dependent
> directory, but I've been out of packaging for close to a decade at this
> point.
Luca Boccassi Nov. 10, 2023, 1:54 p.m. UTC | #3
On Fri, 10 Nov 2023 at 13:51, Petr Machata <petrm@nvidia.com> wrote:
>
> luca.boccassi@gmail.com writes:
>
> > From: Luca Boccassi <bluca@debian.org>
> >
> > LIBDIR in Debian and derivatives is not /usr/lib/, it's
> > /usr/lib/<architecture triplet>/, which is different, and it's the
> > wrong location where to install architecture-independent default
> > configuration files, which should always go to /usr/lib/ instead.
> > Installing these files to the per-architecture directory is not
> > the right thing, hence revert the change.
>
> So I looked into the Fedora package. Up until recently, the files were
> in /etc, but it seems there was a deliberate change in the spec file
> this September that moved them to /usr/lib or /usr/lib64.
>
> Luca -- since you both sent the patch under reversion, and are Fedora
> maintainer, could you please elaborate on what the logic was behind it?
> It does look odd to me to put config files into an arch-dependent
> directory, but I've been out of packaging for close to a decade at this
> point.

I am not a Fedora maintainer, and an arch-dependent triplet
subdirectory is exactly the problem that this patch is fixing.
Andrea Claudi Nov. 10, 2023, 8:31 p.m. UTC | #4
On Fri, Nov 10, 2023 at 02:54:16PM +0100, Petr Machata wrote:
> 
> Petr Machata <petrm@nvidia.com> writes:
> 
> > luca.boccassi@gmail.com writes:
> >
> >> From: Luca Boccassi <bluca@debian.org>
> >>
> >> LIBDIR in Debian and derivatives is not /usr/lib/, it's
> >> /usr/lib/<architecture triplet>/, which is different, and it's the
> >> wrong location where to install architecture-independent default
> >> configuration files, which should always go to /usr/lib/ instead.
> >> Installing these files to the per-architecture directory is not
> >> the right thing, hence revert the change.
> >
> > So I looked into the Fedora package. Up until recently, the files were
> > in /etc, but it seems there was a deliberate change in the spec file
> > this September that moved them to /usr/lib or /usr/lib64.
> >
> > Luca -- since you both sent the patch under reversion, and are Fedora
> 
> Ugh, I mean Andrea, not Luca. Sorry!
> 
> > maintainer, could you please elaborate on what the logic was behind it?
> > It does look odd to me to put config files into an arch-dependent
> > directory, but I've been out of packaging for close to a decade at this
> > point.

Hi Petr,
the change in Fedora iproute package is in response to 0a0a8f12fa1b
("Read configuration files from /etc and /usr"): it moves config files
from /etc to /usr to make room for customization using /etc/iproute2, as
described over there.

What I tried to achieve with my patch is to have a single location in
/usr for iproute files; but I agree with both you and Luca that storing
config files in an arch-dependent directory doesn't look right.

However, even using /usr/lib doesn't seems quite right to me. According
to the FHS [1]:

"/usr/lib includes object files and libraries. On some systems, it may
also include internal binaries that are not intended to be executed
directly by users or shell scripts."

A better location is probably /usr/share [2]:

"The /usr/share hierarchy is for all read-only architecture independent
data files. 
This hierarchy is intended to be shareable among all architecture
platforms of a given OS; thus, for example, a site with i386, Alpha, and
PPC platforms might maintain a single /usr/share directory that is
centrally-mounted."

And this is exactly our case: read-only, shareable, config files that
can be overridden using /etc/iproute2.

Luca, does something along the lines below work for you? If so, I can
test and send a patch fixing my own stuff.

diff --git a/Makefile b/Makefile
index 5c559c8d..ec57bd4c 100644
--- a/Makefile
+++ b/Makefile
@@ -16,11 +16,11 @@ endif

 PREFIX?=/usr
 SBINDIR?=/sbin
+DATADIR?=$(PREFIX)/share
 CONF_ETC_DIR?=/etc/iproute2
-CONF_USR_DIR?=$(LIBDIR)/iproute2
+CONF_USR_DIR?=$(DATADIR)/iproute2
 NETNS_RUN_DIR?=/var/run/netns
 NETNS_ETC_DIR?=/etc/netns
-DATADIR?=$(PREFIX)/share
 HDRDIR?=$(PREFIX)/include/iproute2
 DOCDIR?=$(DATADIR)/doc/iproute2
 MANDIR?=$(DATADIR)/man

[1] https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s06.html
[2] https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s11.html
Luca Boccassi Nov. 10, 2023, 10:01 p.m. UTC | #5
On Fri, 10 Nov 2023 at 20:31, Andrea Claudi <aclaudi@redhat.com> wrote:
>
> On Fri, Nov 10, 2023 at 02:54:16PM +0100, Petr Machata wrote:
> >
> > Petr Machata <petrm@nvidia.com> writes:
> >
> > > luca.boccassi@gmail.com writes:
> > >
> > >> From: Luca Boccassi <bluca@debian.org>
> > >>
> > >> LIBDIR in Debian and derivatives is not /usr/lib/, it's
> > >> /usr/lib/<architecture triplet>/, which is different, and it's the
> > >> wrong location where to install architecture-independent default
> > >> configuration files, which should always go to /usr/lib/ instead.
> > >> Installing these files to the per-architecture directory is not
> > >> the right thing, hence revert the change.
> > >
> > > So I looked into the Fedora package. Up until recently, the files were
> > > in /etc, but it seems there was a deliberate change in the spec file
> > > this September that moved them to /usr/lib or /usr/lib64.
> > >
> > > Luca -- since you both sent the patch under reversion, and are Fedora
> >
> > Ugh, I mean Andrea, not Luca. Sorry!
> >
> > > maintainer, could you please elaborate on what the logic was behind it?
> > > It does look odd to me to put config files into an arch-dependent
> > > directory, but I've been out of packaging for close to a decade at this
> > > point.
>
> Hi Petr,
> the change in Fedora iproute package is in response to 0a0a8f12fa1b
> ("Read configuration files from /etc and /usr"): it moves config files
> from /etc to /usr to make room for customization using /etc/iproute2, as
> described over there.
>
> What I tried to achieve with my patch is to have a single location in
> /usr for iproute files; but I agree with both you and Luca that storing
> config files in an arch-dependent directory doesn't look right.
>
> However, even using /usr/lib doesn't seems quite right to me. According
> to the FHS [1]:
>
> "/usr/lib includes object files and libraries. On some systems, it may
> also include internal binaries that are not intended to be executed
> directly by users or shell scripts."
>
> A better location is probably /usr/share [2]:
>
> "The /usr/share hierarchy is for all read-only architecture independent
> data files.
> This hierarchy is intended to be shareable among all architecture
> platforms of a given OS; thus, for example, a site with i386, Alpha, and
> PPC platforms might maintain a single /usr/share directory that is
> centrally-mounted."
>
> And this is exactly our case: read-only, shareable, config files that
> can be overridden using /etc/iproute2.
>
> Luca, does something along the lines below work for you? If so, I can
> test and send a patch fixing my own stuff.
>
> diff --git a/Makefile b/Makefile
> index 5c559c8d..ec57bd4c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -16,11 +16,11 @@ endif
>
>  PREFIX?=/usr
>  SBINDIR?=/sbin
> +DATADIR?=$(PREFIX)/share
>  CONF_ETC_DIR?=/etc/iproute2
> -CONF_USR_DIR?=$(LIBDIR)/iproute2
> +CONF_USR_DIR?=$(DATADIR)/iproute2
>  NETNS_RUN_DIR?=/var/run/netns
>  NETNS_ETC_DIR?=/etc/netns
> -DATADIR?=$(PREFIX)/share
>  HDRDIR?=$(PREFIX)/include/iproute2
>  DOCDIR?=$(DATADIR)/doc/iproute2
>  MANDIR?=$(DATADIR)/man
>
> [1] https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s06.html
> [2] https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s11.html

/usr/lib/ is used for configuration too - all the systemd configs for
example are stored there. That said, /usr/share/ works just as well
for me, so I don't mind one way or the other.
patchwork-bot+netdevbpf@kernel.org Nov. 13, 2023, 4:40 p.m. UTC | #6
Hello:

This patch was applied to iproute2/iproute2.git (main)
by Stephen Hemminger <stephen@networkplumber.org>:

On Mon,  6 Nov 2023 00:14:10 +0000 you wrote:
> From: Luca Boccassi <bluca@debian.org>
> 
> LIBDIR in Debian and derivatives is not /usr/lib/, it's
> /usr/lib/<architecture triplet>/, which is different, and it's the
> wrong location where to install architecture-independent default
> configuration files, which should always go to /usr/lib/ instead.
> Installing these files to the per-architecture directory is not
> the right thing, hence revert the change.
> 
> [...]

Here is the summary with links:
  - [iproute2] Revert "Makefile: ensure CONF_USR_DIR honours the libdir config"
    https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=deb66acabe44

You are awesome, thank you!
Andrea Claudi Nov. 13, 2023, 6:12 p.m. UTC | #7
On Mon, Nov 13, 2023 at 04:40:23PM +0000, patchwork-bot+netdevbpf@kernel.org wrote:
> Hello:
> 
> This patch was applied to iproute2/iproute2.git (main)
> by Stephen Hemminger <stephen@networkplumber.org>:
> 
> On Mon,  6 Nov 2023 00:14:10 +0000 you wrote:
> > From: Luca Boccassi <bluca@debian.org>
> > 
> > LIBDIR in Debian and derivatives is not /usr/lib/, it's
> > /usr/lib/<architecture triplet>/, which is different, and it's the
> > wrong location where to install architecture-independent default
> > configuration files, which should always go to /usr/lib/ instead.
> > Installing these files to the per-architecture directory is not
> > the right thing, hence revert the change.
> > 
> > [...]
> 
> Here is the summary with links:
>   - [iproute2] Revert "Makefile: ensure CONF_USR_DIR honours the libdir config"
>     https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=deb66acabe44
> 
> You are awesome, thank you!
> -- 
> Deet-doot-dot, I am a bot.
> https://korg.docs.kernel.org/patchwork/pwbot.html
> 
>

Hi Stephen, actually Luca and I agreed on a different solution, see
"[PATCH iproute2] Makefile: use /usr/share/iproute2 for config files".

I can rebase that patch on top of this one, if this is ok for you.

Regards,
Andrea
Stephen Hemminger Nov. 13, 2023, 11:38 p.m. UTC | #8
On Mon, 13 Nov 2023 19:12:58 +0100
Andrea Claudi <aclaudi@redhat.com> wrote:

> On Mon, Nov 13, 2023 at 04:40:23PM +0000, patchwork-bot+netdevbpf@kernel.org wrote:
> > Hello:
> > 
> > This patch was applied to iproute2/iproute2.git (main)
> > by Stephen Hemminger <stephen@networkplumber.org>:
> > 
> > On Mon,  6 Nov 2023 00:14:10 +0000 you wrote:  
> > > From: Luca Boccassi <bluca@debian.org>
> > > 
> > > LIBDIR in Debian and derivatives is not /usr/lib/, it's
> > > /usr/lib/<architecture triplet>/, which is different, and it's the
> > > wrong location where to install architecture-independent default
> > > configuration files, which should always go to /usr/lib/ instead.
> > > Installing these files to the per-architecture directory is not
> > > the right thing, hence revert the change.
> > > 
> > > [...]  
> > 
> > Here is the summary with links:
> >   - [iproute2] Revert "Makefile: ensure CONF_USR_DIR honours the libdir config"
> >     https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=deb66acabe44
> > 
> > You are awesome, thank you!
> > -- 
> > Deet-doot-dot, I am a bot.
> > https://korg.docs.kernel.org/patchwork/pwbot.html
> > 
> >  
> 
> Hi Stephen, actually Luca and I agreed on a different solution, see
> "[PATCH iproute2] Makefile: use /usr/share/iproute2 for config files".
> 
> I can rebase that patch on top of this one, if this is ok for you.
> 
> Regards,
> Andrea
> 

Send a new patch please.
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index 54539ce4..7d1819ce 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@  endif
 PREFIX?=/usr
 SBINDIR?=/sbin
 CONF_ETC_DIR?=/etc/iproute2
-CONF_USR_DIR?=$(LIBDIR)/iproute2
+CONF_USR_DIR?=$(PREFIX)/lib/iproute2
 NETNS_RUN_DIR?=/var/run/netns
 NETNS_ETC_DIR?=/etc/netns
 DATADIR?=$(PREFIX)/share