Hello!
I found an odd behaviour where pkgconf will not install it's shared library into the
target root - although it is completely built:
root@riscboi /n/o/openadk (master)# tar tvf
firmware/generic-riscv64_musl/generic-riscv64-musl-archive+kernel.tar.xz | grep pkgconf
-rwxr-xr-x root/root 26840 2024-03-12 01:59 usr/bin/pkgconf
lrwxrwxrwx root/root 0 2024-03-12 01:59 usr/bin/pkg-config -> pkgconf
drwxr-xr-x root/root 0 2024-03-12 04:09 usr/lib/pkgconfig/
-rw-r--r-- root/root 277 2024-03-12 03:38 usr/lib/pkgconfig/expat.pc
-rw-r--r-- root/root 595 2024-03-12 01:26 usr/lib/pkgconfig/form.pc
-rw-r--r-- root/root 245 2024-03-12 00:50 usr/lib/pkgconfig/gmp.pc
-rw-r--r-- root/root 305 2024-03-12 01:39 usr/lib/pkgconfig/libarchive.pc
-rw-r--r-- root/root 275 2024-03-12 01:17 usr/lib/pkgconfig/libcrypto.pc
-rw-r--r-- root/root 1613 2024-03-12 01:21 usr/lib/pkgconfig/libcurl.pc
-rw-r--r-- root/root 255 2024-03-12 03:33 usr/lib/pkgconfig/libelf.pc
-rw-r--r-- root/root 378 2024-03-12 01:35 usr/lib/pkgconfig/liblzma.pc
-rw-r--r-- root/root 296 2024-03-12 01:17 usr/lib/pkgconfig/libssl.pc
-rw-r--r-- root/root 289 2024-03-12 01:17 usr/lib/pkgconfig/libtls.pc
-rw-r--r-- root/root 456 2024-03-12 01:55 usr/lib/pkgconfig/libzstd.pc
-rw-r--r-- root/root 595 2024-03-12 01:26 usr/lib/pkgconfig/menu.pc
-rw-r--r-- root/root 272 2024-03-12 00:53 usr/lib/pkgconfig/mpfr.pc
-rw-r--r-- root/root 595 2024-03-12 01:26 usr/lib/pkgconfig/ncurses.pc
-rw-r--r-- root/root 251 2024-03-12 01:17 usr/lib/pkgconfig/openssl.pc
-rw-r--r-- root/root 597 2024-03-12 01:26 usr/lib/pkgconfig/panel.pc
-rw-r--r-- root/root 602 2024-03-12 01:26 usr/lib/pkgconfig/tinfo.pc
-rw-r--r-- root/root 252 2024-03-12 01:06 usr/lib/pkgconfig/zlib.pc
root@riscboi /n/o/openadk (master)# find root_generic-riscv64_musl/ -name
"libpkgconf*"
(no output)
root@riscboi /n/o/openadk (master)# find
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/ -name "libpkgconf*"
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/include/pkgconf/libpkgconf
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/include/pkgconf/libpkgconf/libpkgconf.h
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/lib/libpkgconf.la
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/lib/libpkgconf.so
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/lib/pkgconfig/libpkgconf.pc
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/lib/libpkgconf.so.2.0.0
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/lib/libpkgconf.so.2
What is odd though is that the pkgconf binary itself _is_ installed:
# find root_generic-riscv64_musl/ build_generic-riscv64_musl/w-pkgconf-1.1.0-1/ -name
pkgconf
root_generic-riscv64_musl/usr/bin/pkgconf
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/pkgconf-1.1.0/.libs/pkgconf
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/pkgconf-1.1.0/pkgconf
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/bin/pkgconf
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/include/pkgconf
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/root/usr/share/doc/pkgconf
build_generic-riscv64_musl/w-pkgconf-1.1.0-1/fake-riscv64/pkg-pkgconf/usr/bin/pkgconf
And the package itself doesn't contain it either:
# tar tvf firmware/generic-riscv64_musl/packages/pkgconf_1.1.0-1_riscv64.tar.xz
drwxr-xr-x root/root 0 2024-03-12 08:42 ./
drwxr-xr-x root/root 0 2024-03-12 08:40 ./usr/
drwxr-xr-x root/root 0 2024-03-12 08:40 ./usr/bin/
lrwxrwxrwx root/root 0 2024-03-12 08:40 ./usr/bin/pkg-config -> pkgconf
-rwxr-xr-x root/root 26840 2024-03-12 08:40 ./usr/bin/pkgconf
Looking at the pkgconf-install target in package/pkgconf/Makefile shows that that library
is never installed, causing the target system to run into numerous errors when trying to
execute the tool.
This is my current workaround. Not very elegant; but... it gets the job done.
diff --git a/package/pkgconf/Makefile b/package/pkgconf/Makefile
index cebfeb44d..640bce899 100644
--- a/package/pkgconf/Makefile
+++ b/package/pkgconf/Makefile
@@ -29,9 +29,13 @@ endif
(cd $(STAGING_HOST_DIR)/usr/bin && ln -sf pkg-config
$(GNU_TARGET_NAME)-pkg-config)
pkgconf-install:
- $(INSTALL_DIR) $(IDIR_PKGCONF)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/pkgconf \
- $(IDIR_PKGCONF)/usr/bin
+ for dir in bin lib include; do \
+ $(INSTALL_DIR) $(IDIR_PKGCONF)/usr/$$dir; \
+ find $(WRKINST)/usr/$$dir -type f \
+ -exec ${INSTALL_BIN} "{}"
"$(IDIR_PKGCONF)/usr/{}" \; ; \
+ done
+ #$(INSTALL_BIN) $(WRKINST)/usr/bin/pkgconf \
+ # $(IDIR_PKGCONF)/usr/bin
(cd $(IDIR_PKGCONF)/usr/bin && ln -sf pkgconf pkg-config)
include ${ADK_TOPDIR}/mk/host-bottom.mk
Hope this'll be useful!