Hi, On Thu, Feb 18, 2016 at 12:25:53PM +0000, Justin Dray wrote:
I actually have a Jenkins setup for my packages that does almost exactly that, I have a job generator build that I give an AUR package name to and that's all the config for new packages, and it builds them in a docker container.
You can obviously set up dependencies between the jobs to build in order, but that part isn't automatic yet. Its been pretty reliable for me over the past year or so since I last really changed anything.
If you're interested, let me know and I can share the scripts and stuff. Just on my phone at the moment or I would link them here.
Yes, I would be interested! Out of curiosity, why do you use docker containers instead of the "official" method with chroots? https://wiki.archlinux.org/index.php/DeveloperWiki:Building_in_a_Clean_Chroo...
Cheers, Justin
On Thu, Feb 18, 2016, 9:51 PM Baptiste Jonglez <baptiste@bitsofnetworks.org> wrote:
Hi,
I would like to run some kind of continuous integration of my AUR packages. The goal is to know when a package I maintain fails to build because either:
1/ its dependencies have been updated (new API, new incompatible version of GCC, ...)
2/ for -git packages, changes made upstream broke something (new dependency needed, new build system...)
The scripts in devtools [1] look like they should work just fine to automate these kind of builds. After all, they are used to build the official Archlinux packages.
However, I found that the build scripts do not really handle dependencies. When building a given package, they just install deps and makedeps from the existing Archlinux repositories. This is an issue when AUR packages depend on each other, because then dependencies cannot be installed from the Archlinux repositories...
It *is* possible to manually pass packages to install in the chroot before building, but this is far from convenient. For instance, ring-daemon depends on opendht, so I would need to do this:
cd opendht extra-x86_64-build cd ../ring-daemon extra-x86_64-build -- -I ../opendht/opendht-0.5.1-1-x86_64.pkg.tar.xz
When there are multiple dependencies, it quickly becomes a nightmare to automate (especially because dependencies need to be passed in the right order).
Is there any script that automates dependency handling when building? Basically, it would probably need to perform a topological sort, build packages in this order, and push them to a local repository to be able to build later packages. Or did I take the wrong approach entirely?
Thanks, Baptiste
[1] https://projects.archlinux.org/devtools.git/
PS : Some existing efforts I found about CI with Arch:
- https://lists.archlinux.org/pipermail/arch-dev-public/2014-November/026757.h... https://jenkins.arch-ci.org/ No script provided, site appears to be down
- http://openbuildservice.org/2012/09/10/arch-linux-support/ Source code is unreadable (enormous Perl scripts, no modularity)