Hello everyone
I'm dipping my toes into FreeBSD and started porting some of the software I like and couldn't find.
I wrote a port for chhoto-url, a super simple url shortener written in rust (see my code here; I haven't submitted it). After a week of trial-and-error and reading docs it finally worked — I pushed it to VCS and went to bed. Days later I tried to port iocaine (it's a garbage generator to poision AI bots scraping your websites), because it's also written in rust. Now neither of them build.
I tried building other rust-based ports (www/lychee, textproc/csvlens) and they build flawlessly (poudriere gets pkgs and only compiles the actual port, nothing else). I'm running on a fresh VPS with 8Gb ram, 160Gb disk and 4 vCPUs (this is not the same machine that successfully built chhoto-url last week, although the configuration is the same).
Focusing on chhoto-url for now, because that one worked before (when it worked, deps were being fetched from pkg instead of compiling from source like now):
I'm using poudriere with a 14.2 jail and the latest repo for pkgs.
My poudriere.conf
I can imagine that compiling fails because I'm getting the latest code which might be buggy. What I don't understand is why does poudriere think it needs to compile this stuff in the first place, but not for the other rust ports. My desired workflow at this point would be:
I'm dipping my toes into FreeBSD and started porting some of the software I like and couldn't find.
I wrote a port for chhoto-url, a super simple url shortener written in rust (see my code here; I haven't submitted it). After a week of trial-and-error and reading docs it finally worked — I pushed it to VCS and went to bed. Days later I tried to port iocaine (it's a garbage generator to poision AI bots scraping your websites), because it's also written in rust. Now neither of them build.
I tried building other rust-based ports (www/lychee, textproc/csvlens) and they build flawlessly (poudriere gets pkgs and only compiles the actual port, nothing else). I'm running on a fresh VPS with 8Gb ram, 160Gb disk and 4 vCPUs (this is not the same machine that successfully built chhoto-url last week, although the configuration is the same).
Focusing on chhoto-url for now, because that one worked before (when it worked, deps were being fetched from pkg instead of compiling from source like now):
poudriere bulk -j 14amd64 -f myportslist
queues 3 packages for building (ftp/curl, lang/rust and the actual port), instead of just the port (neither of the above mentioned ports had to build rust).- compiling ftp/curl fails (stacktrace attached below), thus the build fails. The failure was different yesterday, but after a few tries I've decided to snapshot the error today and post here
Code:
PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: cc -DHAVE_CONFIG_H -I../include -I../lib -I../lib -DBUILDING_LIBCURL -DCURL_STATICLIB -DUNITTESTS -isystem /usr/include -isystem /usr/include -isystem /usr/local/include -isystem /usr/local/include -isystem /usr/local/include -isystem /usr/include -isystem /usr/local/include -isystem /usr/local/include -isystem /usr/local/include -isystem /usr/local/include -isystem /usr/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -Qunused-arguments -Werror-implicit-function-declaration -pthread -MT libcurlu_la-doh.lo -MD -MP -MF .deps/libcurlu_la-doh.Tpo -c doh.c -fPIC -DPIC -o .libs/libcurlu_la-doh.o
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'doh.c'.
4. Running pass 'Greedy Register Allocator' on function '@doh_rdata'
#0 0x00000000050ca831 (/usr/bin/cc+0x50ca831)
#1 0x00000000050c88d5 (/usr/bin/cc+0x50c88d5)
#2 0x000000000508fdc5 (/usr/bin/cc+0x508fdc5)
#3 0x000000082aa89410 (/lib/libthr.so.3+0x1a410)
#4 0x000000082aa889cb (/lib/libthr.so.3+0x199cb)
#5 0x0000000826e1a2d3 ([vdso]+0x2d3)
#6 0x00000000047efc0f (/usr/bin/cc+0x47efc0f)
#7 0x00000000047f51db (/usr/bin/cc+0x47f51db)
#8 0x00000000047f7f7a (/usr/bin/cc+0x47f7f7a)
#9 0x00000000047e1882 (/usr/bin/cc+0x47e1882)
#10 0x0000000004acfa59 (/usr/bin/cc+0x4acfa59)
#11 0x0000000004acfc1a (/usr/bin/cc+0x4acfc1a)
#12 0x0000000004aed0c6 (/usr/bin/cc+0x4aed0c6)
#13 0x0000000004af44d8 (/usr/bin/cc+0x4af44d8)
#14 0x0000000004af4aed (/usr/bin/cc+0x4af4aed)
#15 0x0000000004ad4cbc (/usr/bin/cc+0x4ad4cbc)
#16 0x0000000004af7d3d (/usr/bin/cc+0x4af7d3d)
#17 0x000000000486da36 (/usr/bin/cc+0x486da36)
#18 0x0000000004cea51b (/usr/bin/cc+0x4cea51b)
#19 0x0000000004cf0254 (/usr/bin/cc+0x4cf0254)
#20 0x0000000004ceac5b (/usr/bin/cc+0x4ceac5b)
#21 0x0000000002b818cd (/usr/bin/cc+0x2b818cd)
#22 0x0000000002b9580c (/usr/bin/cc+0x2b9580c)
#23 0x00000000034594a6 (/usr/bin/cc+0x34594a6)
#24 0x0000000002e35346 (/usr/bin/cc+0x2e35346)
#25 0x0000000002d74924 (/usr/bin/cc+0x2d74924)
#26 0x0000000002eec763 (/usr/bin/cc+0x2eec763)
#27 0x000000000225474e (/usr/bin/cc+0x225474e)
#28 0x000000000226306f (/usr/bin/cc+0x226306f)
#29 0x0000000002c0ae1e (/usr/bin/cc+0x2c0ae1e)
#30 0x000000000508fbd3 (/usr/bin/cc+0x508fbd3)
#31 0x0000000002c0a60d (/usr/bin/cc+0x2c0a60d)
#32 0x0000000002bd0b12 (/usr/bin/cc+0x2bd0b12)
#33 0x0000000002bd0d7c (/usr/bin/cc+0x2bd0d7c)
#34 0x0000000002bebf30 (/usr/bin/cc+0x2bebf30)
#35 0x0000000002262730 (/usr/bin/cc+0x2262730)
#36 0x000000000225f8ad (/usr/bin/cc+0x225f8ad)
#37 0x000000082df54c3a __libc_start1 (/lib/libc.so.7+0x85c3a)
cc: error: clang frontend command failed with exit code 139 (use -v to see invocation)
FreeBSD clang version 18.1.6 (https://github.com/llvm/llvm-project.git llvmorg-18.1.6-0-g1118c2e05e67)
Target: x86_64-unknown-freebsd14.2
Thread model: posix
InstalledDir: /usr/bin
cc: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
cc: note: diagnostic msg: /tmp/doh-fbbf83.c
cc: note: diagnostic msg: /tmp/doh-fbbf83.sh
cc: note: diagnostic msg:
********************
*** Error code 1
Stop.
make[2]: stopped in /wrkdirs/usr/ports/ftp/curl/work/curl-8.13.0/lib
*** Error code 1
Stop.
make[1]: stopped in /wrkdirs/usr/ports/ftp/curl/work/curl-8.13.0/lib
*** Error code 1
Stop.
make: stopped in /wrkdirs/usr/ports/ftp/curl/work/curl-8.13.0
*** Error code 1
Stop.
make: stopped in /usr/ports/ftp/curl
My poudriere.conf
Code:
NO_ZFS=yes
FREEBSD_HOST=https://download.FreeBSD.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
USE_PORTLINT=yes
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
PACKAGE_FETCH_BRANCH=latest
PACKAGE_FETCH_URL=pkg+http://pkg.FreeBSD.org/\${ABI}
I can imagine that compiling fails because I'm getting the latest code which might be buggy. What I don't understand is why does poudriere think it needs to compile this stuff in the first place, but not for the other rust ports. My desired workflow at this point would be:
- Poudriere downloads pre-built packages for the dependencies from the latest repo
- Compiles only the actual port