[Buildroot] [PATCH v2, 1/1] package/pkg-utils.mk: fix per-package build

Fabrice Fontaine fontaine.fabrice at gmail.com
Sun Aug 29 19:18:28 UTC 2021


Fix per-package build with ncurses and toolchains providing ncurses.h by
adding --update parameter to rsync call. Indeed, without this parameter,
the curses.h file installed by ncurses (with wchar support) could be
overriden by a curses.h file provided by the toolchain (without wchar
support) resulting in the following build failure on bmon or rtorrent:

rsync -a --link-dest=/tmp/instance-0/output-1/per-package/host-pkgconf/host/ /tmp/instance-0/output-1/per-package/host-pkgconf/host/ /tmp/instance-0/output-1/per-package/rtorrent/host
rsync -a --link-dest=/tmp/instance-0/output-1/per-package/host-skeleton/host/ /tmp/instance-0/output-1/per-package/host-skeleton/host/ /tmp/instance-0/output-1/per-package/rtorrent/host
rsync -a --link-dest=/tmp/instance-0/output-1/per-package/libcurl/host/ /tmp/instance-0/output-1/per-package/libcurl/host/ /tmp/instance-0/output-1/per-package/rtorrent/host
rsync -a --link-dest=/tmp/instance-0/output-1/per-package/libtorrent/host/ /tmp/instance-0/output-1/per-package/libtorrent/host/ /tmp/instance-0/output-1/per-package/rtorrent/host
rsync -a --link-dest=/tmp/instance-0/output-1/per-package/ncurses/host/ /tmp/instance-0/output-1/per-package/ncurses/host/ /tmp/instance-0/output-1/per-package/rtorrent/host
rsync -a --link-dest=/tmp/instance-0/output-1/per-package/skeleton/host/ /tmp/instance-0/output-1/per-package/skeleton/host/ /tmp/instance-0/output-1/per-package/rtorrent/host
rsync -a --link-dest=/tmp/instance-0/output-1/per-package/toolchain/host/ /tmp/instance-0/output-1/per-package/toolchain/host/ /tmp/instance-0/output-1/per-package/rtorrent/host

[...]

checking for NcursesW wide-character library... yes
checking for working ncursesw/curses.h... no
checking for working ncursesw.h... no
checking for working ncurses.h... no
configure: WARNING: could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h

It should be noted that the same kind of issue is raised with libxcrypt.
Indeed, without the --update parameter, crypt.h provided by libxcrypt
will be overriden by crypt.h provided by the toolchain resulting in the
following build failure with linux-pam:

>>> linux-pam 1.5.1 Configuring
mkdir -p /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/flex/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/flex/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-autoconf/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-autoconf/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-automake/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-automake/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-flex/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-flex/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-libtool/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-libtool/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-pkgconf/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-pkgconf/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-skeleton/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/host-skeleton/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/libxcrypt/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/libxcrypt/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/skeleton/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/skeleton/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host
rsync -a --link-dest=/home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/toolchain/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/toolchain/host/ /home/giuliobenetti/autobuild/run/instance-2/output-1/per-package/linux-pam/host

[...]

opasswd.c: In function 'compare_password':
opasswd.c:131:21: error: storage size of 'output' isn't known
  131 |   struct crypt_data output;
      |                     ^~~~~~

Fixes:
 - http://autobuild.buildroot.org/results/8c0d13e3cc3ddd2a21f99477cad4e39522e9deec
 - http://autobuild.buildroot.org/results/d2f18ccad6a0330d78e97d70c810ac89b84d2261
 - http://autobuild.buildroot.org/results/24038989d4ab962c9abea5cf061345f17a57c688

Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
---
Changes v1 -> v2:
 - Update commit log with libxcrypt

 package/pkg-utils.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
index ae3c7f9da9..5af34d4ee0 100644
--- a/package/pkg-utils.mk
+++ b/package/pkg-utils.mk
@@ -184,7 +184,7 @@ ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)
 define per-package-rsync
 	mkdir -p $(3)
 	$(foreach pkg,$(1),\
-		rsync -a --link-dest=$(PER_PACKAGE_DIR)/$(pkg)/$(2)/ \
+		rsync -au --link-dest=$(PER_PACKAGE_DIR)/$(pkg)/$(2)/ \
 		$(PER_PACKAGE_DIR)/$(pkg)/$(2)/ \
 		$(3)$(sep))
 endef
-- 
2.32.0



More information about the buildroot mailing list