[Buildroot] [PATCH 00/50] busybox: invert dependencies

Yann E. MORIN yann.morin.1998 at free.fr
Mon Jul 2 21:12:21 UTC 2018


Hello All!

Currently, the issue that busybox may install the same executables as
those from other packages, is handled in all those packages. This is
not very practical.

Furthermore, this means that those packages all overwrite the
busybox-installed applets, which means that this triggers the
no-two-packages-touch-the-same-file rule. So far, this is only a
warning, but when we eventually go with TLPB, we'll have to enforce
that rule.

But busybox can be told to be smart, and not replace existing files
during installation. This is in fact what we do with a hook, which uses
'sed' to force the 'noclobber' install. But now, Busybox upstream has
proper support for doing a noclobber install without artifice. So we
backport those required patches, and get rid of our existing hook.

All other commits are just trivial dependency exchange order between a
package and busybox, except for syslog-ng, for which we must take care
that busybox does not overwrite the init script.

Eventually, we also add a new dependency onto the 'attr' package, to
solve a potential conflict with the setfattr applet.

Inverting a single dependency could introduce a dependency loop, which
would be resolved by a latter inversion. For example, we could have that
initial situation:

    B ---> A ---> busybox
      \_________/

With the first inversion, we'd get to now have a dependency loop:

    B ---> A ---> busybox ---> B

Then with the second inversion, we'd resolve that loop:

                  busybox ---> B ---> A
                          \_________/

Detecting and avoiding those loops is not trivial, because they may
imply multiple intermediate packages between B and A. So, the series
does not attempt to prevent those loops, as they are entirely resolved
by the end of the series anyway.


Regards,
Yann E. MORIN.


The following changes since commit 9086de8e15d98abda64850c52b66756646e0c2f4

  qt5charts: fix license information (2018-07-02 23:02:42 +0200)


are available in the git repository at:

  git://git.buildroot.org/~ymorin/git/buildroot.git

for you to fetch changes up to d5b2e0eebf27fe994337e2c966f8ecf63849f3e1

  support/scripts: don't draw most of busybox' dependencies (2018-07-02 23:07:03 +0200)


----------------------------------------------------------------
Yann E. MORIN (50):
      package/busybox: backport upstream patch to fix install-noclobber
      package/busybox: invert dependency with whois
      package/busybox: invert dependency with wget
      package/busybox: invert dependency with vim
      package/busybox: invert dependency with util-linux
      package/busybox: invert dependency with usbutils
      package/busybox: invert dependency with unzip
      package/busybox: invert dependency with traceroute
      package/busybox: invert dependency with tftpd
      package/busybox: invert dependency with tar
      package/busybox: invert dependency with sysvinit
      package/busybox: invert dependency with systemd
      package/busybox: invert dependency with syslog-ng
      package/busybox: invert dependency with sysklogd
      package/busybox: invert dependency with start-stop-daemon
      package/busybox: invert dependency with rsyslogd
      package/busybox: invert dependency with psmisc
      package/busybox: invert dependency with procps-ng
      package/busybox: invert dependency with pciutils
      package/busybox: invert dependency with ntp
      package/busybox: invert dependency with nnamp
      package/busybox: invert dependency with netcat-openbsd
      package/busybox: invert dependency with netcat
      package/busybox: invert dependency with net-tools
      package/busybox: invert dependency with mtd
      package/busybox: invert dependency with lsof
      package/busybox: invert dependency with less
      package/busybox: invert dependency with kmod
      package/busybox: invert dependency with iputils
      package/busybox: invert dependency with iproute2
      package/busybox: invert dependency with ifupdown
      package/busybox: invert dependency with ifplugd
      package/busybox: invert dependency with ifenslave
      package/busybox: invert dependency with i2c-tools
      package/busybox: invert dependency with gzip
      package/busybox: invert dependency with grep
      package/busybox: invert dependency with gawk
      package/busybox: invert dependency with fbset
      package/busybox: invert dependency with e2fsprogs
      package/busybox: invert dependency with dos2unix
      package/busybox: invert dependency with diffutils
      package/busybox: invert dependency with debianutils
      package/busybox: invert dependency with dcron
      package/busybox: invert dependency with cpio
      package/busybox: invert dependency with coreutils
      package/busybox: invert dependency with binutils
      package/busybox: invert dependency with bc
      package/busybox: invert dependency with bash
      package/busybox: add dependency on attr
      support/scripts: don't draw most of busybox' dependencies

 package/bash/bash.mk                               |  4 +-
 package/bc/bc.mk                                   |  5 --
 package/binutils/binutils.mk                       |  5 --
 ...tall-respect-noclobber-for-script-wrapper.patch | 62 +++++++++++++++++++++
 ...stall-accept-more-than-one-install-option.patch | 63 +++++++++++++++++++++
 ...m-add-rule-to-install-without-cloberring-.patch | 29 ++++++++++
 ...lets-install-don-t-try-to-install-nothing.patch | 65 ++++++++++++++++++++++
 package/busybox/busybox.mk                         | 64 ++++++++++++++++++---
 package/coreutils/coreutils.mk                     |  6 --
 package/cpio/cpio.mk                               |  1 -
 package/dcron/dcron.mk                             |  5 --
 package/debianutils/debianutils.mk                 |  2 -
 package/diffutils/diffutils.mk                     |  4 --
 package/dos2unix/dos2unix.mk                       |  4 +-
 package/e2fsprogs/e2fsprogs.mk                     | 10 +---
 package/fbset/fbset.mk                             |  5 --
 package/gawk/gawk.mk                               |  5 --
 package/grep/grep.mk                               |  5 --
 package/gzip/gzip.mk                               |  2 -
 package/i2c-tools/i2c-tools.mk                     |  4 --
 package/ifenslave/ifenslave.mk                     |  1 -
 package/ifplugd/ifplugd.mk                         |  5 --
 package/ifupdown/ifupdown.mk                       |  1 -
 package/iproute2/iproute2.mk                       |  6 --
 package/iputils/iputils.mk                         |  6 --
 package/kmod/kmod.mk                               |  3 -
 package/less/less.mk                               |  3 +-
 package/lsof/lsof.mk                               |  3 -
 package/mtd/mtd.mk                                 |  4 --
 package/net-tools/net-tools.mk                     |  8 +--
 package/netcat-openbsd/netcat-openbsd.mk           |  6 --
 package/netcat/netcat.mk                           | 13 -----
 package/nmap/nmap.mk                               |  6 --
 package/ntp/ntp.mk                                 |  2 +-
 package/pciutils/pciutils.mk                       |  5 --
 package/procps-ng/procps-ng.mk                     | 10 +---
 package/psmisc/psmisc.mk                           |  5 --
 package/rsyslog/rsyslog.mk                         |  5 --
 package/start-stop-daemon/start-stop-daemon.mk     |  3 +-
 package/sysklogd/sysklogd.mk                       |  5 --
 package/syslog-ng/syslog-ng.mk                     |  5 --
 package/systemd/systemd.mk                         |  6 --
 package/sysvinit/sysvinit.mk                       |  5 --
 package/tar/tar.mk                                 |  7 +--
 package/tftpd/tftpd.mk                             |  5 --
 package/traceroute/traceroute.mk                   |  5 --
 package/unzip/unzip.mk                             |  2 -
 package/usbutils/usbutils.mk                       |  5 --
 package/util-linux/util-linux.mk                   |  6 --
 package/vim/vim.mk                                 |  5 +-
 package/wget/wget.mk                               |  5 --
 package/whois/whois.mk                             |  3 +-
 support/scripts/graph-depends                      | 10 ++++
 53 files changed, 299 insertions(+), 220 deletions(-)
 create mode 100644 package/busybox/0003-applets-install-respect-noclobber-for-script-wrapper.patch
 create mode 100644 package/busybox/0004-applets-install-accept-more-than-one-install-option.patch
 create mode 100644 package/busybox/0005-build-system-add-rule-to-install-without-cloberring-.patch
 create mode 100644 package/busybox/0006-applets-install-don-t-try-to-install-nothing.patch

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'


More information about the buildroot mailing list