Most notably, this fixes the API change of `Store::narFromPath`[1] that
now returns a `box_ptr<Source>` instead of a Generator. I decided to do
the most minimal invasive thing here, i.e. dereferencing the source out
of the box in the NAR extraction code to fix the build again given that
the API will change even more in the future and thus the implementation
in here will require more work anyways.
To quote the upstream commit:
> [...] and would need to be changed much as they are now once async
> streams come around either way
[1] See Lix commit c82cc16754
280 lines
4.8 KiB
Nix
280 lines
4.8 KiB
Nix
{ stdenv
|
|
, lib
|
|
, fileset
|
|
|
|
, rawSrc
|
|
|
|
, buildEnv
|
|
|
|
, perlPackages
|
|
|
|
, nix
|
|
, git
|
|
|
|
, makeWrapper
|
|
, meson
|
|
, ninja
|
|
, nukeReferences
|
|
, pkg-config
|
|
, mdbook
|
|
|
|
, unzip
|
|
, libpqxx
|
|
, top-git
|
|
, mercurial
|
|
, darcs
|
|
, subversion
|
|
, breezy
|
|
, openssl
|
|
, bzip2
|
|
, libxslt
|
|
, perl
|
|
, pixz
|
|
, boost
|
|
, postgresql_13
|
|
, nlohmann_json
|
|
, prometheus-cpp
|
|
|
|
, cacert
|
|
, foreman
|
|
, just
|
|
, glibcLocales
|
|
, libressl
|
|
, openldap
|
|
, python3
|
|
|
|
, openssh
|
|
, coreutils
|
|
, findutils
|
|
, gzip
|
|
, xz
|
|
, gnutar
|
|
, gnused
|
|
, nix-eval-jobs
|
|
|
|
, rpm
|
|
, dpkg
|
|
, cdrkit
|
|
}:
|
|
|
|
let
|
|
perlDeps = buildEnv {
|
|
name = "hydra-perl-deps";
|
|
paths = lib.closePropagation
|
|
([
|
|
nix.perl-bindings
|
|
git
|
|
] ++ (with perlPackages; [
|
|
AuthenSASL
|
|
CatalystActionREST
|
|
CatalystAuthenticationStoreDBIxClass
|
|
CatalystAuthenticationStoreLDAP
|
|
CatalystDevel
|
|
CatalystPluginAccessLog
|
|
CatalystPluginAuthorizationRoles
|
|
CatalystPluginCaptcha
|
|
CatalystPluginPrometheusTiny
|
|
CatalystPluginSessionStateCookie
|
|
CatalystPluginSessionStoreFastMmap
|
|
CatalystPluginStackTrace
|
|
CatalystTraitForRequestProxyBase
|
|
CatalystViewDownload
|
|
CatalystViewJSON
|
|
CatalystViewTT
|
|
CatalystXRoleApplicator
|
|
CatalystXScriptServerStarman
|
|
CryptPassphrase
|
|
CryptPassphraseArgon2
|
|
CryptRandPasswd
|
|
DataDump
|
|
DateTime
|
|
DBDPg
|
|
DBDSQLite
|
|
DBIxClassHelpers
|
|
DigestSHA1
|
|
EmailMIME
|
|
EmailSender
|
|
FileCopyRecursive
|
|
FileLibMagic
|
|
FileSlurper
|
|
FileWhich
|
|
IOCompress
|
|
IPCRun
|
|
IPCRun3
|
|
JSON
|
|
JSONMaybeXS
|
|
JSONXS
|
|
ListSomeUtils
|
|
LWP
|
|
LWPProtocolHttps
|
|
ModulePluggable
|
|
NetAmazonS3
|
|
NetPrometheus
|
|
NetStatsd
|
|
PadWalker
|
|
ParallelForkManager
|
|
PerlCriticCommunity
|
|
PrometheusTinyShared
|
|
ReadonlyX
|
|
SetScalar
|
|
SQLSplitStatement
|
|
Starman
|
|
StringCompareConstantTime
|
|
SysHostnameLong
|
|
TermSizeAny
|
|
TermReadKey
|
|
Test2Harness
|
|
TestPostgreSQL
|
|
TextDiff
|
|
TextTable
|
|
UUID4Tiny
|
|
YAML
|
|
XMLSimple
|
|
]));
|
|
};
|
|
|
|
version = "${builtins.readFile ./version.txt}.${builtins.substring 0 8 (rawSrc.lastModifiedDate or "19700101")}.${rawSrc.shortRev or "DIRTY"}";
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "hydra";
|
|
inherit version;
|
|
|
|
src = fileset.toSource {
|
|
root = ./.;
|
|
fileset = fileset.unions ([
|
|
./doc
|
|
./meson.build
|
|
./nixos-modules
|
|
./src
|
|
./t
|
|
./version.txt
|
|
./.perlcriticrc
|
|
]);
|
|
};
|
|
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [
|
|
makeWrapper
|
|
meson
|
|
ninja
|
|
nukeReferences
|
|
pkg-config
|
|
mdbook
|
|
nix
|
|
perlDeps
|
|
perl
|
|
unzip
|
|
];
|
|
|
|
buildInputs = [
|
|
libpqxx
|
|
openssl
|
|
libxslt
|
|
nix
|
|
perlDeps
|
|
perl
|
|
boost
|
|
nlohmann_json
|
|
prometheus-cpp
|
|
nix.passthru.capnproto-lix
|
|
];
|
|
|
|
nativeCheckInputs = [
|
|
bzip2
|
|
darcs
|
|
foreman
|
|
top-git
|
|
mercurial
|
|
subversion
|
|
breezy
|
|
openldap
|
|
postgresql_13
|
|
pixz
|
|
nix-eval-jobs
|
|
perlPackages.PLS
|
|
just
|
|
];
|
|
|
|
checkInputs = [
|
|
cacert
|
|
glibcLocales
|
|
libressl.nc
|
|
python3
|
|
];
|
|
|
|
hydraPath = lib.makeBinPath (
|
|
[
|
|
subversion
|
|
openssh
|
|
nix
|
|
coreutils
|
|
findutils
|
|
pixz
|
|
gzip
|
|
bzip2
|
|
xz
|
|
gnutar
|
|
unzip
|
|
git
|
|
top-git
|
|
mercurial
|
|
darcs
|
|
gnused
|
|
breezy
|
|
nix-eval-jobs
|
|
] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ]
|
|
);
|
|
|
|
OPENLDAP_ROOT = openldap;
|
|
|
|
mesonBuildType = "release";
|
|
|
|
postPatch = ''
|
|
patchShebangs .
|
|
'';
|
|
|
|
shellHook = ''
|
|
pushd $(git rev-parse --show-toplevel) >/dev/null
|
|
|
|
PATH=$(pwd)/outputs/out/bin:$PATH
|
|
PERL5LIB=$(pwd)/src/lib:$(pwd)/t/lib:$PERL5LIB
|
|
export HYDRA_HOME="$(pwd)/src/"
|
|
mkdir -p .hydra-data
|
|
export HYDRA_DATA="$(pwd)/.hydra-data"
|
|
export HYDRA_DBI='dbi:Pg:dbname=hydra;host=localhost;port=64444'
|
|
|
|
popd >/dev/null
|
|
'';
|
|
|
|
doCheck = true;
|
|
|
|
mesonCheckFlags = [ "--verbose" ];
|
|
|
|
preCheck = ''
|
|
export LOGNAME=''${LOGNAME:-foo}
|
|
# set $HOME for bzr so it can create its trace file
|
|
export HOME=$(mktemp -d)
|
|
'';
|
|
|
|
postInstall = ''
|
|
mkdir -p $out/nix-support
|
|
|
|
for i in $out/bin/*; do
|
|
read -n 4 chars < $i
|
|
if [[ $chars =~ ELF ]]; then continue; fi
|
|
wrapProgram $i \
|
|
--prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \
|
|
--prefix PATH ':' $out/bin:$hydraPath \
|
|
--set HYDRA_RELEASE ${version} \
|
|
--set HYDRA_HOME $out/libexec/hydra \
|
|
--set NIX_RELEASE ${nix.name or "unknown"}
|
|
done
|
|
'';
|
|
|
|
dontStrip = true;
|
|
|
|
meta.description = "Build of Hydra on ${stdenv.system}";
|
|
passthru = { inherit perlDeps nix; };
|
|
})
|