390 Build packages¶
Use case¶
Use the role vbotka.freebsd.poudriere to install poudriere. Build packages.
Tree¶
shell> tree .
.
├── ansible.cfg
├── hosts
├── host_vars
│ └── build.example.com
│ ├── fp_qemu.yml
│ └── poudriere.yml
├── pb-postinstall.yml
└── pb.yml
Synopsis¶
At the managed node
build.example.com:in the playbook
pb.yml, use the role vbotka.freebsd.poudriere to install and configure poudriere.in the playbook
pb-postinstall.yml, use the role vbotka.freebsd.postinstall to install and configure QEMU.build packages.
Requirements¶
root privilege in the managed node
build.example.com.
Notes¶
Building ARM (armv6, armv7, and aarch64) packages on amd64 needs QEMU.
See also
FreeBSD Handbook Building Packages with Poudriere
FreeBSD Wiki FreeBSD ARM
FreeBSD Wiki Building Packages Through Emulation
FreeBSD Forums Building ARM Packages with Poudriere
Documentation Ansible role FreeBSD Poudriere
Note
ansible.cfg¶
[defaults]
inventory = $PWD/hosts
gathering = explicit
callback_result_format = yaml
display_skipped_hosts = false
[connection]
pipelining = true
Inventory hosts¶
build.example.com ansible_host=10.1.0.29
[build]
build.example.com
[build:vars]
ansible_user=admin
ansible_become=true
ansible_python_interpreter=auto_silent
host_vars¶
---
poudriere_install: false
# cert
poudriere_cert_cn: build.example.com
poudriere_cert_key: "{{ poudriere_ssl_dir }}/private/{{ 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"
poudriere_ssl_dirs:
- "{{ poudriere_ssl_dir }}"
- "{{ poudriere_ssl_dir }}/csr"
- "{{ poudriere_ssl_dir }}/crt"
- "{{ poudriere_ssl_dir }}/certs"
# key
poudriere_key_crt: "{{ poudriere_ssl_dir }}/crt/{{ poudriere_cert_cn }}-sk.crt"
poudriere_conf_pkg_repo_signing_key: "{{ poudriere_ssl_dir }}/private/{{ poudriere_cert_cn }}-sk.key"
# conf
poudriere_conf_no_zfs: "no"
poudriere_conf_template: poudriere.conf2.j2
poudriere_conf_url_base: http://build.example.com
poudriere_conf_use_tmpfs: "no"
poudriere_conf_zpool: iocage
poudriere_conf_data:
BASEFS: "{{ poudriere_conf_basefs }}"
BUILDER_HOSTNAME: "build"
CHECK_CHANGED_DEPS: "{{ poudriere_conf_check_changed_deps }}"
CHECK_CHANGED_OPTIONS: "{{ poudriere_conf_check_changed_options }}"
DISTFILES_CACHE: "{{ poudriere_conf_distfiles_cache }}"
FREEBSD_HOST: "{{ poudriere_conf_freebsd_host }}"
NOLINUX: "yes"
NO_ZFS: "{{ poudriere_conf_no_zfs }}"
PKG_REPO_SIGNING_KEY: "{{ poudriere_conf_pkg_repo_signing_key }}"
POUDRIERE_DATA: "{{ poudriere_conf_poudriere_data }}"
PRESERVE_TIMESTAMP: "yes"
RESOLV_CONF: "{{ poudriere_conf_resolv_conf }}"
SVN_HOST: "{{ poudriere_conf_svn_host }}"
URL_BASE: "{{ poudriere_conf_url_base }}"
USE_COLORS: "yes"
USE_PORTLINT: "{{ poudriere_conf_use_portlint }}"
USE_TMPFS: "{{ poudriere_conf_use_tmpfs }}"
ZPOOL: "{{ poudriere_conf_zpool }}"
ZROOTFS: "{{ poudriere_conf_zrootfs }}"
# architecture
poudriere_pkg_arch: [amd64, arm]
# make
poudriere_make_conf:
- "DEFAULT_VERSIONS+=\t\temacs=nox"
- "DEFAULT_VERSIONS+=\t\tphp=8.3"
- "DEFAULT_VERSIONS+=\t\tssl=openssl"
- "OPTIONS_SET+=\t\t\tGSSAPI_NONE KRB_NONE"
- "OPTIONS_UNSET+=\t\t\tDOCS NLS X11 EXAMPLES"
- "OPTIONS_UNSET+=\t\t\tGSSAPI_BASE KRB_BASE KERBEROS"
# pkglist
poudriere_pkglist_all: true
pkglist_enable_amd64: [ansible, minimal]
pkglist_enable_arm: [ansible, minimal]
See also
The variables pkdict_*.yml in the directory defaults/main of the role
vbotka.freebsd_postinstall.
fp_qemu: true
fp_qemu_rcvar: qemu_user_static
fp_qemu_user_static_install: true
fp_qemu_user_static_enable: true
fp_packages:
- {list: qemu, enabled: false}
- {list: qemu_user_static, enabled: true}
Playbook pb.yml¶
Limit pkg_dict_* for testing.
- name: Role vbotka.freebsd.poudriere
hosts: build
gather_facts: true
vars:
pkg_dict_amd64:
- pkglist: ansible
packages:
- sysutils/ansible
- sysutils/py-ansible-runner
- pkglist: minimal
packages:
- devel/git
- ports-mgmt/portupgrade
- ports-mgmt/portmaster
- ports-mgmt/pkg
- shells/bash
- ftp/wget
- net/rsync
- archivers/gtar
pkg_dict_arm:
- pkglist: ansible
packages:
- sysutils/ansible
- pkglist: minimal
packages:
- ports-mgmt/pkg
- shells/bash
roles:
- vbotka.freebsd.poudriere
Playbook output
Playbook pb-postinstall.yml¶
- name: Role vbotka.freebsd.postinstall
hosts: build
gather_facts: true
roles:
- vbotka.freebsd.postinstall
Playbook output
Build packages¶
See also
Export data how to configure apache24.