diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/zeroc-ice')
3 files changed, 167 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/zeroc-ice/3.6.nix b/nixpkgs/pkgs/development/libraries/zeroc-ice/3.6.nix new file mode 100644 index 000000000000..e8082e50447a --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/zeroc-ice/3.6.nix @@ -0,0 +1,59 @@ +{ stdenv, lib, fetchFromGitHub +, mcpp, bzip2, expat, openssl, db5 +, darwin, libiconv, Security +, zeroc-ice # to share meta +, cpp11 ? false +}: + +stdenv.mkDerivation rec { + pname = "zeroc-ice"; + version = "3.6.5"; + + src = fetchFromGitHub { + owner = "zeroc-ice"; + repo = "ice"; + rev = "v${version}"; + sha256 = "073h7v1f2sw77cr1a6xxa5l9j547pz24sxa9qdjc4zki0ivcnq15"; + }; + + buildInputs = [ mcpp bzip2 expat openssl db5 ] + ++ lib.optionals stdenv.isDarwin [ darwin.cctools libiconv Security ]; + + postUnpack = '' + sourceRoot=$sourceRoot/cpp + ''; + + prePatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace config/Make.rules.Darwin \ + --replace xcrun "" + ''; + + patches = [ + # Fixes compilation warning about uninitialied variables (in test code) + ./uninitialized-variable-warning.patch + ]; + + preBuild = '' + makeFlagsArray+=( + "prefix=$out" + "OPTIMIZE=yes" + "USR_DIR_INSTALL=yes" + "CONFIGS=${if cpp11 then "cpp11-shared" else "shared"}" + "SKIP=slice2py" # provided by a separate package + ) + ''; + + # cannot find -lIceXML (linking bin/transformdb) + enableParallelBuilding = false; + + outputs = [ "out" "bin" "dev" ]; + + postInstall = '' + mkdir -p $bin $dev/share + mv $out/bin $bin + mv $out/share/Ice-* $dev/share/ice + rm -rf $out/share/slice + ''; + + inherit (zeroc-ice) meta; +} diff --git a/nixpkgs/pkgs/development/libraries/zeroc-ice/default.nix b/nixpkgs/pkgs/development/libraries/zeroc-ice/default.nix new file mode 100644 index 000000000000..fcd836348556 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/zeroc-ice/default.nix @@ -0,0 +1,88 @@ +{ stdenv, lib, fetchFromGitHub +, bzip2, expat, libedit, lmdb, openssl +, darwin, libiconv, Security +, python3 # for tests only +, cpp11 ? false +}: + +let + zeroc_mcpp = stdenv.mkDerivation rec { + pname = "zeroc-mcpp"; + version = "2.7.2.14"; + + src = fetchFromGitHub { + owner = "zeroc-ice"; + repo = "mcpp"; + rev = "v${version}"; + sha256 = "1psryc2ql1cp91xd3f8jz84mdaqvwzkdq2pr96nwn03ds4cd88wh"; + }; + + configureFlags = [ "--enable-mcpplib" ]; + installFlags = [ "PREFIX=$(out)" ]; + }; + +in stdenv.mkDerivation rec { + pname = "zeroc-ice"; + version = "3.7.6"; + + src = fetchFromGitHub { + owner = "zeroc-ice"; + repo = "ice"; + rev = "v${version}"; + sha256 = "0zc8gmlzl2f38m1fj6pv2vm8ka7fkszd6hx2lb8gfv65vn3m4sk4"; + }; + + buildInputs = [ zeroc_mcpp bzip2 expat libedit lmdb openssl ] + ++ lib.optionals stdenv.isDarwin [ darwin.cctools libiconv Security ]; + + NIX_CFLAGS_COMPILE = "-Wno-error=class-memaccess -Wno-error=deprecated-copy"; + + prePatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace Make.rules.Darwin \ + --replace xcrun "" + ''; + + preBuild = '' + makeFlagsArray+=( + "prefix=$out" + "OPTIMIZE=yes" + "USR_DIR_INSTALL=yes" + "LANGUAGES=cpp" + "CONFIGS=${if cpp11 then "cpp11-shared" else "shared"}" + "SKIP=slice2py" # provided by a separate package + ) + ''; + + enableParallelBuilding = true; + + outputs = [ "out" "bin" "dev" ]; + + doCheck = true; + checkInputs = with python3.pkgs; [ passlib ]; + checkPhase = with lib; let + # these tests require network access so we need to skip them. + brokenTests = map escapeRegex [ + "Ice/udp" "Glacier2" "IceGrid/simple" "IceStorm" "IceDiscovery/simple" + ]; + # matches CONFIGS flag in makeFlagsArray + configFlag = optionalString cpp11 "--config=cpp11-shared"; + in '' + runHook preCheck + ${python3.interpreter} ./cpp/allTests.py ${configFlag} --rfilter='${concatStringsSep "|" brokenTests}' + runHook postCheck + ''; + + postInstall = '' + mkdir -p $bin $dev/share + mv $out/bin $bin + mv $out/share/ice $dev/share + ''; + + meta = with lib; { + homepage = "https://www.zeroc.com/ice.html"; + description = "The internet communications engine"; + license = licenses.gpl2Only; + platforms = platforms.unix; + maintainers = with maintainers; [ abbradar ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch b/nixpkgs/pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch new file mode 100644 index 000000000000..878dee26bb83 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch @@ -0,0 +1,20 @@ +diff --git a/test/Glacier2/dynamicFiltering/TestControllerI.h b/test/Glacier2/dynamicFiltering/TestControllerI.h +index 7e21639..1279200 100644 +--- a/test/Glacier2/dynamicFiltering/TestControllerI.h ++++ b/test/Glacier2/dynamicFiltering/TestControllerI.h +@@ -21,13 +21,12 @@ struct SessionTuple + { + Glacier2::SessionPrx session; + Glacier2::SessionControlPrx sessionControl; +- bool configured; ++ bool configured = false; + + SessionTuple() {} + SessionTuple(Glacier2::SessionPrx s, Glacier2::SessionControlPrx control): + session(s), +- sessionControl(control), +- configured(false) ++ sessionControl(control) + {} + + SessionTuple& |