[v2,1/2] iproute2: install tools to mirror install under Debian/Ubuntu

Submitted by Alan Perry on Dec. 5, 2020, 8:22 a.m. | Patch ID: 178728

Details

Message ID 20201205082246.14954-1-alanp@snowmoose.com
State New
Headers show

Commit Message

Alan Perry Dec. 5, 2020, 8:22 a.m.
Many scripts exist that expect the iproute2 tools to be found in
the same directories where they are found in Debian or Ubuntu.
For the iproute2 tools included in the iproute2 recipe, move
them to those directories or create links there.. Also, add
bash-completion files as is done by Debian and Ubuntu.

Signed-off-by: Alan Perry <alanp@snowmoose.com>

---
 .../iproute2/iproute2.inc                     | 23 +++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

-- 
2.17.1
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#145327): https://lists.openembedded.org/g/openembedded-core/message/145327
Mute This Topic: https://lists.openembedded.org/mt/78730158/1003190
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mhalstead@linuxfoundation.org]
-=-=-=-=-=-=-=-=-=-=-=-

Patch hide | download patch | download mbox

diff --git a/meta/recipes-connectivity/iproute2/iproute2.inc b/meta/recipes-connectivity/iproute2/iproute2.inc
index 403d264308..de5c63a6e3 100644
--- a/meta/recipes-connectivity/iproute2/iproute2.inc
+++ b/meta/recipes-connectivity/iproute2/iproute2.inc
@@ -41,6 +41,23 @@  do_install () {
     install -d ${D}${datadir}
     mv ${D}/share/* ${D}${datadir}/ || true
     rm ${D}/share -rf || true
+
+    install -d ${D}${base_bindir}
+    ln -s /sbin/ip ${D}${base_bindir}/ip
+    mv ${D}${base_sbindir}/ss ${D}${base_bindir}/ss
+
+    install -d ${D}${bindir}
+    mv ${D}${base_sbindir}/nstat ${D}${bindir}/nstat
+    mv ${D}${base_sbindir}/lnstat ${D}${bindir}/lnstat
+    mv ${D}${base_sbindir}/ctstat ${D}${bindir}/ctstat
+    mv ${D}${base_sbindir}/rtstat ${D}${bindir}/rtstat
+    mv ${D}${base_sbindir}/routef ${D}${bindir}/routef
+    mv ${D}${base_sbindir}/routel ${D}${bindir}/routel
+
+    if [ "${base_sbindir}" != "${sbindir}" ]; then
+        install -d ${D}${sbindir}
+        mv ${D}${base_sbindir}/genl ${D}${sbindir}/genl
+    fi
 }
 
 # The .so files in iproute2-tc are modules, not traditional libraries
@@ -59,7 +76,8 @@  PACKAGES =+ "\
 "
 
 FILES_${PN}-tc = "${base_sbindir}/tc* \
-                  ${libdir}/tc/*.so"
+                  ${libdir}/tc/*.so \
+                  ${datadir}/bash-completion/completions/tc"
 FILES_${PN}-lnstat = "${base_sbindir}/lnstat \
                       ${base_sbindir}/ctstat \
                       ${base_sbindir}/rtstat"
@@ -69,7 +87,8 @@  FILES_${PN}-rtacct = "${base_sbindir}/rtacct"
 FILES_${PN}-nstat = "${base_sbindir}/nstat"
 FILES_${PN}-ss = "${base_sbindir}/ss"
 FILES_${PN}-tipc = "${base_sbindir}/tipc"
-FILES_${PN}-devlink = "${base_sbindir}/devlink"
+FILES_${PN}-devlink = "${base_sbindir}/devlink \
+                       ${datadir}/bash-completion/completions/devlink"
 
 ALTERNATIVE_${PN} = "ip"
 ALTERNATIVE_TARGET[ip] = "${base_sbindir}/ip.${BPN}"

Comments

Richard Purdie Dec. 7, 2020, 9:49 p.m.
On Sat, 2020-12-05 at 08:22 +0000, Alan Perry wrote:
> Many scripts exist that expect the iproute2 tools to be found in

> the same directories where they are found in Debian or Ubuntu.

> For the iproute2 tools included in the iproute2 recipe, move

> them to those directories or create links there.. Also, add

> bash-completion files as is done by Debian and Ubuntu.

> 

> Signed-off-by: Alan Perry <alanp@snowmoose.com>

> ---

>  .../iproute2/iproute2.inc                     | 23 +++++++++++++++++--

>  1 file changed, 21 insertions(+), 2 deletions(-)


The direction in the patch is worrying me a little.

There is a bash-completion class which splits completion files into
their own package, most "embedded" users don't want them in the main
packages. This patch does something different to what has been done
elsewhere.

Secondly, I'm also not sure that just because debian does something we
should therefore do it, I'm not convinced that scripts should be
hardcoding path assumptions about these tools. IF this is such a
universal need, why doesn't upstream change the default installation
locations? Has it been discussed?

I'd expect there to be opinions on this topic but I'm not seeing much
discussion. I suspect if if does merge there would be push back later
though.

Also, the duplication between bin and sbin for ip is not particularly
good practise.

Cheers,

Richard
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#145360): https://lists.openembedded.org/g/openembedded-core/message/145360
Mute This Topic: https://lists.openembedded.org/mt/78730158/1003190
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mhalstead@linuxfoundation.org]
-=-=-=-=-=-=-=-=-=-=-=-
Alan Perry Dec. 9, 2020, 10:39 p.m.
On 12/7/20 1:49 PM, Richard Purdie wrote:
> On Sat, 2020-12-05 at 08:22 +0000, Alan Perry wrote:

>> Many scripts exist that expect the iproute2 tools to be found in

>> the same directories where they are found in Debian or Ubuntu.

>> For the iproute2 tools included in the iproute2 recipe, move

>> them to those directories or create links there.. Also, add

>> bash-completion files as is done by Debian and Ubuntu.

>>

>> Signed-off-by: Alan Perry <alanp@snowmoose.com>

>> ---

>>   .../iproute2/iproute2.inc                     | 23 +++++++++++++++++--

>>   1 file changed, 21 insertions(+), 2 deletions(-)

> The direction in the patch is worrying me a little.

>

> There is a bash-completion class which splits completion files into

> their own package, most "embedded" users don't want them in the main

> packages. This patch does something different to what has been done

> elsewhere.

>

> Secondly, I'm also not sure that just because debian does something we

> should therefore do it, I'm not convinced that scripts should be

> hardcoding path assumptions about these tools. IF this is such a

> universal need, why doesn't upstream change the default installation

> locations? Has it been discussed?

>

> I'd expect there to be opinions on this topic but I'm not seeing much

> discussion. I suspect if if does merge there would be push back later

> though.

>

> Also, the duplication between bin and sbin for ip is not particularly

> good practise.

>

Thanks for your comments. I apologize for the delay in responding, but I 
needed to do some research first.

I will look at the bash-completion class and make the appropriate 
changes there.

As far as the installation path changes, I discussed why those aren't 
the defaults with the iproute2 upstream maintainer. The idea is that the 
upstream puts everything in /sbin and where is appropriate to install 
them for a given distro is left as an exercise for that distro.

The iproute2 recipe is doing that exercise for poky. So, where is the 
correct place to install these tools on poky? I'd argue that they should 
go in the expected directories for Unix-y OSes. Someone at Debian went 
through that analysis and put them where they put them and those mostly 
seem like reasonable places to me. It is also where users coming to 
poky-based systems will likely expecting to find them.

As far as duplicating ip in bin and sbin, I agree that it isn't good 
practice. Having it in both doesn't seem necessary to me.

alan
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#145435): https://lists.openembedded.org/g/openembedded-core/message/145435
Mute This Topic: https://lists.openembedded.org/mt/78730158/1003190
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mhalstead@linuxfoundation.org]
-=-=-=-=-=-=-=-=-=-=-=-
Andre McCurdy Dec. 9, 2020, 11:40 p.m.
On Wed, Dec 9, 2020 at 2:39 PM Alan Perry <alanp@snowmoose.com> wrote:
> On 12/7/20 1:49 PM, Richard Purdie wrote:

> > On Sat, 2020-12-05 at 08:22 +0000, Alan Perry wrote:

> >> Many scripts exist that expect the iproute2 tools to be found in

> >> the same directories where they are found in Debian or Ubuntu.

> >> For the iproute2 tools included in the iproute2 recipe, move

> >> them to those directories or create links there.. Also, add

> >> bash-completion files as is done by Debian and Ubuntu.

> >>

> >> Signed-off-by: Alan Perry <alanp@snowmoose.com>

> >> ---

> >>   .../iproute2/iproute2.inc                     | 23 +++++++++++++++++--

> >>   1 file changed, 21 insertions(+), 2 deletions(-)

> > The direction in the patch is worrying me a little.

> >

> > There is a bash-completion class which splits completion files into

> > their own package, most "embedded" users don't want them in the main

> > packages. This patch does something different to what has been done

> > elsewhere.

> >

> > Secondly, I'm also not sure that just because debian does something we

> > should therefore do it, I'm not convinced that scripts should be

> > hardcoding path assumptions about these tools. IF this is such a

> > universal need, why doesn't upstream change the default installation

> > locations? Has it been discussed?

> >

> > I'd expect there to be opinions on this topic but I'm not seeing much

> > discussion. I suspect if if does merge there would be push back later

> > though.

> >

> > Also, the duplication between bin and sbin for ip is not particularly

> > good practise.

> >

> Thanks for your comments. I apologize for the delay in responding, but I

> needed to do some research first.

>

> I will look at the bash-completion class and make the appropriate

> changes there.

>

> As far as the installation path changes, I discussed why those aren't

> the defaults with the iproute2 upstream maintainer. The idea is that the

> upstream puts everything in /sbin and where is appropriate to install

> them for a given distro is left as an exercise for that distro.

>

> The iproute2 recipe is doing that exercise for poky. So, where is the

> correct place to install these tools on poky? I'd argue that they should

> go in the expected directories for Unix-y OSes. Someone at Debian went

> through that analysis and put them where they put them and those mostly

> seem like reasonable places to me. It is also where users coming to

> poky-based systems will likely expecting to find them.

>

> As far as duplicating ip in bin and sbin, I agree that it isn't good

> practice. Having it in both doesn't seem necessary to me.


But isn't that duplication all part of aligning with Debian (where
/sbin/ip is a symlink to /bin/ip)? Presumably something relies on the
symlink or Debian wouldn't be doing it.

Based on:

  https://sources.debian.org/src/iproute2/5.9.0-1/debian/iproute2.install/
  https://sources.debian.org/src/iproute2/5.9.0-1/debian/iproute2.links/

Debian does seem to do quite a lot or rearranging of the installed
files. Open question seems to be whether that rearranging is to align
with requirements which are specific to Debian or something which
other distros might need too?

Based on:

  https://centos.pkgs.org/8/centos-baseos-x86_64/iproute-5.3.0-5.el8.x86_64.rpm.html

It looks like Centos installs all binaries under /usr/sbin
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#145437): https://lists.openembedded.org/g/openembedded-core/message/145437
Mute This Topic: https://lists.openembedded.org/mt/78730158/1003190
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mhalstead@linuxfoundation.org]
-=-=-=-=-=-=-=-=-=-=-=-
Alan Perry Dec. 10, 2020, midnight
On 12/9/20 3:40 PM, Andre McCurdy wrote:
> On Wed, Dec 9, 2020 at 2:39 PM Alan Perry <alanp@snowmoose.com> wrote:

>> On 12/7/20 1:49 PM, Richard Purdie wrote:

>>> On Sat, 2020-12-05 at 08:22 +0000, Alan Perry wrote:

>>>> Many scripts exist that expect the iproute2 tools to be found in

>>>> the same directories where they are found in Debian or Ubuntu.

>>>> For the iproute2 tools included in the iproute2 recipe, move

>>>> them to those directories or create links there.. Also, add

>>>> bash-completion files as is done by Debian and Ubuntu.

>>>>

>>>> Signed-off-by: Alan Perry <alanp@snowmoose.com>

>>>> ---

>>>>    .../iproute2/iproute2.inc                     | 23 +++++++++++++++++--

>>>>    1 file changed, 21 insertions(+), 2 deletions(-)

>>> The direction in the patch is worrying me a little.

>>>

>>> There is a bash-completion class which splits completion files into

>>> their own package, most "embedded" users don't want them in the main

>>> packages. This patch does something different to what has been done

>>> elsewhere.

>>>

>>> Secondly, I'm also not sure that just because debian does something we

>>> should therefore do it, I'm not convinced that scripts should be

>>> hardcoding path assumptions about these tools. IF this is such a

>>> universal need, why doesn't upstream change the default installation

>>> locations? Has it been discussed?

>>>

>>> I'd expect there to be opinions on this topic but I'm not seeing much

>>> discussion. I suspect if if does merge there would be push back later

>>> though.

>>>

>>> Also, the duplication between bin and sbin for ip is not particularly

>>> good practise.

>>>

>> Thanks for your comments. I apologize for the delay in responding, but I

>> needed to do some research first.

>>

>> I will look at the bash-completion class and make the appropriate

>> changes there.

>>

>> As far as the installation path changes, I discussed why those aren't

>> the defaults with the iproute2 upstream maintainer. The idea is that the

>> upstream puts everything in /sbin and where is appropriate to install

>> them for a given distro is left as an exercise for that distro.

>>

>> The iproute2 recipe is doing that exercise for poky. So, where is the

>> correct place to install these tools on poky? I'd argue that they should

>> go in the expected directories for Unix-y OSes. Someone at Debian went

>> through that analysis and put them where they put them and those mostly

>> seem like reasonable places to me. It is also where users coming to

>> poky-based systems will likely expecting to find them.

>>

>> As far as duplicating ip in bin and sbin, I agree that it isn't good

>> practice. Having it in both doesn't seem necessary to me.

> But isn't that duplication all part of aligning with Debian (where

> /sbin/ip is a symlink to /bin/ip)? Presumably something relies on the

> symlink or Debian wouldn't be doing it.


I was just saying that I could see an argument for leaving that one out. 
As noted here, doing so isn't without risk.

>

> Based on:

>

>    https://sources.debian.org/src/iproute2/5.9.0-1/debian/iproute2.install/

>    https://sources.debian.org/src/iproute2/5.9.0-1/debian/iproute2.links/

>

> Debian does seem to do quite a lot or rearranging of the installed

> files. Open question seems to be whether that rearranging is to align

> with requirements which are specific to Debian or something which

> other distros might need too?

>

> Based on:

>

>    https://centos.pkgs.org/8/centos-baseos-x86_64/iproute-5.3.0-5.el8.x86_64.rpm.html

>

> It looks like Centos installs all binaries under /usr/sbin


I don't know that I would characterize rearranging the installed files 
as Debian does is "specific to Debian" or moving them as appropriate to 
how /bin, /sbin, /usr/bin, and /usr/sbin have been traditionally 
distinguished from each other. Where Centos is described to install them 
doesn't match that traditional use.
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#145439): https://lists.openembedded.org/g/openembedded-core/message/145439
Mute This Topic: https://lists.openembedded.org/mt/78730158/1003190
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mhalstead@linuxfoundation.org]
-=-=-=-=-=-=-=-=-=-=-=-