a dirty trick: i386 nanobsd ports on amd64

From: Poul-Henning Kamp <phk_at_phk.freebsd.dk>
Date: Sun, 20 Nov 2016 18:14:33 +0000
I ran into a interesting problem, and want to share the solution, in
case anybody else can use it.

I'm upgrading a system which used to be i386 to amd64, but part of
its job is to compile i386 nanobsd images.

That's a solved problem, but I also needed a couple of ports installed,
which for reasons of paperwork, must be compiled from source.

Cross-compiling ports is not something I wanted to get into, but
happily amd64 cpus can run in i386 mode these days:

    phk_ports () (
        set -e
        cd ${NANO_WORLDDIR}
        mkdir -p usr/ports
        trap "umount ${NANO_WORLDDIR}/usr/ports ; umount ${NANO_WORLDDIR}/dev" 1 2 15 EXIT
        mount -t nullfs -o readonly /usr/ports ${NANO_WORLDDIR}/usr/ports
        mount -t devfs devfs ${NANO_WORLDDIR}/dev
        echo '
        ldconfig -elf
        for i in ports-mgmt/pkg sysutils/smartmontools net/trafshow
        do
                cd /usr/ports/${i}
                make \
                        WRKDIRPREFIX=/tmp \
                        BATCH=YES \
                        OPTIONS_UNSET="DOCS NLS" \
                        all install clean
        done
        ' > ${NANO_WORLDDIR}/tmp/_job.sh
        chroot ${NANO_WORLDDIR} /bin/sh /tmp/_job.sh
        umount ${NANO_WORLDDIR}/usr/ports
        umount ${NANO_WORLDDIR}/dev
        trap - 1 2 15 EXIT
    )

    customize_cmd phk_ports

The same basic trick can of course be be used for any i386 software
which must be compiled from source.


-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk_at_FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Received on Sun Nov 20 2016 - 17:14:41 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:08 UTC