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 |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
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 <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.
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.
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
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.
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!
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
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 --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