_____ _ _ __ __ ___ _ | _ | \ | |\ \ / / / _ \ | | | | | | \| | \ V / / /_\ \_ __ _ ___ _____| |__ _ __ ___ | | | | . ` | / \ | _ | '_ \| | | \ \ /\ / / _ \ '_ \| '__/ _ \ \ \/' / |\ |/ /^\ \ | | | | | | | |_| |\ V V / __/ | | | | | __/ \_/\_\_| \_/\/ \/ \_| |_/_| |_|\__, | \_/\_/ \___|_| |_|_| \___| __/ | |___/ QNX 8.0.3 aarch64 ======================================================================== ## Porting pkgsrc-current to QNX8 8.0.0 Raspberry Pi4 Developer Desktop 1.1) ## get pkgsrc-current [root@qnxpi /data]# curl https://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz -o pkgsrc.tar.gz [root@qnxpi /data]# tar -zxvf pkgsrc.tar.gz [root@qnxpi /data]# rm pkgsrc.tar.gz [root@qnxpi /data]# cd pkgsrc ## I have created a bootstrap binary tgz archive if you want to test it otherwise build it from source - see secton 1.2) ## Just download to /data and extract it ## Make sure you have pkgsrc downloaded and extracted in /data [root@qnxpi /data]# curl https://astr0baby.online/QNX/8.0-DEVELOPER_DESKTOP/RPi4_aarch64/pkgsrc/pkg.tgz -o pkg.tgz [root@qnxpi /data]# tar -zxvf pkg.tgz [root@qnxpi /data]# rm -f pkg.tgz ## Make sure you build/install a regular patch source (see below) ## Make sure you have a symlink in /data/pkg/bin/curl pointing to real /usr/bin/curl ## You can now use pkgsrc bmake /data/pkg/bin/bmake on pkgsrc 1.2) ## If wou wish to compile from sources and bootstrap yourself (takes about 1 hours on RPi4) ## Create a working directory to hold our custom patches [root@qnxpi /data/pkgsrc]# mkdir PATCHES [root@qnxpi /data/pkgsrc]# cd PATCHES [root@qnxpi /data/pkgsrc/PATCHES]# ## Download patches [root@qnxpi /data/pkgsrc/PATCHES]# curl https://astr0baby.online/QNX/8.0-DEVELOPER_DESKTOP/RPi4_aarch64/pkgsrc/PATCHES/config.guess -o config.guess [root@qnxpi /data/pkgsrc/PATCHES]# curl https://astr0baby.online/QNX/8.0-DEVELOPER_DESKTOP/RPi4_aarch64/pkgsrc/PATCHES/config.sub -o config.sub [root@qnxpi /data/pkgsrc/PATCHES]# curl https://astr0baby.online/QNX/8.0-DEVELOPER_DESKTOP/RPi4_aarch64/pkgsrc/PATCHES/archive_read_disk_entry_from_file.c -o archive_read_disk_entry_from_file.c [root@qnxpi /data/pkgsrc/PATCHES]# curl https://astr0baby.online/QNX/8.0-DEVELOPER_DESKTOP/RPi4_aarch64/pkgsrc/PATCHES/archive_read_disk_posix.c -o archive_read_disk_posix.c [root@qnxpi /data/pkgsrc/PATCHES]# curl https://astr0baby.online/QNX/8.0-DEVELOPER_DESKTOP/RPi4_aarch64/pkgsrc/PATCHES/archive_write_disk_posix.c -o archive_write_disk_posix.c [root@qnxpi /data/pkgsrc/PATCHES]# curl https://astr0baby.online/QNX/8.0-DEVELOPER_DESKTOP/RPi4_aarch64/pkgsrc/PATCHES/curl-8.19.0.tar -o curl-8.19.0.tar ## Copy patched config.sub and config.gues to all pkgsrc dirs where config.sub is static [root@qnxpi /data/pkgsrc/PATCHES]# cd /data/pkgsrc [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./archivers/libarchive/files/build/autoconf/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./archivers/pax/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./mk/gnu-config/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./net/fetch/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./pkgtools/compat_headers/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./pkgtools/digest/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./pkgtools/libnbcompat/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./pkgtools/mtree/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./pkgtools/pkg_install/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./pkgtools/rcorder/files/ [root@qnxpi /data/pkgsrc]# cp PATCHES/config.* ./textproc/nbsed/files/ ## QNX does not have LCHMOD LCHOWN functions in libarchive ## Copy over the patched files [root@qnxpi /data/pkgsrc/PATCHES]# cp archive_read_disk_entry_from_file.c /data/pkgsrc/archivers/libarchive/files/libarchive/ [root@qnxpi /data/pkgsrc/PATCHES]# cp archive_read_disk_posix.c /data/pkgsrc/archivers/libarchive/files/libarchive/ [root@qnxpi /data/pkgsrc/PATCHES]# cp archive_write_disk_posix.c /data/pkgsrc/archivers/libarchive/files/libarchive/ ## Finally bootstrap pkgsrc on QNX 8 [root@qnxpi /data/pkgsrc/PATCHES]# cd /data/pkgsrc/bootstrap [root@qnxpi /data/pkgsrc/bootstrap]# ./bootstrap --prefix=/data/pkg --compiler clang --make-jobs=4 ## QNX8 rpi4 does not have ftp so we need to change the fetch command to native curl ## there is something broken with setting it up normally so we need to do a little hack ## create a dummy curl package in /data/pkg/pkgd/curl-8.19.0 [root@qnxpi /data/pkgsrc/bootstrap]# cd /data/pkgsrc/PATCHES/ [root@qnxpi /data/pkgsrc/PATCHES]# mv curl-8.19.0.tar /data/pkg/pkgdb/ [root@qnxpi /data/pkgsrc/PATCHES]# cd /data/pkg/pkgdb [root@qnxpi /data/pkg/pkgdb]# tar -xvf curl-8.19.0.tar [root@qnxpi /data/pkg/pkgdb]# rm -f curl-8.19.0.tar ## next symlink /usr/bin/curl /data/pkg/bin/curl [root@qnxpi /data/pkg/pkgdb]# ln -s /usr/bin/curl /data/pkg/bin/curl ## Set following in /data/pkg/etc/mk.conf [root@qnxpi /data/pkg/pkgdb]# cd /data/pkg/etc/ [root@qnxpi /data/pkg/etc]# vi mk.conf FETCH_USING= curl FETCH_CMD.curl= /usr/bin/curl ## We also need a GNU patch - as the native one gets stuck during ## pkgsrc patching procedure [root@qnxpi /data/LOCAL/patch-2.8]# /usr/bin/patch --version toybox 0.8.11 [root@qnxpi /data/LOCAL/patch-2.8]# /usr/local/bin/patch --version GNU patch 2.8 Copyright 1989-2025 Free Software Foundation, Inc. Copyright 1984-1988 Larry Wall ## Get GNU patch 2.8 [root@qnxpi /data/pkg/etc]# cd /data/pkgsrc/PATCHES [root@qnxpi /data/pkgsrc/PATCHES]# curl https://ftp.gnu.org/gnu/patch/patch-2.8.tar.gz -o patch.tar.gz [root@qnxpi /data/pkgsrc/PATCHES]# tar -zxvf patch.tar.gz [root@qnxpi /data/pkgsrc/PATCHES]# rm patch.tar.gz [root@qnxpi /data/pkgsrc/PATCHES]# cd patch-2.8 [root@qnxpi /data/pkgsrc/PATCHES/patch-2.8]# [root@qnxpi /data/pkgsrc/PATCHES/patch-2.8]# CFLAGS="-D_FORTIFY_SOURCE=0 -U_FORTIFY_SOURCE" ./configure [root@qnxpi /data/pkgsrc/PATCHES/patch-2.8]# make [root@qnxpi /data/pkgsrc/PATCHES/patch-2.8]# make install ## rename /usr/bin/patch to /usr/bin/patch.old ## symlink /usr/local/bin/patch to /usr/bin/patch [root@qnxpi /data/pkgsrc/PATCHES/patch-2.8]# mv /usr/bin/patch /usr/bin/patch.old [root@qnxpi /data/pkgsrc/PATCHES/patch-2.8]# ln -s /usr/local/bin/patch /usr/bin/patch ## Then pkgsrc bmake will work using native curl on QNX8 aarch64 ! ## However there are still many things to fix - so don't expect this to work for all pkgsrc sources :) #### IMPORTANT #### Don't forget to set LD_LIBRARY patch in your $home .profile as follows: export LD_LIBRARY_PATH=/data/pkg/lib:/data/home/$user/lib:$LD_LIBRARY_PATH ## Congratulations - you now have bootstrapped pkgsrc-current onto the QNX 8.0 aarch64 [root@qnxpi /data/pkgsrc/PATCHES]# /data/pkg/sbin/pkg_info libnbcompat-20251029 Portable NetBSD compatibility library bootstrap-mk-files-20250601 *.mk files for the bootstrap bmake utility install-sh-20100824 Install script compatible with the BSD install program bmake-20240909 Portable (autoconf) version of NetBSD 'make' utility nawk-20250726 Brian Kernighan's pattern-directed scanning and processing language nbsed-20240312nb2 NetBSD-current's sed(1) pkg_install-20260227 Package management and administration tools for pkgsrc digest-20220214 Message digest wrapper utility curl-8.19.0 Package management and administration tools for pkgsrc pkg_install-info-4.5nb3 Standalone GNU info file installation utility ## With some additional fixes to specific pkgsrc sources I was able to ## compile security/bcrypt ## Please note the additional .txt files (these are for pkgsrc specific patches/changes) in the FIXES directory