-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
Better crossbuild v3 + fixes #9355
Conversation
- Build now uses a bare `debootstrap` as a build-sysroot instead of a `chroot` and use its libraries for cross compiling using `crossbuild-essential-*` package using `--sysroot` GCC/G++ flag and `PKG_CONFIG_PATH` to specify path to find `*.pc` files for target arch - Use node 18 (16 is EOL) - Fix a potential ambiguous case in scripts/vars.mjs
- Fix cache on x64 - Run tar as root
Thanks! Have you tested the produced ARM builds? I can test the rest |
Nope, my pi is no longer working so can't test it. |
Hi there! Is testing still required for this? I happen to have a working Raspberry Pi 400 at home and I could test the build if need be. I think it would be best to update this PR with the latest commits from the master branch before I do that though, to make sure that the latest release works and not just an old one. The question would then also be what parts I should test exactly. Since there isn't a test suite or a written list of functions to specifically test for Tabby, I would love to hear what is roughly always tested before each Release is made. |
@SmollClover thank you! It should be enough to just do basic testing of opening tabs & connecting to some SSH server as that will cover the most arch-related things (native Node modules in use) |
Okay, I've tested the following things now:
All of the above I have checked and can verify that those functions work without any issues exactly how it currently works on the latest release. I took the liberty of including most of the features I use on a daily basis in Tabby and I haven't found an error or inconsistency as to how they normally work. 👍🏻 |
Thank you! 🤝 |
This PR implements a slightly better and a faster way to cross-build arm(64) artifacts.
The previous approach uses a x64 bionic chroot to build the native modules, whereas this approach uses a bare bionic arm(64) debootstrap as a sysroot which is just used to link arm(64) libraries using
--sysroot
parameter passed to gcc/g++ andPKG_CONFIG_PATH
to specify path of*.pc
files to pkg-config.Thus this approach on its own should give a slight improvement as compared to a bionic chroot plus the added benefit of caching the sysroot makes it even faster than the previous approach implemented in #8613
Build times have been reduced from 15-20 mins to 11-13 mins.
Additionally this PR moves to Node 18 as version 16 now EOL, removes old code & fixes a potential ambiguous case in scripts/vars.mjs.
This PR is not tested but it should not break anything theoretically.