diff options
Diffstat (limited to 'pkgs/tools/system')
-rw-r--r-- | pkgs/tools/system/minijail/default.nix | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/pkgs/tools/system/minijail/default.nix b/pkgs/tools/system/minijail/default.nix index 5c4c45fbca2c..2f5adc3f4c95 100644 --- a/pkgs/tools/system/minijail/default.nix +++ b/pkgs/tools/system/minijail/default.nix @@ -1,4 +1,13 @@ -{ stdenv, fetchFromGitiles, libcap }: +{ stdenv, lib, fetchFromGitiles, glibc, libcap, qemu }: + +let + dumpConstants = + if stdenv.buildPlatform == stdenv.hostPlatform then "./dump_constants" + else if stdenv.hostPlatform.isAarch32 then "qemu-arm dump_constants" + else if stdenv.hostPlatform.isAarch64 then "qemu-aarch64 dump_constants" + else if stdenv.hostPlatform.isx86_64 then "qemu-x86_64 dump_constants" + else throw "Unsupported host platform"; +in stdenv.mkDerivation rec { pname = "minijail"; @@ -10,35 +19,42 @@ stdenv.mkDerivation rec { sha256 = "00dq854n4zg3ca2b46f90k15n32zn2sgabi76mnq2w985k9v977n"; }; + nativeBuildInputs = + lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) qemu; buildInputs = [ libcap ]; makeFlags = [ "LIBDIR=$(out)/lib" ]; - - preConfigure = '' - substituteInPlace common.mk --replace /bin/echo echo - ''; + dumpConstantsFlags = lib.optional (stdenv.hostPlatform.libc == "glibc") + "LDFLAGS=-L${glibc.static}/lib"; postPatch = '' + substituteInPlace common.mk --replace /bin/echo echo patchShebangs platform2_preinstall.sh ''; postBuild = '' - ./platform2_preinstall.sh ${version} $out/include/chromeos + make $makeFlags $buildFlags $dumpConstantsFlags dump_constants + ${dumpConstants} > constants.json ''; installPhase = '' - mkdir -p $out/lib/pkgconfig $out/include/chromeos $out/bin + ./platform2_preinstall.sh ${version} $out/include/chromeos + + mkdir -p $out/lib/pkgconfig $out/include/chromeos $out/bin \ + $out/share/minijail + cp -v *.so $out/lib cp -v *.pc $out/lib/pkgconfig cp -v libminijail.h scoped_minijail.h $out/include/chromeos cp -v minijail0 $out/bin + cp -v constants.json $out/share/minijail ''; - meta = { - homepage = https://android.googlesource.com/platform/external/minijail/; + meta = with lib; { + homepage = "https://android.googlesource.com/platform/external/minijail/"; description = "Sandboxing library and application using Linux namespaces and capabilities"; - license = stdenv.lib.licenses.bsd3; - maintainers = with stdenv.lib.maintainers; [ pcarrier qyliss ]; - platforms = stdenv.lib.platforms.linux; + license = licenses.bsd3; + maintainers = with maintainers; [ pcarrier qyliss ]; + platforms = platforms.linux; }; } |