Poudriere Build setup, update FreeBSD 14.0-CURRENT packages & source code release

 Poudriere,  update Raspberry Pi 4B FreeBSD 14.0-CURRENT packages & source code release  Modified July 29, 2023



Update the Source, Luke.  Before engaging the Drive

login to root user account on Raspberry Pi 4B with 8 gigs dram and wired Ethernet connection to internet

pkg update
pkg upgrade
portsnap  fetch update
cd  /usr/src
git -C /usr/src pull --ff-only

 Installing FreeBSD Source Code 14.0-CURRENT to /usr/src

Originally download original /usr/src code head for FreeBSD

cd /usr

git -C /usr clone -o freebsd -b main --depth 1 https://git.freebsd.org/src.git src

https://old.reddit.com/r/freebsd/comments/keme3b/heads_up_freebsd_changing_from_subversion_to_git/ghxggjm/

EXAMPLE:

root@generic-arm64:/usr/src # pwd
/usr/src
root@generic-arm64:/usr/src # cd /usr
root@generic-arm64:/usr # git -C /usr clone -o freebsd -b main --depth 1 https://git.freebsd.org/src.git src
Cloning into 'src'...
remote: Enumerating objects: 98541, done.
remote: Counting objects: 100% (98541/98541), done.
remote: Compressing objects: 100% (83056/83056), done.
remote: Total 98541 (delta 21358), reused 47283 (delta 12058), pack-reused 0
Receiving objects: 100% (98541/98541), 312.71 MiB | 2.65 MiB/s, done.
Resolving deltas: 100% (21358/21358), done.
Updating files: 100% (94837/94837), done.
root@generic-arm64:/usr #
 


Standard git update to existing /usr/src code to the latest version

Code: Select all

git -C /usr/src pull --ff-only
-- https://freebsdfoundation.org/updating- ... -from-git/

root@Fred_RasPi4B:/usr/src # uname -a
FreeBSD Fred_RasPi4B 14.0-CURRENT FreeBSD 14.0-CURRENT #6 main-n259952-7e2600ea7be2-dirty: Sun Jan 15 18:14:05 PST 2023     root@Fred_RasPi4B:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC-VCHIQ arm64

root@Fred_RasPi4B:/usr/src # git -C /usr/src pull --ff-only

root@Fred_RasPi4B:/usr/src # uname -a
FreeBSD Fred_RasPi4B 14.0-CURRENT FreeBSD 14.0-CURRENT #6 main-n259952-7e2600ea7be2-dirty: Sun Jan 15 18:14:05 PST 2023     root@Fred_RasPi4B:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC-VCHIQ arm64

root@Fred_RasPi4B:/usr/src # git -C /usr/src pull --ff-only
rremote: Enumerating objects: 30169, done.
remote: Counting objects: 100% (13283/13283), done.
remote: Compressing objects: 100% (143/143), done.
remote: Total 30169 (delta 13187), reused 13148 (delta 13140), pack-reused 16886
Receiving objects: 100% (30169/30169), 26.68 MiB | 3.19 MiB/s, done.
Resolving deltas: 100% (22960/22960), completed with 9142 local objects.
From https://git.freebsd.org/src

root@Fred_RasPi4B:/usr/src # du -h -d1
1.8G ./.git
8.0K ./.cirrus-ci
 16K ./.github
6.1M ./bin
 13M ./cddl
495M ./contrib
 60M ./crypto
216K ./etc
160K ./gnu
1.3M ./include
848K ./kerberos5
 45M ./lib
3.5M ./libexec
436K ./release
 40K ./rescue
 11M ./sbin
7.9M ./secure
 85M ./share
6.1M ./stand
568M ./sys
308K ./targets
 18M ./tests
 75M ./tools
 25M ./usr.bin
 30M ./usr.sbin
3.6G .
root@Fred_RasPi4B:/usr/src # date
Wed Feb 22 23:50:13 PST 2023

 poudriere jail -c -j ghostbsd-13-aarch64  -m src=/usr/src

Raspberry Pi 4B SBC



Poudriere Build setup, done here dirt cheap

9.5. Poudriere,   engaging the Drive now R2D2

https://people.freebsd.org/~blackend/doc/en/books/porters-handbook/testing-poudriere.html  

https://www.freebsd.org/snapshots/

https://www.freebsd.org/where


Eric Turgeon, [2/22/23 5:22 PM]

@GhostBSD_Dev  Founder of GhostBSD


Eric Turgeon, [2/22/23 5:36 PM]

To create a poudriere jail on the Raspberry Pi 4B.

cd /usr/src
make -j4 buildworld buildkernel TARGET_ARCH=aarch64  KERNCONF=GENERIC-VCHIQ

poudriere jail -c -j ghostbsd-13-aarch64  -m src=/usr/src

To create  ghostbsd ports for poudriere
poudriere ports -c -p ghostbsd_ports -m git -U "https://github.com/ghostbsd/ghostbsd-ports" -B main

To update ghostbsd ports source code to latest main version
poudriere ports -u -p ghostbsd_ports -m git -U "https://github.com/ghostbsd/ghostbsd-ports" -B main

To bulk build packages 
poudriere bulk -j ghostbsd-13-aarch64  -p ghostbsd_ports -a


RPI4B CPU running at  100%  Memory about 1.88 Gbytes



See Make -j4 buildworld buildkernel   4 CPUs in use 100%

OTHER TOOLS

https://github.com/pftf/RPi4/releases   pftf 1.35  Release of Tianocore EDK2 

pkg install tree   command line to see files in a tree type display.


 

FreeBSD raspberry pi References


Been running continuously for 30+ hours to compile GhostBSD source code from


https://www.freshports.org/devel/ccache/  Vermaden sets up ccache ?? or FreshPorts?

poudriere.conf file contents

root@generic-arm64:/usr # date
Sun Jul 30 16:53:47 PDT 2023
root@generic-arm64:/usr # cat /usr/local/etc/poudriere.conf

# Poudriere can optionally use ZFS for its ports/jail storage. For
# ZFS define ZPOOL, otherwise set NO_ZFS=yes
#
#### ZFS
# The pool where poudriere will create all the filesystems it needs
# poudriere will use ${ZPOOL}/${ZROOTFS} as its root
#
# You need at least 7GB of free space in this pool to have a working
# poudriere.
#
ZPOOL=arm64pool

### NO ZFS
# To not use ZFS, define NO_ZFS=yes
#NO_ZFS=yes

# root of the poudriere zfs filesystem, by default /poudriere
ZROOTFS=/poudriere

# the host where to download sets for the jails setup
# You can specify here a host or an IP
# replace _PROTO_ by http or ftp
# replace _CHANGE_THIS_ by the hostname of the mirrors where you want to fetch
# by default: ftp://ftp.freebsd.org
#
# Also note that every protocols supported by fetch(1) are supported here, even
# file:///
# Suggested: https://download.FreeBSD.org  Set this to point to ghostbsd  port sources
# FREEBSD_HOST=_PROTO_://_CHANGE_THIS_
FREEBSD_HOST=https://github.com/ghostbsd/ghostbsd-ports

# By default the jails have no /etc/resolv.conf, you will need to set
# RESOLV_CONF to a file on your hosts system that will be copied has
# /etc/resolv.conf for the jail, except if you don't need it (using an http
# proxy for example)
RESOLV_CONF=/etc/resolv.conf

# The directory where poudriere will store jails and ports
BASEFS=/usr/local/poudriere

# The directory where the jail will store the packages and logs
# by default a zfs filesystem will be created and set to
# ${BASEFS}/data
#
POUDRIERE_DATA=${BASEFS}/data

# Use portlint to check ports sanity
USE_PORTLINT=no

# When building packages, a memory device can be used to speedup the build.
# Only one of MFSSIZE or USE_TMPFS is supported. TMPFS is generally faster
# and will expand to the needed amount of RAM. MFS is a slower since it
# uses UFS and several abstraction layers.

# If set WRKDIRPREFIX will be mdmfs of the given size (mM or gG)
#MFSSIZE=4G

# Use tmpfs(5)
# This can be a space-separated list of options:
# wrkdir    - Use tmpfs(5) for port building WRKDIRPREFIX
# data      - Use tmpfs(5) for poudriere cache/temp build data
# localbase - Use tmpfs(5) for LOCALBASE (installing ports for packaging/testing)
# all       - Run the entire build in memory, including builder jails.
# yes       - Enables tmpfs(5) for wrkdir and data
# no        - Disable use of tmpfs(5)
# EXAMPLE: USE_TMPFS="wrkdir data"
USE_TMPFS=yes

# How much memory to limit tmpfs size to for *each builder* in GiB
# (default: none)
#TMPFS_LIMIT=8

# How much memory to limit jail processes to for *each builder*
# in GiB (default: none)
#MAX_MEMORY=8

# How many file descriptors to limit each jail process to (default: 1024)
# This can also be set per PKGBASE, such as MAX_FILES_RStudio=2048.
# Package names with hyphens (-) should be replaced with underscores (_).
#MAX_FILES=1024

# If set the given directory will be used for the distfiles
# This allows to share the distfiles between jails and ports tree
# If this is "no", poudriere must be supplied a ports tree that already has
# the required distfiles.
DISTFILES_CACHE=/usr/ports/distfiles

# If set the ports tree marked to use git will use the defined
# mirror (default: git.FreeBSD.org/port.git)
#
# Example to use github mirror:
#GIT_BASEURL=https://github.com/freebsd/freebsd-src.git

# If set the source tree marked to use git will use the defined
# mirror (default: git.FreeBSD.org/src.git)
#
# Example to use github mirror:
#GIT_PORTSURL=https://github.com/freebsd/freebsd-ports.git

# If set the ports tree or source tree marked to use svn will use the defined
# mirror (default: svn.FreeBSD.org)
# The SSL fingerprints are published here:
# https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/svn.html#svn-mirrors
#SVN_HOST=svn.FreeBSD.org

# Automatic OPTION change detection
# When bulk building packages, compare the options from kept packages to
# the current options to be built. If they differ, the existing package
# will be deleted and the port will be rebuilt.
# Valid options: yes, no, verbose
# verbose will display the old and new options
CHECK_CHANGED_OPTIONS=verbose

# Automatic Dependency change detection
# When bulk building packages, compare the dependencies from kept packages to
# the current dependencies for every port. If they differ, the existing package
# will be deleted and the port will be rebuilt. This helps catch changes such
# as DEFAULT_RUBY_VERSION, PERL_VERSION, WITHOUT_X11 that change dependencies
# for many ports.
# Valid options: yes, no
# Default: yes
CHECK_CHANGED_DEPS=yes

# Consider bad dependency lines on the wrong PKGNAME as fatal.
# For example:
#    BUILD_DEPENDS=  p5-List-MoreUtils>=0:lang/p5-List-MoreUtils
# If this port's PKGNAME were really "List-MoreUtils" then it would
# not be recorded into the resulting package.  The next build with
# CHECK_CHANGED_DEPS enabled would consider it a "new dependency"
# since it is in the port but not in the package.  This is usually
# a warning but can be made fatal instead by enabling this option.
# Default: no
#BAD_PKGNAME_DEPS_ARE_FATAL=yes

# Path to the RSA key to sign the PKG repo with. See pkg-repo(8)
# This produces a repo that supports SIGNATURE_TYPE=PUBKEY
# Default: not set
#PKG_REPO_SIGNING_KEY=/etc/ssl/keys/repo.key
PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/poudriere.key

# Command to sign the PKG repo with. See pkg-repo(8)
# This produces a repo that supports SIGNATURE_TYPE=FINGERPRINTS
# Default: not set
#SIGNING_COMMAND=ssh signing-server sign.sh

# Repo signing command execution context
# If SIGNING_COMMAND is set, run pkg-repo(8) on the host?
#   no  -   Run in the jail
#   yes -   Run on the host
# Default: no
#PKG_REPO_FROM_HOST=yes

# ccache support. Supply the path to your ccache cache directory.
# It will be mounted into the jail and be shared among all jails.
# It is recommended that extra ccache configuration be done with
# ccache -o rather than from the environment.
#CCACHE_DIR=/var/cache/ccache

# Static ccache support from host.  This uses the existing
# ccache from the host in the build jail.  This is useful for
# using ccache+memcached which cannot easily be bootstrapped
# otherwise.  The path to the PREFIX where ccache was installed
# must be used here, and ccache must have been built statically.
# Note also that ccache+memcached will require network access
# which is normally disabled.  Separately setting RESTRICT_NETWORKING=no
# may be required for non-localhost memcached servers.
#CCACHE_STATIC_PREFIX=/usr/local

# The jails normally only allow network access during the 'make fetch'
# phase.  This is a security restriction to prevent random things
# ran during a build from accessing the network.  Disabling this
# is not advised.  ALLOW_NETWORKING_PACKAGES may be used to allow networking
# for a subset of packages only.
#RESTRICT_NETWORKING=yes
#ALLOW_NETWORKING_PACKAGES="npm-foo"

# parallel build support.
#
# By default poudriere uses hw.ncpu to determine the number of builders.
# You can override this default by changing PARALLEL_JOBS here, or
# by specifying the -J flag to bulk/testport.
#
# Example to define PARALLEL_JOBS to one single job
# PARALLEL_JOBS=1

# How many jobs should be used for preparing the build? These tend to
# be more IO bound and may be worth tweaking. Default: PARALLEL_JOBS * 1.25
# PREPARE_PARALLEL_JOBS=1


# If set, failed builds will save the WRKDIR to ${POUDRIERE_DATA}/wrkdirs
# SAVE_WRKDIR=yes

# Choose the default format for the workdir packing: could be tar,tgz,tbz,txz,tzst
# default is tbz
# WRKDIR_ARCHIVE_FORMAT=tbz

# Disable Linux support
# NOLINUX=yes

# By default poudriere sets FORCE_PACKAGE
# To disable it (useful when building public packages):
# NO_FORCE_PACKAGE=yes

# By default poudriere sets PACKAGE_BUILDING
# To disable it:
# NO_PACKAGE_BUILDING=yes

# If you are using a proxy define it here:
# export HTTP_PROXY=bla
# export FTP_PROXY=bla
#
# Cleanout the restricted packages
# NO_RESTRICTED=yes

# By default MAKE_JOBS is disabled to allow only one process per cpu
# Use the following to allow it anyway
# ALLOW_MAKE_JOBS=yes

# List of packages that will always be allowed to use MAKE_JOBS
# regardless of ALLOW_MAKE_JOBS. This is useful for allowing ports
# which holdup the rest of the queue to build more quickly.
#ALLOW_MAKE_JOBS_PACKAGES="pkg ccache py*"

# Timestamp every line of build logs
# Default: no
#TIMESTAMP_LOGS=no

# URL where your POUDRIERE_DATA/logs are hosted
# This will be used for giving URL hints to the HTML output when
# scheduling and starting builds
#URL_BASE=http://yourdomain.com/poudriere/


# This defines the max time (in seconds) that a command may run for a build
# before it is killed for taking too long. Default: 86400
#MAX_EXECUTION_TIME=86400

# This defines the time (in seconds) before a command is considered to
# be in a runaway state for having no output on stdout. Default: 7200
#NOHANG_TIME=7200


# The repository is updated atomically if set yes. This leaves the
# repository untouched until the build completes. This involves using
# hardlinks and symlinks. The operations are fast, but can be intrusive
# for remote syncing or backups.
# Recommended to always keep on.
# Default: yes
#ATOMIC_PACKAGE_REPOSITORY=yes

# When using ATOMIC_PACKAGE_REPOSITORY, commit the packages if some
# packages fail to build. Ignored ports are considered successful.
# This can be set to 'no' to only commit the packages once no failures
# are encountered.
# Default: yes
#COMMIT_PACKAGES_ON_FAILURE=yes

# Keep older package repositories. This can be used to rollback a system
# or to bisect issues by changing the repository to one of the older
# versions and reinstalling everything with `pkg upgrade -f`
# ATOMIC_PACKAGE_REPOSITORY is required for this.
# Default: no
#KEEP_OLD_PACKAGES=no

# How many old package repositories to keep with KEEP_OLD_PACKAGES
# Default: 5
#KEEP_OLD_PACKAGES_COUNT=5

# Make testing errors fatal.
# If set to 'no', ports with test failure will be marked as failed but still
# packaged to permit testing dependent ports (useful for bulk -t -a)
# Default: yes
#PORTTESTING_FATAL=yes

# Define the building jail hostname to be used when building the packages
# Some port/packages hardcode the hostname of the host during build time
# This is a necessary setup for reproducible builds.
#BUILDER_HOSTNAME=pkg.FreeBSD.org

# Define to get a predictable timestamp on the ports tree
# This is a necessary setup for reproducible builds.
#PRESERVE_TIMESTAMP=yes

# Define to yes to build and stage as a regular user
# Default: yes, unless CCACHE_DIR is set and CCACHE_DIR_NON_ROOT_SAFE is not
# set.  Note that to use ccache with BUILD_AS_NON_ROOT you will need to
# use a non-shared CCACHE_DIR that is only built by PORTBUILD_USER and chowned
# to that user.  Then set CCACHE_DIR_NON_ROOT_SAFE to yes.
#BUILD_AS_NON_ROOT=no

# Define to the username to build as when BUILD_AS_NON_ROOT is yes.
# Default: nobody (uid PORTBUILD_UID)
#PORTBUILD_USER=nobody

# Define to the uid to use for PORTBUILD_USER if the user does not
# already exist in the jail.
# Default: 65532
#PORTBUILD_UID=65534

# Define pkgname globs to boost priority for
# Default: none
#PRIORITY_BOOST="pypy openoffice*"

# Define format for buildnames
# Default: %Y-%m-%d_%Hh%Mm%Ss
# ISO8601:
#BUILDNAME_FORMAT="%FT%T%z"

# Define format for build duration times
# Default: %H:%M:%S
#DURATION_FORMAT="%H:%M:%S"

# Use colors when in a TTY
# Default: yes
#USE_COLORS=yes

# Only build what is requested. Do not rebuild build deps if nothing requested
# depends on them. This can create an inconsistent repository if you often
# build one-off packages but expect the repository to stay consistent.
# Defaut: yes
#TRIM_ORPHANED_BUILD_DEPS=yes

# A list of directories to exclude from leftover and filesystem violation
# mtree checks.  Ccache is used here as an example but is already
# excluded by default.  There is no need to add it here unless a
# special configuration is used where it is a problem.
# Default: none
#LOCAL_MTREE_EXCLUDES="/usr/obj /var/tmp/ccache"

# Set to hosted to use the /data directory instead of inline style HTML
# Default: inline
#HTML_TYPE="hosted"

# Set to track remaining ports in the HTML interface.  This can slow down
# processing of the queue slightly, especially for bulk -a builds.
# Default: no
#HTML_TRACK_REMAINING=yes

Disk File Use Size, after git clone /usr/src 974MB

root@generic-arm64:/usr # ls
bin     include lib     libdata libexec local   obj     ports   sbin    share   src     tests
root@generic-arm64:/usr # ls -l
total 118
drwxr-xr-x   2 root  wheel  484 Jul  6 06:12 bin
drwxr-xr-x  55 root  wheel  352 Jul  6 06:11 include
drwxr-xr-x  11 root  wheel  575 Jul  6 06:12 lib
drwxr-xr-x   5 root  wheel    5 Jul  6 05:54 libdata
drwxr-xr-x  11 root  wheel   68 Jul  6 06:12 libexec
drwxr-xr-x  14 root  wheel   14 Jul 23 07:23 local
drwxr-xr-x   2 root  wheel    2 Jul  6 05:54 obj
drwxr-xr-x  68 root  wheel   81 Jul 30 16:24 ports
drwxr-xr-x   2 root  wheel  280 Jul  6 06:12 sbin
drwxr-xr-x  33 root  wheel   33 Jul  6 05:54 share
drwxr-xr-x  27 root  wheel   46 Jul 30 16:37 src
drwxr-xr-x  17 root  wheel   22 Jul  6 06:14 tests
root@generic-arm64:/usr # du -s src
997284  src
root@generic-arm64:/usr # du -hs src
974M    src
root@generic-arm64:/usr # cd src
root@generic-arm64:/usr/src # du -h -d1
3.8M    ./bin
213M    ./contrib
177K    ./etc
5.0K    ./.cirrus-ci
315M    ./.git
107K    ./gnu
630K    ./kerberos5
2.6M    ./libexec
 14M    ./usr.bin
 10M    ./cddl
 32M    ./crypto
4.0M    ./stand
 27M    ./lib
 16M    ./tests
255M    ./sys
8.5M    ./secure
431K    ./release
 26M    ./share
 25K    ./rescue
 21M    ./tools
6.5M    ./sbin
164K    ./targets
 23K    ./.github
 16M    ./usr.sbin
969K    ./include
974M    .
root@generic-arm64:/usr/src # date
Sun Jul 30 18:52:48 PDT 2023
root@generic-arm64:/usr/src #

Comments

Popular posts from this blog

HDMI Audio sound patches into GhostBSD source code /usr/ghost14/ghostbsd-src SOLVED Jan20 2024

How to install GhostBSD-Arm64 into a USB Flash Drive stick April 24, 2024 update edition.

January 19, 2024 Howto Download a Raspberry Pi 4B bootable image from http://ghostbsdarm64.hopto.org/packages/