On 04/17/2017 08:42 PM, Andrew Gregory wrote:
I have no problem with making makepkg's own output more controllable (e.g. allowing builddate to be set rather than using the current time). But, a lot of the time, reproducing an identical package is going to require a very precise environment, especially for compiled software. The environmental factors that influence the built software vary from project to project and can get their values from a variety of locations. I think that trying to manage all of that from makepkg would be a mistake if it would even be possible. Some things, like building in a chroot for software that embeds the build directory, would almost certainly be easier from a script that wraps makepkg. I would prefer to see effort be put toward such a script rather than have it go into makepkg only to have to be moved to a separate script later.
apg
I fully agree with your points... actually exactly that is the plan and the reason the .BUILDINFO file exists -- to be able to recreate the very precise environment that was used to build a package. This is of cause needed, as you mentioned, for things like some binary software (gcc version)... but we actually include the .BUILDINFO file into the package itself. This has IMO a lot of advantages but that already declares the requirement to have an exact identical environment to be reproducible. The current set of adjustments are needed for makepkg itself. I'm sure nobody intends to go lot further and include environment recreation things or explicit software dependent stuff (like PERL_BUILD_DATE). makechrootpkg and things like that are project (like Arch) specific. Surely there will be the need of a wrapper around it to recreate an identical environment from the .BUILDINFO file to be able to reproduce a package beyond invoking it twice (something like makerepropkg). On top of that, there will always be some need to add some things to PKGBUILD files that are software dependent. An example would be to define PERL_BUILD_DATE="${SOURCE_DATE_EPOCH}" and i agree that something like PERL_BUILD_DATE is not to be included in makepkg itself. I hope i could settle some of your concerns :) cheers, Levente