Ansible role FreeBSD Poudriere

This role and the documentation is work in progress. The current state of this document describes successful configuration and building of amd64 and armv7 packages. Other architectures should work out of the box. Feel free to share your feedback and report issues.

Contributions are welcome.

Quick start guide

For the users who want to try the role quickly, this guide provides an example of how to install, configure and run Poudriere

Install the role vbotka.freebsd_poudriere and the collections

shell> ansible-galaxy role install vbotka.freebsd_poudriere
shell> ansible-galaxy collection install community.crypto
shell> ansible-galaxy collection install community.general

Create the playbook pb.yml for single host build.example.com (3)

1shell> cat pb.yml
2---
3- hosts: build.example.com
4  become: true
5  roles:
6    - vbotka.freebsd_poudriere

Customize variables. Disable the installation of packages (3). Configure web-server certificate (6-9), repository signing key (12-13) and parameters of Poudriere (16-40). Create the list of architectures the packages will be built for (43) and configure make (46-52). Fit the configuration to your needs.

 1shell> cat host_vars/build.example.com/poudriere.yml
 2---
 3poudriere_install: false
 4
 5# cert
 6poudriere_cert_cn: build.example.com
 7poudriere_cert_key: "{{ poudriere_ssl_dir }}/private/{{ poudriere_cert_cn }}.key"
 8poudriere_cert_csr: "{{ poudriere_ssl_dir }}/csr/{{ poudriere_cert_cn }}.csr"
 9poudriere_cert_path: "{{ poudriere_ssl_dir }}/certs/{{ poudriere_cert_cn }}.crt"
10
11# key
12poudriere_key_crt: "{{ poudriere_ssl_dir }}/crt/{{ poudriere_cert_cn }}-sk.crt"
13poudriere_conf_pkg_repo_signing_key: "{{ poudriere_ssl_dir }}/private/{{ poudriere_cert_cn }}-sk.key"
14
15# conf
16poudriere_conf_template: poudriere.conf2.j2
17poudriere_conf_url_base: http://build.example.com
18poudriere_conf_no_zfs: "no"
19poudriere_conf_zpool: zroot
20poudriere_conf_use_tmpfs: "no"
21poudriere_conf_data:
22  ZPOOL: "{{ poudriere_conf_zpool }}"
23  NO_ZFS: "{{ poudriere_conf_no_zfs }}"
24  ZROOTFS: "{{ poudriere_conf_zrootfs }}"
25  FREEBSD_HOST: "{{ poudriere_conf_freebsd_host }}"
26  RESOLV_CONF: "{{ poudriere_conf_resolv_conf }}"
27  BASEFS: "{{ poudriere_conf_basefs }}"
28  SVN_HOST: "{{ poudriere_conf_svn_host }}"
29  POUDRIERE_DATA: "{{ poudriere_conf_poudriere_data }}"
30  USE_PORTLINT: "{{ poudriere_conf_use_portlint }}"
31  USE_TMPFS: "{{ poudriere_conf_use_tmpfs }}"
32  DISTFILES_CACHE: "{{ poudriere_conf_distfiles_cache }}"
33  PKG_REPO_SIGNING_KEY: "{{ poudriere_conf_pkg_repo_signing_key }}"
34  URL_BASE: "{{ poudriere_conf_url_base }}"
35  CHECK_CHANGED_OPTIONS: "{{ poudriere_conf_check_changed_options }}"
36  CHECK_CHANGED_DEPS: "{{ poudriere_conf_check_changed_deps }}"
37  NOLINUX: "yes"
38  USE_COLORS: "yes"
39  PRESERVE_TIMESTAMP: "yes"
40  BUILDER_HOSTNAME: "build"
41
42# architecture
43poudriere_pkg_arch: [amd64]
44
45# make
46poudriere_make_conf:
47  - "OPTIONS_UNSET+=\t\t\tDOCS NLS X11 EXAMPLES"
48  - "OPTIONS_UNSET+=\t\t\tGSSAPI_BASE KRB_BASE KERBEROS"
49  - "OPTIONS_SET+=\t\t\tGSSAPI_NONE KRB_NONE"
50  - "DEFAULT_VERSIONS+=\t\temacs=nox"
51  - "DEFAULT_VERSIONS+=\t\tphp=7.4"
52  - "DEFAULT_VERSIONS+=\t\tssl=openssl"

Create lists of the ports

 1shell> cat host_vars/build.example.com/pkg_dict.yml
 2---
 3pkg_dict_amd64:
 4  - pkglist: minimal
 5    packages:
 6      - shells/bash
 7      - devel/git
 8      - archivers/gtar
 9      - ports-mgmt/pkg
10      - ports-mgmt/portmaster
11      - ports-mgmt/portupgrade
12      - net/rsync
13      - ftp/wget
14  - pkglist: ansible
15    packages:
16      - sysutils/ansible
17      - sysutils/py-ansible-lint
18      - sysutils/py-ansible-runner

Test syntax

shell> ansible-playbook pb.yml --syntax-check

playbook: pb.yml

Display the included variables. Enable debug poudriere_debug=true

  1shell> ansible-playbook pb.yml -t poudriere_debug -e poudriere_debug=true
  2
  3PLAY [build.example.com] *******************************************************************************
  4
  5TASK [Gathering Facts] *********************************************************************************
  6ok: [build.example.com]
  7
  8TASK [vbotka.freebsd_poudriere : Poudriere Debug] ************************************************************************************
  9ok: [build.example.com] =>
 10  msg:
 11  - ansible_architecture [amd64]
 12  - ansible_os_family [FreeBSD]
 13  - ansible_distribution [FreeBSD]
 14  - ansible_distribution_major_version [12]
 15  - ansible_distribution_version [12.2]
 16  - ansible_distribution_release [12.2-RELEASE]
 17  - ansible_python_version [3.7.9]
 18  - ''
 19  - freebsd_install_method [packages]
 20  - freebsd_use_packages [True]
 21  - freebsd_install_retries [3]
 22  - freebsd_install_delay [5]
 23  - ''
 24  - poudriere_install [False]
 25  - poudriere_dirs [True]
 26  - poudriere_key [True]
 27  - poudriere_cert [False]
 28  - poudriere_conf [True]
 29  - poudriere_pkglists [True]
 30  - poudriere_options [False]
 31  - poudriere_make [True]
 32  - poudriere_backup_conf [True]
 33  - ''
 34  - poudriere_packages
 35  - '- ports-mgmt/poudriere'
 36  - '- ports-mgmt/portmaster'
 37  - '- devel/ccache'
 38  - ''
 39  - poudriere_packages_cert
 40  - '- security/py-openssl'
 41  - '- security/py-acme-tiny'
 42  - ''
 43  - poudriere_owner [root]
 44  - poudriere_group [wheel]
 45  - poudriere_mode [0644]
 46  - poudriere_mode_dir [0755]
 47  - poudriere_dirs [True]
 48  - poudriere_ssl_dir [/usr/local/etc/ssl]
 49  - poudriere_ssl_dir_mode [0755]
 50  - poudriere_ssl_private_dir [/usr/local/etc/ssl/private]
 51  - poudriere_ssl_private_dir_mode [0700]
 52  - poudriere_ssl_private_key_mode [0600]
 53  - poudriere_ssl_dirs
 54  - '- /usr/local/etc/ssl'
 55  - '- /usr/local/etc/ssl/crt'
 56  - '- /usr/local/etc/ssl/csr'
 57  - ''
 58  - poudriere_key [True]
 59  - poudriere_key_size [4096]
 60  - poudriere_key_type [RSA]
 61  - poudriere_key_cmd [openssl rsa -in /usr/local/etc/ssl/private/build.example.com-sk.key -pubout -out /usr/local/etc/ssl/crt/build.example.com-sk.crt]
 62  - poudriere_key_crt [/usr/local/etc/ssl/crt/build.example.com-sk.crt]
 63  - poudriere_conf_PKG_REPO_SIGNING_KEY [/usr/local/etc/ssl/private/build.example.com-sk.key]
 64  - ''
 65  - poudriere_cert [False]
 66  - poudriere_cert_cn [build.example.com]
 67  - poudriere_cert_key [/usr/local/etc/ssl/private/build.example.com.key]
 68  - poudriere_cert_csr [/usr/local/etc/ssl/csr/build.example.com.csr]
 69  - poudriere_cert_path [/usr/local/etc/ssl/certs/build.example.com.crt]
 70  - ''
 71  - poudriere_conf [True]
 72  - poudriere_conf_file [/usr/local/etc/poudriere.conf]
 73  - poudriere_conf_template [poudriere.conf2.j2]
 74  - poudriere_conf_dir [/usr/local/etc/poudriere.d]
 75  - poudriere_conf_dirs
 76  - '-   dir: /usr/ports/distfiles'
 77  - '    group: wheel'
 78  - '    mode: ''0755'''
 79  - '    owner: root'
 80  - ''
 81  - poudriere_conf_zpool [zroot]
 82  - poudriere_conf_no_zfs [no]
 83  - poudriere_conf_zrootfs [/poudriere]
 84  - poudriere_conf_freebsd_host [https://download.freebsd.org]
 85  - poudriere_conf_resolv_conf [/etc/resolv.conf]
 86  - poudriere_conf_basefs [/usr/local/poudriere]
 87  - poudriere_conf_svn_host [svn.FreeBSD.org]
 88  - poudriere_conf_poudriere_data [/usr/local/poudriere/data]
 89  - poudriere_conf_use_portlint [no]
 90  - poudriere_conf_use_tmpfs [no]
 91  - poudriere_conf_distfiles_cache [/usr/ports/distfiles]
 92  - poudriere_conf_url_base [http://build.example.com/]
 93  - poudriere_conf_check_changed_options [verbose]
 94  - poudriere_conf_check_changed_deps [yes]
 95  - poudriere_conf_data
 96  - 'BASEFS: /usr/local/poudriere'
 97  - 'BUILDER_HOSTNAME: build'
 98  - 'CHECK_CHANGED_DEPS: ''yes'''
 99  - 'CHECK_CHANGED_OPTIONS: verbose'
100  - 'DISTFILES_CACHE: /usr/ports/distfiles'
101  - 'FREEBSD_HOST: https://download.freebsd.org'
102  - 'NOLINUX: ''yes'''
103  - 'NO_ZFS: ''no'''
104  - 'PKG_REPO_SIGNING_KEY: /usr/local/etc/ssl/private/build.example.com-sk.key'
105  - 'POUDRIERE_DATA: /usr/local/poudriere/data'
106  - 'PRESERVE_TIMESTAMP: ''yes'''
107  - 'RESOLV_CONF: /etc/resolv.conf'
108  - 'SVN_HOST: svn.FreeBSD.org'
109  - 'URL_BASE: http://build.example.com/'
110  - 'USE_COLORS: ''yes'''
111  - 'USE_PORTLINT: ''no'''
112  - 'USE_TMPFS: ''no'''
113  - 'ZPOOL: zroot'
114  - 'ZROOTFS: /poudriere'
115  - ''
116  - poudriere_pkglists [True]
117  - poudriere_pkglist_dir [/usr/local/etc/poudriere.d/pkglist]
118  - poudriere_pkg_arch [amd64]
119  - ''
120  - poudriere_options [False]
121  - poudriere_make [True]
122  - poudriere_make_file [/usr/local/etc/poudriere.d/make.conf]
123  - poudriere_make_conf
124  - '- "OPTIONS_UNSET+=\t\t\tDOCS NLS X11 EXAMPLES"'
125  - '- "OPTIONS_UNSET+=\t\t\tGSSAPI_BASE KRB_BASE KERBEROS"'
126  - '- "OPTIONS_SET+=\t\t\tGSSAPI_NONE KRB_NONE"'
127  - '- "DEFAULT_VERSIONS+=\t\temacs=nox"'
128  - '- "DEFAULT_VERSIONS+=\t\tphp=7.4"'
129  - '- "DEFAULT_VERSIONS+=\t\tssl=openssl"'
130  - ''
131
132PLAY RECAP *********************************************************************************************
133build.example.com: ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Configure ZFS

<TBD>

Install packages. Enable the installation poudriere_install=true

 1shell> ansible-playbook pb.yml -t poudriere_packages -e poudriere_install=true
 2
 3PLAY [build.example.com] ********************************************************************************
 4
 5TASK [Gathering Facts] **********************************************************************************
 6ok: [build.example.com]
 7
 8TASK [vbotka.freebsd_poudriere : Poudriere Debug] *******************************************************
 9skipping: [build.example.com]
10
11TASK [vbotka.freebsd_poudriere : packages: Install poudriere packages] **********************************
12ok: [build.example.com]
13
14TASK [vbotka.freebsd_poudriere : packages: Install poudriere ports] *************************************
15skipping: [build.example.com] => (item=ports-mgmt/poudriere)
16skipping: [build.example.com] => (item=ports-mgmt/portmaster)
17skipping: [build.example.com] => (item=devel/ccache)
18
19TASK [vbotka.freebsd_poudriere : packages: Install packages to create certificate] **********************
20ok: [build.example.com]
21
22TASK [vbotka.freebsd_poudriere : packages: Install ports to create certificate] *************************
23skipping: [build.example.com] => (item=security/py-openssl)
24skipping: [build.example.com] => (item=security/py-acme-tiny)
25
26PLAY RECAP **********************************************************************************************
27build.example.com : ok=3    changed=0    unreachable=0    failed=0    skipped=3    rescued=0    ignored=0

Create directories

 1shell> ansible-playbook pb.yml -t poudriere_dirs
 2
 3PLAY [build.example.com] *******************************************************************************
 4
 5TASK [Gathering Facts] *********************************************************************************
 6ok: [build.example.com]
 7
 8TASK [vbotka.freebsd_poudriere : Poudriere Debug] ******************************************************
 9skipping: [build.example.com]
10
11TASK [vbotka.freebsd_poudriere : dirs: Create SSL directories] *****************************************
12ok: [build.example.com] => (item=/usr/local/etc/ssl)
13ok: [build.example.com] => (item=/usr/local/etc/ssl/crt)
14ok: [build.example.com] => (item=/usr/local/etc/ssl/csr)
15
16TASK [vbotka.freebsd_poudriere : dirs: Create SSL directory /usr/local/etc/ssl/private mode 0700] ******
17ok: [build.example.com]
18
19PLAY RECAP *********************************************************************************************
20build.example.com: ok=5    changed=3    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0

Generate signing key

 1shell> ansible-playbook pb.yml -t poudriere_key
 2
 3PLAY [build.example.com] *******************************************************************************
 4
 5TASK [Gathering Facts] *********************************************************************************
 6ok: [build.example.com]
 7
 8TASK [vbotka.freebsd_poudriere : Poudriere Debug] ******************************************************
 9skipping: [build.example.com]
10
11TASK [vbotka.freebsd_poudriere : key: Generate signing key /usr/local/etc/ssl/private/build.example.com-sk.key]
12changed: [build.example.com]
13
14TASK [vbotka.freebsd_poudriere : key: Generate signing crt /usr/local/etc/ssl/crt/build.example.com-sk.crt]
15changed: [build.example.com]
16
17PLAY RECAP *********************************************************************************************
18build.example.com: ok=1    changed=2    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
 1shell> tree /usr/local/etc/ssl/
 2/usr/local/etc/ssl/
 3|-- cert.pem
 4|-- cert.pem.sample -> ../../share/certs/ca-root-nss.crt
 5|-- certs
 6|-- crt
 7|   `-- build.example.com-sk.crt
 8|-- csr
 9`-- private
10    `-- build.example.com-sk.key

Generate certificate for the web server. Enable the generation poudriere_cert=true (default=false)

 1shell> ansible-playbook pb.yml -t poudriere_cert -e poudriere_cert=true
 2
 3PLAY [build.example.com] *******************************************************************************
 4
 5TASK [Gathering Facts] *********************************************************************************
 6ok: [build.example.com]
 7
 8TASK [vbotka.freebsd_poudriere : Poudriere Debug] ******************************************************
 9skipping: [build.example.com]
10
11TASK [vbotka.freebsd_poudriere : cert: Generate private key /usr/local/etc/ssl/private/build.example.com.key]
12changed: [build.example.com]
13
14TASK [vbotka.freebsd_poudriere : cert: Generate csr /usr/local/etc/ssl/csr/build.example.com.csr] ******
15changed: [build.example.com]
16
17TASK [vbotka.freebsd_poudriere : cert: Generate crt /usr/local/etc/ssl/certs/build.example.com.crt] ****
18changed: [build.example.com]
19
20PLAY RECAP *********************************************************************************************
21build.example.com: ok=1    changed=3    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
 1shell> tree /usr/local/etc/ssl/
 2/usr/local/etc/ssl/
 3|-- cert.pem
 4|-- cert.pem.sample -> ../../share/certs/ca-root-nss.crt
 5|-- certs
 6|   `-- build.example.com.crt
 7|-- crt
 8|   `-- build.example.com-sk.crt
 9|-- csr
10|   `-- build.example.com.csr
11`-- private
12    |-- build.example.com-sk.key
13    `-- build.example.com.key

Configure poudriere

 1shell> ansible-playbook pb.yml -t poudriere_conf
 2
 3PLAY [build.example.com] *******************************************************************************
 4
 5TASK [Gathering Facts] *********************************************************************************
 6ok: [build.example.com]
 7
 8TASK [vbotka.freebsd_poudriere : Poudriere Debug] ******************************************************
 9skipping: [build.example.com]
10
11TASK [vbotka.freebsd_poudriere : conf: Create directories] *********************************************
12ok: [build.example.com] => (item=/usr/ports/distfiles)
13
14TASK [vbotka.freebsd_poudriere : conf: Configure /usr/local/etc/poudriere.conf] ************************
15changed: [build.example.com]
16
17PLAY RECAP *********************************************************************************************
18build.example.com: ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
 1shell> cat /usr/local/etc/poudriere.conf
 2# Ansible managed 
 3
 4ZPOOL=zroot
 5NO_ZFS=no
 6ZROOTFS=/poudriere
 7FREEBSD_HOST=https://download.freebsd.org
 8RESOLV_CONF=/etc/resolv.conf
 9BASEFS=/usr/local/poudriere
10SVN_HOST=svn.FreeBSD.org
11POUDRIERE_DATA=/usr/local/poudriere/data
12USE_PORTLINT=no
13USE_TMPFS=no
14DISTFILES_CACHE=/usr/ports/distfiles
15PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/private/build.example.com-sk.key
16URL_BASE=http://build.example.com/
17CHECK_CHANGED_OPTIONS=verbose
18CHECK_CHANGED_DEPS=yes
19NOLINUX=yes
20USE_COLORS=yes
21PRESERVE_TIMESTAMP=yes
22BUILDER_HOSTNAME=build
23
24# EOF

Create directories (22-23) and create the lists of the ports (37-39)

 1shell> ansible-playbook pb.yml -t poudriere_pkglists
 2
 3PLAY [build.example.com] **********************************************************************************************
 4
 5TASK [Gathering Facts] ************************************************************************************************
 6ok: [build.example.com]
 7
 8TASK [vbotka.freebsd_poudriere : Poudriere Debug] *********************************************************************
 9skipping: [build.example.com]
10
11TASK [vbotka.freebsd_poudriere : pkglists: Create list of packages] ***************************************************
12included: /export/home/vlado.config/.ansible/roles/vbotka.freebsd_poudriere/tasks/pkglist.yml for build.example.com
13
14TASK [vbotka.freebsd_poudriere : conf: Create list _pkg_dict] *********************************************************
15ok: [build.example.com] => (item=minimal)
16ok: [build.example.com] => (item=ansible)
17
18TASK [vbotka.freebsd_poudriere : conf: Debug _pkg_dict] ***************************************************************
19skipping: [build.example.com]
20
21TASK [vbotka.freebsd_poudriere : conf: Create directories /usr/local/etc/poudriere.d/pkglist_amd64] *******************
22changed: [build.example.com] => (item=/usr/local/etc/poudriere.d/pkglist_amd64)
23changed: [build.example.com] => (item=/usr/local/etc/poudriere.d/pkglist_amd64.disabled)
24
25TASK [vbotka.freebsd_poudriere : conf: Remove lists of packages from /usr/local/etc/poudriere.d/pkglist_amd64] ********
26skipping: [build.example.com] => (item=minimal)
27skipping: [build.example.com] => (item=ansible)
28
29TASK [vbotka.freebsd_poudriere : conf: Create lists of packages in /usr/local/etc/poudriere.d/pkglist_amd64.disabled] *
30skipping: [build.example.com] => (item=minimal)
31skipping: [build.example.com] => (item=ansible)
32
33TASK [vbotka.freebsd_poudriere : conf: Remove lists of packages from /usr/local/etc/poudriere.d/pkglist_amd64.disabled]
34ok: [build.example.com] => (item=minimal)
35ok: [build.example.com] => (item=ansible)
36
37TASK [vbotka.freebsd_poudriere : conf: Create lists of packages in /usr/local/etc/poudriere.d/pkglist_amd64] **********
38changed: [build.example.com] => (item=minimal)
39changed: [build.example.com] => (item=ansible)
40
41PLAY RECAP ************************************************************************************************************
42build.example.com: ok=6    changed=2    unreachable=0    failed=0    skipped=4    rescued=0    ignored=0
 1shell> tree /usr/local/etc/poudriere.d/
 2/usr/local/etc/poudriere.d/
 3|-- pkglist_amd64
 4|   |-- ansible
 5|   `-- minimal
 6`-- pkglist_amd64.disabled
 7
 8shell> cat /usr/local/etc/poudriere.d/pkglist_amd64/ansible
 9sysutils/ansible
10sysutils/py-ansible-lint
11sysutils/py-ansible-runner
12
13shell> cat /usr/local/etc/poudriere.d/pkglist_amd64/minimal
14shells/bash
15devel/git
16archivers/gtar
17ports-mgmt/pkg
18ports-mgmt/portmaster
19ports-mgmt/portupgrade
20net/rsync
21ftp/wget

Configure make

 1shell> ansible-playbook pb.yml -t poudriere_make
 2
 3PLAY [build.example.com] *******************************************************************************
 4
 5TASK [Gathering Facts] *********************************************************************************
 6ok: [build.example.com]
 7
 8TASK [vbotka.freebsd_poudriere : Poudriere Debug] ******************************************************
 9skipping: [build.example.com]
10
11TASK [vbotka.freebsd_poudriere : conf: Configure /usr/local/etc/poudriere.d/make.conf] *****************
12changed: [build.example.com]
13
14PLAY RECAP *********************************************************************************************
15build.example.com: ok=1    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
1shell> cat /usr/local/etc/poudriere.d/make.conf
2# Ansible managed
3OPTIONS_UNSET+=			DOCS NLS X11 EXAMPLES
4OPTIONS_UNSET+=			GSSAPI_BASE KRB_BASE KERBEROS
5OPTIONS_SET+=			GSSAPI_NONE KRB_NONE
6DEFAULT_VERSIONS+=		emacs=nox
7DEFAULT_VERSIONS+=		php=7.2
8DEFAULT_VERSIONS+=		ssl=openssl

The role is idempotent. At this point, Poudriere is installed, configured and ready to build the packages. There should be no changes reported when the playbook is run repeatedly with the same data

shell> ansible-playbook pb.yml

Build the packages. Login into the host build.example.com and proceed according the Poudriere documentation , e.g.

shell> poudriere jail -c -j 12amd64 -v 12.2-RELEASE
shell> poudriere ports -c -p local
shell> poudriere bulk -j 12amd64 -p local -z devel \
       -f /usr/local/etc/poudriere.d/pkglist_amd64/minimal

User’s guide

Introduction

Poudriere is a BSD-licensed utility for creating and testing FreeBSD packages. To learn details see the references below

Configuration

Installation

The most convenient way how to install an Ansible role is to use Ansible Galaxy CLI ansible-galaxy. The utility comes with the standard Ansible package and provides the user with a simple interface to the Ansible Galaxy’s services. For example, take a look at the current status of the role

shell> ansible-galaxy role info vbotka.freebsd_poudriere

and install it

shell> ansible-galaxy role install vbotka.freebsd_poudriere

Install the collections

shell> ansible-galaxy collection install community.crypto
shell> ansible-galaxy collection install community.general

See also

  • To install specific versions from various sources see Installing content

  • Take a look at other roles shell> ansible-galaxy search --author=vbotka

Playbook

Create simple playbook that calls this role (6) at a single host build.example.com (3)

1shell> cat pb.yml
2---
3- hosts: build.example.com
4  become: true
5  roles:
6    - vbotka.freebsd_poudriere

Debug

Enable debug output either in the configuration

poudriere_debug: true

, or set the extra variable in the command. For example, display variables

shell> ansible-playbook pb.yml -t poudriere_debug -e poudriere_debug=true

Note

  • The debug output of this role is optimized for the yaml callback plugin. Set this plugin for example in the environment shell> export ANSIBLE_STDOUT_CALLBACK=yaml

  • See details about the yaml callback plugin shell> ansible-doc -t callback yaml

  • See list of other callback plugins shell> ansible-doc -t callback -l

Tags

The tags provide the user with a very useful tool to run selected tasks of the role. To see what tags are available list the tags of the role with the command

shell> ansible-playbook pb.yml --list-tags

playbook: pb.yml

play #1 (build.example.com): build.example.com TAGS: []

   TASK TAGS: [always, poudriere_cert, poudriere_conf,
   poudriere_conf_dirs, poudriere_conf_file, poudriere_debug,
   poudriere_dirs, poudriere_key, poudriere_make,
   poudriere_options, poudriere_packages, poudriere_pkglists]

For example, display the list of the variables and their values with the tag poudriere_debug (when the debug is enabled poudriere_debug: true)

 shell> ansible-playbook pb.yml -t poudriere_debug

See what packages will be installed

 shell> ansible-playbook pb.yml -t poudriere_packages --check

Install packages and exit the play

 shell> ansible-playbook pb.yml -t poudriere_packages

Variables

Default variables

[defaults/main.yml]

  1---
  2# defaults freebsd_poudriere
  3
  4poudriere_install: true
  5poudriere_debug: false
  6poudriere_backup_conf: true
  7
  8freebsd_install_method: packages
  9# freebsd_install_method: ports
 10freebsd_use_packages: true
 11freebsd_install_retries: 10
 12freebsd_install_delay: 5
 13
 14# packages
 15poudriere_packages:
 16  - ports-mgmt/poudriere
 17  - ports-mgmt/portmaster
 18  - devel/ccache
 19poudriere_packages_cert:
 20  - security/py-openssl
 21  - security/py-acme-tiny
 22
 23# owner, group, mode
 24poudriere_owner: root
 25poudriere_group: wheel
 26poudriere_mode: "0644"
 27poudriere_mode_dir: "0755"
 28
 29# dirs
 30poudriere_dirs: true
 31poudriere_ssl_dir: /usr/local/etc/ssl
 32poudriere_ssl_dir_mode: "0755"
 33poudriere_ssl_private_dir: /usr/local/etc/ssl/private
 34poudriere_ssl_private_dir_mode: "0700"
 35poudriere_ssl_private_key_mode: "0600"
 36poudriere_ssl_dirs:
 37  - "{{ poudriere_ssl_dir }}"
 38  - "{{ poudriere_ssl_dir }}/crt"
 39  - "{{ poudriere_ssl_dir }}/csr"
 40
 41# ssl signing key
 42poudriere_key: true
 43poudriere_key_size: 4096
 44poudriere_key_type: RSA
 45poudriere_key_crt: "{{ poudriere_ssl_dir }}/crt/poudriere-sk.crt"
 46poudriere_conf_pkg_repo_signing_key: "{{ poudriere_ssl_private_dir }}/poudriere-sk.key"
 47poudriere_key_cmd: "openssl rsa -in {{ poudriere_conf_pkg_repo_signing_key }} -pubout -out {{ poudriere_key_crt }}"
 48
 49# ssl cert web server
 50poudriere_cert: false
 51poudriere_cert_key: "{{ poudriere_ssl_private_dir }}/poudriere.key"
 52poudriere_cert_csr: "{{ poudriere_ssl_dir }}/csr/poudriere.csr"
 53poudriere_cert_path: "{{ poudriere_ssl_dir }}/crt/poudriere.crt"
 54# poudriere_cert_cn: build.example.com
 55# poudriere_cert_key: "{{ poudriere_ssl_dir }}/private/{{ poudriere_cert_cn }}.key"
 56# poudriere_cert_csr: "{{ poudriere_ssl_dir }}/csr/{{ poudriere_cert_cn }}.csr"
 57# poudriere_cert_path: "{{ poudriere_ssl_dir }}/certs/{{ poudriere_cert_cn }}.crt"
 58
 59
 60# configuration
 61# (see /usr/local/etc/poudriere.conf.sample)
 62poudriere_conf: true
 63poudriere_conf_file: /usr/local/etc/poudriere.conf
 64poudriere_conf_template: poudriere.conf.j2
 65poudriere_conf_dir: /usr/local/etc/poudriere.d
 66poudriere_conf_dirs:
 67  - dir: "{{ poudriere_conf_distfiles_cache }}"
 68    owner: "{{ poudriere_owner }}"
 69    group: "{{ poudriere_group }}"
 70    mode: "{{ poudriere_mode_dir }}"
 71poudriere_conf_zpool: zroot
 72poudriere_conf_no_zfs: "no"
 73poudriere_conf_zrootfs: /poudriere
 74poudriere_conf_freebsd_host: https://download.freebsd.org  # Note 1)
 75poudriere_conf_resolv_conf: /etc/resolv.conf
 76poudriere_conf_basefs: /usr/local/poudriere
 77poudriere_conf_svn_host: svn.FreeBSD.org  # Note 2)
 78poudriere_conf_poudriere_data: "{{ poudriere_conf_basefs }}/data"
 79poudriere_conf_use_portlint: "no"
 80poudriere_conf_use_tmpfs: "yes"
 81poudriere_conf_distfiles_cache: /usr/ports/distfiles
 82poudriere_conf_url_base: "http://{{ ansible_default_ipv4.address|default('127.0.0.1') }}/"
 83poudriere_conf_check_changed_options: verbose
 84poudriere_conf_check_changed_deps: "yes"
 85poudriere_conf_data:  # See templates/poudriere.conf2.j2
 86  ZPOOL: "{{ poudriere_conf_zpool }}"
 87  no_ZFS: "{{ poudriere_conf_no_zfs }}"
 88  ZROOTFS: "{{ poudriere_conf_zrootfs }}"
 89  freebsd_HOST: "{{ poudriere_conf_freebsd_host }}"
 90  RESOLV_CONF: "{{ poudriere_conf_resolv_conf }}"
 91  BASEFS: "{{ poudriere_conf_basefs }}"
 92  svn_HOST: "{{ poudriere_conf_svn_host }}"
 93  POUDRIERE_DATA: "{{ poudriere_conf_poudriere_data }}"
 94  USE_PORTLINT: "{{ poudriere_conf_use_portlint }}"
 95  USE_TMPFS: "{{ poudriere_conf_use_tmpfs }}"
 96  DISTFILES_CACHE: "{{ poudriere_conf_distfiles_cache }}"
 97  PKG_REPO_SIGNING_KEY: "{{ poudriere_conf_pkg_repo_signing_key }}"
 98  URL_BASE: "{{ poudriere_conf_url_base }}"
 99  check_CHANGED_OPTIONS: "{{ poudriere_conf_check_changed_options }}"
100  CHECK_CHANGED_DEPS: "{{ poudriere_conf_check_changed_deps }}"
101
102# lists of packages
103poudriere_pkglists: true
104poudriere_pkglist_dir: "{{ poudriere_conf_dir }}/pkglist"
105poudriere_pkg_arch: []
106
107# options
108poudriere_options: false
109
110# make
111poudriere_make: true
112poudriere_make_file: "{{ poudriere_conf_dir }}/make.conf"
113poudriere_make_conf: []
114
115# Notes
116#
117# 1) A.2. FTP Sites https://docs.freebsd.org/en/books/handbook/mirrors-ftp.html
118# 2) A.3.6. Subversion Mirror Sites https://docs.freebsd.org/en_US.ISO8859-1/books/handbook/svn.html#svn-mirrors
119
120
121# EOF
122...

The common variables are stored in the file defaults/main.yml (precedence 2.). In the scope of the role, these variables can be customized in the file vars/main.yml (precedence 15.). The file vars/main.yml will be preserved by the update of the role.

Warning

  • group_vars, host_vars, facts, play vars(_prompt, _files) (precedence 3.-14.) can’t override variables set in vars/main.yml (precedence 15.). As a result, vars/main.yml is not a suitable place to set values specific to the hosts or groups of the hosts. Instead, use it, for example, to set OS-specific values.

  • Don’t make any changes to the file defaults/main.yml. An update of the role will overwrite it. Instead, customize the default values in the file vars/main.yml.

See also

Tasks

Introduction

The groups of tasks stored in separate files comprise

  • Display values of the variables. By default disabled (poudriere_debug: false)

  • Install packages or ports. By default enabled (poudriere_install: true)

  • Create SSL directories. By default enabled (poudriere_dirs: true)

  • Create signing key. By default enabled (poudriere_key: true)

  • Generate SSL certificate for the web server. By default disabled (poudriere_cert: false)

  • Configure Poudriere. By default enabled (poudriere_conf: true)

  • Create lists of ports. By default enabled (poudriere_pkglists: true)

  • Configure ports’ options. By default disabled (poudriere_options: false)

  • Customize make. By default enabled (poudriere_make: true)

Feel free to share your feedback and report issues

Contributions are welcome

See also

Install packages or ports

Install FreeBSD packages or ports needed by Poudriere poudriere_packages. Also, install packages needed to generate the signing key, and the certificate poudriere_packages_cert.

By default, the installation of packages is enabled

poudriere_install: true
freebsd_install_method: packages

If you decide to install from ports set

freebsd_install_method: ports

To install pre-build packages, when available, set

freebsd_use_packages: true

or build the packages from the ports first

freebsd_use_packages: false

Install packages

shell> ansible-playbook pb.yml -t poudriere_packages -e poudriere_install=true

The best practice is disabling the installation to speedup the execution of the playbook

poudriere_install: false
Create SSL directories

By default, the creation of the SSL directories is enabled

poudriere_dirs: true
poudriere_ssl_dir: /usr/local/etc/ssl
poudriere_ssl_dirs:
  - "{{ poudriere_ssl_dir }}"
  - "{{ poudriere_ssl_dir }}/crt"
  - "{{ poudriere_ssl_dir }}/csr"
poudriere_ssl_private_dir: /usr/local/etc/ssl/private

Create the directories

shell> ansible-playbook pb.yml -t poudriere_dirs

See also

Generate signing key

By default, the generation of the signing key is enabled

poudriere_key: true

By default, the names of the files are poudriere-sk.key and poudriere-sk.crt

poudriere_ssl_dir: /usr/local/etc/ssl
poudriere_ssl_private_dir: /usr/local/etc/ssl/private
poudriere_conf_pkg_repo_signing_key: "{{ poudriere_ssl_private_dir }}/poudriere-sk.key"
poudriere_key_crt: "{{ poudriere_ssl_dir }}/crt/poudriere-sk.crt"

Optionally, change the paths and names of the files, e.g.

poudriere_cert_cn: build.example.com
poudriere_conf_pkg_repo_signing_key: "{{ poudriere_ssl_private_dir }}/{{ poudriere_cert_cn }}-sk.key"
poudriere_key_crt: "{{ poudriere_ssl_dir }}/crt/{{ poudriere_cert_cn }}-sk.crt"

Generate the signing key

shell> ansible-playbook pb.yml -t poudriere_key

Review the created files, ownership, and the permissions

 1shell> tree /usr/local/etc/ssl/
 2/usr/local/etc/ssl/
 3|-- cert.pem
 4|-- cert.pem.sample -> ../../share/certs/ca-root-nss.crt
 5|-- certs
 6|-- crt
 7|   `-- build.example.com-sk.crt
 8|-- csr
 9`-- private
10    `-- build.example.com-sk.key

See also

Generate SSL certificate

By default, the generation of the SSL certificate for the web server is disabled

poudriere_cert: false

By default, the names of the files are poudriere.key and poudriere.crt

poudriere_ssl_dir: /usr/local/etc/ssl
poudriere_ssl_private_dir: /usr/local/etc/ssl/private
poudriere_cert_key: "{{ poudriere_ssl_private_dir }}/poudriere.key"
poudriere_csr_path: "{{ poudriere_ssl_dir }}/csr/poudriere.csr"
poudriere_cert_path: "{{ poudriere_ssl_dir }}/crt/poudriere.crt"

Optionally, change the paths and names of the files, e.g.

poudriere_cert_cn: build.example.com
poudriere_cert_key: "{{ poudriere_ssl_private_dir }}/{{ poudriere_cert_cn }}.key"
poudriere_cert_csr: "{{ poudriere_ssl_dir }}/csr/{{ poudriere_cert_cn }}.csr"
poudriere_cert_path: "{{ poudriere_ssl_dir }}/certs/{{ poudriere_cert_cn }}.crt"

Optionally enable and generate the SSL certificate

shell> ansible-playbook pb.yml -t poudriere_cert -e poudriere_cert=true

Review the created files, ownership, and the permissions

 1shell> tree /usr/local/etc/ssl/
 2/usr/local/etc/ssl/
 3|-- cert.pem
 4|-- cert.pem.sample -> ../../share/certs/ca-root-nss.crt
 5|-- certs
 6|   `-- build.example.com.crt
 7|-- crt
 8|   `-- build.example.com-sk.crt
 9|-- csr
10|   `-- build.example.com.csr
11`-- private
12    |-- build.example.com-sk.key
13    `-- build.example.com.key

See also

Configure Poudriere

By default, the configuration of Poudriere is enabled

poudriere_conf: true

Read FreeBSD Porter’s Handbook 10.5.2. Setting Up Poudriere and see the sample /usr/local/etc/poudriere.conf.sample. Customize the variables poudriere_conf_* and display the the current values

shell> ansible-playbook pb.yml -t poudriere_debug -e poudriere_debug=true

...
TASK [vbotka.freebsd_poudriere : Poudriere Debug] ************************************************
ok: [build.example.com] =>
  msg:
...
  - poudriere_conf [True]
  - poudriere_conf_file [/usr/local/etc/poudriere.conf]
  - poudriere_conf_template [poudriere.conf2.j2]
  - poudriere_conf_dir [/usr/local/etc/poudriere.d]
  - poudriere_conf_dirs
  - '-   dir: /usr/ports/distfiles'
  - '    group: wheel'
  - '    mode: ''0755'''
  - '    owner: root'
  - ''
  - poudriere_conf_zpool [zroot]
  - poudriere_conf_no_zfs [no]
  - poudriere_conf_zrootfs [/poudriere]
  - poudriere_conf_freebsd_host [https://download.freebsd.org]
  - poudriere_conf_resolv_conf [/etc/resolv.conf]
  - poudriere_conf_basefs [/usr/local/poudriere]
  - poudriere_conf_svn_host [svn.FreeBSD.org]
  - poudriere_conf_poudriere_data [/usr/local/poudriere/data]
  - poudriere_conf_use_portlint [no]
  - poudriere_conf_use_tmpfs [no]
  - poudriere_conf_distfiles_cache [/usr/ports/distfiles]
  - poudriere_conf_url_base [http://build.example.com/]
  - poudriere_conf_check_changed_options [verbose]
  - poudriere_conf_check_changed_deps [yes]
  - poudriere_conf_data
  - 'BASEFS: /usr/local/poudriere'
  - 'BUILDER_HOSTNAME: build'
  - 'CHECK_CHANGED_DEPS: ''yes'''
  - 'CHECK_CHANGED_OPTIONS: verbose'
  - 'DISTFILES_CACHE: /usr/ports/distfiles'
  - 'FREEBSD_HOST: https://download.freebsd.org'
  - 'NOLINUX: ''yes'''
  - 'NO_ZFS: ''no'''
  - 'PKG_REPO_SIGNING_KEY: /usr/local/etc/ssl/private/build.example.com-sk.key'
  - 'POUDRIERE_DATA: /usr/local/poudriere/data'
  - 'PRESERVE_TIMESTAMP: ''yes'''
  - 'RESOLV_CONF: /etc/resolv.conf'
  - 'SVN_HOST: svn.FreeBSD.org'
  - 'URL_BASE: http://build.example.com/'
  - 'USE_COLORS: ''yes'''
  - 'USE_PORTLINT: ''no'''
  - 'USE_TMPFS: ''no'''
  - 'ZPOOL: zroot'
  - 'ZROOTFS: /poudriere'
...

Configure Poudriere

shell> ansible-playbook pb.yml -t poudriere_conf -e poudriere_conf=true

Review the configuration

 1shell> cat /usr/local/etc/poudriere.conf
 2# Ansible managed 
 3
 4ZPOOL=zroot
 5NO_ZFS=no
 6ZROOTFS=/poudriere
 7FREEBSD_HOST=https://download.freebsd.org
 8RESOLV_CONF=/etc/resolv.conf
 9BASEFS=/usr/local/poudriere
10SVN_HOST=svn.FreeBSD.org
11POUDRIERE_DATA=/usr/local/poudriere/data
12USE_PORTLINT=no
13USE_TMPFS=no
14DISTFILES_CACHE=/usr/ports/distfiles
15PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/private/build.example.com-sk.key
16URL_BASE=http://build.example.com/
17CHECK_CHANGED_OPTIONS=verbose
18CHECK_CHANGED_DEPS=yes
19NOLINUX=yes
20USE_COLORS=yes
21PRESERVE_TIMESTAMP=yes
22BUILDER_HOSTNAME=build
23
24# EOF

See also

Create lists of ports

Quoting from man(8) poudriere-bulk

-f file      Absolute path to a file which contains the list of ports to
             build.  Ports must be specified in the form category/port
             and shell-style comments are allowed.  Multiple -f file
             arguments may be specified at once.

By default, the generation of the lists is enabled

poudriere_pkglists: true

By default, no architecture is selected

poudriere_pkg_arch: []

Set the required architectures that the packages will be built for, e.g.

poudriere_pkg_arch: [amd64]

For the selected architectures, set the lists of the dictionaries in the variables pkgdict_*.yml and, optionally, disable some lists, e.g.

pkglist_enable_amd64:
  apcups: false
  linux: false
  devel: false
  joomla: false
  yazvs: false
  nginx: false
  docker: false
  snmpd: false

Create the lists

shell> ansible-playbook pb.yml -t poudriere_pkglists

Review the created lists of ports

[root@build /usr/home/admin]# tree /usr/local/etc/poudriere.d/
/usr/local/etc/poudriere.d/
|-- jails
|   `-- 12amd64
|       |-- arch
|       |-- method
|       |-- mnt
|       |-- timestamp
|       `-- version
|-- pkglist_amd64
|   |-- ansible
|   |-- apache
|   |-- dhcp
|   |-- dns
|   |-- hostap
|   |-- integrity
|   |-- jail
|   |-- leutils
|   |-- mailserver
|   |-- mailserver_sieve
|   |-- mailserver_spamassasin
|   |-- mcrypt
|   |-- minimal
|   |-- mysql
|   |-- mysql_extra
|   |-- pf
|   |-- php
|   |-- postinstall
|   |-- poudriere
|   |-- procmail
|   |-- python
|   |-- roundcube
|   |-- roundcube_aspell
|   |-- rsnapshot
|   |-- security
|   |-- smart
|   |-- ssmtp
|   `-- wpa_supplicant
|-- pkglist_amd64.disabled
|   |-- apcups
|   |-- devel
|   |-- docker
|   |-- joomla
|   |-- linux
|   |-- nginx
|   |-- snmpd
|   `-- yazvs
`-- ports
    `-- local
        |-- created_fs
        |-- method
        |-- mnt
        `-- timestamp

See also

Configure ports’ options

By default, the configuration of ports’ options is disabled

poudriere_options: false

<TBD>

Customize make

By default, the customization of make.conf is enabled

poudriere_make: true
poudriere_make_file: "{{ poudriere_conf_dir }}/make.conf"

and the customization list is empty

poudriere_make_conf: []

This would result in an empty file /usr/local/etc/poudriere.d/make.conf. Optionally, set the list of the options, e.g.

poudriere_make_conf:
  - "OPTIONS_UNSET+=\t\t\tDOCS NLS X11 EXAMPLES"
  - "OPTIONS_UNSET+=\t\t\tGSSAPI_BASE KRB_BASE KERBEROS"
  - "OPTIONS_SET+=\t\t\tGSSAPI_NONE KRB_NONE"
  - "DEFAULT_VERSIONS+=\t\temacs=nox"
  - "DEFAULT_VERSIONS+=\t\tphp=7.2"
  - "DEFAULT_VERSIONS+=\t\tssl=openssl"

Customize make.conf

shell> ansible-playbook pb.yml -t poudriere_make

and review the file

1shell> cat /usr/local/etc/poudriere.d/make.conf
2# Ansible managed
3OPTIONS_UNSET+=			DOCS NLS X11 EXAMPLES
4OPTIONS_UNSET+=			GSSAPI_BASE KRB_BASE KERBEROS
5OPTIONS_SET+=			GSSAPI_NONE KRB_NONE
6DEFAULT_VERSIONS+=		emacs=nox
7DEFAULT_VERSIONS+=		php=7.2
8DEFAULT_VERSIONS+=		ssl=openssl

See also

Idempotent role

The role is idempotent. For example, if Poudriere is configured to build packages for two architectures

poudriere_pkg_arch: [amd64, arm]

there should be no changes reported when the playbook is run repeatedly with the same data

shell> ANSIBLE_DISPLAY_OK_HOSTS=false ANSIBLE_DISPLAY_SKIPPED_HOSTS=false ansible-playbook pb.yml

PLAY [build.example.com] *******************************************************************************
included: /home/admin/.ansible/roles/vbotka.freebsd_poudriere/tasks/pkglist.yml for build.example.com
included: /home/admin/.ansible/roles/vbotka.freebsd_poudriere/tasks/pkglist.yml for build.example.com

PLAY RECAP *********************************************************************************************
build.example.com: ok=25   changed=0    unreachable=0    failed=0    skipped=11   rescued=0    ignored=0

Poudriere

Build the packages

Build amd64 packages
jail create 12amd64

Create the jail

shell> poudriere jail -c -j 12amd64 -v 12.2-RELEASE

,or update it if it already exists

shell> poudriere jail -u -j 12amd64 -v 12.2-RELEASE
  1[root@build /usr/home/admin]# poudriere jail -c -j 12amd64 -v 12.2-RELEASE
  2[00:00:00] Creating 12amd64 fs at /zroot/poudriere/jails/12amd64... done
  3[00:00:00] Using pre-distributed MANIFEST for FreeBSD 12.2-RELEASE amd64
  4[00:00:00] Fetching base for FreeBSD 12.2-RELEASE amd64
  5/zroot/poudriere/jails/12amd64/fromftp/base.tx         174 MB  664 kBps 04m30s
  6[00:04:32] Extracting base... done
  7[00:05:01] Fetching src for FreeBSD 12.2-RELEASE amd64
  8/zroot/poudriere/jails/12amd64/fromftp/src.txz         163 MB  583 kBps 04m48s
  9[00:09:51] Extracting src... done
 10[00:10:38] Fetching lib32 for FreeBSD 12.2-RELEASE amd64
 11/zroot/poudriere/jails/12amd64/fromftp/lib32.t          63 MB  661 kBps 01m37s
 12[00:12:16] Extracting lib32... done
 13[00:12:25] Cleaning up... done
 14[00:12:25] Recording filesystem state for clean... done
 15[00:12:25] Upgrading using ftp
 16/etc/resolv.conf -> /zroot/poudriere/jails/12amd64/etc/resolv.conf
 17Looking up update.FreeBSD.org mirrors... 3 mirrors found.
 18Fetching public key from update4.freebsd.org... done.
 19Fetching metadata signature for 12.2-RELEASE from update4.freebsd.org... done.
 20Fetching metadata index... done.
 21Fetching 2 metadata files... done.
 22Inspecting system... done.
 23Preparing to download files... done.
 24Fetching 145 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140.. done.
 25Applying patches... done.
 26Fetching 1 files...  done.
 27The following files will be removed as part of updating to
 2812.2-RELEASE-p4:
 29/etc/ssl/certs/2c543cd1.0
 30/etc/ssl/certs/2e4eed3c.0
 31/etc/ssl/certs/480720ec.0
 32/etc/ssl/certs/7d0b38bd.0
 33/etc/ssl/certs/8867006a.0
 34/etc/ssl/certs/ad088e1d.0
 35/etc/ssl/certs/b204d74a.0
 36/etc/ssl/certs/ba89ed3b.0
 37/etc/ssl/certs/c089bbbd.0
 38/etc/ssl/certs/e2799e36.0
 39/usr/share/certs/trusted/GeoTrust_Global_CA.pem
 40/usr/share/certs/trusted/GeoTrust_Primary_Certification_Authority.pem
 41/usr/share/certs/trusted/GeoTrust_Primary_Certification_Authority_-_G3.pem
 42/usr/share/certs/trusted/GeoTrust_Universal_CA.pem
 43/usr/share/certs/trusted/GeoTrust_Universal_CA_2.pem
 44/usr/share/certs/trusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem
 45/usr/share/certs/trusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
 46/usr/share/certs/trusted/thawte_Primary_Root_CA.pem
 47/usr/share/certs/trusted/thawte_Primary_Root_CA_-_G2.pem
 48/usr/share/certs/trusted/thawte_Primary_Root_CA_-_G3.pem
 49/usr/src/secure/caroot/trusted/GeoTrust_Global_CA.pem
 50/usr/src/secure/caroot/trusted/GeoTrust_Primary_Certification_Authority.pem
 51/usr/src/secure/caroot/trusted/GeoTrust_Primary_Certification_Authority_-_G3.pem
 52/usr/src/secure/caroot/trusted/GeoTrust_Universal_CA.pem
 53/usr/src/secure/caroot/trusted/GeoTrust_Universal_CA_2.pem
 54/usr/src/secure/caroot/trusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem
 55/usr/src/secure/caroot/trusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
 56/usr/src/secure/caroot/trusted/thawte_Primary_Root_CA.pem
 57/usr/src/secure/caroot/trusted/thawte_Primary_Root_CA_-_G2.pem
 58/usr/src/secure/caroot/trusted/thawte_Primary_Root_CA_-_G3.pem
 59The following files will be added as part of updating to
 6012.2-RELEASE-p4:
 61/etc/ssl/blacklisted/2c543cd1.0
 62/etc/ssl/blacklisted/2e4eed3c.0
 63/etc/ssl/blacklisted/480720ec.0
 64/etc/ssl/blacklisted/7d0b38bd.0
 65/etc/ssl/blacklisted/8867006a.0
 66/etc/ssl/blacklisted/ad088e1d.0
 67/etc/ssl/blacklisted/b204d74a.0
 68/etc/ssl/blacklisted/ba89ed3b.0
 69/etc/ssl/blacklisted/c089bbbd.0
 70/etc/ssl/blacklisted/e2799e36.0
 71/etc/ssl/certs/3fb36b73.0
 72/usr/share/certs/blacklisted/GeoTrust_Global_CA.pem
 73/usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority.pem
 74/usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority_-_G3.pem
 75/usr/share/certs/blacklisted/GeoTrust_Universal_CA.pem
 76/usr/share/certs/blacklisted/GeoTrust_Universal_CA_2.pem
 77/usr/share/certs/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem
 78/usr/share/certs/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
 79/usr/share/certs/blacklisted/thawte_Primary_Root_CA.pem
 80/usr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G2.pem
 81/usr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G3.pem
 82/usr/share/certs/trusted/NAVER_Global_Root_Certification_Authority.pem
 83/usr/src/secure/caroot/blacklisted/GeoTrust_Global_CA.pem
 84/usr/src/secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority.pem
 85/usr/src/secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority_-_G3.pem
 86/usr/src/secure/caroot/blacklisted/GeoTrust_Universal_CA.pem
 87/usr/src/secure/caroot/blacklisted/GeoTrust_Universal_CA_2.pem
 88/usr/src/secure/caroot/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem
 89/usr/src/secure/caroot/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
 90/usr/src/secure/caroot/blacklisted/thawte_Primary_Root_CA.pem
 91/usr/src/secure/caroot/blacklisted/thawte_Primary_Root_CA_-_G2.pem
 92/usr/src/secure/caroot/blacklisted/thawte_Primary_Root_CA_-_G3.pem
 93/usr/src/secure/caroot/trusted/NAVER_Global_Root_Certification_Authority.pem
 94The following files will be updated as part of updating to
 9512.2-RELEASE-p4:
 96/bin/freebsd-version
 97/lib/libcrypto.so.111
 98/lib/libzfs.so.3
 99/lib/libzfs_core.so.2
100/lib/libzpool.so.2
101/rescue/[
102/rescue/bectl
103/rescue/bsdlabel
104/rescue/bunzip2
105/rescue/bzcat
106/rescue/bzip2
107/rescue/camcontrol
108/rescue/cat
109/rescue/ccdconfig
110/rescue/chflags
111/rescue/chgrp
112/rescue/chio
113/rescue/chmod
114/rescue/chown
115/rescue/chroot
116/rescue/clri
117/rescue/cp
118/rescue/csh
119/rescue/date
120/rescue/dd
121/rescue/devfs
122/rescue/df
123/rescue/dhclient
124/rescue/disklabel
125/rescue/dmesg
126/rescue/dump
127/rescue/dumpfs
128/rescue/dumpon
129/rescue/echo
130/rescue/ed
131/rescue/ex
132/rescue/expr
133/rescue/fastboot
134/rescue/fasthalt
135/rescue/fdisk
136/rescue/fsck
137/rescue/fsck_4.2bsd
138/rescue/fsck_ffs
139/rescue/fsck_msdosfs
140/rescue/fsck_ufs
141/rescue/fsdb
142/rescue/fsirand
143/rescue/gbde
144/rescue/geom
145/rescue/getfacl
146/rescue/glabel
147/rescue/gpart
148/rescue/groups
149/rescue/gunzip
150/rescue/gzcat
151/rescue/gzip
152/rescue/halt
153/rescue/head
154/rescue/hostname
155/rescue/id
156/rescue/ifconfig
157/rescue/init
158/rescue/ipf
159/rescue/iscsictl
160/rescue/iscsid
161/rescue/kenv
162/rescue/kill
163/rescue/kldconfig
164/rescue/kldload
165/rescue/kldstat
166/rescue/kldunload
167/rescue/ldconfig
168/rescue/less
169/rescue/link
170/rescue/ln
171/rescue/ls
172/rescue/lzcat
173/rescue/lzma
174/rescue/md5
175/rescue/mdconfig
176/rescue/mdmfs
177/rescue/mkdir
178/rescue/mknod
179/rescue/more
180/rescue/mount
181/rescue/mount_cd9660
182/rescue/mount_msdosfs
183/rescue/mount_nfs
184/rescue/mount_nullfs
185/rescue/mount_udf
186/rescue/mount_unionfs
187/rescue/mt
188/rescue/mv
189/rescue/nc
190/rescue/newfs
191/rescue/newfs_msdos
192/rescue/nos-tun
193/rescue/pgrep
194/rescue/ping
195/rescue/ping6
196/rescue/pkill
197/rescue/poweroff
198/rescue/ps
199/rescue/pwd
200/rescue/rcorder
201/rescue/rdump
202/rescue/realpath
203/rescue/reboot
204/rescue/red
205/rescue/rescue
206/rescue/restore
207/rescue/rm
208/rescue/rmdir
209/rescue/route
210/rescue/routed
211/rescue/rrestore
212/rescue/rtquery
213/rescue/rtsol
214/rescue/savecore
215/rescue/sed
216/rescue/setfacl
217/rescue/sh
218/rescue/shutdown
219/rescue/sleep
220/rescue/spppcontrol
221/rescue/stty
222/rescue/swapon
223/rescue/sync
224/rescue/sysctl
225/rescue/tail
226/rescue/tar
227/rescue/tcsh
228/rescue/tee
229/rescue/test
230/rescue/tunefs
231/rescue/umount
232/rescue/unlink
233/rescue/unlzma
234/rescue/unxz
235/rescue/unzstd
236/rescue/vi
237/rescue/whoami
238/rescue/xz
239/rescue/xzcat
240/rescue/zcat
241/rescue/zdb
242/rescue/zfs
243/rescue/zpool
244/rescue/zstd
245/rescue/zstdcat
246/rescue/zstdmt
247/sbin/ipfw
248/sbin/rtsol
249/sbin/zpool
250/usr/bin/zinject
251/usr/bin/ztest
252/usr/include/net/if_var.h
253/usr/include/openssl/asn1err.h
254/usr/include/sys/filedesc.h
255/usr/include/sys/jail.h
256/usr/lib/libcrypto.a
257/usr/lib/libcrypto_p.a
258/usr/lib/libpam.a
259/usr/lib/libzfs.a
260/usr/lib/libzfs_core.a
261/usr/lib/libzfs_core_p.a
262/usr/lib/libzfs_p.a
263/usr/lib/libzpool.a
264/usr/lib/pam_login_access.so.6
265/usr/lib32/libcrypto.a
266/usr/lib32/libcrypto.so.111
267/usr/lib32/libcrypto_p.a
268/usr/lib32/libpam.a
269/usr/lib32/libzfs.a
270/usr/lib32/libzfs.so.3
271/usr/lib32/libzfs_core.a
272/usr/lib32/libzfs_core.so.2
273/usr/lib32/libzfs_core_p.a
274/usr/lib32/libzfs_p.a
275/usr/lib32/libzpool.a
276/usr/lib32/libzpool.so.2
277/usr/lib32/pam_login_access.so.6
278/usr/sbin/freebsd-update
279/usr/sbin/rtsold
280/usr/sbin/zdb
281/usr/sbin/zfsd
282/usr/sbin/zhack
283/usr/share/man/man2/jail.2.gz
284/usr/share/man/man2/jail_attach.2.gz
285/usr/share/man/man2/jail_get.2.gz
286/usr/share/man/man2/jail_remove.2.gz
287/usr/share/man/man2/jail_set.2.gz
288/usr/share/zoneinfo/Africa/Accra
289/usr/share/zoneinfo/Africa/Addis_Ababa
290/usr/share/zoneinfo/Africa/Algiers
291/usr/share/zoneinfo/Africa/Asmara
292/usr/share/zoneinfo/Africa/Asmera
293/usr/share/zoneinfo/Africa/Bangui
294/usr/share/zoneinfo/Africa/Brazzaville
295/usr/share/zoneinfo/Africa/Casablanca
296/usr/share/zoneinfo/Africa/Dar_es_Salaam
297/usr/share/zoneinfo/Africa/Djibouti
298/usr/share/zoneinfo/Africa/Douala
299/usr/share/zoneinfo/Africa/El_Aaiun
300/usr/share/zoneinfo/Africa/Juba
301/usr/share/zoneinfo/Africa/Kampala
302/usr/share/zoneinfo/Africa/Kinshasa
303/usr/share/zoneinfo/Africa/Lagos
304/usr/share/zoneinfo/Africa/Libreville
305/usr/share/zoneinfo/Africa/Luanda
306/usr/share/zoneinfo/Africa/Malabo
307/usr/share/zoneinfo/Africa/Mogadishu
308/usr/share/zoneinfo/Africa/Nairobi
309/usr/share/zoneinfo/Africa/Niamey
310/usr/share/zoneinfo/Africa/Porto-Novo
311/usr/share/zoneinfo/America/Belize
312/usr/share/zoneinfo/America/Dawson
313/usr/share/zoneinfo/America/Grand_Turk
314/usr/share/zoneinfo/America/Nassau
315/usr/share/zoneinfo/America/Whitehorse
316/usr/share/zoneinfo/Antarctica/Casey
317/usr/share/zoneinfo/Antarctica/Macquarie
318/usr/share/zoneinfo/Asia/Gaza
319/usr/share/zoneinfo/Asia/Hebron
320/usr/share/zoneinfo/Asia/Jerusalem
321/usr/share/zoneinfo/Asia/Tel_Aviv
322/usr/share/zoneinfo/Atlantic/Bermuda
323/usr/share/zoneinfo/Australia/ACT
324/usr/share/zoneinfo/Australia/Adelaide
325/usr/share/zoneinfo/Australia/Brisbane
326/usr/share/zoneinfo/Australia/Broken_Hill
327/usr/share/zoneinfo/Australia/Canberra
328/usr/share/zoneinfo/Australia/Currie
329/usr/share/zoneinfo/Australia/Darwin
330/usr/share/zoneinfo/Australia/Eucla
331/usr/share/zoneinfo/Australia/Hobart
332/usr/share/zoneinfo/Australia/Lindeman
333/usr/share/zoneinfo/Australia/Melbourne
334/usr/share/zoneinfo/Australia/NSW
335/usr/share/zoneinfo/Australia/North
336/usr/share/zoneinfo/Australia/Perth
337/usr/share/zoneinfo/Australia/Queensland
338/usr/share/zoneinfo/Australia/South
339/usr/share/zoneinfo/Australia/Sydney
340/usr/share/zoneinfo/Australia/Tasmania
341/usr/share/zoneinfo/Australia/Victoria
342/usr/share/zoneinfo/Australia/West
343/usr/share/zoneinfo/Australia/Yancowinna
344/usr/share/zoneinfo/Canada/Yukon
345/usr/share/zoneinfo/Europe/Budapest
346/usr/share/zoneinfo/Europe/Monaco
347/usr/share/zoneinfo/Europe/Paris
348/usr/share/zoneinfo/Europe/Volgograd
349/usr/share/zoneinfo/Indian/Antananarivo
350/usr/share/zoneinfo/Indian/Comoro
351/usr/share/zoneinfo/Indian/Mahe
352/usr/share/zoneinfo/Indian/Mayotte
353/usr/share/zoneinfo/Israel
354/usr/share/zoneinfo/Pacific/Efate
355/usr/share/zoneinfo/Pacific/Fiji
356/usr/share/zoneinfo/zone.tab
357/usr/share/zoneinfo/zone1970.tab
358/usr/src/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
359/usr/src/contrib/tzdata/Makefile
360/usr/src/contrib/tzdata/NEWS
361/usr/src/contrib/tzdata/README
362/usr/src/contrib/tzdata/africa
363/usr/src/contrib/tzdata/antarctica
364/usr/src/contrib/tzdata/asia
365/usr/src/contrib/tzdata/australasia
366/usr/src/contrib/tzdata/backward
367/usr/src/contrib/tzdata/backzone
368/usr/src/contrib/tzdata/etcetera
369/usr/src/contrib/tzdata/europe
370/usr/src/contrib/tzdata/leap-seconds.list
371/usr/src/contrib/tzdata/leapseconds
372/usr/src/contrib/tzdata/leapseconds.awk
373/usr/src/contrib/tzdata/northamerica
374/usr/src/contrib/tzdata/southamerica
375/usr/src/contrib/tzdata/theory.html
376/usr/src/contrib/tzdata/version
377/usr/src/contrib/tzdata/ziguard.awk
378/usr/src/contrib/tzdata/zishrink.awk
379/usr/src/contrib/tzdata/zone.tab
380/usr/src/contrib/tzdata/zone1970.tab
381/usr/src/contrib/tzdata/zoneinfo2tdf.pl
382/usr/src/crypto/openssl/crypto/asn1/asn1_err.c
383/usr/src/crypto/openssl/crypto/asn1/tasn_dec.c
384/usr/src/crypto/openssl/crypto/asn1/tasn_enc.c
385/usr/src/crypto/openssl/crypto/err/openssl.txt
386/usr/src/crypto/openssl/crypto/x509v3/v3_genn.c
387/usr/src/crypto/openssl/include/openssl/asn1err.h
388/usr/src/lib/libc/sys/jail.2
389/usr/src/lib/libpam/modules/pam_login_access/login_access.c
390/usr/src/sbin/ipfw/dummynet.c
391/usr/src/sbin/ipfw/ipfw2.c
392/usr/src/sbin/ipfw/nat64lsn.c
393/usr/src/sbin/ipfw/tables.c
394/usr/src/sys/amd64/linux/linux_machdep.c
395/usr/src/sys/amd64/linux32/linux32_machdep.c
396/usr/src/sys/arm64/linux/linux_machdep.c
397/usr/src/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
398/usr/src/sys/compat/freebsd32/freebsd32_misc.c
399/usr/src/sys/conf/newvers.sh
400/usr/src/sys/dev/xen/balloon/balloon.c
401/usr/src/sys/dev/xen/blkback/blkback.c
402/usr/src/sys/dev/xen/control/control.c
403/usr/src/sys/dev/xen/xenstore/xenstore.c
404/usr/src/sys/dev/xen/xenstore/xenstore_dev.c
405/usr/src/sys/fs/autofs/autofs_vnops.c
406/usr/src/sys/fs/msdosfs/msdosfs_vnops.c
407/usr/src/sys/fs/smbfs/smbfs_io.c
408/usr/src/sys/fs/tmpfs/tmpfs_subr.c
409/usr/src/sys/i386/linux/linux_machdep.c
410/usr/src/sys/kern/kern_descrip.c
411/usr/src/sys/kern/kern_exec.c
412/usr/src/sys/kern/kern_fork.c
413/usr/src/sys/kern/kern_jail.c
414/usr/src/sys/kern/kern_timeout.c
415/usr/src/sys/kern/subr_syscall.c
416/usr/src/sys/kern/uipc_mqueue.c
417/usr/src/sys/net/if.c
418/usr/src/sys/net/if_var.h
419/usr/src/sys/netinet6/icmp6.c
420/usr/src/sys/sys/filedesc.h
421/usr/src/sys/sys/jail.h
422/usr/src/sys/x86/x86/ucode.c
423/usr/src/sys/xen/xenbus/xenbus.c
424/usr/src/sys/xen/xenbus/xenbusb.c
425/usr/src/sys/xen/xenbus/xenbusvar.h
426/usr/src/sys/xen/xenstore/xenstorevar.h
427/usr/src/usr.sbin/freebsd-update/freebsd-update.sh
428/usr/src/usr.sbin/rtsold/rtsol.c
429Installing updates...Scanning //usr/share/certs/blacklisted for certificates...
430Scanning //usr/share/certs/trusted for certificates...
431 done.
43212.2-RELEASE-p4
433[00:13:50] Recording filesystem state for clean... done
434[00:13:50] Jail 12amd64 12.2-RELEASE-p4 amd64 is ready to be used
ports create
1[root@build /usr/home/admin]# poudriere ports -c -p local
2[00:00:00] Creating local fs at /zroot/poudriere/ports/local... done
3[00:00:00] Checking out the ports tree... done

Optionaly update ports’ tree if it has already been created

1[root@build /usr/home/admin]# poudriere ports -u -p local
2[00:00:00] Creating local fs at /zroot/poudriere/ports/local... done
3[00:00:00] Checking out the ports tree... done
options for 12amd64

If necessary, manually change options and dependencies for the specified ports

[root@build /usr/home/admin]# poudriere options -j 12amd64 -p local -z devel -f /usr/local/etc/poudriere.d/pkglist_amd64/minimal

<TBD>
bulk minimal 12amd64

HW and OS info

[root@truenas ~]# dmesg
...
FreeBSD 12.2-RELEASE-p3 7851f4a452d(HEAD) TRUENAS amd64
FreeBSD clang version 10.0.1 (git@github.com:llvm/llvm-project.git llvmorg-10.0.1-0-gef32c611aa2)
VT(vga): text 80x25
CPU: Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz (2399.37-MHz K8-class CPU)
...

VM info

[admin@build ~]$ dmesg
FreeBSD 12.2-RELEASE r366954 GENERIC amd64
FreeBSD clang version 10.0.1 (git@github.com:llvm/llvm-project.git llvmorg-10.0.1-0-gef32c611aa2)
VT(efifb): resolution 1024x768
CPU: Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz (2399.33-MHz K8-class CPU)
...
Hypervisor: Origin = "bhyve bhyve "
real memory  = 68717379584 (65534 MB)
avail memory = 16618844160 (15848 MB)
Event timer "LAPIC" quality 600
ACPI APIC Table: <BHYVE  BVMADT  >
FreeBSD/SMP: Multiprocessor System Detected: 16 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s) x 4 hardware threads
...

VM OS info

[admin@build ~]$ uname -a
FreeBSD build.example.com 12.2-RELEASE FreeBSD 12.2-RELEASE r366954 GENERIC  amd64

Result (line 354 in the log below)

[12amd64-local-devel] [2021-03-22_22h42m18s] [committing:] Queued: 160 Built: 158 Failed: 1   Skipped: 1   Ignored: 0   Tobuild: 0    Time: 01:52:20

Command and log. Use sysutils/tmux to open the remote session (see tmux vs. screen)

  1[root@build /usr/home/admin]# poudriere bulk -j 12amd64 -p local -z devel -f /usr/local/etc/poudriere.d/pkglist_amd64/minimal
  2[00:00:01] Creating the reference jail... done
  3[00:00:09] Mounting system devices for 12amd64-local-devel
  4[00:00:09] Mounting ports/packages/distfiles
  5[00:00:09] Converting package repository to new format
  6[00:00:09] Stashing existing package repository
  7[00:00:09] Mounting packages from: /zroot/poudriere/data/packages/12amd64-local-devel
  8/etc/resolv.conf -> /zroot/poudriere/data/.m/12amd64-local-devel/ref/etc/resolv.conf
  9[00:00:09] Starting jail 12amd64-local-devel
 10[00:00:10] Logs: /zroot/poudriere/data/logs/bulk/12amd64-local-devel/2021-03-22_22h42m18s
 11[00:00:10] WWW: http://build.example.com//build.html?mastername=12amd64-local-devel&build=2021-03-22_22h42m18s
 12[00:00:10] Loading MOVED for /zroot/poudriere/data/.m/12amd64-local-devel/ref/usr/ports
 13[00:00:16] Ports supports: FLAVORS SELECTED_OPTIONS
 14[00:00:16] Gathering ports metadata
 15[00:00:19] Calculating ports order and dependencies
 16[00:00:19] pkg package missing, skipping sanity
 17[00:00:19] Skipping incremental rebuild and repository sanity checks
 18[00:00:25] Cleaning the build queue
 19[00:00:26] Sanity checking build queue
 20[00:00:26] Processing PRIORITY_BOOST
 21[00:00:26] Balancing pool
 22[00:00:26] Recording filesystem state for prepkg... done
 23[00:00:26] Building 160 packages using 16 builders
 24[00:00:26] Starting/Cloning builders
 25[00:01:26] Hit CTRL+t at any time to see build progress and stats
 26[00:01:26] [01] [00:00:00] Building ports-mgmt/pkg | pkg-1.16.3
 27[00:03:30] [01] [00:02:04] Finished ports-mgmt/pkg | pkg-1.16.3: Success
 28[00:03:30] [01] [00:00:00] Building print/indexinfo | indexinfo-0.3.1
 29[00:03:30] [02] [00:00:00] Building devel/pkgconf | pkgconf-1.7.4,1
 30[00:03:30] [03] [00:00:00] Building lang/perl5.32 | perl5-5.32.1_1
 31[00:03:30] [04] [00:00:00] Building converters/libiconv | libiconv-1.16
 32[00:03:30] [05] [00:00:00] Building textproc/xmlcatmgr | xmlcatmgr-2.2_2
 33[00:03:30] [06] [00:00:00] Building devel/autoconf-wrapper | autoconf-wrapper-20131203
 34[00:03:30] [07] [00:00:00] Building textproc/expat2 | expat-2.2.10
 35[00:03:30] [08] [00:00:00] Building devel/pcre | pcre-8.44
 36[00:03:30] [09] [00:00:00] Building lang/tcl86 | tcl86-8.6.11_1
 37[00:03:30] [10] [00:00:00] Building devel/libedit | libedit-3.1.20191231,1
 38[00:03:30] [11] [00:00:00] Building devel/npth | npth-1.6
 39[00:03:31] [12] [00:00:00] Building print/libpaper | libpaper-1.1.24.4
 40[00:03:31] [13] [00:00:00] Building devel/cvsps | cvsps-2.1_2
 41[00:03:31] [14] [00:00:00] Building ports-mgmt/portmaster | portmaster-3.19_27
 42[00:03:42] [06] [00:00:12] Finished devel/autoconf-wrapper | autoconf-wrapper-20131203: Success
 43[00:03:42] [01] [00:00:12] Finished print/indexinfo | indexinfo-0.3.1: Success
 44[00:03:43] [06] [00:00:00] Building devel/libunistring | libunistring-0.9.10_1
 45[00:03:43] [15] [00:00:00] Building devel/gettext-runtime | gettext-runtime-0.21
 46[00:03:43] [16] [00:00:00] Building devel/libtextstyle | libtextstyle-0.21
 47[00:03:43] [01] [00:00:00] Building devel/libffi | libffi-3.3_1
 48[00:03:44] [14] [00:00:13] Finished ports-mgmt/portmaster | portmaster-3.19_27: Success
 49[00:03:45] [14] [00:00:00] Building devel/readline | readline-8.1.0
 50[00:03:51] [13] [00:00:20] Finished devel/cvsps | cvsps-2.1_2: Success
 51[00:03:57] [05] [00:00:27] Finished textproc/xmlcatmgr | xmlcatmgr-2.2_2: Success
 52[00:03:57] [05] [00:00:00] Building textproc/iso8879 | iso8879-1986_3
 53[00:03:58] [13] [00:00:01] Building textproc/xmlcharent | xmlcharent-0.3_2
 54[00:03:59] [12] [00:00:28] Finished print/libpaper | libpaper-1.1.24.4: Success
 55[00:04:00] [12] [00:00:00] Building textproc/sdocbook-xml | sdocbook-xml-1.1_2,2
 56[00:04:01] [11] [00:00:31] Finished devel/npth | npth-1.6: Success
 57[00:04:04] [13] [00:00:07] Finished textproc/xmlcharent | xmlcharent-0.3_2: Success
 58[00:04:04] [05] [00:00:07] Finished textproc/iso8879 | iso8879-1986_3: Success
 59[00:04:05] [11] [00:00:01] Building textproc/docbook-xml | docbook-xml-5.0_3
 60[00:04:05] [05] [00:00:00] Building textproc/docbook-sgml | docbook-sgml-4.5_1
 61[00:04:06] [12] [00:00:06] Finished textproc/sdocbook-xml | sdocbook-xml-1.1_2,2: Success
 62[00:04:14] [05] [00:00:09] Finished textproc/docbook-sgml | docbook-sgml-4.5_1: Success
 63[00:04:15] [11] [00:00:11] Finished textproc/docbook-xml | docbook-xml-5.0_3: Success
 64[00:04:16] [05] [00:00:00] Building textproc/docbook | docbook-1.5
 65[00:04:17] [01] [00:00:34] Finished devel/libffi | libffi-3.3_1: Success
 66[00:04:19] [02] [00:00:49] Finished devel/pkgconf | pkgconf-1.7.4,1: Success
 67[00:04:19] [01] [00:00:00] Building textproc/libxml2 | libxml2-2.9.10_3
 68[00:04:19] [02] [00:00:00] Building www/libnghttp2 | libnghttp2-1.43.0
 69[00:04:19] [11] [00:00:00] Building security/libtasn1 | libtasn1-4.16.0_1
 70[00:04:19] [12] [00:00:00] Building devel/libunwind | libunwind-20201110
 71[00:04:22] [05] [00:00:06] Finished textproc/docbook | docbook-1.5: Success
 72[00:04:23] [05] [00:00:00] Building textproc/docbook-xsl | docbook-xsl-1.79.1_1,1
 73[00:04:23] [07] [00:00:53] Finished textproc/expat2 | expat-2.2.10: Success
 74[00:04:33] [10] [00:01:03] Finished devel/libedit | libedit-3.1.20191231,1: Success
 75[00:04:43] [14] [00:00:58] Finished devel/readline | readline-8.1.0: Success
 76[00:04:48] [04] [00:01:18] Finished converters/libiconv | libiconv-1.16: Success
 77[00:05:05] [11] [00:00:46] Finished security/libtasn1 | libtasn1-4.16.0_1: Success
 78[00:05:08] [02] [00:00:49] Finished www/libnghttp2 | libnghttp2-1.43.0: Success
 79[00:05:25] [15] [00:01:42] Finished devel/gettext-runtime | gettext-runtime-0.21: Success
 80[00:05:26] [02] [00:00:00] Building devel/gmake | gmake-4.3_2
 81[00:05:26] [04] [00:00:00] Building archivers/gtar | gtar-1.34
 82[00:05:26] [05] [00:01:03] Finished textproc/docbook-xsl | docbook-xsl-1.79.1_1,1: Success
 83[00:05:42] [12] [00:01:23] Finished devel/libunwind | libunwind-20201110: Success
 84[00:05:59] [02] [00:00:33] Finished devel/gmake | gmake-4.3_2: Success
 85[00:05:59] [02] [00:00:00] Building textproc/libyaml | libyaml-0.2.5
 86[00:05:59] [05] [00:00:00] Building devel/libltdl | libltdl-2.4.6
 87[00:05:59] [07] [00:00:00] Building databases/db5 | db5-5.3.28_7
 88[00:05:59] [10] [00:00:00] Building devel/xxhash | xxhash-0.8.0
 89[00:06:20] [10] [00:00:21] Finished devel/xxhash | xxhash-0.8.0: Success
 90[00:06:22] [05] [00:00:23] Finished devel/libltdl | libltdl-2.4.6: Success
 91[00:06:33] [02] [00:00:34] Finished textproc/libyaml | libyaml-0.2.5: Success
 92[00:06:49] [16] [00:03:06] Finished devel/libtextstyle | libtextstyle-0.21: Success
 93[00:06:51] [02] [00:00:00] Building devel/gettext-tools | gettext-tools-0.21
 94[00:07:02] [04] [00:01:36] Finished archivers/gtar | gtar-1.34: Success
 95[00:07:09] [09] [00:03:39] Finished lang/tcl86 | tcl86-8.6.11_1: Success
 96[00:07:10] [04] [00:00:00] Building databases/sqlite3 | sqlite3-3.34.1,1
 97[00:07:14] [01] [00:02:55] Finished textproc/libxml2 | libxml2-2.9.10_3: Success
 98[00:07:57] [06] [00:04:14] Finished devel/libunistring | libunistring-0.9.10_1: Success
 99[00:07:58] [01] [00:00:00] Building dns/libidn2 | libidn2-2.3.0_1
100[00:08:35] [01] [00:00:37] Finished dns/libidn2 | libidn2-2.3.0_1: Success
101[00:08:59] [08] [00:05:29] Finished devel/pcre | pcre-8.44: Success
102[00:12:13] [07] [00:06:14] Finished databases/db5 | db5-5.3.28_7: Success
103[00:12:16] [04] [00:05:06] Finished databases/sqlite3 | sqlite3-3.34.1,1: Success
104[00:14:10] [02] [00:07:19] Finished devel/gettext-tools | gettext-tools-0.21: Success
105[00:14:12] [01] [00:00:00] Building lang/python37 | python37-3.7.10
106[00:14:12] [02] [00:00:00] Building security/libgpg-error | libgpg-error-1.41
107[00:14:12] [04] [00:00:00] Building security/rhash | rhash-1.4.1
108[00:14:12] [05] [00:00:00] Building databases/gdbm | gdbm-1.19
109[00:14:12] [06] [00:00:00] Building misc/getopt | getopt-1.1.6
110[00:14:22] [06] [00:00:10] Finished misc/getopt | getopt-1.1.6: Success
111[00:14:45] [04] [00:00:33] Finished security/rhash | rhash-1.4.1: Success
112[00:14:46] [05] [00:00:34] Finished databases/gdbm | gdbm-1.19: Success
113[00:14:46] [04] [00:00:00] Building devel/apr1 | apr-1.7.0.1.6.1_1
114[00:14:48] [02] [00:00:36] Finished security/libgpg-error | libgpg-error-1.41: Success
115[00:14:49] [02] [00:00:00] Building security/libassuan | libassuan-2.5.4
116[00:15:07] [02] [00:00:18] Finished security/libassuan | libassuan-2.5.4: Success
117[00:15:08] [02] [00:00:00] Building security/pinentry-curses | pinentry-curses-1.1.1
118[00:15:11] [03] [00:11:41] Finished lang/perl5.32 | perl5-5.32.1_1: Success
119[00:15:15] [03] [00:00:00] Building devel/p5-Locale-gettext | p5-Locale-gettext-1.07
120[00:15:15] [05] [00:00:00] Building textproc/p5-Unicode-EastAsianWidth | p5-Unicode-EastAsianWidth-12.0
121[00:15:15] [06] [00:00:00] Building converters/p5-Text-Unidecode | p5-Text-Unidecode-1.30
122[00:15:15] [07] [00:00:00] Building devel/p5-Locale-libintl | p5-Locale-libintl-1.32
123[00:15:15] [08] [00:00:00] Building security/ca_root_nss | ca_root_nss-3.63
124[00:15:15] [10] [00:00:00] Building converters/p5-Encode-Locale | p5-Encode-Locale-1.05
125[00:15:15] [09] [00:00:00] Building devel/p5-TimeDate | p5-TimeDate-2.33,1
126[00:15:15] [11] [00:00:00] Building security/libksba | libksba-1.5.0
127[00:15:15] [12] [00:00:00] Building devel/p5-Clone | p5-Clone-0.45
128[00:15:15] [13] [00:00:00] Building net/p5-URI | p5-URI-5.07
129[00:15:15] [14] [00:00:00] Building devel/p5-IO-HTML | p5-IO-HTML-1.001_1
130[00:15:15] [15] [00:00:00] Building www/p5-LWP-MediaTypes | p5-LWP-MediaTypes-6.04
131[00:15:15] [16] [00:00:00] Building textproc/utf8proc | utf8proc-2.6.1
132[00:15:35] [02] [00:00:27] Finished security/pinentry-curses | pinentry-curses-1.1.1: Success
133[00:15:36] [02] [00:00:00] Building security/pinentry | pinentry-1.1.1
134[00:15:44] [14] [00:00:29] Finished devel/p5-IO-HTML | p5-IO-HTML-1.001_1: Success
135[00:15:44] [10] [00:00:29] Finished converters/p5-Encode-Locale | p5-Encode-Locale-1.05: Success
136[00:15:44] [15] [00:00:29] Finished www/p5-LWP-MediaTypes | p5-LWP-MediaTypes-6.04: Success
137[00:15:44] [05] [00:00:29] Finished textproc/p5-Unicode-EastAsianWidth | p5-Unicode-EastAsianWidth-12.0: Success
138[00:15:45] [14] [00:00:00] Building www/p5-HTML-Tagset | p5-HTML-Tagset-3.20_1
139[00:15:45] [05] [00:00:00] Building net/p5-Socket6 | p5-Socket6-0.29
140[00:15:45] [10] [00:00:00] Building security/p5-Digest-HMAC | p5-Digest-HMAC-1.03_1
141[00:15:45] [15] [00:00:00] Building security/p5-GSSAPI | p5-GSSAPI-0.28_1
142[00:15:45] [16] [00:00:30] Finished textproc/utf8proc | utf8proc-2.6.1: Success
143[00:15:46] [09] [00:00:31] Finished devel/p5-TimeDate | p5-TimeDate-2.33,1: Success
144[00:15:46] [12] [00:00:31] Finished devel/p5-Clone | p5-Clone-0.45: Success
145[00:15:46] [16] [00:00:00] Building www/p5-Mozilla-CA | p5-Mozilla-CA-20200520
146[00:15:47] [02] [00:00:11] Finished security/pinentry | pinentry-1.1.1: Success
147[00:15:47] [03] [00:00:32] Finished devel/p5-Locale-gettext | p5-Locale-gettext-1.07: Success
148[00:15:47] [12] [00:00:00] Building www/p5-HTTP-Date | p5-HTTP-Date-6.05
149[00:15:47] [09] [00:00:00] Building security/p5-Net-SSLeay | p5-Net-SSLeay-1.88
150[00:15:47] [13] [00:00:32] Finished net/p5-URI | p5-URI-5.07: Success
151[00:15:49] [02] [00:00:00] Building lang/p5-Error | p5-Error-0.17029
152[00:15:49] [06] [00:00:34] Finished converters/p5-Text-Unidecode | p5-Text-Unidecode-1.30: Success
153[00:15:50] [03] [00:00:00] Building misc/help2man | help2man-1.48.1
154[00:15:50] [13] [00:00:00] Building devel/p5-Term-ReadKey | p5-Term-ReadKey-2.38_1
155[00:16:11] [07] [00:00:56] Finished devel/p5-Locale-libintl | p5-Locale-libintl-1.32: Success
156[00:16:13] [10] [00:00:28] Finished security/p5-Digest-HMAC | p5-Digest-HMAC-1.03_1: Success
157[00:16:13] [14] [00:00:28] Finished www/p5-HTML-Tagset | p5-HTML-Tagset-3.20_1: Success
158[00:16:13] [02] [00:00:24] Finished lang/p5-Error | p5-Error-0.17029: Success
159[00:16:17] [16] [00:00:31] Finished www/p5-Mozilla-CA | p5-Mozilla-CA-20200520: Success
160[00:16:18] [12] [00:00:31] Finished www/p5-HTTP-Date | p5-HTTP-Date-6.05: Success
161[00:16:18] [02] [00:00:00] Building www/p5-HTTP-Message | p5-HTTP-Message-6.28
162[00:16:19] [05] [00:00:34] Finished net/p5-Socket6 | p5-Socket6-0.29: Success
163[00:16:20] [15] [00:00:35] Finished security/p5-GSSAPI | p5-GSSAPI-0.28_1: Success
164[00:16:20] [05] [00:00:00] Building net/p5-IO-Socket-INET6 | p5-IO-Socket-INET6-2.72_1
165[00:16:20] [06] [00:00:00] Building security/p5-Authen-SASL | p5-Authen-SASL-2.16_1
166[00:16:22] [13] [00:00:32] Finished devel/p5-Term-ReadKey | p5-Term-ReadKey-2.38_1: Success
167[00:16:26] [03] [00:00:36] Finished misc/help2man | help2man-1.48.1: Success
168[00:16:26] [03] [00:00:00] Building print/texinfo | texinfo-6.7_4,1
169[00:16:36] [05] [00:00:16] Finished net/p5-IO-Socket-INET6 | p5-IO-Socket-INET6-2.72_1: Success
170[00:16:36] [02] [00:00:18] Finished www/p5-HTTP-Message | p5-HTTP-Message-6.28: Success
171[00:16:36] [05] [00:00:00] Building www/p5-HTML-Parser | p5-HTML-Parser-3.75
172[00:16:37] [06] [00:00:17] Finished security/p5-Authen-SASL | p5-Authen-SASL-2.16_1: Success
173[00:16:42] [11] [00:01:27] Finished security/libksba | libksba-1.5.0: Success
174[00:16:44] [09] [00:00:57] Finished security/p5-Net-SSLeay | p5-Net-SSLeay-1.88: Success
175[00:16:44] [02] [00:00:00] Building security/p5-IO-Socket-SSL | p5-IO-Socket-SSL-2.070
176[00:16:54] [05] [00:00:18] Finished www/p5-HTML-Parser | p5-HTML-Parser-3.75: Success
177[00:16:55] [05] [00:00:00] Building www/p5-CGI | p5-CGI-4.51
178[00:16:59] [02] [00:00:15] Finished security/p5-IO-Socket-SSL | p5-IO-Socket-SSL-2.070: Success
179[00:17:08] [05] [00:00:13] Finished www/p5-CGI | p5-CGI-4.51: Success
180[00:17:40] [08] [00:02:25] Finished security/ca_root_nss | ca_root_nss-3.63: Success
181[00:17:41] [02] [00:00:00] Building ftp/curl | curl-7.75.0
182[00:18:00] [04] [00:03:14] Finished devel/apr1 | apr-1.7.0.1.6.1_1: Success
183[00:18:11] [03] [00:01:45] Finished print/texinfo | texinfo-6.7_4,1: Success
184[00:18:12] [03] [00:00:00] Building devel/m4 | m4-1.4.18_1,1
185[00:18:12] [04] [00:00:00] Building security/libgcrypt | libgcrypt-1.9.2_1
186[00:18:12] [05] [00:00:00] Building math/gmp | gmp-6.2.1
187[00:18:12] [06] [00:00:00] Building ftp/wget | wget-1.21
188[00:19:22] [03] [00:01:10] Finished devel/m4 | m4-1.4.18_1,1: Success
189[00:19:22] [03] [00:00:00] Building devel/autoconf | autoconf-2.69_3
190[00:19:22] [07] [00:00:00] Building devel/libtool | libtool-2.4.6_1
191[00:19:22] [08] [00:00:00] Building devel/bison | bison-3.7.5,1
192[00:20:03] [07] [00:00:41] Finished devel/libtool | libtool-2.4.6_1: Success
193[00:20:07] [06] [00:01:55] Finished ftp/wget | wget-1.21: Success
194[00:20:09] [03] [00:00:47] Finished devel/autoconf | autoconf-2.69_3: Success
195[00:20:09] [03] [00:00:00] Building devel/automake | automake-1.16.3
196[00:20:32] [03] [00:00:23] Finished devel/automake | automake-1.16.3: Success
197[00:20:33] [03] [00:00:00] Building devel/libuv | libuv-1.41.0
198[00:20:33] [06] [00:00:00] Building devel/libatomic_ops | libatomic_ops-7.6.10
199[00:20:33] [07] [00:00:00] Building lang/ruby27 | ruby-2.7.2_1,1
200[00:20:33] [09] [00:00:00] Building devel/pcre2 | pcre2-10.36
201[00:20:46] [02] [00:03:05] Finished ftp/curl | curl-7.75.0: Success
202[00:20:54] [01] [00:06:42] Finished lang/python37 | python37-3.7.10: Success
203[00:20:57] [01] [00:00:00] Building devel/py-setuptools@py37 | py37-setuptools-44.0.0
204[00:20:57] [02] [00:00:00] Building devel/ninja | ninja-1.10.2,2
205[00:21:15] [06] [00:00:42] Finished devel/libatomic_ops | libatomic_ops-7.6.10: Success
206[00:21:15] [06] [00:00:00] Building devel/boehm-gc | boehm-gc-8.0.4_1
207[00:21:19] [01] [00:00:22] Finished devel/py-setuptools@py37 | py37-setuptools-44.0.0: Success
208[00:21:19] [01] [00:00:00] Building devel/py-pycparser@py37 | py37-pycparser-2.20
209[00:21:19] [10] [00:00:00] Building devel/py-six@py37 | py37-six-1.15.0
210[00:21:19] [11] [00:00:00] Building devel/py-pytz@py37 | py37-pytz-2020.5,1
211[00:21:19] [12] [00:00:00] Building net/py-pysocks@py37 | py37-pysocks-1.7.1
212[00:21:19] [13] [00:00:00] Building lang/cython@py37 | py37-cython-0.29.21
213[00:21:19] [14] [00:00:00] Building dns/py-idna@py37 | py37-idna-2.10
214[00:21:19] [15] [00:00:00] Building security/py-certifi@py37 | py37-certifi-2020.12.5
215[00:21:19] [16] [00:00:00] Building textproc/py-chardet@py37 | py37-chardet-3.0.4_3
216[00:21:24] [04] [00:03:12] Finished security/libgcrypt | libgcrypt-1.9.2_1: Success
217[00:21:25] [08] [00:02:03] Finished devel/bison | bison-3.7.5,1: Success
218[00:21:28] [04] [00:00:00] Building textproc/py-libxml2@py37 | py37-libxml2-2.9.10_3
219[00:21:29] [08] [00:00:00] Building textproc/py-markupsafe@py37 | py37-markupsafe-1.1.1_1
220[00:21:59] [10] [00:00:40] Finished devel/py-six@py37 | py37-six-1.15.0: Success
221[00:21:59] [12] [00:00:40] Finished net/py-pysocks@py37 | py37-pysocks-1.7.1: Success
222[00:21:59] [15] [00:00:40] Finished security/py-certifi@py37 | py37-certifi-2020.12.5: Success
223[00:21:59] [14] [00:00:40] Finished dns/py-idna@py37 | py37-idna-2.10: Success
224[00:22:00] [12] [00:00:00] Building devel/py-pyparsing@py37 | py37-pyparsing-2.4.7
225[00:22:00] [10] [00:00:00] Building textproc/py-sphinxcontrib-applehelp@py37 | py37-sphinxcontrib-applehelp-1.0.2
226[00:22:00] [15] [00:00:00] Building textproc/py-sphinxcontrib-devhelp@py37 | py37-sphinxcontrib-devhelp-1.0.2
227[00:22:00] [14] [00:00:00] Building textproc/py-docutils@py37 | py37-docutils-0.16
228[00:22:00] [16] [00:00:41] Finished textproc/py-chardet@py37 | py37-chardet-3.0.4_3: Success
229[00:22:02] [01] [00:00:43] Finished devel/py-pycparser@py37 | py37-pycparser-2.20: Success
230[00:22:03] [11] [00:00:44] Finished devel/py-pytz@py37 | py37-pytz-2020.5,1: Success
231[00:22:03] [16] [00:00:00] Building textproc/py-sphinxcontrib-htmlhelp@py37 | py37-sphinxcontrib-htmlhelp-1.0.3
232[00:22:04] [01] [00:00:00] Building devel/py-cffi@py37 | py37-cffi-1.14.5
233[00:22:05] [08] [00:00:36] Finished textproc/py-markupsafe@py37 | py37-markupsafe-1.1.1_1: Success
234[00:22:07] [11] [00:00:00] Building devel/py-babel@py37 | py37-Babel-2.9.0
235[00:22:07] [08] [00:00:00] Building graphics/py-imagesize@py37 | py37-imagesize-1.1.0
236[00:22:29] [06] [00:01:14] Finished devel/boehm-gc | boehm-gc-8.0.4_1: Success
237[00:22:31] [06] [00:00:01] Building textproc/py-sphinxcontrib-jsmath@py37 | py37-sphinxcontrib-jsmath-1.0.1
238[00:22:45] [15] [00:00:45] Finished textproc/py-sphinxcontrib-devhelp@py37 | py37-sphinxcontrib-devhelp-1.0.2: Success
239[00:22:45] [10] [00:00:45] Finished textproc/py-sphinxcontrib-applehelp@py37 | py37-sphinxcontrib-applehelp-1.0.2: Success
240[00:22:46] [12] [00:00:46] Finished devel/py-pyparsing@py37 | py37-pyparsing-2.4.7: Success
241[00:22:48] [15] [00:00:00] Building devel/py-packaging@py37 | py37-packaging-20.9
242[00:22:48] [12] [00:00:00] Building textproc/py-alabaster@py37 | py37-alabaster-0.7.6
243[00:22:48] [10] [00:00:00] Building textproc/py-sphinxcontrib-serializinghtml@py37 | py37-sphinxcontrib-serializinghtml-1.1.4
244[00:22:48] [04] [00:01:20] Finished textproc/py-libxml2@py37 | py37-libxml2-2.9.10_3: Success
245[00:22:54] [08] [00:00:47] Finished graphics/py-imagesize@py37 | py37-imagesize-1.1.0: Success
246[00:22:56] [04] [00:00:00] Building textproc/py-sphinxcontrib-qthelp@py37 | py37-sphinxcontrib-qthelp-1.0.3
247[00:22:56] [16] [00:00:53] Finished textproc/py-sphinxcontrib-htmlhelp@py37 | py37-sphinxcontrib-htmlhelp-1.0.3: Success
248[00:22:57] [03] [00:02:24] Finished devel/libuv | libuv-1.41.0: Success
249[00:22:58] [08] [00:00:00] Building textproc/libxslt | libxslt-1.1.34_1
250[00:22:59] [14] [00:00:59] Finished textproc/py-docutils@py37 | py37-docutils-0.16: Success
251[00:23:00] [03] [00:00:00] Building textproc/py-pygments@py37 | py37-pygments-2.7.2
252[00:23:00] [16] [00:00:00] Building textproc/itstool | itstool-2.0.6
253[00:23:03] [14] [00:00:00] Building shells/bash | bash-5.1.4_1
254[00:23:07] [06] [00:00:37] Finished textproc/py-sphinxcontrib-jsmath@py37 | py37-sphinxcontrib-jsmath-1.0.1: Success
255[00:23:08] [02] [00:02:11] Finished devel/ninja | ninja-1.10.2,2: Success
256[00:23:08] [01] [00:01:04] Finished devel/py-cffi@py37 | py37-cffi-1.14.5: Success
257[00:23:10] [06] [00:00:01] Building devel/scons@py37 | scons-py37-3.1.2
258[00:23:11] [02] [00:00:00] Building devel/meson | meson-0.57.1
259[00:23:12] [01] [00:00:00] Building security/py-cryptography@py37 | py37-cryptography-3.3.2
260[00:23:29] [12] [00:00:41] Finished textproc/py-alabaster@py37 | py37-alabaster-0.7.6: Success
261[00:23:29] [10] [00:00:41] Finished textproc/py-sphinxcontrib-serializinghtml@py37 | py37-sphinxcontrib-serializinghtml-1.1.4: Success
262[00:23:29] [15] [00:00:41] Finished devel/py-packaging@py37 | py37-packaging-20.9: Success
263[00:23:30] [12] [00:00:00] Building www/w3m | w3m-0.5.3.20210306
264[00:23:39] [11] [00:01:32] Finished devel/py-babel@py37 | py37-Babel-2.9.0: Success
265[00:23:40] [04] [00:00:44] Finished textproc/py-sphinxcontrib-qthelp@py37 | py37-sphinxcontrib-qthelp-1.0.3: Success
266[00:23:42] [15] [00:00:00] Building devel/py-Jinja2@py37 | py37-Jinja2-2.11.2_1
267[00:23:49] [16] [00:00:49] Finished textproc/itstool | itstool-2.0.6: Success
268[00:24:01] [03] [00:01:01] Finished textproc/py-pygments@py37 | py37-pygments-2.7.2: Success
269[00:24:07] [06] [00:00:58] Finished devel/scons@py37 | scons-py37-3.1.2: Success
270[00:24:07] [03] [00:00:00] Building www/serf | serf-1.3.9_6
271[00:24:12] [02] [00:01:01] Finished devel/meson | meson-0.57.1: Success
272[00:24:12] [15] [00:00:30] Finished devel/py-Jinja2@py37 | py37-Jinja2-2.11.2_1: Success
273[00:24:13] [02] [00:00:00] Building archivers/liblz4 | liblz4-1.9.3,1
274[00:24:13] [04] [00:00:00] Building devel/jsoncpp | jsoncpp-1.9.4
275[00:24:28] [05] [00:06:16] Finished math/gmp | gmp-6.2.1: Success
276[00:24:30] [05] [00:00:00] Building security/nettle | nettle-3.6
277[00:24:43] [01] [00:01:31] Finished security/py-cryptography@py37 | py37-cryptography-3.3.2: Success
278[00:24:44] [01] [00:00:00] Building security/py-openssl@py37 | py37-openssl-20.0.1
279[00:24:45] [08] [00:01:47] Finished textproc/libxslt | libxslt-1.1.34_1: Success
280[00:24:46] [06] [00:00:00] Building textproc/yelp-xsl | yelp-xsl-3.38.3
281[00:24:46] [08] [00:00:00] Building devel/glib20 | glib-2.66.7_1,1
282[00:24:55] [03] [00:00:48] Finished www/serf | serf-1.3.9_6: Success
283[00:25:03] [02] [00:00:50] Finished archivers/liblz4 | liblz4-1.9.3,1: Success
284[00:25:03] [02] [00:00:00] Building archivers/libarchive | libarchive-3.5.1,1
285[00:25:03] [03] [00:00:00] Building archivers/zstd | zstd-1.4.8
286[00:25:07] [01] [00:00:23] Finished security/py-openssl@py37 | py37-openssl-20.0.1: Success
287[00:25:08] [01] [00:00:00] Building net/py-urllib3@py37 | py37-urllib3-1.25.11,1
288[00:25:15] [13] [00:03:56] Finished lang/cython@py37 | py37-cython-0.29.21: Success
289[00:25:17] [10] [00:00:00] Building textproc/py-pystemmer@py37 | py37-pystemmer-2.0.0.1
290[00:25:18] [06] [00:00:32] Finished textproc/yelp-xsl | yelp-xsl-3.38.3: Success
291[00:25:19] [06] [00:00:00] Building textproc/yelp-tools | yelp-tools-3.38.0
292[00:25:28] [12] [00:01:58] Finished www/w3m | w3m-0.5.3.20210306: Success
293[00:25:37] [01] [00:00:29] Finished net/py-urllib3@py37 | py37-urllib3-1.25.11,1: Success
294[00:25:38] [01] [00:00:00] Building www/py-requests@py37 | py37-requests-2.22.0_2
295[00:25:44] [04] [00:01:31] Finished devel/jsoncpp | jsoncpp-1.9.4: Success
296[00:25:45] [06] [00:00:26] Finished textproc/yelp-tools | yelp-tools-3.38.0: Success
297[00:25:45] [04] [00:00:00] Building textproc/gtk-doc | gtk-doc-1.33.2
298[00:25:55] [10] [00:00:38] Finished textproc/py-pystemmer@py37 | py37-pystemmer-2.0.0.1: Success
299[00:25:55] [06] [00:00:00] Building textproc/py-snowballstemmer@py37 | py37-snowballstemmer-1.2.1
300[00:26:00] [01] [00:00:22] Finished www/py-requests@py37 | py37-requests-2.22.0_2: Success
301[00:26:14] [06] [00:00:19] Finished textproc/py-snowballstemmer@py37 | py37-snowballstemmer-1.2.1: Success
302[00:26:15] [01] [00:00:00] Building textproc/py-sphinx@py37 | py37-sphinx-3.5.2,1
303[00:26:19] [14] [00:03:16] Finished shells/bash | bash-5.1.4_1: Success
304[00:26:19] [06] [00:00:00] Building shells/bash-completion | bash-completion-2.11,2
305[00:26:19] [10] [00:00:00] Building textproc/xmlto | xmlto-0.0.28
306[00:26:49] [10] [00:00:30] Finished textproc/xmlto | xmlto-0.0.28: Success
307[00:26:50] [04] [00:01:05] Finished textproc/gtk-doc | gtk-doc-1.33.2: Success
308[00:26:51] [06] [00:00:32] Finished shells/bash-completion | bash-completion-2.11,2: Success
309[00:26:56] [05] [00:02:26] Finished security/nettle | nettle-3.6: Success
310[00:27:03] [01] [00:00:48] Finished textproc/py-sphinx@py37 | py37-sphinx-3.5.2,1: Success
311[00:27:04] [03] [00:02:01] Finished archivers/zstd | zstd-1.4.8: Success
312[00:27:05] [01] [00:00:00] Building net/rsync | rsync-3.2.3
313[00:27:38] [09] [00:07:05] Finished devel/pcre2 | pcre2-10.36: Success
314[00:27:49] [01] [00:00:44] Finished net/rsync | rsync-3.2.3: Success
315[00:28:02] [02] [00:02:59] Finished archivers/libarchive | libarchive-3.5.1,1: Success
316[00:28:03] [01] [00:00:00] Building devel/cmake | cmake-3.19.6
317[00:33:40] [08] [00:08:54] Finished devel/glib20 | glib-2.66.7_1,1: Success
318[00:33:41] [02] [00:00:00] Building security/p11-kit | p11-kit-0.23.22_1
319[00:34:56] [02] [00:01:15] Finished security/p11-kit | p11-kit-0.23.22_1: Success
320[00:35:51] [07] [00:15:18] Finished lang/ruby27 | ruby-2.7.2_1,1: Success
321[00:35:59] [02] [00:00:00] Building devel/ruby-gems | ruby27-gems-3.0.8
322[00:36:24] [02] [00:00:25] Finished devel/ruby-gems | ruby27-gems-3.0.8: Success
323[00:36:24] [02] [00:00:00] Building devel/rubygem-rdoc | rubygem-rdoc-6.3.0
324[00:36:24] [03] [00:00:00] Building textproc/rubygem-asciidoctor | rubygem-asciidoctor-2.0.12
325[00:36:45] [03] [00:00:21] Finished textproc/rubygem-asciidoctor | rubygem-asciidoctor-2.0.12: Success
326[00:36:48] [02] [00:00:24] Finished devel/rubygem-rdoc | rubygem-rdoc-6.3.0: Success
327[00:36:48] [02] [00:00:00] Building databases/ruby-bdb | ruby27-bdb-0.6.6_8
328[00:39:20] [02] [00:02:32] Finished databases/ruby-bdb | ruby27-bdb-0.6.6_8: Failed: stage
329[00:39:20] [02] [00:02:32] Skipping ports-mgmt/portupgrade | portupgrade-2.4.16,2: Dependent port databases/ruby-bdb | ruby27-bdb-0.6.6_8 failed
330[01:13:09] [01] [00:45:06] Finished devel/cmake | cmake-3.19.6: Success
331[01:13:13] [01] [00:00:00] Building emulators/tpm-emulator | tpm-emulator-0.7.4_2
332[01:13:50] [01] [00:00:37] Finished emulators/tpm-emulator | tpm-emulator-0.7.4_2: Success
333[01:13:50] [01] [00:00:00] Building security/trousers | trousers-0.3.14_3
334[01:18:40] [01] [00:04:50] Finished security/trousers | trousers-0.3.14_3: Success
335[01:18:40] [01] [00:00:00] Building security/gnutls | gnutls-3.6.15
336[01:25:14] [01] [00:06:34] Finished security/gnutls | gnutls-3.6.15: Success
337[01:25:16] [01] [00:00:00] Building security/gnupg | gnupg-2.2.27
338[01:28:53] [01] [00:03:37] Finished security/gnupg | gnupg-2.2.27: Success
339[01:28:53] [01] [00:00:00] Building devel/subversion | subversion-1.14.1
340[01:39:25] [01] [00:10:32] Finished devel/subversion | subversion-1.14.1: Success
341[01:39:27] [01] [00:00:00] Building devel/p5-subversion | p5-subversion-1.14.1
342[01:42:51] [01] [00:03:24] Finished devel/p5-subversion | p5-subversion-1.14.1: Success
343[01:42:51] [01] [00:00:00] Building devel/git@default | git-2.31.0
344[01:51:01] [01] [00:08:10] Finished devel/git@default | git-2.31.0: Success
345[01:51:02] Stopping 16 builders
346[01:52:27] Creating pkg repository
347Creating repository in /tmp/packages: 100%
348Packing files for repository: 100%
349[01:52:29] Committing packages to repository: /zroot/poudriere/data/packages/12amd64-local-devel/.real_1616456087 via .latest symlink
350[01:52:29] Removing old packages
351[01:52:30] Built ports: ports-mgmt/pkg devel/autoconf-wrapper print/indexinfo ports-mgmt/portmaster devel/cvsps textproc/xmlcatmgr print/libpaper devel/npth textproc/xmlcharent textproc/iso8879 textproc/sdocbook-xml textproc/docbook-sgml textproc/docbook-xml devel/libffi devel/pkgconf textproc/docbook textproc/expat2 devel/libedit devel/readline converters/libiconv security/libtasn1 www/libnghttp2 devel/gettext-runtime textproc/docbook-xsl devel/libunwind devel/gmake devel/xxhash devel/libltdl textproc/libyaml devel/libtextstyle archivers/gtar lang/tcl86 textproc/libxml2 devel/libunistring dns/libidn2 devel/pcre databases/db5 databases/sqlite3 devel/gettext-tools misc/getopt security/rhash databases/gdbm security/libgpg-error security/libassuan lang/perl5.32 security/pinentry-curses devel/p5-IO-HTML converters/p5-Encode-Locale www/p5-LWP-MediaTypes textproc/p5-Unicode-EastAsianWidth textproc/utf8proc devel/p5-TimeDate devel/p5-Clone security/pinentry devel/p5-Locale-gettext net/p5-URI converters/p5-Text-Unidecode devel/p5-Locale-libintl security/p5-Digest-HMAC www/p5-HTML-Tagset lang/p5-Error www/p5-Mozilla-CA www/p5-HTTP-Date net/p5-Socket6 security/p5-GSSAPI devel/p5-Term-ReadKey misc/help2man net/p5-IO-Socket-INET6 www/p5-HTTP-Message security/p5-Authen-SASL security/libksba security/p5-Net-SSLeay www/p5-HTML-Parser security/p5-IO-Socket-SSL www/p5-CGI security/ca_root_nss devel/apr1 print/texinfo devel/m4 devel/libtool ftp/wget devel/autoconf devel/automake ftp/curl lang/python37 devel/libatomic_ops devel/py-setuptools security/libgcrypt devel/bison devel/py-six net/py-pysocks security/py-certifi dns/py-idna textproc/py-chardet devel/py-pycparser devel/py-pytz textproc/py-markupsafe devel/boehm-gc textproc/py-sphinxcontrib-devhelp textproc/py-sphinxcontrib-applehelp devel/py-pyparsing textproc/py-libxml2 graphics/py-imagesize textproc/py-sphinxcontrib-htmlhelp devel/libuv textproc/py-docutils textproc/py-sphinxcontrib-jsmath devel/ninja devel/py-cffi textproc/py-alabaster textproc/py-sphinxcontrib-serializinghtml devel/py-packaging devel/py-babel textproc/py-sphinxcontrib-qthelp textproc/itstool textproc/py-pygments devel/scons devel/meson devel/py-Jinja2 math/gmp security/py-cryptography textproc/libxslt www/serf archivers/liblz4 security/py-openssl lang/cython textproc/yelp-xsl www/w3m net/py-urllib3 devel/jsoncpp textproc/yelp-tools textproc/py-pystemmer www/py-requests textproc/py-snowballstemmer shells/bash textproc/xmlto textproc/gtk-doc shells/bash-completion security/nettle textproc/py-sphinx archivers/zstd devel/pcre2 net/rsync archivers/libarchive devel/glib20 security/p11-kit lang/ruby27 devel/ruby-gems textproc/rubygem-asciidoctor devel/rubygem-rdoc devel/cmake emulators/tpm-emulator security/trousers security/gnutls security/gnupg devel/subversion devel/p5-subversion devel/git
352[01:52:30] Failed ports: databases/ruby-bdb:stage
353[01:52:30] Skipped ports: ports-mgmt/portupgrade
354[12amd64-local-devel] [2021-03-22_22h42m18s] [committing:] Queued: 160 Built: 158 Failed: 1   Skipped: 1   Ignored: 0   Tobuild: 0    Time: 01:52:20
355[01:52:30] Logs: /zroot/poudriere/data/logs/bulk/12amd64-local-devel/2021-03-22_22h42m18s
356[01:52:30] WWW: http://build.example.com//build.html?mastername=12amd64-local-devel&build=2021-03-22_22h42m18s
357[01:52:30] Cleaning up
358[01:52:30] Unmounting file systems

http://build.example.com/logs/bulk/12amd64-local-devel/latest/build.html

alternate text
Build armv7 packages

Poudriere requires QEMU to cross-building ports for arm on amd64. Install the package manually or use Ansible role vbotka.freebsd_postinstall

shell> cat host_vars/build.example.com/fp-qemu.yml
---
fp_qemu: true
fp_qemu_enabled: true
# mutually exclusive
fp_qemu_install: false
fp_qemu_user_static_install: true
# set to the name of the installed package
fp_qemu_rcvar: qemu_user_static

shell> ansible-playbook freebsd-postinstall.yml -t fp_packages
shell> ansible-playbook freebsd-postinstall.yml -t fp_qemu

Make sure QEMU is running

shell> /usr/local/etc/rc.d/qemu_user_static list

Simplify the creation of the arm jail and avoid building the base system. Instead, download and mount an image into the directory /usr/local/poudriere/jails/. Create the memory disk (vnode) and mount it manually or use Ansible role vbotka.freebsd_postinstall

shell> cat host_vars/build.example.com/fp-mount-img.yml
---
fp_mount_img: true
fp_mount_img_entries:
  - img: /export/img/FreeBSD-12.2-RELEASE-arm-armv7-CUBOX-HUMMINGBOARD.img
    mount: /usr/local/poudriere/jails/12arm7
    fstype: ufs
    partition: s2a

shell> ansible-playbook freebsd-postinstall.yml -t fp_mount_img

Make sure the image is mounted

shell> df | grep 12arm7
jail create 12arm7

Use the mounted image /zroot/poudriere/jails/12arm7. Create the jail

shell> poudriere jail -c -m null -j 12arm7 -v 12.2-RELEASE -a armv7 -M /zroot/poudriere/jails/12arm7

,or update it if it already exists

shell> poudriere jail -u -m null -j 12arm7 -v 12.2-RELEASE -a armv7 -M /zroot/poudriere/jails/12arm7
1[root@build /usr/home/admin]# poudriere jail -c -m null -j 12arm7 -v 12.2-RELEASE -a armv7 -M /zroot/poudriere/jails/12arm7
2[00:00:00] Cross-building ports for armv7 on amd64 requires QEMU
3[00:00:00] Recording filesystem state for clean... done
4[00:00:00] Jail 12arm7 12.2-RELEASE armv7 is ready to be used
options for 12arm7

If necessary, manually change options and dependencies for the specified ports

[root@build /usr/home/admin]# poudriere options -j 12arm7 -p local -z devel -f /usr/local/etc/poudriere.d/pkglist_arm/minimal

<TBD>
bulk minimal 12arm7

HW and OS info

[root@truenas ~]# dmesg
...
FreeBSD 12.2-RELEASE-p3 7851f4a452d(HEAD) TRUENAS amd64
FreeBSD clang version 10.0.1 (git@github.com:llvm/llvm-project.git llvmorg-10.0.1-0-gef32c611aa2)
VT(vga): text 80x25
CPU: Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz (2399.37-MHz K8-class CPU)
...

VM info

[admin@build ~]$ dmesg
FreeBSD 12.2-RELEASE r366954 GENERIC amd64
FreeBSD clang version 10.0.1 (git@github.com:llvm/llvm-project.git llvmorg-10.0.1-0-gef32c611aa2)
VT(efifb): resolution 1024x768
CPU: Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz (2399.33-MHz K8-class CPU)
...
Hypervisor: Origin = "bhyve bhyve "
real memory  = 68717379584 (65534 MB)
avail memory = 16618844160 (15848 MB)
Event timer "LAPIC" quality 600
ACPI APIC Table: <BHYVE  BVMADT  >
FreeBSD/SMP: Multiprocessor System Detected: 16 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s) x 4 hardware threads
...

VM OS info

[admin@build ~]$ uname -a
FreeBSD build.example.com 12.2-RELEASE FreeBSD 12.2-RELEASE r366954 GENERIC  amd64

QEMU list

[root@build /usr/home/admin]# /usr/local/etc/rc.d/qemu_user_static list

...

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: armv7
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

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

name: arm
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

Result (line 345 in the log below)

[12arm7-local-devel] [2021-04-03_21h04m45s] [committing:] Queued: 158 Built: 145 Failed: 1   Skipped: 12  Ignored: 0   Tobuild: 0    Time: 16:39:35

Command and log

  1[root@build /usr/home/admin]# poudriere bulk -j 12arm7 -p local -z devel -f /usr/local/etc/poudriere.d/pkglist_arm/minimal
  2[00:00:00] Cross-building ports for armv7 on amd64 requires QEMU
  3[00:00:00] Creating the reference jail... done
  4[00:00:15] Mounting system devices for 12arm7-local-devel
  5[00:00:15] Mounting ports/packages/distfiles
  6[00:00:15] Converting package repository to new format
  7[00:00:15] Stashing existing package repository
  8[00:00:15] Mounting packages from: /zroot/poudriere/data/packages/12arm7-local-devel
  9[00:00:15] Raising MAX_EXECUTION_TIME and NOHANG_TIME for QEMU from QEMU_ values
 10[00:00:15] Copying latest version of the emulator from: /usr/local/bin/qemu-arm-static
 11[00:00:15] Appending to make.conf: /usr/local/etc/poudriere.d/make.conf
 12/etc/resolv.conf -> /zroot/poudriere/data/.m/12arm7-local-devel/ref/etc/resolv.conf
 13[00:00:15] Starting jail 12arm7-local-devel
 14[00:00:50] Logs: /zroot/poudriere/data/logs/bulk/12arm7-local-devel/2021-04-03_21h04m45s
 15[00:00:50] WWW: http://build.example.com//build.html?mastername=12arm7-local-devel&build=2021-04-03_21h04m45s
 16[00:00:50] Loading MOVED for /zroot/poudriere/data/.m/12arm7-local-devel/ref/usr/ports
 17[00:00:56] Ports supports: FLAVORS SELECTED_OPTIONS
 18[00:00:56] Gathering ports metadata
 19[00:01:07] Calculating ports order and dependencies
 20[00:01:08] Sanity checking the repository
 21[00:01:08] Checking packages for incremental rebuild needs
 22[00:01:08] Deleting stale symlinks... done
 23[00:01:08] Deleting empty directories... done
 24[00:01:14] Cleaning the build queue
 25[00:01:14] Sanity checking build queue
 26[00:01:14] Processing PRIORITY_BOOST
 27[00:01:15] Balancing pool
 28[00:01:15] Recording filesystem state for prepkg... done
 29[00:01:15] Building 158 packages using 16 builders
 30[00:01:15] Starting/Cloning builders
 31[00:02:29] Hit CTRL+t at any time to see build progress and stats
 32[00:02:29] [01] [00:00:00] Building ports-mgmt/pkg | pkg-1.16.3
 33[00:23:45] [01] [00:21:16] Finished ports-mgmt/pkg | pkg-1.16.3: Success
 34[00:23:48] [01] [00:00:00] Building lang/perl5.32 | perl5-5.32.1_1
 35[00:23:48] [02] [00:00:00] Building print/indexinfo | indexinfo-0.3.1
 36[00:23:48] [03] [00:00:00] Building devel/pkgconf | pkgconf-1.7.4,1
 37[00:23:48] [04] [00:00:00] Building converters/libiconv | libiconv-1.16
 38[00:23:49] [05] [00:00:00] Building devel/autoconf-wrapper | autoconf-wrapper-20131203
 39[00:23:49] [06] [00:00:00] Building textproc/xmlcatmgr | xmlcatmgr-2.2_2
 40[00:23:49] [07] [00:00:00] Building textproc/expat2 | expat-2.2.10
 41[00:23:49] [08] [00:00:00] Building security/rhash | rhash-1.4.1
 42[00:23:49] [09] [00:00:00] Building devel/pcre | pcre-8.44
 43[00:23:49] [10] [00:00:00] Building lang/tcl86 | tcl86-8.6.11_1
 44[00:23:49] [11] [00:00:00] Building devel/libedit | libedit-3.1.20210216,1
 45[00:23:49] [12] [00:00:00] Building devel/npth | npth-1.6
 46[00:23:49] [13] [00:00:00] Building print/libpaper | libpaper-1.1.24.4
 47[00:23:49] [14] [00:00:00] Building devel/cvsps | cvsps-2.1_2
 48[00:23:49] [15] [00:00:00] Building ports-mgmt/portmaster | portmaster-3.19_27
 49[00:24:35] [05] [00:00:46] Finished devel/autoconf-wrapper | autoconf-wrapper-20131203: Success
 50[00:24:39] [15] [00:00:50] Finished ports-mgmt/portmaster | portmaster-3.19_27: Success
 51[00:24:44] [02] [00:00:56] Finished print/indexinfo | indexinfo-0.3.1: Success
 52[00:24:46] [02] [00:00:00] Building devel/readline | readline-8.1.0
 53[00:24:46] [05] [00:00:00] Building devel/libffi | libffi-3.3_1
 54[00:24:46] [15] [00:00:00] Building devel/gmake | gmake-4.3_2
 55[00:24:46] [16] [00:00:00] Building security/libgpg-error | libgpg-error-1.42
 56[00:26:25] [14] [00:02:36] Finished devel/cvsps | cvsps-2.1_2: Success
 57[00:26:28] [14] [00:00:00] Building devel/gettext-runtime | gettext-runtime-0.21
 58[00:27:41] [06] [00:03:52] Finished textproc/xmlcatmgr | xmlcatmgr-2.2_2: Success
 59[00:27:44] [06] [00:00:00] Building textproc/iso8879 | iso8879-1986_3
 60[00:28:34] [06] [00:00:50] Finished textproc/iso8879 | iso8879-1986_3: Success
 61[00:28:37] [06] [00:00:00] Building textproc/xmlcharent | xmlcharent-0.3_2
 62[00:28:39] [13] [00:04:50] Finished print/libpaper | libpaper-1.1.24.4: Success
 63[00:28:42] [13] [00:00:00] Building devel/libtextstyle | libtextstyle-0.21
 64[00:29:26] [06] [00:00:49] Finished textproc/xmlcharent | xmlcharent-0.3_2: Success
 65[00:29:29] [06] [00:00:00] Building textproc/sdocbook-xml | sdocbook-xml-1.1_2,2
 66[00:29:53] [12] [00:06:04] Finished devel/npth | npth-1.6: Success
 67[00:29:55] [12] [00:00:00] Building textproc/docbook-xml | docbook-xml-5.0_3
 68[00:30:17] [06] [00:00:48] Finished textproc/sdocbook-xml | sdocbook-xml-1.1_2,2: Success
 69[00:30:19] [06] [00:00:00] Building textproc/docbook-sgml | docbook-sgml-4.5_1
 70[00:31:19] [12] [00:01:24] Finished textproc/docbook-xml | docbook-xml-5.0_3: Success
 71[00:31:23] [12] [00:00:00] Building devel/libunistring | libunistring-0.9.10_1
 72[00:31:44] [06] [00:01:25] Finished textproc/docbook-sgml | docbook-sgml-4.5_1: Success
 73[00:31:47] [06] [00:00:00] Building textproc/docbook | docbook-1.5
 74[00:32:36] [06] [00:00:49] Finished textproc/docbook | docbook-1.5: Success
 75[00:32:38] [06] [00:00:00] Building textproc/docbook-xsl | docbook-xsl-1.79.1_1,1
 76[00:34:03] [05] [00:09:17] Finished devel/libffi | libffi-3.3_1: Success
 77[00:34:06] [05] [00:00:00] Building archivers/gtar | gtar-1.34
 78[00:34:40] [07] [00:10:51] Finished textproc/expat2 | expat-2.2.10: Success
 79[00:35:08] [03] [00:11:20] Finished devel/pkgconf | pkgconf-1.7.4,1: Success
 80[00:35:11] [03] [00:00:00] Building textproc/libxml2 | libxml2-2.9.10_3
 81[00:35:11] [07] [00:00:00] Building www/libnghttp2 | libnghttp2-1.43.0
 82[00:38:07] [08] [00:14:18] Finished security/rhash | rhash-1.4.1: Success
 83[00:38:10] [08] [00:00:00] Building security/libtasn1 | libtasn1-4.16.0_1
 84[00:40:19] [15] [00:15:33] Finished devel/gmake | gmake-4.3_2: Success
 85[00:40:23] [15] [00:00:00] Building databases/db5 | db5-5.3.28_7
 86[00:40:43] [06] [00:08:05] Finished textproc/docbook-xsl | docbook-xsl-1.79.1_1,1: Success
 87[00:40:49] [06] [00:00:00] Building textproc/libyaml | libyaml-0.2.5
 88[00:41:26] [11] [00:17:37] Finished devel/libedit | libedit-3.1.20210216,1: Success
 89[00:41:28] [11] [00:00:00] Building devel/libltdl | libltdl-2.4.6
 90[00:41:33] [16] [00:16:47] Finished security/libgpg-error | libgpg-error-1.42: Success
 91[00:41:36] [16] [00:00:00] Building security/libassuan | libassuan-2.5.4
 92[00:42:00] [04] [00:18:12] Finished converters/libiconv | libiconv-1.16: Success
 93[00:42:03] [04] [00:00:00] Building misc/getopt | getopt-1.1.6
 94[00:43:23] [04] [00:01:20] Finished misc/getopt | getopt-1.1.6: Success
 95[00:43:29] [04] [00:00:00] Building devel/xxhash | xxhash-0.8.0
 96[00:43:53] [02] [00:19:07] Finished devel/readline | readline-8.1.0: Success
 97[00:43:56] [02] [00:00:00] Building databases/gdbm | gdbm-1.19
 98[00:47:57] [04] [00:04:28] Finished devel/xxhash | xxhash-0.8.0: Success
 99[00:48:57] [11] [00:07:29] Finished devel/libltdl | libltdl-2.4.6: Success
100[00:51:15] [16] [00:09:39] Finished security/libassuan | libassuan-2.5.4: Success
101[00:51:18] [04] [00:00:00] Building security/pinentry-curses | pinentry-curses-1.1.1
102[00:52:04] [06] [00:11:15] Finished textproc/libyaml | libyaml-0.2.5: Success
103[00:52:52] [07] [00:17:41] Finished www/libnghttp2 | libnghttp2-1.43.0: Success
104[00:56:33] [04] [00:05:15] Finished security/pinentry-curses | pinentry-curses-1.1.1: Success
105[00:56:35] [04] [00:00:00] Building security/pinentry | pinentry-1.1.1
106[00:57:30] [04] [00:00:55] Finished security/pinentry | pinentry-1.1.1: Success
107[00:59:15] [08] [00:21:05] Finished security/libtasn1 | libtasn1-4.16.0_1: Success
108[00:59:16] [02] [00:15:20] Finished databases/gdbm | gdbm-1.19: Success
109[01:01:39] [14] [00:35:11] Finished devel/gettext-runtime | gettext-runtime-0.21: Success
110[01:13:49] [05] [00:39:43] Finished archivers/gtar | gtar-1.34: Success
111[01:15:44] [03] [00:40:33] Finished textproc/libxml2 | libxml2-2.9.10_3: Success
112[01:18:33] [10] [00:54:44] Finished lang/tcl86 | tcl86-8.6.11_1: Success
113[01:18:36] [02] [00:00:00] Building databases/sqlite3 | sqlite3-3.34.1,1
114[01:23:13] [09] [00:59:24] Finished devel/pcre | pcre-8.44: Success
115[01:25:00] [13] [00:56:18] Finished devel/libtextstyle | libtextstyle-0.21: Success
116[01:25:03] [03] [00:00:00] Building devel/gettext-tools | gettext-tools-0.21
117[02:01:52] [12] [01:30:29] Finished devel/libunistring | libunistring-0.9.10_1: Success
118[02:01:55] [04] [00:00:00] Building dns/libidn2 | libidn2-2.3.0_1
119[02:07:11] [02] [00:48:35] Finished databases/sqlite3 | sqlite3-3.34.1,1: Success
120[02:17:34] [15] [01:37:11] Finished databases/db5 | db5-5.3.28_7: Success
121[02:18:27] [04] [00:16:32] Finished dns/libidn2 | libidn2-2.3.0_1: Success
122[02:53:23] [01] [02:29:35] Finished lang/perl5.32 | perl5-5.32.1_1: Success
123[02:53:30] [01] [00:00:00] Building security/openssl | openssl-1.1.1j_1,1
124[02:53:30] [02] [00:00:00] Building converters/p5-Text-Unidecode | p5-Text-Unidecode-1.30
125[02:53:30] [04] [00:00:00] Building textproc/p5-Unicode-EastAsianWidth | p5-Unicode-EastAsianWidth-12.0
126[02:53:30] [05] [00:00:00] Building devel/p5-Locale-libintl | p5-Locale-libintl-1.32
127[02:53:30] [06] [00:00:00] Building misc/help2man | help2man-1.48.1
128[02:53:30] [07] [00:00:00] Building devel/p5-TimeDate | p5-TimeDate-2.33,1
129[02:53:30] [08] [00:00:00] Building security/libksba | libksba-1.5.0
130[02:53:30] [09] [00:00:00] Building devel/p5-Clone | p5-Clone-0.45
131[02:53:30] [10] [00:00:00] Building converters/p5-Encode-Locale | p5-Encode-Locale-1.05
132[02:53:30] [11] [00:00:00] Building www/p5-LWP-MediaTypes | p5-LWP-MediaTypes-6.04
133[02:53:30] [12] [00:00:00] Building devel/p5-IO-HTML | p5-IO-HTML-1.001_1
134[02:53:30] [13] [00:00:00] Building net/p5-URI | p5-URI-5.07
135[02:53:30] [14] [00:00:00] Building www/p5-HTML-Tagset | p5-HTML-Tagset-3.20_1
136[02:53:30] [15] [00:00:00] Building net/p5-Socket6 | p5-Socket6-0.29
137[02:53:30] [16] [00:00:00] Building textproc/utf8proc | utf8proc-2.6.1
138[02:56:01] [04] [00:02:31] Finished textproc/p5-Unicode-EastAsianWidth | p5-Unicode-EastAsianWidth-12.0: Success
139[02:56:02] [10] [00:02:32] Finished converters/p5-Encode-Locale | p5-Encode-Locale-1.05: Success
140[02:56:02] [14] [00:02:32] Finished www/p5-HTML-Tagset | p5-HTML-Tagset-3.20_1: Success
141[02:56:03] [12] [00:02:33] Finished devel/p5-IO-HTML | p5-IO-HTML-1.001_1: Success
142[02:56:03] [04] [00:00:00] Building security/p5-Digest-HMAC | p5-Digest-HMAC-1.03_1
143[02:56:05] [11] [00:02:35] Finished www/p5-LWP-MediaTypes | p5-LWP-MediaTypes-6.04: Success
144[02:56:05] [10] [00:00:00] Building www/p5-Mozilla-CA | p5-Mozilla-CA-20200520
145[02:56:05] [14] [00:00:00] Building lang/p5-Error | p5-Error-0.17029
146[02:56:05] [12] [00:00:00] Building devel/p5-Term-ReadKey | p5-Term-ReadKey-2.38_1
147[02:56:08] [07] [00:02:38] Finished devel/p5-TimeDate | p5-TimeDate-2.33,1: Success
148[02:56:11] [07] [00:00:00] Building www/p5-HTTP-Date | p5-HTTP-Date-6.05
149[02:56:17] [13] [00:02:47] Finished net/p5-URI | p5-URI-5.07: Success
150[02:56:20] [16] [00:02:50] Finished textproc/utf8proc | utf8proc-2.6.1: Success
151[02:56:24] [09] [00:02:54] Finished devel/p5-Clone | p5-Clone-0.45: Success
152[02:56:34] [02] [00:03:04] Finished converters/p5-Text-Unidecode | p5-Text-Unidecode-1.30: Success
153[02:56:50] [06] [00:03:20] Finished misc/help2man | help2man-1.48.1: Success
154[02:57:48] [05] [00:04:18] Finished devel/p5-Locale-libintl | p5-Locale-libintl-1.32: Success
155[02:57:50] [02] [00:00:00] Building print/texinfo | texinfo-6.7_4,1
156[02:57:58] [04] [00:01:55] Finished security/p5-Digest-HMAC | p5-Digest-HMAC-1.03_1: Success
157[02:57:59] [10] [00:01:54] Finished www/p5-Mozilla-CA | p5-Mozilla-CA-20200520: Success
158[02:58:00] [04] [00:00:00] Building security/p5-Authen-SASL | p5-Authen-SASL-2.16_1
159[02:58:04] [14] [00:01:59] Finished lang/p5-Error | p5-Error-0.17029: Success
160[02:58:07] [15] [00:04:37] Finished net/p5-Socket6 | p5-Socket6-0.29: Success
161[02:58:09] [05] [00:00:00] Building net/p5-IO-Socket-INET6 | p5-IO-Socket-INET6-2.72_1
162[02:58:10] [07] [00:01:59] Finished www/p5-HTTP-Date | p5-HTTP-Date-6.05: Success
163[02:58:12] [06] [00:00:00] Building www/p5-HTTP-Message | p5-HTTP-Message-6.28
164[02:58:24] [12] [00:02:19] Finished devel/p5-Term-ReadKey | p5-Term-ReadKey-2.38_1: Success
165[02:59:42] [05] [00:01:33] Finished net/p5-IO-Socket-INET6 | p5-IO-Socket-INET6-2.72_1: Success
166[02:59:43] [04] [00:01:43] Finished security/p5-Authen-SASL | p5-Authen-SASL-2.16_1: Success
167[03:00:05] [06] [00:01:53] Finished www/p5-HTTP-Message | p5-HTTP-Message-6.28: Success
168[03:00:07] [04] [00:00:00] Building www/p5-HTML-Parser | p5-HTML-Parser-3.75
169[03:02:13] [04] [00:02:06] Finished www/p5-HTML-Parser | p5-HTML-Parser-3.75: Success
170[03:02:14] [04] [00:00:00] Building www/p5-CGI | p5-CGI-4.51
171[03:03:47] [04] [00:01:33] Finished www/p5-CGI | p5-CGI-4.51: Success
172[03:07:57] [08] [00:14:27] Finished security/libksba | libksba-1.5.0: Success
173[03:22:59] [02] [00:25:09] Finished print/texinfo | texinfo-6.7_4,1: Success
174[03:23:02] [02] [00:00:00] Building devel/m4 | m4-1.4.18_1,1
175[03:23:02] [04] [00:00:00] Building security/libgcrypt | libgcrypt-1.9.2_1
176[03:23:02] [05] [00:00:00] Building math/gmp | gmp-6.2.1
177[03:42:04] [02] [00:19:02] Finished devel/m4 | m4-1.4.18_1,1: Success
178[03:42:06] [02] [00:00:00] Building devel/autoconf | autoconf-2.69_3
179[03:42:06] [06] [00:00:00] Building devel/libtool | libtool-2.4.6_1
180[03:42:06] [07] [00:00:00] Building devel/bison | bison-3.7.5,1
181[03:48:13] [02] [00:06:07] Finished devel/autoconf | autoconf-2.69_3: Success
182[03:48:15] [02] [00:00:00] Building devel/automake | automake-1.16.3
183[03:49:45] [06] [00:07:39] Finished devel/libtool | libtool-2.4.6_1: Success
184[03:52:00] [02] [00:03:45] Finished devel/automake | automake-1.16.3: Success
185[03:52:01] [02] [00:00:00] Building devel/libuv | libuv-1.41.0
186[03:52:01] [06] [00:00:00] Building devel/libatomic_ops | libatomic_ops-7.6.10
187[03:52:01] [08] [00:00:00] Building devel/pcre2 | pcre2-10.36
188[03:57:06] [03] [02:32:03] Finished devel/gettext-tools | gettext-tools-0.21: Success
189[03:58:04] [06] [00:06:03] Finished devel/libatomic_ops | libatomic_ops-7.6.10: Success
190[03:58:06] [03] [00:00:00] Building devel/boehm-gc | boehm-gc-8.0.4_1
191[03:59:18] [04] [00:36:16] Finished security/libgcrypt | libgcrypt-1.9.2_1: Failed: build
192[03:59:20] [04] [00:36:18] Skipping devel/git | git-2.31.0: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
193[03:59:20] [04] [00:36:18] Skipping devel/glib20 | glib-2.66.7_1,1: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
194[03:59:20] [04] [00:36:18] Skipping security/gnupg | gnupg-2.2.27: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
195[03:59:20] [04] [00:36:18] Skipping security/gnutls | gnutls-3.6.15: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
196[03:59:20] [04] [00:36:18] Skipping textproc/gtk-doc | gtk-doc-1.33.2: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
197[03:59:20] [04] [00:36:18] Skipping textproc/libxslt | libxslt-1.1.34_1: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
198[03:59:20] [04] [00:36:18] Skipping security/p11-kit | p11-kit-0.23.22_1: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
199[03:59:20] [04] [00:36:18] Skipping devel/p5-subversion | p5-subversion-1.14.1: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
200[03:59:20] [04] [00:36:18] Skipping devel/subversion | subversion-1.14.1: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
201[03:59:20] [04] [00:36:18] Skipping textproc/xmlto | xmlto-0.0.28: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
202[03:59:20] [04] [00:36:18] Skipping textproc/yelp-tools | yelp-tools-3.38.0: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
203[03:59:20] [04] [00:36:18] Skipping textproc/yelp-xsl | yelp-xsl-3.38.3: Dependent port security/libgcrypt | libgcrypt-1.9.2_1 failed
204[04:07:41] [03] [00:09:35] Finished devel/boehm-gc | boehm-gc-8.0.4_1: Success
205[04:12:27] [02] [00:20:26] Finished devel/libuv | libuv-1.41.0: Success
206[04:12:50] [07] [00:30:44] Finished devel/bison | bison-3.7.5,1: Success
207[04:12:52] [02] [00:00:00] Building shells/bash | bash-5.1.4_1
208[04:40:07] [08] [00:48:06] Finished devel/pcre2 | pcre2-10.36: Success
209[04:44:41] [02] [00:31:49] Finished shells/bash | bash-5.1.4_1: Success
210[04:44:44] [02] [00:00:00] Building shells/bash-completion | bash-completion-2.11,2
211[04:49:35] [02] [00:04:51] Finished shells/bash-completion | bash-completion-2.11,2: Success
212[04:57:06] [05] [01:34:04] Finished math/gmp | gmp-6.2.1: Success
213[04:57:09] [02] [00:00:00] Building security/nettle | nettle-3.6
214[05:07:59] [01] [02:14:29] Finished security/openssl | openssl-1.1.1j_1,1: Success
215[05:08:05] [01] [00:00:00] Building lang/python37 | python37-3.7.10
216[05:08:05] [03] [00:00:00] Building security/ca_root_nss | ca_root_nss-3.63
217[05:08:05] [04] [00:00:00] Building lang/ruby27 | ruby-2.7.2_1,1
218[05:08:05] [05] [00:00:00] Building devel/apr1 | apr-1.7.0.1.6.1_1
219[05:08:05] [06] [00:00:00] Building www/w3m | w3m-0.5.3.20210306
220[05:08:05] [07] [00:00:00] Building security/p5-Net-SSLeay | p5-Net-SSLeay-1.88
221[05:08:05] [08] [00:00:00] Building ftp/wget | wget-1.21
222[05:10:25] [03] [00:02:20] Finished security/ca_root_nss | ca_root_nss-3.63: Success
223[05:10:27] [03] [00:00:00] Building ftp/curl | curl-7.75.0
224[05:13:15] [07] [00:05:10] Finished security/p5-Net-SSLeay | p5-Net-SSLeay-1.88: Success
225[05:13:17] [07] [00:00:00] Building security/p5-IO-Socket-SSL | p5-IO-Socket-SSL-2.070
226[05:15:18] [07] [00:02:01] Finished security/p5-IO-Socket-SSL | p5-IO-Socket-SSL-2.070: Success
227[05:24:15] [06] [00:16:10] Finished www/w3m | w3m-0.5.3.20210306: Success
228[05:29:19] [02] [00:32:10] Finished security/nettle | nettle-3.6: Success
229[05:39:51] [08] [00:31:46] Finished ftp/wget | wget-1.21: Success
230[06:01:19] [03] [00:50:52] Finished ftp/curl | curl-7.75.0: Success
231[06:08:04] [05] [00:59:59] Finished devel/apr1 | apr-1.7.0.1.6.1_1: Success
232[06:22:20] [01] [01:14:15] Finished lang/python37 | python37-3.7.10: Success
233[06:22:25] [01] [00:00:00] Building devel/py-setuptools@py37 | py37-setuptools-44.0.0
234[06:22:25] [02] [00:00:00] Building devel/ninja | ninja-1.10.2,2
235[06:23:57] [01] [00:01:32] Finished devel/py-setuptools@py37 | py37-setuptools-44.0.0: Success
236[06:24:01] [01] [00:00:00] Building devel/py-pycparser@py37 | py37-pycparser-2.20
237[06:24:01] [03] [00:00:00] Building devel/py-six@py37 | py37-six-1.15.0
238[06:24:01] [05] [00:00:00] Building devel/py-pytz@py37 | py37-pytz-2020.5,1
239[06:24:01] [06] [00:00:00] Building net/py-pysocks@py37 | py37-pysocks-1.7.1
240[06:24:01] [07] [00:00:00] Building security/py-certifi@py37 | py37-certifi-2020.12.5
241[06:24:01] [08] [00:00:00] Building dns/py-idna@py37 | py37-idna-2.10
242[06:24:01] [09] [00:00:00] Building lang/cython@py37 | py37-cython-0.29.21
243[06:24:01] [10] [00:00:00] Building textproc/py-chardet@py37 | py37-chardet-3.0.4_3,1
244[06:24:01] [11] [00:00:00] Building textproc/py-libxml2@py37 | py37-libxml2-2.9.10_3
245[06:24:01] [12] [00:00:00] Building devel/py-pyparsing@py37 | py37-pyparsing-2.4.7
246[06:24:01] [13] [00:00:00] Building textproc/py-markupsafe@py37 | py37-markupsafe-1.1.1_1
247[06:24:01] [14] [00:00:00] Building textproc/py-alabaster@py37 | py37-alabaster-0.7.6
248[06:24:01] [15] [00:00:00] Building textproc/py-docutils@py37 | py37-docutils-0.16
249[06:24:01] [16] [00:00:00] Building textproc/py-sphinxcontrib-devhelp@py37 | py37-sphinxcontrib-devhelp-1.0.2
250[06:26:35] [14] [00:02:34] Finished textproc/py-alabaster@py37 | py37-alabaster-0.7.6: Success
251[06:26:39] [03] [00:02:38] Finished devel/py-six@py37 | py37-six-1.15.0: Success
252[06:26:39] [16] [00:02:38] Finished textproc/py-sphinxcontrib-devhelp@py37 | py37-sphinxcontrib-devhelp-1.0.2: Success
253[06:26:40] [06] [00:02:39] Finished net/py-pysocks@py37 | py37-pysocks-1.7.1: Success
254[06:26:40] [07] [00:02:39] Finished security/py-certifi@py37 | py37-certifi-2020.12.5: Success
255[06:26:43] [14] [00:00:00] Building textproc/py-sphinxcontrib-qthelp@py37 | py37-sphinxcontrib-qthelp-1.0.3
256[06:26:44] [12] [00:02:43] Finished devel/py-pyparsing@py37 | py37-pyparsing-2.4.7: Success
257[06:26:45] [08] [00:02:44] Finished dns/py-idna@py37 | py37-idna-2.10: Success
258[06:26:47] [03] [00:00:00] Building textproc/py-pygments@py37 | py37-pygments-2.7.2
259[06:26:47] [16] [00:00:00] Building graphics/py-imagesize@py37 | py37-imagesize-1.1.0
260[06:26:47] [06] [00:00:00] Building textproc/py-sphinxcontrib-htmlhelp@py37 | py37-sphinxcontrib-htmlhelp-1.0.3
261[06:26:48] [07] [00:00:00] Building textproc/py-sphinxcontrib-jsmath@py37 | py37-sphinxcontrib-jsmath-1.0.1
262[06:26:48] [13] [00:02:47] Finished textproc/py-markupsafe@py37 | py37-markupsafe-1.1.1_1: Success
263[06:26:50] [10] [00:02:49] Finished textproc/py-chardet@py37 | py37-chardet-3.0.4_3,1: Success
264[06:26:52] [01] [00:02:51] Finished devel/py-pycparser@py37 | py37-pycparser-2.20: Success
265[06:26:53] [12] [00:00:00] Building textproc/py-sphinxcontrib-applehelp@py37 | py37-sphinxcontrib-applehelp-1.0.2
266[06:26:54] [08] [00:00:00] Building devel/py-packaging@py37 | py37-packaging-20.9
267[06:26:56] [05] [00:02:55] Finished devel/py-pytz@py37 | py37-pytz-2020.5,1: Success
268[06:26:57] [13] [00:00:00] Building textproc/py-sphinxcontrib-serializinghtml@py37 | py37-sphinxcontrib-serializinghtml-1.1.4
269[06:27:00] [10] [00:00:00] Building devel/scons@py37 | scons-py37-3.1.2
270[06:27:03] [01] [00:00:00] Building devel/py-cffi@py37 | py37-cffi-1.14.5
271[06:27:08] [05] [00:00:00] Building devel/py-babel@py37 | py37-Babel-2.9.0
272[06:27:40] [15] [00:03:39] Finished textproc/py-docutils@py37 | py37-docutils-0.16: Success
273[06:29:03] [14] [00:02:20] Finished textproc/py-sphinxcontrib-qthelp@py37 | py37-sphinxcontrib-qthelp-1.0.3: Success
274[06:29:12] [16] [00:02:25] Finished graphics/py-imagesize@py37 | py37-imagesize-1.1.0: Success
275[06:29:14] [07] [00:02:26] Finished textproc/py-sphinxcontrib-jsmath@py37 | py37-sphinxcontrib-jsmath-1.0.1: Success
276[06:29:18] [06] [00:02:31] Finished textproc/py-sphinxcontrib-htmlhelp@py37 | py37-sphinxcontrib-htmlhelp-1.0.3: Success
277[06:29:24] [12] [00:02:31] Finished textproc/py-sphinxcontrib-applehelp@py37 | py37-sphinxcontrib-applehelp-1.0.2: Success
278[06:29:25] [13] [00:02:28] Finished textproc/py-sphinxcontrib-serializinghtml@py37 | py37-sphinxcontrib-serializinghtml-1.1.4: Success
279[06:29:28] [08] [00:02:34] Finished devel/py-packaging@py37 | py37-packaging-20.9: Success
280[06:29:59] [10] [00:02:59] Finished devel/scons@py37 | scons-py37-3.1.2: Success
281[06:29:59] [03] [00:03:12] Finished textproc/py-pygments@py37 | py37-pygments-2.7.2: Success
282[06:30:04] [06] [00:00:00] Building www/serf | serf-1.3.9_6
283[06:30:43] [01] [00:03:40] Finished devel/py-cffi@py37 | py37-cffi-1.14.5: Success
284[06:30:48] [01] [00:00:00] Building security/py-cryptography@py37 | py37-cryptography-3.3.2
285[06:31:19] [05] [00:04:11] Finished devel/py-babel@py37 | py37-Babel-2.9.0: Success
286[06:31:24] [03] [00:00:00] Building devel/py-Jinja2@py37 | py37-Jinja2-2.11.2_1
287[06:33:01] [03] [00:01:37] Finished devel/py-Jinja2@py37 | py37-Jinja2-2.11.2_1: Success
288[06:33:13] [11] [00:09:12] Finished textproc/py-libxml2@py37 | py37-libxml2-2.9.10_3: Success
289[06:33:18] [03] [00:00:00] Building textproc/itstool | itstool-2.0.6
290[06:34:57] [03] [00:01:39] Finished textproc/itstool | itstool-2.0.6: Success
291[06:37:18] [06] [00:07:14] Finished www/serf | serf-1.3.9_6: Success
292[06:37:51] [01] [00:07:03] Finished security/py-cryptography@py37 | py37-cryptography-3.3.2: Success
293[06:37:56] [01] [00:00:00] Building security/py-openssl@py37 | py37-openssl-20.0.1
294[06:38:05] [02] [00:15:40] Finished devel/ninja | ninja-1.10.2,2: Success
295[06:38:10] [02] [00:00:00] Building devel/meson | meson-0.57.1
296[06:39:17] [01] [00:01:21] Finished security/py-openssl@py37 | py37-openssl-20.0.1: Success
297[06:39:21] [01] [00:00:00] Building net/py-urllib3@py37 | py37-urllib3-1.25.11,1
298[06:40:07] [02] [00:01:57] Finished devel/meson | meson-0.57.1: Success
299[06:40:14] [02] [00:00:00] Building archivers/liblz4 | liblz4-1.9.3,1
300[06:40:14] [03] [00:00:00] Building devel/jsoncpp | jsoncpp-1.9.4
301[06:40:58] [01] [00:01:37] Finished net/py-urllib3@py37 | py37-urllib3-1.25.11,1: Success
302[06:41:04] [01] [00:00:00] Building www/py-requests@py37 | py37-requests-2.22.0_2
303[06:42:32] [01] [00:01:28] Finished www/py-requests@py37 | py37-requests-2.22.0_2: Success
304[06:44:41] [02] [00:04:27] Finished archivers/liblz4 | liblz4-1.9.3,1: Success
305[06:44:45] [01] [00:00:00] Building archivers/libarchive | libarchive-3.5.1,1
306[06:44:45] [02] [00:00:00] Building archivers/zstd | zstd-1.4.8
307[06:46:32] [09] [00:22:31] Finished lang/cython@py37 | py37-cython-0.29.21: Success
308[06:46:37] [05] [00:00:00] Building textproc/py-pystemmer@py37 | py37-pystemmer-2.0.0.1
309[06:48:39] [03] [00:08:25] Finished devel/jsoncpp | jsoncpp-1.9.4: Success
310[06:50:55] [05] [00:04:18] Finished textproc/py-pystemmer@py37 | py37-pystemmer-2.0.0.1: Success
311[06:50:59] [03] [00:00:00] Building textproc/py-snowballstemmer@py37 | py37-snowballstemmer-1.2.1
312[06:52:21] [03] [00:01:22] Finished textproc/py-snowballstemmer@py37 | py37-snowballstemmer-1.2.1: Success
313[06:52:26] [03] [00:00:00] Building textproc/py-sphinx@py37 | py37-sphinx-3.5.2,1
314[06:55:31] [03] [00:03:05] Finished textproc/py-sphinx@py37 | py37-sphinx-3.5.2,1: Success
315[07:00:16] [02] [00:15:31] Finished archivers/zstd | zstd-1.4.8: Success
316[07:00:21] [02] [00:00:00] Building net/rsync | rsync-3.2.3
317[07:15:27] [02] [00:15:06] Finished net/rsync | rsync-3.2.3: Success
318[07:30:49] [01] [00:46:04] Finished archivers/libarchive | libarchive-3.5.1,1: Success
319[07:30:51] [01] [00:00:00] Building devel/cmake | cmake-3.19.6
320[07:52:13] [04] [02:44:08] Finished lang/ruby27 | ruby-2.7.2_1,1: Success
321[07:52:23] [02] [00:00:00] Building devel/ruby-gems | ruby27-gems-3.0.8
322[07:53:27] [02] [00:01:04] Finished devel/ruby-gems | ruby27-gems-3.0.8: Success
323[07:53:29] [02] [00:00:00] Building devel/rubygem-rdoc | rubygem-rdoc-6.3.0
324[07:53:29] [03] [00:00:00] Building textproc/rubygem-asciidoctor | rubygem-asciidoctor-2.0.12
325[07:54:52] [03] [00:01:23] Finished textproc/rubygem-asciidoctor | rubygem-asciidoctor-2.0.12: Success
326[07:54:57] [02] [00:01:28] Finished devel/rubygem-rdoc | rubygem-rdoc-6.3.0: Success
327[07:54:59] [02] [00:00:00] Building databases/ruby-bdb | ruby27-bdb-0.6.6_8
328[08:24:12] [02] [00:29:13] Finished databases/ruby-bdb | ruby27-bdb-0.6.6_8: Success
329[08:24:14] [02] [00:00:00] Building ports-mgmt/portupgrade | portupgrade-2.4.16,2
330[08:26:32] [02] [00:02:18] Finished ports-mgmt/portupgrade | portupgrade-2.4.16,2: Success
331[15:01:07] [01] [07:30:16] Finished devel/cmake | cmake-3.19.6: Success
332[15:01:17] [01] [00:00:00] Building emulators/tpm-emulator | tpm-emulator-0.7.4_2
333[15:08:01] [01] [00:06:44] Finished emulators/tpm-emulator | tpm-emulator-0.7.4_2: Success
334[15:08:03] [01] [00:00:00] Building security/trousers | trousers-0.3.14_3
335[16:38:49] [01] [01:30:46] Finished security/trousers | trousers-0.3.14_3: Success
336[16:38:52] Stopping 16 builders
337[16:40:24] Creating pkg repository
338Creating repository in /tmp/packages: 100%
339Packing files for repository: 100%
340[16:40:25] Committing packages to repository: /zroot/poudriere/data/packages/12arm7-local-devel/.real_1617536710 via .latest symlink
341[16:40:25] Removing old packages
342[16:40:25] Built ports: ports-mgmt/pkg devel/autoconf-wrapper ports-mgmt/portmaster print/indexinfo devel/cvsps textproc/xmlcatmgr textproc/iso8879 print/libpaper textproc/xmlcharent devel/npth textproc/sdocbook-xml textproc/docbook-xml textproc/docbook-sgml textproc/docbook devel/libffi textproc/expat2 devel/pkgconf security/rhash devel/gmake textproc/docbook-xsl devel/libedit security/libgpg-error converters/libiconv misc/getopt devel/readline devel/xxhash devel/libltdl security/libassuan textproc/libyaml www/libnghttp2 security/pinentry-curses security/pinentry security/libtasn1 databases/gdbm devel/gettext-runtime archivers/gtar textproc/libxml2 lang/tcl86 devel/pcre devel/libtextstyle devel/libunistring databases/sqlite3 databases/db5 dns/libidn2 lang/perl5.32 textproc/p5-Unicode-EastAsianWidth converters/p5-Encode-Locale www/p5-HTML-Tagset devel/p5-IO-HTML www/p5-LWP-MediaTypes devel/p5-TimeDate net/p5-URI textproc/utf8proc devel/p5-Clone converters/p5-Text-Unidecode misc/help2man devel/p5-Locale-libintl security/p5-Digest-HMAC www/p5-Mozilla-CA lang/p5-Error net/p5-Socket6 www/p5-HTTP-Date devel/p5-Term-ReadKey net/p5-IO-Socket-INET6 security/p5-Authen-SASL www/p5-HTTP-Message www/p5-HTML-Parser www/p5-CGI security/libksba print/texinfo devel/m4 devel/autoconf devel/libtool devel/automake devel/gettext-tools devel/libatomic_ops devel/boehm-gc devel/libuv devel/bison devel/pcre2 shells/bash shells/bash-completion math/gmp security/openssl security/ca_root_nss security/p5-Net-SSLeay security/p5-IO-Socket-SSL www/w3m security/nettle ftp/wget ftp/curl devel/apr1 lang/python37 devel/py-setuptools textproc/py-alabaster devel/py-six textproc/py-sphinxcontrib-devhelp net/py-pysocks security/py-certifi devel/py-pyparsing dns/py-idna textproc/py-markupsafe textproc/py-chardet devel/py-pycparser devel/py-pytz textproc/py-docutils textproc/py-sphinxcontrib-qthelp graphics/py-imagesize textproc/py-sphinxcontrib-jsmath textproc/py-sphinxcontrib-htmlhelp textproc/py-sphinxcontrib-applehelp textproc/py-sphinxcontrib-serializinghtml devel/py-packaging devel/scons textproc/py-pygments devel/py-cffi devel/py-babel devel/py-Jinja2 textproc/py-libxml2 textproc/itstool www/serf security/py-cryptography devel/ninja security/py-openssl devel/meson net/py-urllib3 www/py-requests archivers/liblz4 lang/cython devel/jsoncpp textproc/py-pystemmer textproc/py-snowballstemmer textproc/py-sphinx archivers/zstd net/rsync archivers/libarchive lang/ruby27 devel/ruby-gems textproc/rubygem-asciidoctor devel/rubygem-rdoc databases/ruby-bdb ports-mgmt/portupgrade devel/cmake emulators/tpm-emulator security/trousers
343[16:40:25] Failed ports: security/libgcrypt:build
344[16:40:25] Skipped ports: devel/git devel/glib20 devel/p5-subversion devel/subversion security/gnupg security/gnutls security/p11-kit textproc/gtk-doc textproc/libxslt textproc/xmlto textproc/yelp-tools textproc/yelp-xsl
345[12arm7-local-devel] [2021-04-03_21h04m45s] [committing:] Queued: 158 Built: 145 Failed: 1   Skipped: 12  Ignored: 0   Tobuild: 0    Time: 16:39:35
346[16:40:25] Logs: /zroot/poudriere/data/logs/bulk/12arm7-local-devel/2021-04-03_21h04m45s
347[16:40:25] WWW: http://build.example.com//build.html?mastername=12arm7-local-devel&build=2021-04-03_21h04m45s
348[16:40:25] Cleaning up
349[16:40:25] Unmounting file systems

http://build.example.com/logs/bulk/12arm7-local-devel/latest/build.html

alternate text

Note

Meanwhile, the failed port security/libgcrypt was fixed

Note

When web-server is configured (see the next section Export data) the current status should be available on-line, e.g. https://build.example.com/logs/bulk/12arm7-local-devel/latest/build.html

See also

Batch

Build packages from all lists in the dictionary, e.g.

#!/bin/sh
for i in /usr/local/etc/poudriere.d/pkglist_arm/*; do
  poudriere bulk -j 12arm7 -p local -z devel -f ${i}
done

Speedup the process and specify all lists in one command, e.g.

#!/bin/sh
my_dir=/usr/local/etc/poudriere.d/pkglist_arm/
my_lists=`find ${my_dir}* | xargs printf " -f %s"`
poudriere bulk -j 12arm7 -p local -z devel ${my_lists}

Export data

By default, Poudriere stores the data in /usr/local/poudriere/data/

[root@build /usr/home/admin]# tree -d -L 2 /usr/local/poudriere/data/
/usr/local/poudriere/data/
|-- cache
|   |-- 12amd64-local-devel
|   `-- 12arm7-local-devel
|-- logs
|   `-- bulk
`-- packages
    |-- 12amd64-local-devel
    `-- 12arm7-local-devel

8 directories

Configure a web-server, e.g. Apache

[root@build /usr/local/etc]# cat /usr/local/etc/apache24/Includes/usr-local-poudriere-data.conf
<Directory /usr/local/poudriere/data>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

[root@build /usr/local/etc]# cat /usr/local/etc/apache24/extra/build.example.com.conf
   <VirtualHost *:80>
   ServerName build.example.com
   DocumentRoot /usr/local/poudriere/data/
   </VirtualHost>

   <VirtualHost *:443>
   ServerName build.example.com
   DocumentRoot /usr/local/poudriere/data/
   SSLCertificateFile /usr/local/etc/ssl/certs/build.example.com.crt
   SSLCertificateKeyFile /usr/local/etc/ssl/private/build.example.com.key
   </VirtualHost>

The web page https://build.example.com/ should display the list

Index of /

    .m/
    cache/
    logs/
    packages/

Navigate through the packages, e.g. https://build.example.com/packages/12arm7-local-devel/

Index of /packages/12arm7-local-devel

    Parent Directory
    .building/
    .buildname
    .jailversion
    .latest/
    .real_1618001637/
    All/
    Latest/
    meta.conf
    meta.txz
    packagesite.txz

and display the packages, e.g. https://build.example.com/packages/12arm7-local-devel/All/

Index of /packages/12arm7-local-devel/All

  Parent Directory
  apr-1.7.0.1.6.1_1.txz
  autoconf-2.69_3.txz
  autoconf-wrapper-20131203.txz
  automake-1.16.3.txz
  bash-5.1.4_1.txz
  bash-completion-2.11,2.txz
  bison-3.7.5,1.txz
  boehm-gc-8.0.4_1.txz
  ca_root_nss-3.63.txz
  curl-7.75.0.txz
  cvsps-2.1_2.txz
  db5-5.3.28_7.txz
  dhcpdump-1.8.txz
  docbook-1.5.txz
  docbook-sgml-4.5_1.txz
  docbook-xml-5.0_3.txz
  docbook-xsl-1.79.1_1,1.txz
  expat-2.2.10.txz
  gdbm-1.19.txz
  getopt-1.1.6.txz
  gettext-runtime-0.21.txz
  gettext-tools-0.21.txz
  git-2.31.1.txz
  glib-2.66.7_1,1.txz
  gmake-4.3_2.txz
  gmp-6.2.1.txz
  ...

Review the logs, if needed, e.g. https://build.example.com/logs/bulk/12arm7-local-devel/

Index of /logs/bulk/12arm7-local-devel

    Parent Directory
    .data.json
    2021-04-03_21h04m45s/
    2021-04-08_22h07m13s/
    2021-04-08_23h01m24s/
    2021-04-09_20h55m10s/
    2021-04-09_21h57m50s/
    2021-04-09_22h53m58s/
    latest-done/
    latest-per-pkg/
    latest/

Configure clients

Log to the client and configure the repository

root@generic:/home/admin # uname -a
FreeBSD generic 12.2-STABLE FreeBSD 12.2-STABLE r369071 GENERIC  arm

root@generic:/home/admin # cat /usr/local/etc/pkg/repos/poudriere.conf
poudriere: {
    url: "http://build.example.com/packages/12arm7-local-devel",
    mirror_type: "http",
    enabled: yes,
    priority: 100,
    signature_type: "pubkey",
    pubkey: "/usr/local/etc/ssl/certs/build.example.com-sk.crt"
}

Disable the official repositories

root@generic:/home/admin # cat /usr/local/etc/pkg/repos/freebsd.conf
FreeBSD: {
    enabled: no
}

Update your pkg database

root@generic:/home/admin # pkg update
Updating poudriere repository catalogue...
Fetching meta.conf: 100%    163 B   0.2kB/s    00:01
Fetching packagesite.txz: 100%   42 KiB  42.8kB/s    00:01
Processing entries: 100%
poudriere repository update completed. 145 packages processed.
All repositories are up to date.

Display details

root@generic:/home/admin # pkg -vv
...
Repositories:
poudriere: {
  url             : "http://build.example.com/packages/12arm7-local-devel",
  enabled         : yes,
  priority        : 100,
  mirror_type     : "HTTP",
  signature_type  : "PUBKEY",
  pubkey          : "/usr/local/etc/ssl/certs/build.example.com-sk.crt"
}

Note

It seems, it’s not possible to force pkg accept self-signed https certificate. Settting url: "https:// build ... without verified certificate results in the error SSL routines:tls_process_server_certificate:certificate verify failed pkg: https://build.example.com/ ... /packagesite.txz: Authentication error See DO comment.

Manage packages

root@generic:/home/admin # pkg info | grep pkg
pkg-1.15.10                    Package manager

root@generic:/home/admin # pkg upgrade pkg
Updating poudriere repository catalogue...
poudriere repository is up to date.
All repositories are up to date.
New version of pkg detected; it needs to be installed first.
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
pkg: 1.15.10 -> 1.16.3

Number of packages to be upgraded: 1

The process will require 2 MiB more space.
7 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching pkg-1.16.3.txz: 100%    7 MiB   7.0MB/s    00:01
Checking integrity... done (0 conflicting)
[1/1] Upgrading pkg from 1.15.10 to 1.16.3...
[1/1] Extracting pkg-1.16.3: 100%
Updating poudriere repository catalogue...
poudriere repository is up to date.
All repositories are up to date.
Checking integrity... done (0 conflicting)
Your packages are up to date.

Annotated source code

Tasks

main.yml

Synopsis: Main task.

Import tasks if enabled.

[tasks/main.yml]

 1---
 2# tasks freebsd_poudriere
 3
 4- name: debug.yml
 5  ansible.builtin.import_tasks: debug.yml
 6  when: poudriere_debug|bool
 7  tags: poudriere_debug
 8
 9- name: packages.yml
10  ansible.builtin.import_tasks: packages.yml
11  when: poudriere_install|bool
12  tags: poudriere_packages
13
14- name: dirs.yml
15  ansible.builtin.import_tasks: dirs.yml
16  when: poudriere_dirs|bool
17  tags: poudriere_dirs
18
19- name: key.yml
20  ansible.builtin.import_tasks: key.yml
21  when: poudriere_key|bool
22  tags: poudriere_key
23
24- name: cert.yml
25  ansible.builtin.import_tasks: cert.yml
26  when: poudriere_cert|bool
27  tags: poudriere_cert
28
29- name: conf.yml
30  ansible.builtin.import_tasks: conf.yml
31  when: poudriere_conf|bool
32  tags: poudriere_conf
33
34- name: pkglists.yml
35  ansible.builtin.import_tasks: pkglists.yml
36  when: poudriere_pkglists|bool
37  tags: poudriere_pkglists
38
39- name: options.yml
40  ansible.builtin.import_tasks: options.yml
41  when: poudriere_options|bool
42  tags: poudriere_options
43
44- name: make.yml
45  ansible.builtin.import_tasks: make.yml
46  when: poudriere_make|bool
47  tags: poudriere_make
48
49# EOF
50...

debug.yml

Synopsis: Configure debug.

Description of the task.

[tasks/debug.yml]

 1---
 2
 3- name: Poudriere Debug
 4  vars:
 5    msg: |-
 6         ansible_architecture [{{ ansible_architecture }}]
 7         ansible_os_family [{{ ansible_os_family }}]
 8         ansible_distribution [{{ ansible_distribution }}]
 9         ansible_distribution_major_version [{{ ansible_distribution_major_version }}]
10         ansible_distribution_version [{{ ansible_distribution_version }}]
11         ansible_distribution_release [{{ ansible_distribution_release }}]
12         ansible_python_version [{{ ansible_python_version }}]
13
14         freebsd_install_method [{{ freebsd_install_method }}]
15         freebsd_use_packages [{{ freebsd_use_packages }}]
16         freebsd_install_retries [{{ freebsd_install_retries }}]
17         freebsd_install_delay [{{ freebsd_install_delay }}]
18
19         poudriere_install [{{ poudriere_install }}]
20         poudriere_dirs [{{ poudriere_dirs }}]
21         poudriere_key [{{ poudriere_key }}]
22         poudriere_cert [{{ poudriere_cert }}]
23         poudriere_conf [{{ poudriere_conf }}]
24         poudriere_pkglists [{{ poudriere_pkglists }}]
25         poudriere_options [{{ poudriere_options }}]
26         poudriere_make [{{ poudriere_make }}]
27         poudriere_backup_conf [{{ poudriere_backup_conf|bool }}]
28
29         poudriere_packages
30         {{ poudriere_packages|to_nice_yaml }}
31         poudriere_packages_cert
32         {{ poudriere_packages_cert|to_nice_yaml }}
33         poudriere_owner [{{ poudriere_owner }}]
34         poudriere_group [{{ poudriere_group }}]
35         poudriere_mode [{{ poudriere_mode }}]
36         poudriere_mode_dir [{{ poudriere_mode_dir }}]
37         poudriere_dirs [{{ poudriere_dirs }}]
38         poudriere_ssl_dir [{{ poudriere_ssl_dir }}]
39         poudriere_ssl_dir_mode [{{ poudriere_ssl_dir_mode }}]
40         poudriere_ssl_private_dir [{{ poudriere_ssl_private_dir }}]
41         poudriere_ssl_private_dir_mode [{{ poudriere_ssl_private_dir_mode }}]
42         poudriere_ssl_private_key_mode [{{ poudriere_ssl_private_key_mode }}]
43         poudriere_ssl_dirs
44         {{ poudriere_ssl_dirs|to_nice_yaml }}
45
46         poudriere_key [{{ poudriere_key }}]
47         poudriere_key_size [{{ poudriere_key_size }}]
48         poudriere_key_type [{{ poudriere_key_type }}]
49         poudriere_key_cmd [{{ poudriere_key_cmd }}]
50         poudriere_key_crt [{{ poudriere_key_crt }}]
51         poudriere_conf_pkg_repo_signing_key [{{ poudriere_conf_pkg_repo_signing_key }}]
52
53         poudriere_cert [{{ poudriere_cert }}]
54         poudriere_cert_cn [{{ poudriere_cert_cn }}]
55         poudriere_cert_key [{{ poudriere_cert_key }}]
56         poudriere_cert_csr [{{ poudriere_cert_csr }}]
57         poudriere_cert_path [{{ poudriere_cert_path }}]
58
59         poudriere_conf [{{ poudriere_conf }}]
60         poudriere_conf_file [{{ poudriere_conf_file }}]
61         poudriere_conf_template [{{ poudriere_conf_template }}]
62         poudriere_conf_dir [{{ poudriere_conf_dir }}]
63         poudriere_conf_dirs
64         {{ poudriere_conf_dirs|to_nice_yaml }}
65         poudriere_conf_zpool [{{ poudriere_conf_zpool }}]
66         poudriere_conf_no_zfs [{{ poudriere_conf_no_zfs }}]
67         poudriere_conf_zrootfs [{{ poudriere_conf_zrootfs }}]
68         poudriere_conf_freebsd_host [{{ poudriere_conf_freebsd_host }}]
69         poudriere_conf_resolv_conf [{{ poudriere_conf_resolv_conf }}]
70         poudriere_conf_basefs [{{ poudriere_conf_basefs }}]
71         poudriere_conf_svn_host [{{ poudriere_conf_svn_host }}]
72         poudriere_conf_poudriere_data [{{ poudriere_conf_poudriere_data }}]
73         poudriere_conf_use_portlint [{{ poudriere_conf_use_portlint }}]
74         poudriere_conf_use_tmpfs [{{ poudriere_conf_use_tmpfs }}]
75         poudriere_conf_distfiles_cache [{{ poudriere_conf_distfiles_cache }}]
76         poudriere_conf_url_base [{{ poudriere_conf_url_base }}]
77         poudriere_conf_check_changed_options [{{ poudriere_conf_check_changed_options }}]
78         poudriere_conf_check_changed_deps [{{ poudriere_conf_check_changed_deps }}]
79         poudriere_conf_data
80         {{ poudriere_conf_data|to_nice_yaml }}
81         poudriere_pkglists [{{ poudriere_pkglists }}]
82         poudriere_pkglist_dir [{{ poudriere_pkglist_dir }}]
83         poudriere_pkg_arch {{ poudriere_pkg_arch|to_yaml }}
84         poudriere_options [{{ poudriere_options }}]
85         poudriere_make [{{ poudriere_make }}]
86         poudriere_make_file [{{ poudriere_make_file }}]
87         poudriere_make_conf
88         {{ poudriere_make_conf|to_nice_yaml }}
89
90  ansible.builtin.debug:
91    msg: "{{ '{}'.format(msg) }}"
92
93# EOF
94...

packages.yml

Synopsis: Configure packages.

Description of the task.

[tasks/packages.yml]

 1---
 2
 3# Poudriere packages
 4- name: "packages: Install poudriere packages"
 5  community.general.pkgng:
 6    name: "{{ poudriere_packages }}"
 7  register: result
 8  retries: "{{ freebsd_install_retries }}"
 9  until: result is succeeded
10  delay: "{{ freebsd_install_delay }}"
11  when: freebsd_install_method|lower == "packages"
12
13- name: "packages: Install poudriere ports"
14  community.general.portinstall:
15    name: "{{ item }}"
16    use_packages: "{{ freebsd_use_packages }}"
17  loop: "{{ poudriere_packages }}"
18  register: result
19  retries: "{{ freebsd_install_retries }}"
20  until: result is succeeded
21  delay: "{{ freebsd_install_delay }}"
22  when: freebsd_install_method|lower == "ports"
23
24# Certificate packages
25- name: "packages: Install packages to create certificate"
26  community.general.pkgng:
27    name: "{{ poudriere_packages_cert }}"
28  register: result
29  retries: "{{ freebsd_install_retries }}"
30  until: result is succeeded
31  delay: "{{ freebsd_install_delay }}"
32  when: freebsd_install_method|lower == "packages"
33
34- name: "packages: Install ports to create certificate"
35  community.general.portinstall:
36    name: "{{ item }}"
37    use_packages: "{{ freebsd_use_packages }}"
38  loop: "{{ poudriere_packages_cert }}"
39  register: result
40  retries: "{{ freebsd_install_retries }}"
41  until: result is succeeded
42  delay: "{{ freebsd_install_delay }}"
43  when: freebsd_install_method|lower == "ports"
44
45# EOF
46...

dirs.yml

Synopsis: Configure dirs.

Description of the task.

[tasks/dirs.yml]

 1---
 2
 3- name: "dirs: Create SSL directories"
 4  ansible.builtin.file:
 5    state: directory
 6    path: "{{ item }}"
 7    owner: "{{ poudriere_owner }}"
 8    group: "{{ poudriere_group }}"
 9    mode: "{{ poudriere_mode_dir }}"
10  loop: "{{ poudriere_ssl_dirs }}"
11
12- name: "dirs: Create SSL directory {{ poudriere_ssl_private_dir }} mode {{ poudriere_ssl_private_dir_mode }}"
13  ansible.builtin.file:
14    state: directory
15    path: "{{ poudriere_ssl_private_dir }}"
16    owner: "{{ poudriere_owner }}"
17    group: "{{ poudriere_group }}"
18    mode: "{{ poudriere_ssl_private_dir_mode }}"
19
20# EOF
21...

key.yml

Synopsis: Configure key.

Description of the task.

[tasks/key.yml]

 1---
 2
 3- name: "key: Generate signing key {{ poudriere_conf_pkg_repo_signing_key }}"
 4  community.crypto.openssl_privatekey:
 5    attributes: "{{ poudriere_key_attributes|default(omit) }}"
 6    backup: "{{ poudriere_key_backup|default(omit) }}"
 7    cipher: "{{ poudriere_key_cipher|default(omit) }}"
 8    curve: "{{ poudriere_key_curve|default(omit) }}"
 9    force: "{{ poudriere_key_force|default(omit) }}"
10    group: "{{ poudriere_group }}"
11    mode: "{{ poudriere_ssl_private_key_mode }}"
12    owner: "{{ poudriere_owner }}"
13    passphrase: "{{ poudriere_key_passphrase|default(omit) }}"
14    path: "{{ poudriere_conf_pkg_repo_signing_key }}"
15    # regenerate: "{{ poudriere_key_regenerate|default(omit) }}"
16    # return_content: "{{ poudriere_key_return_content|default(omit) }}"
17    select_crypto_backend: "{{ poudriere_key_select_crypto_backend|default(omit) }}"
18    selevel: "{{ poudriere_key_selevel|default(omit) }}"
19    serole: "{{ poudriere_key_serole|default(omit) }}"
20    setype: "{{ poudriere_key_setype|default(omit) }}"
21    seuser: "{{ poudriere_key_seuser|default(omit) }}"
22    size: "{{ poudriere_key_size }}"
23    state: "{{ poudriere_key_state|default(omit) }}"
24    type: "{{ poudriere_key_type }}"
25    unsafe_writes: "{{ poudriere_key_unsafe_writes|default(omit) }}"
26- name: "key: Generate signing crt {{ poudriere_key_crt }}"
27  ansible.builtin.command:
28    cmd: "{{ poudriere_key_cmd }}"
29    creates: "{{ poudriere_key_crt }}"
30
31# EOF
32...

cert.yml

Synopsis: Configure cert.

Description of the task.

[tasks/cert.yml]

 1---
 2
 3- name: "cert: Generate OpenSSL private key, request, and certificate"
 4  block:
 5
 6    - name: "cert: Generate private key {{ poudriere_cert_key }}"
 7      community.crypto.openssl_privatekey:
 8        path: "{{ poudriere_cert_key }}"
 9        owner: "{{ poudriere_owner }}"
10        group: "{{ poudriere_group }}"
11        mode: "{{ poudriere_ssl_private_key_mode }}"
12
13    - name: "cert: Generate csr {{ poudriere_cert_csr }}"
14      community.crypto.openssl_csr:
15        path: "{{ poudriere_cert_csr }}"
16        privatekey_path: "{{ poudriere_cert_key }}"
17        common_name: "{{ poudriere_cert_cn }}"
18      when: not ansible_check_mode|bool
19
20    - name: "cert: Generate crt {{ poudriere_cert_path }}"
21      community.crypto.x509_certificate:
22        path: "{{ poudriere_cert_path }}"
23        privatekey_path: "{{ poudriere_cert_key }}"
24        csr_path: "{{ poudriere_cert_csr }}"
25        provider: selfsigned
26      when: not ansible_check_mode|bool
27
28# <TBD>
29# It seems, it’s not possible to force pkg accept self-signed https certificate.
30# See https://www.digitalocean.com/community/tutorials/how-to-set-up-a-poudriere-build-system-to-create-packages-for-your-freebsd-servers?comment=97460
31
32# EOF
33...

conf.yml

Synopsis: Configure conf.

Description of the task.

[tasks/conf.yml]

 1---
 2
 3- name: "conf: Create directories"
 4  ansible.builtin.file:
 5    state: directory
 6    path: "{{ item.dir }}"
 7    owner: "{{ item.owner }}"
 8    group: "{{ item.group }}"
 9    mode: "{{ item.mode }}"
10  loop: "{{ poudriere_conf_dirs }}"
11  loop_control:
12    label: "{{ item.dir }}"
13  tags: poudriere_conf_dirs
14
15- name: "conf: Configure {{ poudriere_conf_file }}"
16  ansible.builtin.template:
17    src: "{{ poudriere_conf_template }}"
18    dest: "{{ poudriere_conf_file }}"
19    owner: "{{ poudriere_owner }}"
20    group: "{{ poudriere_group }}"
21    mode: "{{ poudriere_mode }}"
22    backup: "{{ poudriere_backup_conf|bool }}"
23  tags: poudriere_conf_file
24
25# EOF
26...

pkglists.yml

Synopsis: Configure pkglists.

Description of the task.

[tasks/pkglists.yml]

 1---
 2
 3- name: "pkglists: Create list of packages"
 4  ansible.builtin.include_tasks: pkglist.yml
 5  loop: "{{ poudriere_pkg_arch }}"
 6  loop_control:
 7    loop_var: pkg_arch
 8
 9# EOF
10...

pkglist.yml

Synopsis: Configure pkglist.

Description of the task.

[tasks/pkglist.yml]

 1---
 2
 3# Enable or disable dictionaries in the list _pkg_dict
 4- name: "conf: Create empty list _pkg_dict"
 5  ansible.builtin.set_fact:
 6    _pkg_dict: []
 7  tags: poudriere_pkglist_create_var
 8
 9- name: "conf: Add items to the list _pkg_dict"
10  ansible.builtin.set_fact:
11    _pkg_dict: "{{ _pkg_dict + [item|combine({'enable': _combine_enable})] }}"
12  loop: "{{ lookup('vars', 'pkg_dict_' ~ pkg_arch) }}"
13  loop_control:
14    label: "{{ item.pkglist }}"
15  vars:
16    _pkglist_enable: "{{ lookup('vars', 'pkglist_enable_' ~ pkg_arch, default={}) }}"
17    _current_enable: "{{ item.enable|default(true) }}"
18    _combine_enable: "{{ _pkglist_enable[item.pkglist]|default(_current_enable) }}"
19  tags: poudriere_pkglist_create_var
20
21- name: "conf: Debug _pkg_dict"
22  ansible.builtin.debug:
23    var: _pkg_dict
24  when: poudriere_debug|bool
25  tags: poudriere_pkglist_create_var
26
27# Create directories
28- name: "conf: Create directories {{ poudriere_pkglist_dir }}_{{ pkg_arch }}"
29  ansible.builtin.file:
30    state: directory
31    path: "{{ item }}"
32    owner: "{{ poudriere_owner }}"
33    group: "{{ poudriere_group }}"
34    mode: "{{ poudriere_mode_dir }}"
35  loop:
36    - "{{ poudriere_pkglist_dir }}_{{ pkg_arch }}"
37    - "{{ poudriere_pkglist_dir }}_{{ pkg_arch }}.disabled"
38  tags: poudriere_pkglist_create_dirs
39
40# Disabled lists of packages
41- name: "conf: Remove lists of packages from {{ poudriere_pkglist_dir }}_{{ pkg_arch }}"
42  ansible.builtin.file:
43    state: absent
44    path: "{{ poudriere_pkglist_dir }}_{{ pkg_arch }}/{{ item.pkglist }}"
45  loop: "{{ _pkg_dict }}"
46  loop_control:
47    label: "{{ item.pkglist }}"
48  when: not item.enable
49  tags: poudriere_pkglist_disabled
50
51- name: "conf: Create lists of packages in {{ poudriere_pkglist_dir }}_{{ pkg_arch }}.disabled"
52  ansible.builtin.template:
53    src: poudriere.pkglist.j2
54    dest: "{{ poudriere_pkglist_dir }}_{{ pkg_arch }}.disabled/{{ item.pkglist }}"
55    owner: "{{ poudriere_owner }}"
56    group: "{{ poudriere_group }}"
57    mode: "{{ poudriere_mode }}"
58    backup: "{{ poudriere_backup_conf|bool }}"
59  loop: "{{ _pkg_dict }}"
60  loop_control:
61    label: "{{ item.pkglist }}"
62  when: not item.enable
63  tags: poudriere_pkglist_disabled
64
65# Enabled lists of packages
66- name: "conf: Remove lists of packages from {{ poudriere_pkglist_dir }}_{{ pkg_arch }}.disabled"
67  ansible.builtin.file:
68    state: absent
69    path: "{{ poudriere_pkglist_dir }}_{{ pkg_arch }}.disabled/{{ item.pkglist }}"
70  loop: "{{ _pkg_dict }}"
71  loop_control:
72    label: "{{ item.pkglist }}"
73  when: item.enable
74  tags: poudriere_pkglist_enabled
75
76- name: "conf: Create lists of packages in {{ poudriere_pkglist_dir }}_{{ pkg_arch }}"
77  ansible.builtin.template:
78    src: poudriere.pkglist.j2
79    dest: "{{ poudriere_pkglist_dir }}_{{ pkg_arch }}/{{ item.pkglist }}"
80    owner: "{{ poudriere_owner }}"
81    group: "{{ poudriere_group }}"
82    mode: "{{ poudriere_mode }}"
83    backup: "{{ poudriere_backup_conf|bool }}"
84  loop: "{{ _pkg_dict }}"
85  loop_control:
86    label: "{{ item.pkglist }}"
87  when: item.enable
88  tags: poudriere_pkglist_enabled
89
90# EOF
91...

options.yml

Synopsis: Configure options.

Description of the task.

[tasks/options.yml]

 1---
 2
 3- name: "options: Debug"
 4  ansible.builtin.debug:
 5    msg: Not implemented yet.
 6
 7# <TBD>
 8# Optionally copy existing PORT_DBDIR to /usr/local/etc/poudriere.d/options
 9# Create options file for each jail, e.g.
10# /usr/local/etc/poudriere.d/12amd64-options
11# /usr/local/etc/poudriere.d/12arm7-options
12
13# EOF
14...

make.yml

Synopsis: Configure make.

Description of the task.

[tasks/make.yml]

 1---
 2
 3- name: "make: Configure {{ poudriere_make_file }}"
 4  ansible.builtin.template:
 5    src: make.conf.j2
 6    dest: "{{ poudriere_make_file }}"
 7    owner: "{{ poudriere_owner }}"
 8    group: "{{ poudriere_group }}"
 9    mode: "{{ poudriere_mode }}"
10    backup: "{{ poudriere_backup_conf|bool }}"
11
12# See 10.5.10. Providing a Custom make.conf File
13# https://docs.freebsd.org/en/books/porters-handbook/testing-poudriere.html
14
15# <TBD> make.conf file for each jail, e.g.
16# /usr/local/etc/poudriere.d/12amd64-make.conf
17# /usr/local/etc/poudriere.d/12arm7-make.conf
18
19# EOF
20...

Handlers

main.yml

Synopsis: Main task.

Import handlers.

[handlers/main.yml]

1---
2# handlers freebsd_poudriere
3
4# EOF
5...

Templates

make.conf.j2

Synopsis: Template make.conf.

Description of the template.

[templates/make.conf.j2]

1# {{ ansible_managed }}
2{% for item in poudriere_make_conf %}
3{{ item }}
4{% endfor %}

poudriere.conf.j2

Synopsis: Template poudriere.conf.

Description of the template.

[templates/poudriere.conf.j2]

 1# {{ ansible_managed }} 
 2
 3ZPOOL={{ poudriere_conf_zpool }}
 4NO_ZFS={{ poudriere_conf_no_zfs }}
 5ZROOTFS={{ poudriere_conf_zrootfs }}
 6FREEBSD_HOST={{ poudriere_conf_freebsd_host }}
 7RESOLV_CONF={{ poudriere_conf_resolv_conf }}
 8BASEFS={{ poudriere_conf_basefs }}
 9POUDRIERE_DATA={{ poudriere_conf_poudriere_data }}
10USE_PORTLINT={{ poudriere_conf_use_portlint }}
11USE_TMPFS={{ poudriere_conf_use_tmpfs }}
12DISTFILES_CACHE={{ poudriere_conf_distfiles_cache }}
13PKG_REPO_SIGNING_KEY={{ poudriere_conf_pkg_repo_signing_key }}
14URL_BASE={{ poudriere_conf_url_base }}
15CHECK_CHANGED_OPTIONS={{ poudriere_conf_check_changed_options }}
16CHECK_CHANGED_DEPS={{ poudriere_conf_check_changed_deps }}
17
18# EOF

poudriere.conf2.j2

Synopsis: Template poudriere.conf2.

Description of the template.

[templates/poudriere.conf2.j2]

1# {{ ansible_managed }} 
2
3{% for k,v in poudriere_conf_data.items() %}
4{{ k }}={{ v }}
5{% endfor %}
6
7# EOF

poudriere.pkglist.j2

Synopsis: Template poudriere.pkglist.

Description of the template.

[templates/poudriere.pkglist.j2]

1{% for package in item.packages %}
2{{ package }}
3{% endfor %}

Collections

vbotka.freebsd

Documented roles

Indices and tables