Re: a dirty trick: i386 nanobsd ports on amd64

2016-11-21 Thread Shane Ambler

On 21/11/2016 04:44, Poul-Henning Kamp wrote:

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:


That is something poudriere is designed to do. i386 on amd64 is
straight forward, you can also use qemu to cross compile for other archs

Using poudriere you can also setup a pkg repo with the ports you build,
just setup a http server then set pkg on your nano machine to use
something like http://mypkgbuilder/packages/11i386 as the url for it's
packages.


--
FreeBSD - the place to B...Software Developing

Shane Ambler

___
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


a dirty trick: i386 nanobsd ports on amd64

2016-11-20 Thread Poul-Henning Kamp
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
p...@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.
___
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"