diff options
author | Austin Seipp <aseipp@pobox.com> | 2019-05-02 19:46:55 -0500 |
---|---|---|
committer | Austin Seipp <aseipp@pobox.com> | 2019-05-15 09:54:07 -0500 |
commit | 34e15b1c73553e958d8357681f6fb8ff8711646c (patch) | |
tree | 8f8068b30aee576cc26dd2ff23c116583f60748a /pkgs/servers/foundationdb/default.nix | |
parent | b71c308591e1bfc3708c31dc1a94fcae636b5557 (diff) | |
download | nixlib-34e15b1c73553e958d8357681f6fb8ff8711646c.tar nixlib-34e15b1c73553e958d8357681f6fb8ff8711646c.tar.gz nixlib-34e15b1c73553e958d8357681f6fb8ff8711646c.tar.bz2 nixlib-34e15b1c73553e958d8357681f6fb8ff8711646c.tar.lz nixlib-34e15b1c73553e958d8357681f6fb8ff8711646c.tar.xz nixlib-34e15b1c73553e958d8357681f6fb8ff8711646c.tar.zst nixlib-34e15b1c73553e958d8357681f6fb8ff8711646c.zip |
foundationdb: refactor 'vsmake' build system into its own file [NFC]
FoundationDB is currently in the process of migrating to CMake, and it will eventually be the only build system. In preparation for this, split off the current (somewhat nasty) builder into its own file, and allow default.nix to be more declarative -- containing only the main supported versions. Similarly, a cmake.nix file will be added later. There is no functional change here (NFC), only an organizational change (file moves, no hash changes). Signed-off-by: Austin Seipp <aseipp@pobox.com>
Diffstat (limited to 'pkgs/servers/foundationdb/default.nix')
-rw-r--r-- | pkgs/servers/foundationdb/default.nix | 176 |
1 files changed, 5 insertions, 171 deletions
diff --git a/pkgs/servers/foundationdb/default.nix b/pkgs/servers/foundationdb/default.nix index 86c1b9065a99..f6a6329adb50 100644 --- a/pkgs/servers/foundationdb/default.nix +++ b/pkgs/servers/foundationdb/default.nix @@ -3,190 +3,24 @@ , which, findutils, m4, gawk , python, openjdk, mono, libressl -}: +}@args: let - # hysterical raisins dictate a version of boost this old. however, - # we luckily do not need to build anything, we just need the header - # files. - boost152 = stdenv49.mkDerivation rec { - name = "boost-headers-1.52.0"; - - src = fetchurl { - url = "mirror://sourceforge/boost/boost_1_52_0.tar.bz2"; - sha256 = "14mc7gsnnahdjaxbbslzk79rc0d12h1i681cd3srdwr3fzynlar2"; - }; - - configurePhase = ":"; - buildPhase = ":"; - installPhase = "mkdir -p $out/include && cp -R boost $out/include/"; - }; - - makeFdb = - { version - , branch - , sha256 - - # the revision can be inferred from the fdb tagging policy - , rev ? "refs/tags/${version}" - - # in theory newer versions of fdb support newer compilers, but they - # don't :( maybe one day - , stdenv ? stdenv49 - - # in theory newer versions of fdb support newer boost versions, but they - # don't :( maybe one day - , boost ? boost152 - - # if an release is unofficial/a prerelease, then make sure this is set - , officialRelease ? true - }: stdenv.mkDerivation rec { - name = "foundationdb-${version}"; - inherit version; - - src = fetchFromGitHub { - owner = "apple"; - repo = "foundationdb"; - inherit rev sha256; - }; - - nativeBuildInputs = [ python openjdk gawk which m4 findutils mono ]; - buildInputs = [ libressl boost ]; - - patches = - [ # For 5.2+, we need a slightly adjusted patch to fix all the ldflags - (if lib.versionAtLeast version "5.2" - then (if lib.versionAtLeast version "6.0" - then ./ldflags-6.0.patch - else ./ldflags-5.2.patch) - else ./ldflags-5.1.patch) - ] - # for 6.0+, we do NOT need to apply this version fix, since we can specify - # it ourselves. see configurePhase - ++ (lib.optional (!lib.versionAtLeast version "6.0") ./fix-scm-version.patch) - # Versions less than 6.0 have a busted Python 3 build due to an outdated - # use of 'print'. Also apply an update to the six module with many bugfixes, - # which is in 6.0+ as well - ++ (lib.optional (!lib.versionAtLeast version "6.0") (fetchpatch { - name = "update-python-six.patch"; - url = "https://github.com/apple/foundationdb/commit/4bd9efc4fc74917bc04b07a84eb065070ea7edb2.patch"; - sha256 = "030679lmc86f1wzqqyvxnwjyfrhh54pdql20ab3iifqpp9i5mi85"; - })) - ++ (lib.optional (!lib.versionAtLeast version "6.0") (fetchpatch { - name = "import-for-python-print.patch"; - url = "https://github.com/apple/foundationdb/commit/ded17c6cd667f39699cf663c0e87fe01e996c153.patch"; - sha256 = "11y434w68cpk7shs2r22hyrpcrqi8vx02cw7v5x79qxvnmdxv2an"; - })) - ; - - postPatch = '' - # note: this does not do anything for 6.0+ - substituteInPlace ./build/scver.mk \ - --subst-var-by NIXOS_FDB_VERSION_ID "${rev}" \ - --subst-var-by NIXOS_FDB_SCBRANCH "${branch}" - - substituteInPlace ./Makefile \ - --replace 'shell which ccache' 'shell true' \ - --replace -Werror "" - - substituteInPlace ./Makefile \ - --replace libstdc++_pic libstdc++ - - substituteInPlace ./build/link-validate.sh \ - --replace 'exit 1' '#exit 1' - - patchShebangs . - '' + lib.optionalString (lib.versionAtLeast version "6.0") '' - substituteInPlace ./Makefile \ - --replace 'TLS_LIBS +=' '#TLS_LIBS +=' \ - --replace 'LDFLAGS :=' 'LDFLAGS := -ltls -lssl -lcrypto' - ''; - - separateDebugInfo = true; - enableParallelBuilding = true; - - makeFlags = [ "all" "fdb_java" "fdb_python" ] - # Don't compile FDBLibTLS if we don't need it in 6.0 or later; - # it gets statically linked in - ++ lib.optional (!lib.versionAtLeast version "6.0") [ "fdb_c" ] - # Needed environment overrides - ++ [ "KVRELEASE=1" - "NOSTRIP=1" - ] ++ lib.optional officialRelease [ "RELEASE=true" ]; - - # on 6.0 and later, we can specify all this information manually - configurePhase = lib.optionalString (lib.versionAtLeast version "6.0") '' - export SOURCE_CONTROL=GIT - export SCBRANCH="${branch}" - export VERSION_ID="${rev}" - ''; - - installPhase = '' - mkdir -vp $out/{bin,libexec/plugins} $lib/{lib,share/java} $dev/include/foundationdb - - '' + lib.optionalString (!lib.versionAtLeast version "6.0") '' - # we only copy the TLS library on < 6.0, since it's compiled-in otherwise - cp -v ./lib/libFDBLibTLS.so $out/libexec/plugins/FDBLibTLS.so - '' + '' - - # C API - cp -v ./lib/libfdb_c.so $lib/lib - cp -v ./bindings/c/foundationdb/fdb_c.h $dev/include/foundationdb - cp -v ./bindings/c/foundationdb/fdb_c_options.g.h $dev/include/foundationdb - cp -v ./fdbclient/vexillographer/fdb.options $dev/include/foundationdb - - # java - cp -v ./bindings/java/foundationdb-client.jar $lib/share/java/fdb-java.jar - - # python - cp LICENSE ./bindings/python - substitute ./bindings/python/setup.py.in ./bindings/python/setup.py \ - --replace 'VERSION' "${version}" - rm -f ./bindings/python/setup.py.in - rm -f ./bindings/python/fdb/*.pth # remove useless files - rm -f ./bindings/python/*.rst ./bindings/python/*.mk - - cp -R ./bindings/python/ tmp-pythonsrc/ - tar -zcf $pythonsrc --transform s/tmp-pythonsrc/python-foundationdb/ ./tmp-pythonsrc/ - - # binaries - for x in fdbbackup fdbcli fdbserver fdbmonitor; do - cp -v "./bin/$x" $out/bin; - done - - ln -sfv $out/bin/fdbbackup $out/bin/dr_agent - ln -sfv $out/bin/fdbbackup $out/bin/fdbrestore - ln -sfv $out/bin/fdbbackup $out/bin/fdbdr - - ln -sfv $out/bin/fdbbackup $out/libexec/backup_agent - ''; - - outputs = [ "out" "lib" "dev" "pythonsrc" ]; - - meta = with stdenv.lib; { - description = "Open source, distributed, transactional key-value store"; - homepage = https://www.foundationdb.org; - license = licenses.asl20; - platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ thoughtpolice ]; - }; - }; - + vsmake = import ./vsmake.nix args; in with builtins; { - - foundationdb51 = makeFdb rec { + foundationdb51 = vsmake rec { version = "5.1.7"; branch = "release-5.1"; sha256 = "1rc472ih24f9s5g3xmnlp3v62w206ny0pvvw02bzpix2sdrpbp06"; }; - foundationdb52 = makeFdb rec { + foundationdb52 = vsmake rec { version = "5.2.8"; branch = "release-5.2"; sha256 = "1kbmmhk2m9486r4kyjlc7bb3wd50204i0p6dxcmvl6pbp1bs0wlb"; }; - foundationdb60 = makeFdb rec { + foundationdb60 = vsmake rec { version = "6.0.18"; branch = "release-6.0"; sha256 = "0q1mscailad0z7zf1nypv4g7gx3damfp45nf8nzyq47nsw5gz69p"; |