The purpose of this issue is to discuss the possibility of adding support for an APT package source to BinaryBuilder(Base).
An APT package source would allow piggy-backing on APT distributions of packages - to get files from one or more APT-packages, in addition to the dependencies of said packages.
AptPkgSpec is an APT package spec. that defines the APT package name, the APT package version, and a hash for the (top-level) dpkg-file.
Is the platform target for which packages are retrieved... (the definition of this is a bit vague at this point in time...)
and selections is a list of APT packages assumed to already be provided (installed).
I.e., the AptPkgSource should include all packages defined by the list of AptPkgSpec (the 3rd arg.) and their dependencies, excluding the list of packages defined by selections (and their dependencies).
Separate Apt.jl package, with a companion AptPkgSources.jl package to bridge Apt.jl to BinaryBuilder(Base) (at some point adding AptPkgSources to Yggdrasil build env.)
where Apt.jl could start out as a simple, pure-Julia version (i.e. an adapted form of the POC), but would likely at some point need to instead use and wrap libapt to get the dependency resolution properly done.
The purpose of this issue is to discuss the possibility of adding support for an APT package source to BinaryBuilder(Base).
An APT package source would allow piggy-backing on APT distributions of packages - to get files from one or more APT-packages, in addition to the dependencies of said packages.
A proof-of-concept was parked at https://github.com/IHPSystems/Yggdrasil/blob/stemann/cuda_10.2_aarch64-linux-gnu_with_apt_pkg_source, in the commit https://github.com/IHPSystems/Yggdrasil/commit/19e4f4dd41529504e5ad93943400a200facc3f22.
An APT package source in https://github.com/IHPSystems/Yggdrasil/blob/stemann/cuda_10.2_aarch64-linux-gnu_with_apt_pkg_source/C/CUDA/CUDA_full%4010.2/build_tarballs.jl#L23-L36 is defined as follows:
where the positional arguments:
AptSource
is a source for APT.AptKey
is a public key for APT.AptPkgSpec
is an APT package spec. that defines the APT package name, the APT package version, and a hash for the (top-level) dpkg-file.and
selections
is a list of APT packages assumed to already be provided (installed).I.e., the
AptPkgSource
should include all packages defined by the list ofAptPkgSpec
(the 3rd arg.) and their dependencies, excluding the list of packages defined byselections
(and their dependencies).As mentioned in https://github.com/JuliaPackaging/Yggdrasil/pull/4349#discussion_r820449821, a proper implementation would likely require separate Apt.jl package and AptPkgSources.jl packages:
where Apt.jl could start out as a simple, pure-Julia version (i.e. an adapted form of the POC), but would likely at some point need to instead use and wrap libapt to get the dependency resolution properly done.