Mail archive
alpine-infra

Re: Building community/cargo, build-edge-x86_64 is stuck

From: Jakub Jirutka <jakub_at_jirutka.cz>
Date: Mon, 30 Oct 2017 17:39:19 +0100

> A manual intervention on each builder is not an acceptable solution.
> Policy requires that builds be reproducible, in other words, that they can build with `abuild rootbld`.
> So this change should not have been pushed to begin with.


No, I thought this too, but it’s not how it really works. See below.

> Look at the haskell + cabal packaging for inspiration, it is a similar situation, and is policy compliant.

Have *you* looked at ghc (haskell) package? I did some time ago (and now), tried hard to figure out how does it build. There is `makedepends_build="$pkgname"`, so it depends on itself. There used to be package ghc-bootstrap, but it was not used anymore (and even that couldn’t work without manual intervention). I asked fabled about it and he explained me that ghc-bootstrap was only temporary for initial bootstrap, now ghc depends on itself and it must be probably manually installed on the builder when bootstrapping.

The same situation is community/rust. I even mentioned this in my email.

Unfortunately the bootstrapping (and cross-compilation) process is still not documented anywhere, so I can refer only to information that I was told by more competent people like fabled.

> A solution would be to take a copy of the cargo package from distfiles.alpinelinux.org

This is actually a good idea. I can keep it as it was before, just use our cargo binary instead of now non-existence binary from the upstream.


fabled or ncopa, could you please explain how is ghc and similar packages handled? Ideally directly on wiki, or just via email and I will copy it to wiki.


Jakub

> On 30. Oct 2017, at 4:14, William Pitcock <nenolod_at_dereferenced.org> wrote:
>
> Hi,
>
> Since nobody fixed this on the builders, I wound up reverting this change.
>
> However, I have more to say.
>
> On Sat, Oct 28, 2017 at 1:44 PM, Jakub Jirutka <jakub_at_jirutka.cz> wrote:
>> Hi,
>>
>> I’ve updated community/cargo package and removed dependency on external prebuilt binary, so it now (make)depends on itself (you need cargo to build cargo… *#^_at_$~$+). This is not a new situation, we did the same with community/rust some time ago. IIRC it needed some manual intervention on build server, but don’t know any details. Unfortunately I cannot do anything with it, ’cause I don’t have access to the builder.
>
> A manual intervention on each builder is not an acceptable solution.
> Policy requires that builds be reproducible, in other words, that they
> can build with `abuild rootbld`.
> So this change should not have been pushed to begin with.
>
>> I changed the abuild to not use external prebuilt binary primarily because the old URI of prebuilt binaries built by upstream’s CI doesn’t work anymore. I didn’t find any other and if I understand their CI configuration, they don’t upload cargo built with musl anywhere (again!). However, we need cargo to build rust and we need rust to build cargo (*put some very angry and vulgar comment here*), so we must take cargo binary from somewhere when bootstrapping from scratch anyway.
>
> A solution would be to take a copy of the cargo package from
> distfiles.alpinelinux.org (the old version would still exist there),
> and make a cargo-bootstrap package.
>
> Look at the haskell + cabal packaging for inspiration, it is a similar
> situation, and is policy compliant.
>
> William


Received on Mon Oct 30 2017 - 17:39:19 GMT