From owner-freebsd-current@freebsd.org Sun Nov 20 18:14:41 2016 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 29BE2C4C7B8 for ; Sun, 20 Nov 2016 18:14:41 +0000 (UTC) (envelope-from phk@phk.freebsd.dk) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id 1903D1F2 for ; Sun, 20 Nov 2016 18:14:41 +0000 (UTC) (envelope-from phk@phk.freebsd.dk) Received: by mailman.ysv.freebsd.org (Postfix) id 15733C4C7B6; Sun, 20 Nov 2016 18:14:41 +0000 (UTC) Delivered-To: current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1520AC4C7B5 for ; Sun, 20 Nov 2016 18:14:41 +0000 (UTC) (envelope-from phk@phk.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id D4D7E1F1 for ; Sun, 20 Nov 2016 18:14:40 +0000 (UTC) (envelope-from phk@phk.freebsd.dk) Received: from critter.freebsd.dk (unknown [192.168.55.3]) by phk.freebsd.dk (Postfix) with ESMTP id 3641F273CD for ; Sun, 20 Nov 2016 18:14:34 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.15.2/8.15.2) with ESMTP id uAKIEXiD080832 for ; Sun, 20 Nov 2016 18:14:33 GMT (envelope-from phk@phk.freebsd.dk) To: current@freebsd.org Subject: a dirty trick: i386 nanobsd ports on amd64 From: Poul-Henning Kamp MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <80830.1479665673.1@critter.freebsd.dk> Content-Transfer-Encoding: quoted-printable Date: Sun, 20 Nov 2016 18:14:33 +0000 Message-ID: <80831.1479665673@critter.freebsd.dk> X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Nov 2016 18:14:41 -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=3D/tmp \ BATCH=3DYES \ OPTIONS_UNSET=3D"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@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= .