How can I use different repository to fetch packages from in poudriere-devel?

Hi. Unfortunately there isn't electron v30 binary in FreeBSD repository and I do have a port that uses electron30; I want to run poudriere testport on it. There is a repository specially made for Signal Desktop App and I want to use this repo in poudriere to fetch binary packages instead of building them from source.

Code:
# pkg search -r Signal electron
electron30-30.2.0              Build cross-platform desktop apps with JavaScript, HTML, and CSS

% cat /usr/local/etc/pkg/repos/Signal.conf
Signal: {
        url: "https://cocyte.westeurope.cloudapp.azure.com/signal-desktop/141amd64-signal-default/"
}


Code:
# poudriere testport -vv -b https://cocyte.westeurope.cloudapp.azure.com/signal-desktop/141amd64-signal-default -j 141x64 -p default -B ytdownloader www/ytdownloader
I ran command above but it gave:

Code:
Updating FreeBSD repository catalogue...
pkg-static: No SRV record found for the repo 'FreeBSD'
[141x64-default] Fetching meta.conf: 100%    178 B   0.2kB/s    00:01
[141x64-default] Fetching data.pkg: 100%   94 KiB  96.0kB/s    00:01
pkg-static: No signature found
FreeBSD repository is up to date.
All repositories are up to date.
pkg-static: Repository FreeBSD missing. 'pkg update' required
Error: (16673) /usr/local/share/poudriere/testport.sh:download_from_repo:242: set -e error: status = 1
[00:00:04] Cleaning up
[00:00:04] Unmounting file systems
 
Code:
# XXX: This is subject to change
# Default: off; requires -b <branch> for bulk or testport.
#PACKAGE_FETCH_BRANCH=latest
# The branch will be appended to the URL:
#PACKAGE_FETCH_URL=pkg+http://pkg.FreeBSD.org/\${ABI}
/usr/local/etc/poudriere.conf

The -b option is to indicate a branch, not an entire URL.

Code:
     -b branch
              Fetch binary packages from a binary package repository instead
              of building them.  The branch argument can be one of the
              following: latest, quarterly, release_X (where X is the minor
              version of a release, e.g., “0”), or url.

              With this option poudriere will first try to fetch a binary
              package from the specified binary package repository.

              poudriere will only use packages that:
              •   come from a repository having the same or older version of
                  pkg.
              •   do not have a locally fetched package already.
              •   are not IGNORED.
              •   match the expected local version.
              •   match the expected ABI.
              •   match the expected runtime and library dependencies.
              •   match the expected OPTIONS when CHECK_CHANGED_OPTIONS is
                  enabled (default: on).
              •   is NOT listed in PACKAGE_FETCH_BLACKLIST.
              •   is NOT listed with -C, or -c, when -t is used.
              The -v flag can be used to show these decisions during build.
              Specifing twice will show more details on why some are skipped.

              WARNING: poudriere has no way of determining differences outside
              of the above list.  That is, if the local ports framework, or
              port, has custom patches or special WITH_FOO knobs (not OPTIONS)
              then it is required to add its name into
              PACKAGE_FETCH_BLACKLIST.  Otherwise a package may be fetched and
              used that lacks the custom patch or knob.

              See PACKAGE_FETCH_BRANCH, PACKAGE_FETCH_URL,
              PACKAGE_FETCH_BLACKLIST, and PACKAGE_FETCH_WHITELIST in
              poudriere.conf.sample.  The entries in the lists will be matched
              against package names without versions.
 
But I suspect that the repo i want to use does not have directory structure that a normal freebsd repository has. Can you check the repo out?


The -b option is to indicate a branch, not an entire URL.
I thought that i can pass an url too.
1723035689655.png
 
I'd have to look at the code if that's correct or not.

Anyway, I'd just set PACKAGE_FETCH_URL=https://cocyte.westeurope.cloudapp.azure.com/signal-desktop/141amd64-signal-default/ and not add the -b option or set PACKAGE_FETCH_BRANCH. Then it should just fetch the packages from that repository.
 
I did so and poudriere wanted to build all required packages from source including electron30 which is already available in this repo.

Code:
# poudriere testport -vv -j 141x64 -p default -B ytdownloader www/ytdownloader

# grep FETCH_URL /usr/local/etc/poudriere.conf
PACKAGE_FETCH_URL=https://cocyte.westeurope.cloudapp.azure.com/signal-desktop/141amd64-signal-default/

[00:00:03] [Dry Run] Ports to build: www/ytdownloader audio/opus audio/flac devel/icu devel/libpci devel/nspr graphics/webp multimedia/dav1d multimedia/openh264 graphics/libdrm graphics/mesa-libs security/nss multimedia/pipewire devel/electron30 www/yt-dlp x11/libxshmfence multimedia/ffmpeg audio/libogg audio/webrtc-audio-processing0 audio/lame audio/libvorbis audio/libsndfile audio/jack devel/cmake-core devel/binutils@native devel/libinotify devel/libpciaccess devel/git@default devel/libnotify devel/re2 devel/xdg-utils graphics/giflib graphics/frei0r devel/yasm devel/llvm15@default graphics/vulkan-headers graphics/shaderc graphics/libjxl graphics/vulkan-loader graphics/libplacebo graphics/mesa-dri multimedia/ffnvcodec-headers lang/rust multimedia/aom multimedia/gmp-api multimedia/libass multimedia/gstreamer1 multimedia/libv4l multimedia/libva multimedia/libvdpau multimedia/gstreamer1-plugins multimedia/svt-av1 multimedia/vmaf multimedia/libvpx multimedia/libx264 multimedia/x265 multimedia/v4l_compat textproc/jq textproc/texi2html security/libsecret www/npm-node20 www/yarn-node20 www/node20 x11/libXScrnSaver x11/libXxf86vm devel/abseil devel/highway audio/mpg123 audio/libsamplerate devel/oniguruma devel/libunwind devel/opencl devel/orc devel/xxhash devel/swig dns/c-ares graphics/glslang graphics/spirv-tools lang/p5-Error lang/lua53 math/mpfr misc/iso-codes graphics/openexr security/ca_root_nss security/p5-Authen-SASL ftp/curl security/p5-IO-Socket-SSL textproc/asciidoc sysutils/xxd textproc/gsed textproc/rubygem-asciidoctor www/p5-CGI x11/libXv textproc/xmlto x11/xprop x11/xset devel/ruby-gems lang/lua54 misc/getopt net/p5-IO-Socket-IP math/Imath lang/ruby32 security/p5-Digest-HMAC net/p5-URI security/p5-GSSAPI security/p5-Net-SSLeay www/p5-HTML-Parser www/p5-Mozilla-CA www/w3m textproc/libyaml devel/p5-Module-Build www/p5-HTML-Tagset devel/boehm-gc www/p5-HTTP-Message www/p5-HTTP-Date converters/p5-Encode-Locale devel/p5-IO-HTML devel/p5-Clone www/p5-LWP-MediaTypes devel/p5-TimeDate audio/py-mutagen@py311 databases/py-sqlite3@py311 devel/py-dbus@py311 archivers/py-brotli@py311 devel/py-wheel@py311 security/py-certifi@py311 devel/py-websockets@py311 net/py-urllib3@py311 security/py-pycryptodomex@py311 textproc/py-mako@py311 textproc/py-recommonmark@py311 textproc/py-sphinx-markdown-tables@py311 www/py-requests@py311 devel/pydbus-common dns/py-idna@py311 textproc/py-CommonMark@py311 net/py-pysocks@py311 www/py-beaker@py311 textproc/py-charset-normalizer@py311 textproc/py-sphinx@py311 devel/py-future@py311 textproc/py-sphinxcontrib-devhelp@py311 textproc/py-sphinxcontrib-htmlhelp@py311 textproc/py-sphinxcontrib-applehelp@py311 textproc/py-snowballstemmer@py311 graphics/py-imagesize@py311 textproc/py-alabaster@py311 textproc/py-sphinxcontrib-jsmath@py311 textproc/py-sphinxcontrib-qthelp@py311 textproc/py-sphinxcontrib-serializinghtml@py311 textproc/py-pystemmer@py311

or set PACKAGE_FETCH_BRANCH.

I think that there are no branches in that repo.

But I suspect that the repo i want to use does not have directory structure that a normal freebsd repository has. Can you check the repo out?
 
Any reason to not use the provided package for Signal? It does work (for me) …

Code:
root@mowa219-gjp4-zbook-freebsd:~ # bectl list -c creation | tail -n 6
1500023-006-base          -      -          36.4M 2024-08-03 18:57
1500023-007-base          -      -          2.90G 2024-08-04 17:59
1500023-008-base          -      -          2.89G 2024-08-05 07:28
1500023-009-base-ports    -      -          2.80G 2024-08-06 09:06
1500023-010-base          NR     /          311G  2024-08-07 13:20
1500023-011-base          -      /tmp/up    2.79G 2024-08-08 02:54
root@mowa219-gjp4-zbook-freebsd:~ # uname -mvKU
FreeBSD 15.0-CURRENT main-n271606-e413e15c1ad5 GENERIC-NODEBUG amd64 1500023 1500023
root@mowa219-gjp4-zbook-freebsd:~ # env ABI=FreeBSD:14:amd64 IGNORE_OSVERSION=yes pkg -r /tmp/up add --force https://cocyte.westeurope.cloudapp.azure.com/signal-desktop/141amd64-signal-default/All/signal-desktop-7.16.0.pkg
pkg: Warning: Major OS version upgrade detected.  Running "pkg bootstrap -f" recommended
Fetching signal-desktop-7.16.0.pkg: 100%  125 MiB   4.7MB/s    00:28   
Installing signal-desktop-7.16.0...
package signal-desktop is already installed, forced install
Extracting signal-desktop-7.16.0: 100%
root@mowa219-gjp4-zbook-freebsd:~ # bectl umount 1500023-011-base
root@mowa219-gjp4-zbook-freebsd:~ # bectl activate -t 1500023-011-base ; exit
Successfully activated boot environment 1500023-011-base
for next boot
logout
% exit
 
It does work for me too and already installed but I want to avoid electron based packages. Some packages are being pulled from Signal repository and last time i had to remove vscode and other package that i don't remember just to install Signal.
 
If you're willing to use locally built repo by poudriere[-devel] and do not want to run web server just for using the repo, my configuration notes sharing at brew.bsd.cafe could be helpful for such a casual use cases.

And if you want to do something like poudriere bulk -A but want to avoid rebuilding too heavy leaf ports (like www/chromium) on regular updates, keeping aside until you have enough time to do, my script shared at brew.bsd.cafe would help.

Many of resources on Interned seems to be for much more "professional" use case.
 
Back
Top