Hi, When we could expect the new aarch64 binaries at https://packagecloud.io/varnishcache/varnish-weekly ?
Gracias! Emilio El mié., 15 abr. 2020 a las 14:33, Emilio Fernandes (< emilio.fernande...@gmail.com>) escribió: > > > El jue., 26 mar. 2020 a las 10:15, Martin Grigorov (< > martin.grigo...@gmail.com>) escribió: > >> Hello, >> >> Here is the PR: https://github.com/varnishcache/varnish-cache/pull/3263 >> I will add some more documentation about the new setup. >> Any feedback is welcome! >> > > Nice work, Martin! > > Gracias! > Emilio > > >> >> Regards, >> Martin >> >> On Wed, Mar 25, 2020 at 9:55 PM Martin Grigorov < >> martin.grigo...@gmail.com> wrote: >> >>> Hi, >>> >>> On Wed, Mar 25, 2020, 20:15 Guillaume Quintard < >>> guilla...@varnish-software.com> wrote: >>> >>>> is that script running as root? >>>> >>> >>> Yes. >>> I also added 'USER root' to its Dockerfile and '-u 0' to 'docker run' >>> arguments but it still doesn't work. >>> The x86 build is OK. >>> It must be something in the base docker image. >>> I've disabled the Alpine aarch64 job for now. >>> I'll send a PR tomorrow! >>> >>> Regards, >>> Martin >>> >>> >>>> -- >>>> Guillaume Quintard >>>> >>>> >>>> On Wed, Mar 25, 2020 at 2:30 AM Martin Grigorov < >>>> martin.grigo...@gmail.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> I've moved 'dist' job to be executed in parallel with 'tar_pkg_tools' >>>>> and the results from both are shared in the workspace for the actual >>>>> packing jobs. >>>>> Now the new error for aarch64-apk job is: >>>>> >>>>> abuild: varnish >>> varnish: Updating the sha512sums in APKBUILD... >>>>> ]0; DEBUG: 4 >>>>> ]0;abuild: varnish >>> varnish: Building /varnish 6.4.0-r1 (using >>>>> abuild 3.5.0-r0) started Wed, 25 Mar 2020 09:22:02 +0000 >>>>> >>> varnish: Checking sanity of /package/APKBUILD... >>>>> >>> WARNING: varnish: No maintainer >>>>> >>> varnish: Analyzing dependencies... >>>>> 0% % >>>>> ############################################>>> varnish: Installing for >>>>> build: build-base gcc libc-dev libgcc pcre-dev ncurses-dev libedit-dev >>>>> py-docutils linux-headers libunwind-dev python py3-sphinx >>>>> Waiting for repository lock >>>>> ERROR: Unable to lock database: Bad file descriptor >>>>> ERROR: Failed to open apk database: Bad file descriptor >>>>> >>> ERROR: varnish: builddeps failed >>>>> ]0; >>> varnish: Uninstalling dependencies... >>>>> Waiting for repository lock >>>>> ERROR: Unable to lock database: Bad file descriptor >>>>> ERROR: Failed to open apk database: Bad file descriptor >>>>> >>>>> Google suggested to do this: >>>>> rm -rf /var/cache/apk >>>>> mkdir /var/cache/apk >>>>> >>>>> It fails at 'abuild -r' - >>>>> https://github.com/martin-g/varnish-cache/blob/b62c357b389c0e1e31e9c001cbffb55090c2e49f/.circleci/make-apk-packages.sh#L61 >>>>> >>>>> Any hints ? >>>>> >>>>> Martin >>>>> >>>>> On Wed, Mar 25, 2020 at 2:39 AM Guillaume Quintard < >>>>> guilla...@varnish-software.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> So, you are pointing at the `dist` job, whose sole role is to provide >>>>>> us with a dist tarball, so we don't need that command line to work for >>>>>> everyone, just for that specific platform. >>>>>> >>>>>> On the other hand, >>>>>> https://github.com/varnishcache/varnish-cache/blob/4f9d8bed6b24bf9ee900c754f37615fdba1c44db/.circleci/config.yml#L168 >>>>>> is >>>>>> closer to what you want, `distcheck` will be call on all platform, and >>>>>> you >>>>>> can see that it has the `--with-unwind` argument. >>>>>> -- >>>>>> Guillaume Quintard >>>>>> >>>>>> >>>>>> On Tue, Mar 24, 2020 at 3:05 PM Martin Grigorov < >>>>>> martin.grigo...@gmail.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Mar 24, 2020, 17:19 Guillaume Quintard < >>>>>>> guilla...@varnish-software.com> wrote: >>>>>>> >>>>>>>> Compare your configure line with what's currently in use (or the >>>>>>>> apkbuild file), there are a few options (with-unwind, without-jemalloc, >>>>>>>> etc.) That need to be set >>>>>>>> >>>>>>> >>>>>>> The configure line comes from "./autogen.des": >>>>>>> https://github.com/varnishcache/varnish-cache/blob/4f9d8bed6b24bf9ee900c754f37615fdba1c44db/autogen.des#L35-L42 >>>>>>> It is called at: >>>>>>> >>>>>>> https://github.com/varnishcache/varnish-cache/blob/4f9d8bed6b24bf9ee900c754f37615fdba1c44db/.circleci/config.yml#L40 >>>>>>> In my branch at: >>>>>>> >>>>>>> https://github.com/martin-g/varnish-cache/blob/4b4626ee9cc366b032a45f27b54d77176125ef03/.circleci/make-apk-packages.sh#L26 >>>>>>> >>>>>>> It fails only on aarch64 for Alpine Linux. The x86_64 build for >>>>>>> Alpine is fine. >>>>>>> AARCH64 for CentOS 7 and Ubuntu 18.04 are also fine. >>>>>>> >>>>>>> Martin >>>>>>> >>>>>>> >>>>>>>> On Tue, Mar 24, 2020, 08:05 Martin Grigorov < >>>>>>>> martin.grigo...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> On Tue, Mar 24, 2020 at 11:00 AM Martin Grigorov < >>>>>>>>> martin.grigo...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Hi Guillaume, >>>>>>>>>> >>>>>>>>>> On Mon, Mar 23, 2020 at 8:01 PM Guillaume Quintard < >>>>>>>>>> guilla...@varnish-software.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Martin, >>>>>>>>>>> >>>>>>>>>>> Thank you for that. >>>>>>>>>>> A few remarks and questions: >>>>>>>>>>> - how much time does the "docker build" step takes? We can >>>>>>>>>>> possibly speed things up by push images to the dockerhub, as they >>>>>>>>>>> don't >>>>>>>>>>> need to change very often. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Definitely such optimization would be a good thing to do! >>>>>>>>>> At the moment, with 'machine' executor it fetches the base image >>>>>>>>>> and then builds all the Docker layers again and again. >>>>>>>>>> Here are the timings: >>>>>>>>>> 1) Spinning up a VM - around 10secs >>>>>>>>>> 2) prepare env variables - 0secs >>>>>>>>>> 3) checkout code (varnish-cache) - 5secs >>>>>>>>>> 4) activate QEMU - 2secs >>>>>>>>>> 5) build packages >>>>>>>>>> 5.1) x86 deb - 3m 30secs >>>>>>>>>> 5.2) x86 rpm - 2m 50secs >>>>>>>>>> 5.3) aarch64 rpm - 35mins >>>>>>>>>> 5.4) aarch64 deb - 45mins >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> - any reason why you clone pkg-varnish-cache in each job? The >>>>>>>>>>> idea was to have it cloned once in tar-pkg-tools for consistency and >>>>>>>>>>> reproducibility, which we lose here. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I will extract the common steps once I see it working. This is my >>>>>>>>>> first CircleCI project and I still find my ways in it! >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> - do we want to change things for the amd64 platforms for the >>>>>>>>>>> sake of consistency? >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> So far there is nothing specific for amd4 or aarch64, except the >>>>>>>>>> base Docker images. >>>>>>>>>> For example make-deb-packages.sh is reused for both amd64 and >>>>>>>>>> aarch64 builds. Same for -rpm- and now for -apk- (alpine). >>>>>>>>>> >>>>>>>>>> Once I feel the change is almost finished I will open a Pull >>>>>>>>>> Request for more comments! >>>>>>>>>> >>>>>>>>>> Martin >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Guillaume Quintard >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Mar 23, 2020 at 6:25 AM Martin Grigorov < >>>>>>>>>>> martin.grigo...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Mar 18, 2020 at 5:31 PM Martin Grigorov < >>>>>>>>>>>> martin.grigo...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Mar 12, 2020 at 4:35 PM Martin Grigorov < >>>>>>>>>>>>> martin.grigo...@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Guillaume, >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Mar 12, 2020 at 3:23 PM Guillaume Quintard < >>>>>>>>>>>>>> guilla...@varnish-software.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Offering arm64 packages requires a few things: >>>>>>>>>>>>>>> - arm64-compatible code (all good in >>>>>>>>>>>>>>> https://github.com/varnishcache/varnish-cache) >>>>>>>>>>>>>>> - arm64-compatible package framework (all good in >>>>>>>>>>>>>>> https://github.com/varnishcache/pkg-varnish-cache) >>>>>>>>>>>>>>> - infrastructure to build the packages (uhoh, see below) >>>>>>>>>>>>>>> - infrastructure to store and deliver ( >>>>>>>>>>>>>>> https://packagecloud.io/varnishcache) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> So, everything is in place, expect for the third point. At >>>>>>>>>>>>>>> the moment, there are two concurrent CI implementations: >>>>>>>>>>>>>>> - travis: >>>>>>>>>>>>>>> https://github.com/varnishcache/varnish-cache/blob/master/.travis.yml >>>>>>>>>>>>>>> It's >>>>>>>>>>>>>>> the historical one, and currently only runs compilation+test >>>>>>>>>>>>>>> for OSX >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Actually it tests Linux AMD64 and ARM64 too. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> - circleci: >>>>>>>>>>>>>>> https://github.com/varnishcache/varnish-cache/blob/master/.circleci/config.yml >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>> new kid on the block, that builds all the packages and >>>>>>>>>>>>>>> distchecks for all >>>>>>>>>>>>>>> the packaged platforms >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The issue is that cirecleci doesn't support arm64 containers >>>>>>>>>>>>>>> (for now?), so we would need to re-implement the packaging >>>>>>>>>>>>>>> logic in Travis. >>>>>>>>>>>>>>> It's not a big problem, but it's currently not a priority on my >>>>>>>>>>>>>>> side. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> However, I am totally ready to provide help if someone wants >>>>>>>>>>>>>>> to take that up. The added benefit it that Travis would be able >>>>>>>>>>>>>>> to handle >>>>>>>>>>>>>>> everything and we can retire the circleci experiment >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I will take a look in the coming days and ask you if I need >>>>>>>>>>>>>> help! >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> I've took a look at the current setup and here is what I've >>>>>>>>>>>>> found as problems and possible solutions: >>>>>>>>>>>>> >>>>>>>>>>>>> 1) Circle CI >>>>>>>>>>>>> 1.1) problem - the 'machine' and 'Docker' executors run on >>>>>>>>>>>>> x86_64, so there is no way to build the packages in a "native" >>>>>>>>>>>>> environment >>>>>>>>>>>>> 1.2) possible solutions >>>>>>>>>>>>> 1.2.1) use multiarch cross build >>>>>>>>>>>>> 1.2.2) use 'machine' executor that registers QEMU via >>>>>>>>>>>>> https://hub.docker.com/r/multiarch/qemu-user-static/ and then >>>>>>>>>>>>> builds and runs a custom Docker image that executes a shell >>>>>>>>>>>>> script with the >>>>>>>>>>>>> build steps >>>>>>>>>>>>> It will look something like >>>>>>>>>>>>> https://github.com/yukimochi-containers/alpine-vpnserver/blob/69bb0a612c9df3e4ba78064d114751b760f0df9d/.circleci/config.yml#L19-L38 >>>>>>>>>>>>> but >>>>>>>>>>>>> instead of uploading the Docker image as a last step it will run >>>>>>>>>>>>> it. >>>>>>>>>>>>> The RPM and DEB build related code from current config.yml >>>>>>>>>>>>> will be extracted into shell scripts which will be copied in the >>>>>>>>>>>>> custom >>>>>>>>>>>>> Docker images >>>>>>>>>>>>> >>>>>>>>>>>>> From these two possible ways I have better picture in my head >>>>>>>>>>>>> how to do 1.2.2, but I don't mind going deep in 1.2.1 if this is >>>>>>>>>>>>> what you'd >>>>>>>>>>>>> prefer. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I've decided to stay with Circle CI and use 'machine' executor >>>>>>>>>>>> with QEMU. >>>>>>>>>>>> >>>>>>>>>>>> The changed config.yml could be seen at >>>>>>>>>>>> https://github.com/martin-g/varnish-cache/tree/feature/aarch64-packages/.circleci >>>>>>>>>>>> and >>>>>>>>>>>> the build at >>>>>>>>>>>> https://app.circleci.com/pipelines/github/martin-g/varnish-cache/71/workflows/3a275d79-62a9-48b4-9aef-1585de1c87c8 >>>>>>>>>>>> The builds on x86 arch take 3-4 mins, but for aarch64 >>>>>>>>>>>> (emulation!) ~40mins >>>>>>>>>>>> For now the jobs just build the .deb & .rpm packages for CentOS >>>>>>>>>>>> 7 and Ubuntu 18.04, both amd64 and aarch64. >>>>>>>>>>>> TODOs: >>>>>>>>>>>> - migrate Alpine >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> Build on Alpine aarch64 fails with: >>>>>>>>> ... >>>>>>>>> automake: this behaviour will change in future Automake versions: >>>>>>>>> they will >>>>>>>>> automake: unconditionally cause object files to be placed in the >>>>>>>>> same subdirectory >>>>>>>>> automake: of the corresponding sources. >>>>>>>>> automake: project, to avoid future incompatibilities. >>>>>>>>> parallel-tests: installing 'build-aux/test-driver' >>>>>>>>> lib/libvmod_debug/Makefile.am:12: warning: >>>>>>>>> libvmod_debug_la_LDFLAGS multiply defined in condition TRUE ... >>>>>>>>> lib/libvmod_debug/automake_boilerplate.am:19: ... >>>>>>>>> 'libvmod_debug_la_LDFLAGS' previously defined here >>>>>>>>> lib/libvmod_debug/Makefile.am:9: 'lib/libvmod_debug/ >>>>>>>>> automake_boilerplate.am' included from here >>>>>>>>> + autoconf >>>>>>>>> + CONFIG_SHELL=/bin/sh >>>>>>>>> + export CONFIG_SHELL >>>>>>>>> + ./configure '--prefix=/opt/varnish' '--mandir=/opt/varnish/man' >>>>>>>>> --enable-maintainer-mode --enable-developer-warnings >>>>>>>>> --enable-debugging-symbols --enable-dependency-tracking >>>>>>>>> --with-persistent-storage --quiet >>>>>>>>> configure: WARNING: dot not found - build will fail if svg files >>>>>>>>> are out of date. >>>>>>>>> configure: WARNING: No system jemalloc found, using system malloc >>>>>>>>> configure: error: Could not find backtrace() support >>>>>>>>> >>>>>>>>> Does anyone know a workaround ? >>>>>>>>> I use multiarch/alpine:aarch64-edge as a base Docker image >>>>>>>>> >>>>>>>>> Martin >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> - store the packages as CircleCI artifacts >>>>>>>>>>>> - anything else that is still missing >>>>>>>>>>>> >>>>>>>>>>>> Adding more architectures would be as easy as adding a new >>>>>>>>>>>> Dockerfile with a base image from the respective type. >>>>>>>>>>>> >>>>>>>>>>>> Martin >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> 2) Travis CI >>>>>>>>>>>>> 2.1) problems >>>>>>>>>>>>> 2.1.1) generally Travis is slower than Circle! >>>>>>>>>>>>> Althought if we use CircleCI 'machine' executor it will be >>>>>>>>>>>>> slower than the current 'Docker' executor! >>>>>>>>>>>>> 2.1.2) Travis supports only Ubuntu >>>>>>>>>>>>> Current setup at CircleCI uses CentOS 7. >>>>>>>>>>>>> I guess the build steps won't have problems on Ubuntu. >>>>>>>>>>>>> >>>>>>>>>>>>> 3) GitHub Actions >>>>>>>>>>>>> GH Actions does not support ARM64 but it supports self hosted >>>>>>>>>>>>> ARM64 runners >>>>>>>>>>>>> 3.1) The problem is that there is no way to make a self hosted >>>>>>>>>>>>> runner really private. I.e. if someone forks Varnish Cache any >>>>>>>>>>>>> commit in >>>>>>>>>>>>> the fork will trigger builds on the arm64 node. There is no way >>>>>>>>>>>>> to reserve >>>>>>>>>>>>> the runner only for commits against >>>>>>>>>>>>> https://github.com/varnishcache/varnish-cache >>>>>>>>>>>>> >>>>>>>>>>>>> Do you see other problems or maybe different ways ? >>>>>>>>>>>>> Do you have preferences which way to go ? >>>>>>>>>>>>> >>>>>>>>>>>>> Regards, >>>>>>>>>>>>> Martin >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>> Martin >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Guillaume Quintard >>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>> varnish-dev mailing list >>>>>>>>>>>>>>> varnish-dev@varnish-cache.org >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev >>>>>>>>>>>>>>> >>>>>>>>>>>>>>
_______________________________________________ varnish-dev mailing list varnish-dev@varnish-cache.org https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev