Set up poudriere to build pkgbase.

This commit is contained in:
Tom Alexander
2024-02-11 14:59:55 -05:00
parent 8385b036a6
commit a66eff79e2
61 changed files with 232 additions and 816 deletions

View File

@@ -0,0 +1,30 @@
CPUTYPE?=znver4
WITH_MALLOC_PRODUCTION=YES
WITHOUT_LLVM_ASSERTIONS=YES
WITH_REPRODUCIBLE_BUILD=YES
# Would be fun to experiment with:
# WITHOUT_SOURCELESS=YES
# WITHOUT_GAMES=YES
# WITHOUT_KERBEROS=YES
# WITHOUT_LEGACY_CONSOLE=YES
# WITHOUT_LIB32=YES
# WITHOUT_LOADER_GELI=YES
# WITHOUT_MLX5TOOL=YES
# WITHOUT_NDIS=YES
# WITHOUT_OFED=YES
# WITHOUT_PPP=YES
# WITH_SORT_THREADS=YES
# WITHOUT_TALK=YES
# WITHOUT_TCSH=YES
# Questionable Optimizations
WITHOUT_FLOPPY=YES
WITHOUT_HTML=YES
WITHOUT_IPFW=YES
WITHOUT_IPFILTER=YES
WITHOUT_LLVM_TARGET_ALL=YES
# Commented out because maybe I want email alerts for failing disks
# WITHOUT_MAIL=YES

View File

@@ -13,12 +13,12 @@ desc="Poudriere Loop"
load_rc_config $name
: ${poudboot_enable:=YES}
: ${poudboot_enable:=NO}
command=/usr/sbin/daemon
pidfile=/var/run/${name}.pid
command_args="-p $pidfile -u root -f -S -T $name poudboot start"
command_args="-p $pidfile -u root -f -S -T $name nice -n 10 poudboot start"
export PATH="${PATH}:/usr/local/bin"
run_rc_command "$1"

View File

@@ -8,6 +8,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
: ${LOCKFILE:="/var/run/poudboot.lock"}
: ${INFO_DIR:="/opt/poudriere/run_info"}
: ${PORT_UPDATE_SECONDS:="86400"}
: ${CLEAN_SECONDS:="1209600"}
: ${BUILD_SECONDS:="7200"}
: ${LOG_RETENTION_DAYS:="30"}
@@ -67,7 +68,7 @@ function abort_if_jobs_running {
}
function build {
poudriere pkgclean -y "$@"
poudriere pkgclean -v -y "$@"
poudriere bulk -J "${POUDRIERE_JOBS:-1}" "$@"
}
@@ -88,6 +89,7 @@ function cmd_start {
mkdir -p "$RUN_DIR"
local PORTUPDATE=0
local LASTBUILD=0
local LASTCLEAN=0
if [ -e "$TIMES_FILE" ]; then
source "$TIMES_FILE"
fi
@@ -97,19 +99,25 @@ function cmd_start {
portshaker -U
portshaker -M
PORTUPDATE=$(date +%s)
# Cleanup old unused dist files
poudriere distclean -y -p "$PORTS" -f /usr/local/etc/poudriere.d/$JAIL-$PORTS-$SET-pkglist
poudriere logclean -y "$LOG_RETENTION_DAYS"
fi
if [ $((now - LASTBUILD)) -gt "$BUILD_SECONDS" ]; then
log "Building ports for $JAIL-$PORTS-$SET"
build -j "$JAIL" -p "$PORTS" -z "$SET" -f /usr/local/etc/poudriere.d/$JAIL-$PORTS-$SET-pkglist
LASTBUILD=$(date +%s)
fi
if [ $((now - LASTCLEAN)) -gt "$CLEAN_SECONDS" ]; then
log "Cleaning for $JAIL-$PORTS-$SET"
# Cleanup old unused dist files
poudriere distclean -v -y -p "$PORTS" -f /usr/local/etc/poudriere.d/$JAIL-$PORTS-$SET-pkglist
poudriere logclean -v -y "$LOG_RETENTION_DAYS"
# TODO: Should clean be a global ?
LASTCLEAN=$(date +%s)
fi
cat > "$TIMES_FILE" <<EOF
PORTUPDATE=$PORTUPDATE
LASTBUILD=$LASTBUILD
LASTCLEAN=$LASTCLEAN
EOF
)
done

View File

@@ -1,44 +0,0 @@
# This file is auto-generated by 'make config'.
# Options for emacs-29.1,3
_OPTIONS_READ=emacs-29.1,3
_FILE_COMPLETE_OPTIONS_LIST=ACL DBUS GNUTLS GSETTINGS HARFBUZZ JSON LCMS2 M17N MAILUTILS MODULES NATIVECOMP OTF PGTK SCROLLBARS SOURCES SQLITE3 THREADS TREESITTER XFT XIM XML XWIDGETS GFILE KQUEUE ALSA OSS GTK2 GTK3 MOTIF XAW XAW3D CAIRO GIF JPEG MAGICK PNG SVG TIFF WEBP XPM
OPTIONS_FILE_SET+=ACL
OPTIONS_FILE_SET+=DBUS
OPTIONS_FILE_SET+=GNUTLS
OPTIONS_FILE_SET+=GSETTINGS
OPTIONS_FILE_SET+=HARFBUZZ
OPTIONS_FILE_SET+=JSON
OPTIONS_FILE_SET+=LCMS2
OPTIONS_FILE_UNSET+=M17N
OPTIONS_FILE_SET+=MAILUTILS
OPTIONS_FILE_SET+=MODULES
OPTIONS_FILE_SET+=NATIVECOMP
OPTIONS_FILE_SET+=OTF
OPTIONS_FILE_SET+=PGTK
OPTIONS_FILE_SET+=SCROLLBARS
OPTIONS_FILE_SET+=SOURCES
OPTIONS_FILE_SET+=SQLITE3
OPTIONS_FILE_SET+=THREADS
OPTIONS_FILE_SET+=TREESITTER
OPTIONS_FILE_UNSET+=XFT
OPTIONS_FILE_UNSET+=XIM
OPTIONS_FILE_SET+=XML
OPTIONS_FILE_UNSET+=XWIDGETS
OPTIONS_FILE_UNSET+=GFILE
OPTIONS_FILE_SET+=KQUEUE
OPTIONS_FILE_UNSET+=ALSA
OPTIONS_FILE_SET+=OSS
OPTIONS_FILE_UNSET+=GTK2
OPTIONS_FILE_SET+=GTK3
OPTIONS_FILE_UNSET+=MOTIF
OPTIONS_FILE_UNSET+=XAW
OPTIONS_FILE_UNSET+=XAW3D
OPTIONS_FILE_SET+=CAIRO
OPTIONS_FILE_SET+=GIF
OPTIONS_FILE_SET+=JPEG
OPTIONS_FILE_UNSET+=MAGICK
OPTIONS_FILE_SET+=PNG
OPTIONS_FILE_SET+=SVG
OPTIONS_FILE_SET+=TIFF
OPTIONS_FILE_SET+=WEBP
OPTIONS_FILE_UNSET+=XPM

View File

@@ -1,10 +1,10 @@
# Disable CPUTYPE optimizations when compiling gcc48 because tigerlake is not included in gcc4.8
#
# Disable CPUTYPE optimizations for qt6-base because FreeBSD 13 is on Clang 14 which does not yet support zen4 (added in Clang 16) so qt6 is incorrectly flagging my CPU as not supporting AVX512.
# Disable CPUTYPE optimizations when compiling gcc48 because zen 4 is not included in gcc4.8
#
# Example from bottom of /usr/share/examples/etc/make.conf
.if ${.CURDIR:N*/lang/gcc48*} && ${.CURDIR:N*/lang/gcc10*} && ${.CURDIR:N*/devel/qt6-base*}
CPUTYPE?=tigerlake
.if ${.CURDIR:M*/devel/boost-libs*} || ${.CURDIR:M*/multimedia/wl-screenrec*} || ${.CURDIR:M*/www/firefox*}
CPUTYPE?=x86-64-v4
.elif ${.CURDIR:N*/lang/gcc48*} && ${.CURDIR:N*/lang/gcc10*} && ${.CURDIR:N*/devel/binutils*} && ${.CURDIR:N*/devel/qt6-base*} && ${.CURDIR:N*/www/node20*}
CPUTYPE?=znver4
# CPUTYPE?=x86-64-v4
.endif
@@ -21,6 +21,10 @@ CPUTYPE?=tigerlake
OPTIONS_SET+=STATIC LTO
.endif
.if ${.CURDIR:M*/editors/emacs*}
OPTIONS_SET+=NATIVECOMP PGTK
.endif
OPTIONS_SET+=OPTIMIZED_CFLAGS
# qemu uses STATIC_LINK instead of the more standard flag of STATIC
OPTIONS_SET+=STATIC_LINK

View File

@@ -20,7 +20,7 @@ dns/coredns
editors/emacs
editors/mg
ftp/wget
graphics/ImageMagick
graphics/ImageMagick7
graphics/drm-kmod
graphics/evince
graphics/gimp
@@ -51,7 +51,7 @@ net-mgmt/ipcalc
net/google-cloud-sdk
net/rsync
net/tcpdump
net/wireguard
net/wireguard-tools
net/wlvncc
ports-mgmt/pkg
ports-mgmt/pkg-provides
@@ -105,16 +105,18 @@ textproc/en-aspell
textproc/gsed
textproc/jq
textproc/kdiff3
textproc/meld
textproc/py-pygments
textproc/ripgrep
www/firefox
www/yt-dlp
x11-fm/pcmanfm
x11-fonts/cascadia-code
x11-fonts/noto
x11-fonts/noto-emoji
x11-fonts/noto-extra
x11-fonts/source-code-pro-ttf
x11-fonts/source-sans-ttf
x11-fonts/sourcecodepro-ttf
x11-themes/adwaita-qt5
x11-themes/adwaita-qt6
x11-wm/sway

View File

@@ -5,7 +5,7 @@ IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
function main {
find / -type f -name times -exec sed -iE 's/LASTBUILD=.*/LASTBUILD=0/' {} \;
find / -type f -name times -exec sed -E -i 's/LASTBUILD=.*/LASTBUILD=0/' {} \;
}
main "${@}"

View File

@@ -92,6 +92,16 @@
mode: 0600
loop: "{{ poudriere_builds }}"
- name: Install src.conf
when: item.srcconf is defined
copy:
src: "files/{{ item.srcconf }}"
dest: "/usr/local/etc/poudriere.d/{{ item.jail }}-src.conf"
owner: root
group: wheel
mode: 0600
loop: "{{ poudriere_builds }}"
- name: Install rc script
copy:
src: "files/{{ item.src }}"
@@ -121,7 +131,7 @@
- name: Create the jails
when: item.version != "CURRENT"
command: |-
poudriere jail {{poudriere_perf_flags}} -c -j {{ item.jail }} -v {{ item.version }}
poudriere jail {{poudriere_perf_flags}} -c -j {{ item.jail }} -v {{ item.version }} -B -b
args:
creates: "/usr/local/poudriere/jails/{{ item.jail }}"
loop: "{{ poudriere_builds }}"
@@ -129,8 +139,10 @@
- name: Create the jails
when: item.version == "CURRENT"
# -D clones the entire history instead of just the most recent commit
# -B to build the pkgbase packages
# -b to build the jail OS from source
command: |-
poudriere jail {{poudriere_perf_flags}} -c -j {{ item.jail }} -v {{ item.branch|default("main") }} -a amd64 -m git -D -U https://git.FreeBSD.org/src.git -K {{ item.kernel|default("GENERIC") }}
echo poudriere jail {{poudriere_perf_flags}} -c -j {{ item.jail }} -v {{ item.branch|default("main") }} -a amd64 -m git -D -U https://git.FreeBSD.org/src.git -K {{ item.kernel|default("GENERIC-NODEBUG") }} -B -b
args:
creates: "/usr/local/poudriere/jails/{{ item.jail }}"
loop: "{{ poudriere_builds }}"