Solved poudriere package build for RPI

I am using a FreeBSD 11.0-CURRENT as a base and have installed the ports-mgmt/poudriere-devel locally from my base ports tree. I now install a poudriere(8) jail so I can build packages for my Raspberry pi 2.

The following commands seem to complete successfully. I set qemu_user_static enabled in rc.conf

poudriere jail -c -j rpi-current -m svn -a arm.armv6 -v head poudriere ports -c -m svn -p head

The problem occurs when trying to build:
poudriere bulk -f /usr/local/etc/poudriere-list-rpi -p head -j rpi-current
Code:
[00:00:08] ====>> Calculating ports order and dependencies
[00:00:32] ====>> pkg package missing, skipping sanity
[00:00:32] ====>> Skipping incremental rebuild and repository sanity checks
[00:00:32] ====>> Cleaning the build queue
[00:00:32] ====>> Recording filesystem state for prepkg... done
[00:00:33] ====>> Building 52 packages using 8 builders
[00:00:33] ====>> Starting/Cloning builders
[00:00:48] ====>> Hit CTRL+t at any time to see build progress and stats
[00:00:48] ====>> [01][00:00:00] Starting build of ports-mgmt/pkg
[00:01:00] ====>> [01][00:00:12] Finished build of ports-mgmt/pkg: Failed: extract
[00:01:02] ====>> [01][00:00:14] Skipping build of devel/gmake: Dependent port ports-mgmt/pkg failed
.... (all other packages fail)

If I do a test build with:
poudriere testport -i -o ports-mgmt/pkg -p head -j rpi-current

I get the errors:
Code:
....
=======================<phase: extract  >============================
===>  License BSD2CLAUSE accepted by the user
===> Fetching all distfiles required by pkg-1.6.1 for building
===>  Extracting for pkg-1.6.1
===>  License BSD2CLAUSE accepted by the user
===> Fetching all distfiles required by pkg-1.6.1 for building
=> SHA256 Checksum OK for pkg-1.6.1.tar.xz.
pkg-1.6.1/install-sh: Can't restore time
pkg-1.6.1/configure: Can't restore time
pkg-1.6.1/aclocal.m4: Can't restore time
pkg-1.6.1/pkg_config.h.in: Can't restore time
..... (all files fail)

tar: Error exit delayed from previous errors.
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/ports-mgmt/pkg
*** Error code 1

Why is poudriere unable to build pkg(8). Where did I go wrong. I have amd64 jails that work fine so I am assuming poudriere is setup correctly.
 
Are you using ZFS? Do you have some special tuning for it or ACLs or special mount option? I've set up 4 differents poudriere/arm build boxes and never had your problem.
 
I dont use zfs on this machine. Its a ufs filesystem with nothing special.

A binmiscctl -l fails but a binmiscctl list gives the following:
Code:
name: sparc64
interpreter: /usr/local/bin/qemu-sparc64-static
flags: ENABLED USE_MASK
magic size: 20
magic offset: 0
magic: 0x7f 0x45 0x4c 0x46  0x02 0x02 0x01 0x00  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00  0x00 0x02 0x00 0x2b
mask:  0xff 0xff 0xff 0xff  0xff 0xff 0xff 0x00  0xff 0xff 0xff 0xff
  0xff 0xff 0xff 0xff  0xff 0xfe 0xff 0xff

name: powerpc64
interpreter: /usr/local/bin/qemu-ppc64-static
flags: ENABLED USE_MASK
magic size: 20
magic offset: 0
magic: 0x7f 0x45 0x4c 0x46  0x01 0x02 0x01 0x00  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00  0x00 0x02 0x00 0x15
mask:  0xff 0xff 0xff 0xff  0xff 0xff 0xff 0x00  0xff 0xff 0xff 0xff
  0xff 0xff 0xff 0xff  0xff 0xfe 0xff 0xff

name: powerpc
interpreter: /usr/local/bin/qemu-ppc-static
flags: ENABLED USE_MASK
magic size: 20
magic offset: 0
magic: 0x7f 0x45 0x4c 0x46  0x01 0x02 0x01 0x00  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00  0x00 0x02 0x00 0x14
mask:  0xff 0xff 0xff 0xff  0xff 0xff 0xff 0x00  0xff 0xff 0xff 0xff
  0xff 0xff 0xff 0xff  0xff 0xfe 0xff 0xff

name: mips64
interpreter: /usr/local/bin/qemu-mips64-static
flags: ENABLED USE_MASK
magic size: 20
magic offset: 0
magic: 0x7f 0x45 0x4c 0x46  0x02 0x02 0x01 0x00  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00  0x00 0x02 0x00 0x08
mask:  0xff 0xff 0xff 0xff  0xff 0xff 0xff 0x00  0xff 0xff 0xff 0xff
  0xff 0xff 0xff 0xff  0xff 0xfe 0xff 0xff

name: mips
interpreter: /usr/local/bin/qemu-mips-static
flags: ENABLED USE_MASK
magic size: 20
magic offset: 0
magic: 0x7f 0x45 0x4c 0x46  0x01 0x02 0x01 0x00  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00  0x00 0x02 0x00 0x08
mask:  0xff 0xff 0xff 0xff  0xff 0xff 0xff 0x00  0xff 0xff 0xff 0xff
  0xff 0xff 0xff 0xff  0xff 0xfe 0xff 0xff

name: aarch64
interpreter: /usr/local/bin/qemu-aarch64-static
flags: ENABLED USE_MASK
magic size: 20
magic offset: 0
magic: 0x7f 0x45 0x4c 0x46  0x02 0x01 0x01 0x00  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00  0x02 0x00 0xb7 0x00
mask:  0xff 0xff 0xff 0xff  0xff 0xff 0xff 0x00  0xff 0xff 0xff 0xff
  0xff 0xff 0xff 0xff  0xfe 0xff 0xff 0xff

name: armv6
interpreter: /usr/local/bin/qemu-arm-static
flags: ENABLED USE_MASK
magic size: 20
magic offset: 0
magic: 0x7f 0x45 0x4c 0x46  0x01 0x01 0x01 0x00  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00  0x02 0x00 0x28 0x00
mask:  0xff 0xff 0xff 0xff  0xff 0xff 0xff 0x00  0xff 0xff 0xff 0xff
  0xff 0xff 0xff 0xff  0xfe 0xff 0xff 0xff

The jail seems fine. I do use some native jails that work correctly.
Code:
# poudriere jail -l
JAILNAME  VERSION  ARCH  METHOD TIMESTAMP  PATH
fm64-10  10.1-RELEASE-p14  amd64  ftp  2015-07-14 17:12:24 /u1/jails/poudriere/jails/fm64-10
fm32-10  10.1-RELEASE-p19  i386  ftp  2015-09-11 09:32:31 /u1/jails/poudriere/jails/fm32-10
rpi-current 11.0-CURRENT r289557 arm.armv6 svn  2015-10-19 15:16:39 /u1/jails/poudriere/jails/rpi-current
I have removed the jail several times via the poudriere command and remade with no success. I had found the websites noted above and used them to base my installation.
 
Sorry about the -l command. Regardless like you say it looks like it is built. I worry that you have too much going on there. Like 7 different QEMU setups. Mine is just the Arm build. Have you tried striping it down to bare minimum from scratch. The instructions work and I am using UFS as well.
 
Code:
pkg package missing, skipping sanity

Looking at this output it would appear your jailed Ports directory must not be right.

poudriere ports -c -m svn -p head
Your usage is different than mine:
poudriere ports -c
Are you sure that the extra inputs are right?

What happens when you update the Port?
poudriere ports -u
 
The 7 setups all come from the rc.d/qemu_user_static start process. Seems if the interpreters exists they will get started. I stopped them all and manually added the arm6 binmiscctl but this made no difference to the outcome.
 
Your setup for poudriere / arm is correct. Can you post the result of mount and the content (trim the comments) of /usr/local/etc/poudriere.conf
 
No nfs involved in my build environment.

mount
Code:
/dev/gpt/ssdroot on / (ufs, local, soft-updates)
devfs on /dev (devfs, local, multilabel)
/dev/gpt/ssdvar on /var (ufs, NFS exported, local, soft-updates)
/dev/gpt/ssdusr on /usr (ufs, NFS exported, local, soft-updates)
/dev/gpt/ssdhome on /home (ufs, local, soft-updates)
/dev/gpt/ssdu0 on /u0 (ufs, NFS exported, local, soft-updates)
/dev/gpt/u1 on /u1 (ufs, local, soft-updates)
tmpfs on /tmp (tmpfs, local)


poudriere.conf

Code:
NO_ZFS=yes
FREEBSD_HOST=ftp://ftp.freebsd.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/u1/jails/poudriere
USE_PORTLINT=no
USE_TMPFS="wrkdir data"
DISTFILES_CACHE=/usr/ports/distfiles
SVN_HOST=svn0.us-east.FreeBSD.org
CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
export HTTP_PROXY=http://myproxy.here:3128
export FTP_PROXY=http://myproxy.here:3128
 
OK, I gave up and did a complete new installation of FreeBSD 11-current and it is all working now. Bit drastic but I was getting nowhere.
Thank for all the help.
 
Back
Top