-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build stacker on Ubuntu 24.04 LTS (noble) #644
Conversation
b01cb5d
to
d076b11
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #644 +/- ##
==========================================
+ Coverage 62.83% 63.72% +0.89%
==========================================
Files 57 57
Lines 5015 5015
==========================================
+ Hits 3151 3196 +45
+ Misses 1241 1176 -65
- Partials 623 643 +20 ☔ View full report in Codecov by Sentry. |
81abcb6
to
776a5b0
Compare
Fix build on Ubuntu 24.04 - install libsystem-dev for static libsystemd library - Use ppa:puzzleos/dev to pull in patched lxc 5.0.3 which includes liblxc.a in the lxc-dev package - Handle modifying kernel tunables for user-namespace and apparmor restrictions - Adjust Makefile to add -lsystemd to the libs when making stacker-dynamic, but omit the library when stacker-static is building built - Add default container policy to rfs if not already present - Fix whiteouts.bats test, don't quote the bsdtar | grep or we get command not found, further, check the grep return code, if it's 0, then we found the whiteout file in the tar and the test should fail. Fixes: project-stacker#632 Signed-off-by: Ryan Harper <[email protected]>
776a5b0
to
1fb1d2e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
ifeq (stacker-dynamic,$(firstword $(MAKECMDGOALS))) | ||
LXC_WRAPPER_LIBS=-lsystemd | ||
else | ||
LXC_WRAPPER_LIBS= |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm, it probably doesn't matter as I don't think it'll fail on undefined variables, but I think you meant for LXC_WRAPPER_LIBS= to also happen if it's not 24.04?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually I don't. On 24.04, the lxc-wrapper
binary requires a static link to systemd;
$ make stacker-dynamic
make -C cmd/stacker/lxc-wrapper LDFLAGS=-static LDLIBS="-llxc -lutil -lpthread -ldl -lpam -lseccomp -lselinux -lsepol -lpcre2-8 -L/usr/lib64 -lcap -lpthread -ldl" lxc-wrapper
make[1]: Entering directory '/home/ubuntu/stacker/cmd/stacker/lxc-wrapper'
cc -static lxc-wrapper.c -llxc -lutil -lpthread -ldl -lpam -lseccomp -lselinux -lsepol -lpcre2-8 -L/usr/lib64 -lcap -lpthread -ldl -o lxc-wrapper
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/liblxc.a(conf.c.o): in function `suggest_default_idmap':
(.text+0x18eb0): warning: Using 'getgrgid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/liblxc.a(attach.c.o): in function `lxc_attach_run_shell':
(.text+0x6486): warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/liblxc.a(cgroups_cgfsng.c.o): in function `systemd_jobremoved_callback':
(.text+0x2eeb): undefined reference to `sd_bus_message_read'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/liblxc.a(cgroups_cgfsng.c.o): in function `cgroup_attach_move_into_leaf.isra.0':
(.text+0x6813): undefined reference to `sd_bus_open_user'
/usr/bin/ld: (.text+0x6851): undefined reference to `sd_bus_message_new_method_call'
/usr/bin/ld: (.text+0x688c): undefined reference to `sd_bus_message_append'
/usr/bin/ld: (.text+0x68b5): undefined reference to `sd_bus_call'
/usr/bin/ld: (.text+0x68d5): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text+0x68e6): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text+0x68ee): undefined reference to `sd_bus_error_free'
/usr/bin/ld: (.text+0x68ff): undefined reference to `sd_bus_unref'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/liblxc.a(cgroups_cgfsng.c.o): in function `initialize_cgroups':
(.text+0xc7bc): undefined reference to `sd_bus_open_user'
/usr/bin/ld: (.text+0xc7fa): undefined reference to `sd_bus_call_method_async'
/usr/bin/ld: (.text+0xc852): undefined reference to `sd_bus_match_signal'
/usr/bin/ld: (.text+0xc86a): undefined reference to `sd_event_new'
/usr/bin/ld: (.text+0xc887): undefined reference to `sd_bus_attach_event'
/usr/bin/ld: (.text+0xc8a2): undefined reference to `sd_event_unref'
/usr/bin/ld: (.text+0xc90d): undefined reference to `sd_bus_unref'
/usr/bin/ld: (.text+0xe127): undefined reference to `sd_bus_message_new_method_call'
/usr/bin/ld: (.text+0xe159): undefined reference to `sd_bus_message_append'
/usr/bin/ld: (.text+0xe180): undefined reference to `sd_bus_message_open_container'
/usr/bin/ld: (.text+0xe1ea): undefined reference to `sd_bus_message_append'
/usr/bin/ld: (.text+0xe209): undefined reference to `sd_bus_message_close_container'
/usr/bin/ld: (.text+0xe22f): undefined reference to `sd_bus_message_append'
/usr/bin/ld: (.text+0xe258): undefined reference to `sd_bus_call'
/usr/bin/ld: (.text+0xe27c): undefined reference to `sd_bus_message_read'
/usr/bin/ld: (.text+0xe2a0): undefined reference to `sd_event_run'
/usr/bin/ld: (.text+0xe2d8): undefined reference to `sd_event_run'
/usr/bin/ld: (.text+0xe327): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text+0xe338): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text+0xe340): undefined reference to `sd_bus_error_free'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/liblxc.a(cgroups_cgfsng.c.o): in function `cgroup_attach_move_into_leaf.isra.0.cold':
(.text.unlikely+0x22a): undefined reference to `sd_bus_error_free'
/usr/bin/ld: (.text.unlikely+0x292): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text.unlikely+0x2aa): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text.unlikely+0x2e1): undefined reference to `sd_bus_unref'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/liblxc.a(cgroups_cgfsng.c.o): in function `initialize_cgroups.cold':
(.text.unlikely+0x6a1): undefined reference to `sd_bus_unref'
/usr/bin/ld: (.text.unlikely+0x707): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text.unlikely+0x718): undefined reference to `sd_bus_message_unref'
/usr/bin/ld: (.text.unlikely+0x720): undefined reference to `sd_bus_error_free'
collect2: error: ld returned 1 exit status
make[1]: *** [<builtin>: lxc-wrapper] Error 1
make[1]: Leaving directory '/home/ubuntu/stacker/cmd/stacker/lxc-wrapper'
make: *** [Makefile:104: cmd/stacker/lxc-wrapper/lxc-wrapper] Error 2
and pkg-config --static --libs lxc
does not emit an -lsystemd
.
However on 22.04; it doesn't seem to require the -lsystemd
; I'm not exactly sure why; I assume it's related to how the liblxc.a
is built in the lxc-dev
package in 24.04 vs what's in 22.04?
The intention then is to append the -lsystemd
when making stacker-dynamic
but to omit the link when we create stacker-static
which is compiled inside a stacker root we constructed, and there, we don't use/need systemd since we compile our own lxc lib.
Fix build on Ubuntu 24.04
What type of PR is this?
feature
Which issue does this PR fix:
#632 Feat: build on Ubuntu 24.04
What does this PR do / Why do we need it:
Allows stacker to be build on Ubuntu 24.04
If an issue # is not available please add repro steps and logs showing the issue:
Testing done on this change:
none
Automation added to e2e:
none
Will this break upgrades or downgrades?
no
Does this PR introduce any user-facing change?:
no
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.