diff --git a/pkgs/by-name/ar/art-standalone/no-hardcode-path-addr2line.patch b/pkgs/by-name/ar/art-standalone/no-hardcode-path-addr2line.patch new file mode 100644 index 000000000000..ef36568090df --- /dev/null +++ b/pkgs/by-name/ar/art-standalone/no-hardcode-path-addr2line.patch @@ -0,0 +1,26 @@ +diff --git a/art/runtime/native_stack_dump.cc b/art/runtime/native_stack_dump.cc +index 150fa782..2fca7caf 100644 +--- a/art/runtime/native_stack_dump.cc ++++ b/art/runtime/native_stack_dump.cc +@@ -76,7 +76,7 @@ std::string FindAddr2line() { + return std::string(env_value) + kAddr2linePrebuiltPath; + } + } +- return std::string("/usr/bin/addr2line"); ++ return std::string("addr2line"); + } + + ALWAYS_INLINE +diff --git a/art/tools/timeout_dumper/timeout_dumper.cc b/art/tools/timeout_dumper/timeout_dumper.cc +index 08d2f4c0..513324ad 100644 +--- a/art/tools/timeout_dumper/timeout_dumper.cc ++++ b/art/tools/timeout_dumper/timeout_dumper.cc +@@ -122,7 +122,7 @@ std::unique_ptr FindAddr2line() { + } + } + +- constexpr const char* kHostAddr2line = "/usr/bin/addr2line"; ++ constexpr const char* kHostAddr2line = "addr2line"; + if (access(kHostAddr2line, F_OK) == 0) { + return std::make_unique(kHostAddr2line); + } diff --git a/pkgs/by-name/ar/art-standalone/package.nix b/pkgs/by-name/ar/art-standalone/package.nix new file mode 100644 index 000000000000..0082c97a37c2 --- /dev/null +++ b/pkgs/by-name/ar/art-standalone/package.nix @@ -0,0 +1,96 @@ +{ + lib, + stdenv, + fetchFromGitLab, + wolfssl, + bionic-translation, + python3, + which, + jdk17, + zip, + xz, + icu, + zlib, + libcap, + expat, + openssl, + libbsd, + lz4, + runtimeShell, + libpng, + makeWrapper, + binutils, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "art-standalone"; + version = "0-unstable-2025-07-09"; + + src = fetchFromGitLab { + owner = "android_translation_layer"; + repo = "art_standalone"; + rev = "1eee3dce3ba6f324bb7a32a170b2da14889af39d"; + hash = "sha256-OAO0k/LkQ+MKqR4HkFXD18LSXQZNPogjjRot4UVoE5A="; + }; + + patches = [ + # Do not hardocde addr2line binary path + ./no-hardcode-path-addr2line.patch + ]; + + postPatch = '' + chmod +x dalvik/dx/etc/{dx,dexmerger} + patchShebangs . + sed -i "s|/bin/bash|${runtimeShell}|" build/core/config.mk build/core/main.mk + ''; + + enableParallelBuilding = true; + + strictDeps = true; + + nativeBuildInputs = [ + jdk17 + makeWrapper + python3 + which + zip + ]; + + buildInputs = [ + bionic-translation + expat + icu + libbsd + libcap + libpng + lz4 + openssl + (wolfssl.overrideAttrs (oldAttrs: { + configureFlags = oldAttrs.configureFlags ++ [ + "--enable-jni" + ]; + })) + xz + zlib + ]; + + makeFlags = [ + "____LIBDIR=lib" + "____PREFIX=${placeholder "out"}" + "____INSTALL_ETC=${placeholder "out"}/etc" + ]; + + postFixup = '' + wrapProgram $out/bin/dx \ + --prefix LD_LIBRARY_PATH : $out/lib \ + --prefix PATH : ${lib.makeBinPath [ binutils ]} + ''; + + meta = { + description = "Art and dependencies with modifications to make it work on Linux"; + homepage = "https://gitlab.com/android_translation_layer/art_standalone"; + # No license specified yet + license = lib.licenses.unfree; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ onny ]; + }; +})