# Poudriere + armv6



## forquare (Jun 27, 2016)

Evening all,

I'm new to ports-mgmt/poudriere-devel and installing ports generally (using pkg(8) on my laptop).

I have an old Raspberry Pi B+ that I've had FreeBSD 10.2 running on for a while not doing much.  I've recently wiped it, installing FreeBSD 10.3 and would like to set it up as a home ansible server (I've got about 10 machines at home that I'd like to manage—mainly as a learning experience).  It would be nice if I was able to use one of my more powerful x64 machines to build the packages for the Raspberry Pi and use pkg(8)

I have followed the instructions on this blog post, having built ports-mgmt/poudriere-devel from source and including the qemu option I have a ports tree and a jail.  When I come to build my fairly small set of ports they all fail, even if I strip it down to a port I know compiles on armv6:


```
root@aglardae:/usr/local/etc/poudriere.d # cat pkglist.txt

shells/zsh

root@aglardae:/usr/local/etc/poudriere.d # poudriere options -cf pkglist.txt

                                 <-- select default options -->
===> Setting user-specified options for zsh-5.2_2 and dependencies


root@aglardae:/usr/local/etc/poudriere.d # poudriere bulk -j fbsd103armv6 -f /usr/local/etc/poudriere.d/pkglist.txt
[00:00:00] ====>> Cross-building ports for arm.armv6 on amd64 requires QEMU
[00:00:00] ====>> Creating the reference jail... done
[00:00:00] ====>> Mounting system devices for fbsd103armv6-default
[00:00:00] ====>> Mounting ports/packages/distfiles
[00:00:00] ====>> Stashing existing package repository
[00:00:00] ====>> Mounting packages from: /usr/local/poudriere/data/packages/fbsd103armv6-default
[00:00:00] ====>> Copying /var/db/ports from: /usr/local/etc/poudriere.d/options
[00:00:00] ====>> Raising MAX_EXECUTION_TIME and NOHANG_TIME for QEMU
[00:00:00] ====>> Copying latest version of the emulator from: /usr/local/bin/qemu-arm-static
[00:00:00] ====>> Appending to make.conf: /usr/local/etc/poudriere.d/fbsd103armv6-make.conf
/etc/resolv.conf -> /usr/local/poudriere/data/.m/fbsd103armv6-default/ref/etc/resolv.conf
[00:00:00] ====>> Starting jail fbsd103armv6-default
[00:00:02] ====>> Logs: /usr/local/poudriere/data/logs/bulk/fbsd103armv6-default/2016-06-27_21h22m53s
[00:00:02] ====>> Loading MOVED
[00:00:02] ====>> Calculating ports order and dependencies
[00:00:05] ====>> Sanity checking the repository
[00:00:05] ====>> Checking packages for incremental rebuild needed
[00:00:06] ====>> Deleting stale symlinks
[00:00:06] ====>> Deleting empty directories
[00:00:06] ====>> Cleaning the build queue
[00:00:06] ====>> Recording filesystem state for prepkg... done
[00:00:07] ====>> Building 1 packages using 1 builders
[00:00:07] ====>> Starting/Cloning builders
[00:00:08] ====>> Hit CTRL+t at any time to see build progress and stats
[00:00:08] ====>> [01][00:00:00] Starting build of shells/zsh
[00:00:20] ====>> [01][00:00:12] Finished build of shells/zsh: Failed: pkg-depends
[00:00:23] ====>> Stopping 1 builders
[00:00:24] ====>> No package built, no need to update the repository
[00:00:24] ====>> Committing packages to repository
[00:00:24] ====>> Removing old packages
[00:00:24] ====>> Failed ports: shells/zsh:pkg-depends
[fbsd103armv6-default] [2016-06-27_21h22m53s] [committing:] Queued: 1  Built: 0  Failed: 1  Skipped: 0  Ignored: 0  Tobuild: 0   Time: 00:00:23
[00:00:24] ====>> Logs: /usr/local/poudriere/data/logs/bulk/fbsd103armv6-default/2016-06-27_21h22m53s
[00:00:24] ====>> Cleaning up
[00:00:24] ====>> Umounting file systems
```

If I look at towards the end of the ZSH error log:

```
root@aglardae:/usr/local/poudriere/data/logs/bulk/fbsd103armv6-default/2016-06-27_21h22m53s/logs/errors # tail -22 zsh-5.2_2.log
=======================<phase: check-sanity   >============================
===>  License ZSH accepted by the user
===>  Found saved configuration for zsh-5.2_2
===========================================================================
=======================<phase: pkg-depends    >============================
===>   zsh-5.2_2 depends on file: /usr/local/sbin/pkg - not found
===>   Installing existing package /packages/All/pkg-1.8.6.txz
[poudriere-build] Installing pkg-1.8.6...
[poudriere-build] Extracting pkg-1.8.6: 
pkg-static: Fail to set time on /usr/local/share/licenses/pkg-1.8.6/.catalog.mk.5vh3Hyeq1rQ2: Function not implemented
[poudriere-build] Extracting pkg-1.8.6... done

Failed to install the following 1 package(s): /packages/All/pkg-1.8.6.txz
*** Error code 70

Stop.
make: stopped in /usr/ports/shells/zsh
====>> Cleaning up wrkdir
===>  Cleaning for zsh-5.2_2
build of shells/zsh ended at Mon Jun 27 21:23:16 BST 2016
build time: 00:00:15
!!! build failure encountered !!!
```

Even if I only try to compile ports-mgmt/pkg it fails with the same… 

Is there more up-to-date/official guides to do this?  I have searched quite a bit but given I don't fully understand and am stumbling though, I'd be grateful of anyone pushing me in the correct direction

Ben


----------



## MrLudo (Jun 27, 2016)

forquare said:


> Evening all,
> Is there more up-to-date/official guides to do this?  I have searched quite a bit but given I don't fully understand and am stumbling though, I'd be grateful of anyone pushing me in the correct direction
> 
> Ben



See https://forums.freebsd.org/threads/52994/ for current simple guide.

I am reasonably sure the standard poudriere is ok to use for this now but given I have just run into a problem similar to yours I could of course now be wrong ;-)

I updated the from head via svn yesterday and now my previously happily working builds are now failing.  The initial poudriere build of pkg-1.8.6.txz succeeds and then anything else built falls apart with the following...


```
=======================<phase: pkg-depends  >============================
===>  gmake-lite-4.2.1 depends on file: /usr/local/sbin/pkg - not found
===>  Installing existing package /packages/All/pkg-1.8.6.txz
[rpi-current-head-default-job-03] Installing pkg-1.8.6...
[rpi-current-head-default-job-03] Extracting pkg-1.8.6: .......... done
pkg-static: Fail to rename /usr/local/share/licenses/pkg-1.8.6/.catalog.mk.yMPbG4IbURQg -> /usr/local/share/licenses/pkg-1.8.6/catalog.mk: Bad address

Failed to install the following 1 package(s): /packages/All/pkg-1.8.6.txz
*** Error code 70

Stop.
make: stopped in /usr/ports/devel/gmake-lite
====>> Cleaning up wrkdir
===>  Cleaning for gmake-lite-4.2.1
```

I tried leaving the jail running after the build to confirm that I was able to rename the file manually.  I was able to do the rename but this of course did not help with the build itself.

The previously working builds (before updating head) were using pkg-1.7.2 .  The poudriere server is running 11.0-ALPHA3 FreeBSD 11.0-ALPHA3 #5 r301877 amd64.


----------



## uzsolt (Jun 28, 2016)

I'm maintaining a small repository for arm for 10.x (see http://pkg.uzsolt.hu/) - you can use it  The shells/zsh isn't included but if you want I can build it


----------



## forquare (Jun 28, 2016)

Thanks both.

MrLudo thanks for the instructions. I saw them when doing a search, however the “continue reading” link is broken and so I thought perhaps they were out of date. 

uzsolt thanks very much for the invitation, eventually I might take you up on the offer, however at the moment I'm using the situation as yet another learning experience in the FreeBSD world


----------



## acheron (Jun 28, 2016)

MrLudo said:


> See https://forums.freebsd.org/threads/52994/ for current simple guide.
> 
> I am reasonably sure the standard poudriere is ok to use for this now but given I have just run into a problem similar to yours I could of course now be wrong ;-)
> 
> ...


You need to update qemu in the jail. Recent version of poudriere-devel updates qemu at runtime: https://svnweb.freebsd.org/ports?view=revision&revision=416341


----------



## acheron (Jun 28, 2016)

forquare: can you try to revert pkg to 1.8.5. pkg-1.8.6 probably uses some uninplemented syscall in qemu.


----------



## forquare (Jun 28, 2016)

acheron said:


> forquare: can you try to revert pkg to 1.8.5. pkg-1.8.6 probably uses some uninplemented syscall in qemu.



How would I do that?  Can I check out an older revision of the ports tree?  Or download a single package from somewhere...?


----------



## acheron (Jun 28, 2016)

Grab it here: http://mikael.urankar.free.fr/pkg-1.8.5.shar
It's a shar archive, run: `sh pkg-1.8.5.shar` to 'unzip' it.


----------



## forquare (Jun 28, 2016)

I've not got access to it right now, I'll try when I get home this evening


----------



## acheron (Jun 29, 2016)

So you need to update qemu: https://svnweb.freebsd.org/ports?view=revision&revision=417742


----------



## forquare (Jun 29, 2016)

acheron said:


> So you need to update qemu: https://svnweb.freebsd.org/ports?view=revision&revision=417742



Good catch, I didn't have time last night so will try and find some more this evening!


----------

