Merge pull request #95530 from midchildan/package/sourcetrail
sourcetrail: 2019.3.46 -> 2020.2.43
This commit is contained in:
		
						commit
						55669a901b
					
				@ -83,6 +83,7 @@ in {
 | 
			
		||||
      apache_10
 | 
			
		||||
      apache_11
 | 
			
		||||
      apache_13
 | 
			
		||||
      apache_14
 | 
			
		||||
      backportUtilConcurrent_3_1
 | 
			
		||||
      commonsParent_22
 | 
			
		||||
      doxia_1_0_alpha7
 | 
			
		||||
@ -98,9 +99,11 @@ in {
 | 
			
		||||
      mavenParent_21
 | 
			
		||||
      mavenParent_22
 | 
			
		||||
      mavenParent_23
 | 
			
		||||
      mavenParent_24
 | 
			
		||||
      mavenPlugins_22
 | 
			
		||||
      mavenPlugins_23
 | 
			
		||||
      mavenPlugins_24
 | 
			
		||||
      mavenPlugins_25
 | 
			
		||||
      mavenPluginTools_3_1
 | 
			
		||||
      mavenReporting_2_0_6
 | 
			
		||||
      mavenReporting_2_0_9
 | 
			
		||||
@ -121,7 +124,9 @@ in {
 | 
			
		||||
      plexus_3_3_1
 | 
			
		||||
      plexusCipher_1_4
 | 
			
		||||
      plexusCompiler_2_2
 | 
			
		||||
      plexusCompiler_2_4
 | 
			
		||||
      plexusCompilers_2_2
 | 
			
		||||
      plexusCompilers_2_4
 | 
			
		||||
      plexusComponents_1_1_7
 | 
			
		||||
      plexusComponents_1_1_14
 | 
			
		||||
      plexusComponents_1_1_15
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								pkgs/development/java-modules/maven/compiler-plugin.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								pkgs/development/java-modules/maven/compiler-plugin.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
{ fetchMaven }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  mavenCompiler_3_2 = map (obj: fetchMaven {
 | 
			
		||||
    version = "3.2";
 | 
			
		||||
    artifactId = "maven-compiler-plugin";
 | 
			
		||||
    groupId = "org.apache.maven.plugins";
 | 
			
		||||
    sha512 = obj.sha512;
 | 
			
		||||
    type = obj.type;
 | 
			
		||||
  }) [
 | 
			
		||||
    { type = "jar"; sha512 = "15lncacbgsbkp6m4fb1hv41nxn0w8lxgpjcpghw3znbh909d2y5h70q2nw3fyhd7kqsjwpvwpilkgyd5b35vi1smj5hhapmakqjk28r"; }
 | 
			
		||||
    { type = "pom"; sha512 = "0a9pnb9rscsc32gpjr257k1pnydpskcs4jx8bs88vikxbdgc5sppllmqhi7k00i19azy2vjj59b3m9dcklcspmy9caxv2l7vjyr2lm0"; }
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
@ -11,4 +11,15 @@
 | 
			
		||||
    { type = "jar"; sha512 = "3by7icjfiymp7g2v1ci5dqwml6ibzh2njyg2w43kvaz3ydcxkzmfg5s97wsdqjsii7vdgqyhr16ydsn6mr90wbjvsi6wasaq1rqa812"; }
 | 
			
		||||
    { type = "pom"; sha512 = "0pdl78hp921lgkfya54wl8hxgm1c5474j1p921q5ix1knx1rlr4klpjwx212wy2m7b6bxq0bkf8n66mqjr72rh2rh308qij00ymrga8"; }
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  plexusCompilerApi_2_4 = map (obj: fetchMaven {
 | 
			
		||||
    version = "2.4";
 | 
			
		||||
    artifactId = "plexus-compiler-api";
 | 
			
		||||
    groupId = "org.codehaus.plexus";
 | 
			
		||||
    sha512 = obj.sha512;
 | 
			
		||||
    type = obj.type;
 | 
			
		||||
  }) [
 | 
			
		||||
    { type = "jar"; sha512 = "1xm0lv43dbg33prr0vc7g3vv0r07qc7kxjjbpqkxyh60vryd9q2wj3r656z4x8fwwqjrpr9xb4lmn4nm0c1cn85xzhfpxiq13rnl8cr"; }
 | 
			
		||||
    { type = "pom"; sha512 = "0mqghnfagrmws585bvdwbpf1c719jvbmhwb318vw661cjfzj1b55nvjxza49bx5y38kwnwk0cqk9f26pv323ng09iifyjxgzafqq479"; }
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -11,4 +11,15 @@
 | 
			
		||||
    { type = "jar"; sha512 = "12xsiaqd1q6mmmkcsxf4nr4wdjl8fa1nwz32yqwrrbj9cgakph0368cnk1apjzngsmnl6bws87nlxcz64sg0rb7i2vdzggplj0a41br"; }
 | 
			
		||||
    { type = "pom"; sha512 = "1fv2ij4h9xmzv3f5mvs0ilhkw7khkw5v8n1d97a2canfn254fipz7pd9nkmkqzjvy3cqwiczyh2nzibvcii624p8ggwl4s3yjw92jx4"; }
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  plexusCompilerJavac_2_4 = map (obj: fetchMaven {
 | 
			
		||||
    version = "2.4";
 | 
			
		||||
    artifactId = "plexus-compiler-javac";
 | 
			
		||||
    groupId = "org.codehaus.plexus";
 | 
			
		||||
    sha512 = obj.sha512;
 | 
			
		||||
    type = obj.type;
 | 
			
		||||
  }) [
 | 
			
		||||
    { type = "jar"; sha512 = "272iaf7mgmhjssj0k4a9r8rzb3c8pskb4aqypcdvj217l8hbih6rsqhh9nd2xmwrwa1ifvc336b8ihz6f419lj74gp4p1za6mp0nps3"; }
 | 
			
		||||
    { type = "pom"; sha512 = "1g16i5w610nsh9h0yyhw25fpr2lx562c4v8y17lw53imi4rhm0m709ysrbrh71rhv6f8g4i5d6wgps77jmdb5kn2h5k1n4n644wrd12"; }
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -11,4 +11,15 @@
 | 
			
		||||
    { type = "jar"; sha512 = "1r1sdj784x4zcnkaz840vsz36jn1p2j98c21nia56kcdl1njydjn714bsmdy816l6sdinkz4s196mm3hshmxhq8mkmf16wgxx8jnq94"; }
 | 
			
		||||
    { type = "pom"; sha512 = "3cpfnbgil6g0bgq0cjbq2ysfjdpl05fh72d9l9cnwbilcsaxcmzn1hgmmkvam2ih222nl82dy7n5020is3y05kiv0i4n4lcs5m0ia48"; }
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  plexusCompilerManager_2_4 = map (obj: fetchMaven {
 | 
			
		||||
    version = "2.4";
 | 
			
		||||
    artifactId = "plexus-compiler-manager";
 | 
			
		||||
    groupId = "org.codehaus.plexus";
 | 
			
		||||
    sha512 = obj.sha512;
 | 
			
		||||
    type = obj.type;
 | 
			
		||||
  }) [
 | 
			
		||||
    { type = "jar"; sha512 = "2al10188nwrdmi9zk3bid4ijjfsa8ymh6m9hin5jsja7hx7anbvs3i2y7kall56h4qn7j1rj73f8499x3i2k6x53kszmksvd2a1pkd4"; }
 | 
			
		||||
    { type = "pom"; sha512 = "2bb2yrvjxci7wx7ira5cnnzdmlzdx4fk59fddpnmvdgh06dmg7fbnjlyx73pn6b13ajjrjl7rgj26mqs2hid3c0p3ni6x1qsg9w3ip0"; }
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -105,6 +105,14 @@
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  apache_14 = fetchMaven {
 | 
			
		||||
    version = "14";
 | 
			
		||||
    artifactId = "apache";
 | 
			
		||||
    groupId = "org.apache";
 | 
			
		||||
    sha512 = "08y5k9lny2z171c78l4j70miylj2xy8w48amqwcghy3p9pc1p19qx6146s4mxc2z4wx4z9gpi9agham46m5hqa6k6v2s16v80phi7xi";
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  asmParent_4_0 = fetchMaven {
 | 
			
		||||
    version = "4.0";
 | 
			
		||||
    artifactId = "asm-parent";
 | 
			
		||||
@ -345,6 +353,14 @@
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  mavenParent_24 = fetchMaven {
 | 
			
		||||
    version = "24";
 | 
			
		||||
    artifactId = "maven-parent";
 | 
			
		||||
    groupId = "org.apache.maven";
 | 
			
		||||
    sha512 = "0w1v36qx53xv5m8kag6wakzy7rjrp4gzfp7zfmrp5kw13ik6k42fnfkknslqc2g2c5dyxra2vpbvz1z9bcqslyaljd4r1rj3qbh5vl7";
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  mavenPlugins_22 = fetchMaven {
 | 
			
		||||
    version = "22";
 | 
			
		||||
    artifactId = "maven-plugins";
 | 
			
		||||
@ -369,6 +385,14 @@
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  mavenPlugins_25 = fetchMaven {
 | 
			
		||||
    version = "25";
 | 
			
		||||
    artifactId = "maven-plugins";
 | 
			
		||||
    groupId = "org.apache.maven.plugins";
 | 
			
		||||
    sha512 = "38zx1im9qnblr5p9r4ln91d2280x48n9a11j4476skrgh97l3iqxs5ggqc22wis7r53g4j8ya4dvzqhxx6gymfbz3cn6a6hcmdqbng5";
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  mavenPluginTools_3_1 = fetchMaven {
 | 
			
		||||
    version = "3.1";
 | 
			
		||||
    artifactId = "maven-plugin-tools";
 | 
			
		||||
@ -593,6 +617,14 @@
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  plexusCompiler_2_4 = fetchMaven {
 | 
			
		||||
    version = "2.4";
 | 
			
		||||
    artifactId = "plexus-compiler";
 | 
			
		||||
    groupId = "org.codehaus.plexus";
 | 
			
		||||
    sha512 = "0v89a5kbgyphmvgmdf6kb7zi4fvq16l435cxsp7grc5jy4ir9d0dv5g7xwhsk9ajp1lcy9kp4l4bk2h93g4kvj3bhk548wv284y36bf";
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  plexusCompilers_2_2 = fetchMaven {
 | 
			
		||||
    version = "2.2";
 | 
			
		||||
    artifactId = "plexus-compilers";
 | 
			
		||||
@ -601,6 +633,14 @@
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  plexusCompilers_2_4 = fetchMaven {
 | 
			
		||||
    version = "2.4";
 | 
			
		||||
    artifactId = "plexus-compilers";
 | 
			
		||||
    groupId = "org.codehaus.plexus";
 | 
			
		||||
    sha512 = "1zalxaqycaykdn6q6pnxki6yvlpaf5qap1903hcylhbi1gcwmpqys39xg4pah9giy9iis350w2dmsab2prib9lihz4s9z6s6adqcss2";
 | 
			
		||||
    type = "pom";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  plexusComponents_1_1_4 = fetchMaven {
 | 
			
		||||
    version = "1.1.4";
 | 
			
		||||
    artifactId = "plexus-components";
 | 
			
		||||
 | 
			
		||||
@ -1,77 +1,213 @@
 | 
			
		||||
{ stdenv, fetchurl, autoPatchelfHook
 | 
			
		||||
, zlib, expat, dbus, openssl, python3 }:
 | 
			
		||||
{ stdenv, fetchFromGitHub, callPackage, writeScript, cmake, wrapQtAppsHook
 | 
			
		||||
, boost, qt5, llvmPackages, gcc, jdk, pythonPackages, desktop-file-utils
 | 
			
		||||
, shared-mime-info, imagemagick, which, coreutils, maven, fetchpatch }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  # TODO: remove when version incompatibility issue with python3Packages.jedi is
 | 
			
		||||
  # resolved
 | 
			
		||||
  parso = pythonPackages.callPackage ./parso.nix {};
 | 
			
		||||
  jedi = pythonPackages.callPackage ./jedi.nix { inherit parso; };
 | 
			
		||||
 | 
			
		||||
  pythonIndexer = pythonPackages.callPackage ./python.nix { inherit jedi parso; };
 | 
			
		||||
  javaIndexer = callPackage ./java.nix {};
 | 
			
		||||
 | 
			
		||||
  # Upstream script:
 | 
			
		||||
  # https://github.com/CoatiSoftware/Sourcetrail/blob/master/script/update_java_indexer.sh
 | 
			
		||||
  installJavaIndexer = writeScript "update_java_indexer.sh" ''
 | 
			
		||||
    #!${stdenv.shell}
 | 
			
		||||
 | 
			
		||||
    cd "$(dirname "$0")/.."
 | 
			
		||||
    dst="$out/opt/sourcetrail/share/data/java/lib"
 | 
			
		||||
 | 
			
		||||
    mkdir -p "$dst"
 | 
			
		||||
    cp "${javaIndexer}/target/java-indexer-1.0.jar" "$dst/java-indexer.jar"
 | 
			
		||||
    cp -r java_indexer/lib/*.jar "$dst"
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  # Upstream script:
 | 
			
		||||
  # https://github.com/CoatiSoftware/Sourcetrail/blob/master/script/download_python_indexer.sh
 | 
			
		||||
  installPythonIndexer = writeScript "download_python_indexer.sh" ''
 | 
			
		||||
    #!${stdenv.shell}
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out/opt/sourcetrail/share/data
 | 
			
		||||
    ln -s "${pythonIndexer}/bin" "$out/opt/sourcetrail/share/data/python"
 | 
			
		||||
  '';
 | 
			
		||||
in
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "sourcetrail";
 | 
			
		||||
  version = "2019.3.46";
 | 
			
		||||
  version = "2020.2.43";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    name = "sourtrail.tar.gz";
 | 
			
		||||
    url = "https://www.sourcetrail.com/downloads/${version}/linux/64bit";
 | 
			
		||||
    sha256 = "0dnkxr3fijcsbn6pd20lyxhr9ns6ji1c4dffly9s16yq4x9ad5r4";
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "CoatiSoftware";
 | 
			
		||||
    repo = "Sourcetrail";
 | 
			
		||||
    rev = "${version}";
 | 
			
		||||
    sha256 = "0jp9y86xzkcxikc1cn4f6gqgg6zdssck08677ldagw25p1zadvzw";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ autoPatchelfHook ];
 | 
			
		||||
  buildInputs = [ zlib expat dbus stdenv.cc.cc openssl python3 ];
 | 
			
		||||
  patches = let
 | 
			
		||||
    url = commit: "https://github.com/CoatiSoftware/Sourcetrail/commit/${commit}.patch";
 | 
			
		||||
  in [
 | 
			
		||||
    ./disable-updates.patch
 | 
			
		||||
    ./disable-failing-tests.patch # FIXME: 5 test cases failing due to sandbox
 | 
			
		||||
    # TODO: remove on next release
 | 
			
		||||
    (fetchpatch {
 | 
			
		||||
      name = "fix-filecopy.patch";
 | 
			
		||||
      url = url "d079d1787c9e5cadcf41a003666dc0746cc1cda0";
 | 
			
		||||
      sha256 = "0mixy2a4s16kv2q89k7y4dv21wnv2zd86i4gdwn3xz977y8hf92b";
 | 
			
		||||
    })
 | 
			
		||||
    (fetchpatch {
 | 
			
		||||
      name = "fix-broken-test.patch";
 | 
			
		||||
      url = url "85329174bac8a301733100dc4540258f977e2c5a";
 | 
			
		||||
      sha256 = "17l4417sbmkrgr6v3fbazlmkzl9774zrpjv2n9zwfrz52y30f7b9";
 | 
			
		||||
    })
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    runHook preInstall
 | 
			
		||||
  nativeBuildInputs = [
 | 
			
		||||
    cmake
 | 
			
		||||
    jdk
 | 
			
		||||
    wrapQtAppsHook
 | 
			
		||||
    desktop-file-utils
 | 
			
		||||
    imagemagick
 | 
			
		||||
    javaIndexer # the resulting jar file is copied by our install script
 | 
			
		||||
  ] ++ stdenv.lib.optionals doCheck testBinPath;
 | 
			
		||||
  buildInputs = [
 | 
			
		||||
    boost pythonIndexer shared-mime-info
 | 
			
		||||
  ] ++ (with qt5; [ qtbase qtsvg ])
 | 
			
		||||
    ++ (with llvmPackages; [ libclang llvm ]);
 | 
			
		||||
  binPath = [ gcc jdk.jre maven which ];
 | 
			
		||||
  testBinPath = binPath ++ [ coreutils ];
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out/bin $out/opt
 | 
			
		||||
  cmakeFlags = [
 | 
			
		||||
    "-DBoost_USE_STATIC_LIBS=OFF"
 | 
			
		||||
    "-DBUILD_CXX_LANGUAGE_PACKAGE=ON"
 | 
			
		||||
    "-DCMAKE_PREFIX_PATH=${llvmPackages.clang-unwrapped}"
 | 
			
		||||
    "-DBUILD_JAVA_LANGUAGE_PACKAGE=ON"
 | 
			
		||||
    "-DBUILD_PYTHON_LANGUAGE_PACKAGE=ON"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
    mv -v setup/share $out
 | 
			
		||||
    mv -v data/gui/icon/logo_1024_1024.png $out/share/icons/sourcetrail.png
 | 
			
		||||
    mv -v data/gui/icon/project_256_256.png $out/share/icons/project-sourcetrail.png
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out/share/sourcetrail/doc
 | 
			
		||||
    mv -v README EULA.txt $out/share/sourcetrail/doc
 | 
			
		||||
    mv -v plugin $out/share/sourcetrail
 | 
			
		||||
 | 
			
		||||
    cp -rv . $out/opt
 | 
			
		||||
 | 
			
		||||
    rm $out/opt/lib/libssl.so
 | 
			
		||||
    rm $out/opt/lib/platforms/{libqeglfs.so,libqwebgl.so}
 | 
			
		||||
    ln -s ${openssl}/lib/libssl.so $out/opt/lib/libssl.so
 | 
			
		||||
 | 
			
		||||
    substituteInPlace \
 | 
			
		||||
      $out/share/applications/sourcetrail.desktop \
 | 
			
		||||
      --replace /usr/bin/ $out/bin/
 | 
			
		||||
 | 
			
		||||
    cat <<EOF > $out/bin/sourcetrail
 | 
			
		||||
    #! ${stdenv.shell} -e
 | 
			
		||||
 | 
			
		||||
    # XXX: Sourcetrail somehow copies the initial config files into the home
 | 
			
		||||
    # directory without write permissions. We currently just copy them
 | 
			
		||||
    # ourselves to work around this problem.
 | 
			
		||||
    setup_config() {
 | 
			
		||||
      local src dst
 | 
			
		||||
 | 
			
		||||
      [ ! -d ~/.config/sourcetrail ] && mkdir -p ~/.config/sourcetrail
 | 
			
		||||
      for src in $out/opt/data/fallback/*; do
 | 
			
		||||
        dst=~/.config/sourcetrail/"\$(basename "\$src")"
 | 
			
		||||
        if [ ! -e "\$dst" ]; then
 | 
			
		||||
          cp -r "\$src" "\$dst"
 | 
			
		||||
        fi
 | 
			
		||||
      done
 | 
			
		||||
 | 
			
		||||
      chmod -R u+w ~/.config/sourcetrail
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [ -d "\$HOME" ] && setup_config
 | 
			
		||||
    export PATH="\$PATH:${python3}/bin"
 | 
			
		||||
    exec "$out/opt/Sourcetrail.sh" "\$@"
 | 
			
		||||
  postPatch = let
 | 
			
		||||
    major = stdenv.lib.versions.major version;
 | 
			
		||||
    minor = stdenv.lib.versions.minor version;
 | 
			
		||||
    patch = stdenv.lib.versions.patch version;
 | 
			
		||||
  in ''
 | 
			
		||||
    # Upstream script obtains it's version from git:
 | 
			
		||||
    # https://github.com/CoatiSoftware/Sourcetrail/blob/master/cmake/version.cmake
 | 
			
		||||
    cat > cmake/version.cmake <<EOF
 | 
			
		||||
    set(GIT_BRANCH "")
 | 
			
		||||
    set(GIT_COMMIT_HASH "")
 | 
			
		||||
    set(GIT_VERSION_NUMBER "")
 | 
			
		||||
    set(VERSION_YEAR "${major}")
 | 
			
		||||
    set(VERSION_MINOR "${minor}")
 | 
			
		||||
    set(VERSION_COMMIT "${patch}")
 | 
			
		||||
    set(BUILD_TYPE "Release")
 | 
			
		||||
    set(VERSION_STRING "${major}.${minor}.${patch}")
 | 
			
		||||
    EOF
 | 
			
		||||
 | 
			
		||||
    chmod +x $out/bin/sourcetrail
 | 
			
		||||
    # Sourcetrail attempts to copy clang headers from the LLVM store path
 | 
			
		||||
    substituteInPlace CMakeLists.txt \
 | 
			
		||||
      --replace "\''${LLVM_BINARY_DIR}" '${llvmPackages.clang-unwrapped}'
 | 
			
		||||
 | 
			
		||||
    runHook postInstall
 | 
			
		||||
    patchShebangs script
 | 
			
		||||
    ln -sf ${installJavaIndexer} script/update_java_indexer.sh
 | 
			
		||||
    ln -sf ${installPythonIndexer} script/download_python_indexer.sh
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  # Sourcetrail doesn't use the usual cmake install() commands and instead uses
 | 
			
		||||
  # its own bash script for packaging. Since we're not able to reuse the script,
 | 
			
		||||
  # we'll have to roll our own in nixpkgs.
 | 
			
		||||
  #
 | 
			
		||||
  # Sourcetrail currently assumes one of the following two layouts for the
 | 
			
		||||
  # placement of its files:
 | 
			
		||||
  #
 | 
			
		||||
  # AppImage Layout       Traditional Layout
 | 
			
		||||
  # ├── bin/              ├── sourcetrail*
 | 
			
		||||
  # │   └── sourcetrail*  └── data/
 | 
			
		||||
  # └── share/
 | 
			
		||||
  #     └── data/         sourcetrail: application executable
 | 
			
		||||
  #                       data: contains assets exlusive to Sourcetrail
 | 
			
		||||
  #
 | 
			
		||||
  # The AppImage layout is the one currently used by the upstream project for
 | 
			
		||||
  # packaging its Linux port. We can't use this layout as-is for nixpkgs,
 | 
			
		||||
  # because Sourcetrail treating $out/share/data as its own might lead to
 | 
			
		||||
  # conflicts with other packages when linked into a Nix profile.
 | 
			
		||||
  #
 | 
			
		||||
  # On the other hand, the traditional layout isn't used by the upstream project
 | 
			
		||||
  # anymore so there's a risk that it might become unusable at any time in the
 | 
			
		||||
  # future. Since it's hard to detect these problems at build time, it's not a
 | 
			
		||||
  # good idea to use this layout for packaging in nixpkgs.
 | 
			
		||||
  #
 | 
			
		||||
  # Considering the problems with the above layouts, we go with the third
 | 
			
		||||
  # option, a slight variation of the AppImage layout:
 | 
			
		||||
  #
 | 
			
		||||
  # nixpkgs
 | 
			
		||||
  # ├── bin/
 | 
			
		||||
  # │   └── sourcetrail* (wrapper for opt/sourcetrail/bin/sourcetrail)
 | 
			
		||||
  # └── opt/sourcetrail/
 | 
			
		||||
  #     ├── bin/
 | 
			
		||||
  #     │   └── sourcetrail*
 | 
			
		||||
  #     └── share/
 | 
			
		||||
  #         └── data/
 | 
			
		||||
  #
 | 
			
		||||
  # Upstream install script:
 | 
			
		||||
  # https://github.com/CoatiSoftware/Sourcetrail/blob/master/setup/Linux/createPackages.sh
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    mkdir -p $out/opt/sourcetrail/bin
 | 
			
		||||
    cp app/Sourcetrail $out/opt/sourcetrail/bin/sourcetrail
 | 
			
		||||
    cp app/sourcetrail_indexer $out/opt/sourcetrail/bin/sourcetrail_indexer
 | 
			
		||||
 | 
			
		||||
    desktop-file-install --dir=$out/share/applications \
 | 
			
		||||
      --set-key Exec --set-value $out/bin/sourcetrail \
 | 
			
		||||
      ../setup/Linux/data/sourcetrail.desktop
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out/share/mime/packages
 | 
			
		||||
    cp ../setup/Linux/data/sourcetrail-mime.xml $out/share/mime/packages/
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out/opt/sourcetrail/share
 | 
			
		||||
    cp -R ../bin/app/data $out/opt/sourcetrail/share
 | 
			
		||||
    cp -R ../bin/app/user/projects $out/opt/sourcetrail/share/data/fallback
 | 
			
		||||
    rm $out/opt/sourcetrail/share/data/*_template.xml
 | 
			
		||||
    rm -r $out/opt/sourcetrail/share/data/install
 | 
			
		||||
 | 
			
		||||
    for size in 48 64 128 256 512; do
 | 
			
		||||
      mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps/
 | 
			
		||||
      convert app/data/gui/icon/logo_1024_1024.png -resize ''${size}x''${size} \
 | 
			
		||||
        $out/share/icons/hicolor/''${size}x''${size}/apps/sourcetrail.png
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out/bin
 | 
			
		||||
    makeQtWrapper $out/opt/sourcetrail/bin/sourcetrail $out/bin/sourcetrail \
 | 
			
		||||
      --prefix PATH : ${stdenv.lib.makeBinPath binPath}
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  checkPhase = ''
 | 
			
		||||
    rm -rf ../bin/app/data/{python,java/lib}
 | 
			
		||||
    ln -s $out/opt/sourcetrail/share/data/python ../bin/app/data/python
 | 
			
		||||
    ln -s $out/opt/sourcetrail/share/data/java/lib ../bin/app/data/java/lib
 | 
			
		||||
 | 
			
		||||
    pushd test
 | 
			
		||||
    # shorten PATH to prevent build failures
 | 
			
		||||
    wrapQtApp ./Sourcetrail_test \
 | 
			
		||||
      --set PATH "" \
 | 
			
		||||
      --prefix PATH : ${stdenv.lib.makeBinPath testBinPath} \
 | 
			
		||||
      --set MAVEN_OPTS "-Dmaven.repo.local=$TMPDIR/m2repo"
 | 
			
		||||
    ./Sourcetrail_test
 | 
			
		||||
    popd
 | 
			
		||||
 | 
			
		||||
    rm ../bin/app/data/{python,java/lib}
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  # This has to be done manually in the installPhase because the actual binary
 | 
			
		||||
  # lives in $out/opt/sourcetrail/bin, which isn't covered by wrapQtAppsHook
 | 
			
		||||
  dontWrapQtApps = true;
 | 
			
		||||
 | 
			
		||||
  # FIXME: some test cases are disabled in the patch phase
 | 
			
		||||
  doCheck = true;
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    homepage = "https://www.sourcetrail.com";
 | 
			
		||||
    description = "A cross-platform source explorer for C/C++ and Java";
 | 
			
		||||
    platforms = [ "x86_64-linux" ];
 | 
			
		||||
    license = licenses.unfree;
 | 
			
		||||
    platforms = platforms.all;
 | 
			
		||||
    license = licenses.gpl3;
 | 
			
		||||
    maintainers = with maintainers; [ midchildan ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,48 @@
 | 
			
		||||
diff --git a/src/test/SourceGroupTestSuite.cpp b/src/test/SourceGroupTestSuite.cpp
 | 
			
		||||
index b5c5562a..d56b83bb 100644
 | 
			
		||||
--- a/src/test/SourceGroupTestSuite.cpp
 | 
			
		||||
+++ b/src/test/SourceGroupTestSuite.cpp
 | 
			
		||||
@@ -522,6 +522,7 @@ TEST_CASE("sourcegroup java gradle generates expected output")
 | 
			
		||||
 
 | 
			
		||||
 TEST_CASE("sourcegroup java maven generates expected output")
 | 
			
		||||
 {
 | 
			
		||||
+	return;
 | 
			
		||||
 	std::vector<FilePath> mavenPaths = utility::getMavenExecutablePathDetector()->getPaths();
 | 
			
		||||
 
 | 
			
		||||
 	REQUIRE(!mavenPaths.empty());
 | 
			
		||||
diff --git a/src/test/UtilityMavenTestSuite.cpp b/src/test/UtilityMavenTestSuite.cpp
 | 
			
		||||
index f48fe2b6..363ef64a 100644
 | 
			
		||||
--- a/src/test/UtilityMavenTestSuite.cpp
 | 
			
		||||
+++ b/src/test/UtilityMavenTestSuite.cpp
 | 
			
		||||
@@ -17,6 +17,7 @@ TEST_CASE("maven path detector is working")
 | 
			
		||||
 
 | 
			
		||||
 TEST_CASE("maven wrapper detects source directories of simple projects")
 | 
			
		||||
 {
 | 
			
		||||
+	return;
 | 
			
		||||
 	std::shared_ptr<PathDetector> mavenPathDetector = utility::getMavenExecutablePathDetector();
 | 
			
		||||
 	REQUIRE(!mavenPathDetector->getPaths().empty());
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +42,7 @@ TEST_CASE("maven wrapper detects source directories of simple projects")
 | 
			
		||||
 
 | 
			
		||||
 TEST_CASE("maven wrapper detects source and test directories of simple projects")
 | 
			
		||||
 {
 | 
			
		||||
+	return;
 | 
			
		||||
 	std::shared_ptr<PathDetector> mavenPathDetector = utility::getMavenExecutablePathDetector();
 | 
			
		||||
 	REQUIRE(!mavenPathDetector->getPaths().empty());
 | 
			
		||||
 
 | 
			
		||||
@@ -65,6 +67,7 @@ TEST_CASE("maven wrapper detects source and test directories of simple projects"
 | 
			
		||||
 
 | 
			
		||||
 TEST_CASE("maven wrapper detects source directories of nested modules")
 | 
			
		||||
 {
 | 
			
		||||
+	return;
 | 
			
		||||
 	std::shared_ptr<PathDetector> mavenPathDetector = utility::getMavenExecutablePathDetector();
 | 
			
		||||
 	REQUIRE(!mavenPathDetector->getPaths().empty());
 | 
			
		||||
 
 | 
			
		||||
@@ -101,6 +104,7 @@ TEST_CASE("maven wrapper detects source directories of nested modules")
 | 
			
		||||
 
 | 
			
		||||
 TEST_CASE("maven wrapper detects source and test directories of nested modules")
 | 
			
		||||
 {
 | 
			
		||||
+	return;
 | 
			
		||||
 	std::shared_ptr<PathDetector> mavenPathDetector = utility::getMavenExecutablePathDetector();
 | 
			
		||||
 	REQUIRE(!mavenPathDetector->getPaths().empty());
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								pkgs/development/tools/sourcetrail/disable-updates.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								pkgs/development/tools/sourcetrail/disable-updates.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
diff --git a/src/lib/settings/ApplicationSettings.cpp b/src/lib/settings/ApplicationSettings.cpp
 | 
			
		||||
index 1be13ccd..db6098e1 100644
 | 
			
		||||
--- a/src/lib/settings/ApplicationSettings.cpp
 | 
			
		||||
+++ b/src/lib/settings/ApplicationSettings.cpp
 | 
			
		||||
@@ -593,7 +593,7 @@ void ApplicationSettings::setUserToken(std::string token)
 | 
			
		||||
 
 | 
			
		||||
 bool ApplicationSettings::getAutomaticUpdateCheck() const
 | 
			
		||||
 {
 | 
			
		||||
-	return getValue<bool>("user/update_check/automatic", true);
 | 
			
		||||
+	return false;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 void ApplicationSettings::setAutomaticUpdateCheck(bool automaticUpdates)
 | 
			
		||||
							
								
								
									
										27
									
								
								pkgs/development/tools/sourcetrail/java.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								pkgs/development/tools/sourcetrail/java.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
{ pkgs, javaPackages }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  javaIndexer = javaPackages.mavenbuild {
 | 
			
		||||
    name = "sourcetrail-java-indexer-${pkgs.sourcetrail.version}";
 | 
			
		||||
    src = pkgs.sourcetrail.src;
 | 
			
		||||
    m2Path = "com/sourcetrail/java-indexer";
 | 
			
		||||
 | 
			
		||||
    # This doesn't include all required dependencies. We still rely on binary
 | 
			
		||||
    # copies of maven packages included in the source repo for building.
 | 
			
		||||
    mavenDeps = with javaPackages; [
 | 
			
		||||
      mavenCompiler_3_2
 | 
			
		||||
      plexusCompilerApi_2_4
 | 
			
		||||
      plexusCompilerJavac_2_4
 | 
			
		||||
      plexusCompilerManager_2_4
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    meta = {
 | 
			
		||||
      description = "Java indexer for Sourcetrail";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
javaIndexer.overrideAttrs (drv: {
 | 
			
		||||
  postUnpack = ''
 | 
			
		||||
    export sourceRoot=''${sourceRoot}/java_indexer
 | 
			
		||||
  '';
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										36
									
								
								pkgs/development/tools/sourcetrail/jedi.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								pkgs/development/tools/sourcetrail/jedi.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
# Taken from a past commit of nixpkgs
 | 
			
		||||
 | 
			
		||||
{ stdenv, buildPythonPackage, fetchPypi, pytest, glibcLocales, tox, pytestcov, parso }:
 | 
			
		||||
 | 
			
		||||
buildPythonPackage rec {
 | 
			
		||||
  pname = "jedi";
 | 
			
		||||
 | 
			
		||||
  # TODO: Remove this package when version incompatibility issue with
 | 
			
		||||
  # python3Packages.jedi is resolved.
 | 
			
		||||
  #
 | 
			
		||||
  # Upstream requirements:
 | 
			
		||||
  # https://github.com/CoatiSoftware/SourcetrailPythonIndexer#requirements
 | 
			
		||||
  version = "0.17.2";
 | 
			
		||||
 | 
			
		||||
  src = fetchPypi {
 | 
			
		||||
    inherit pname version;
 | 
			
		||||
    sha256 = "86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  checkInputs = [ pytest glibcLocales tox pytestcov ];
 | 
			
		||||
 | 
			
		||||
  propagatedBuildInputs = [ parso ];
 | 
			
		||||
 | 
			
		||||
  checkPhase = ''
 | 
			
		||||
    LC_ALL="en_US.UTF-8" py.test test
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  # tox required for tests: https://github.com/davidhalter/jedi/issues/808
 | 
			
		||||
  doCheck = false;
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    homepage = "https://github.com/davidhalter/jedi";
 | 
			
		||||
    description = "An autocompletion tool for Python that can be used for text editors";
 | 
			
		||||
    license = licenses.lgpl3Plus;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										29
									
								
								pkgs/development/tools/sourcetrail/parso.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								pkgs/development/tools/sourcetrail/parso.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
			
		||||
# Taken from a past commit of nixpkgs
 | 
			
		||||
 | 
			
		||||
{ lib
 | 
			
		||||
, buildPythonPackage
 | 
			
		||||
, fetchPypi
 | 
			
		||||
, pytest
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
buildPythonPackage rec {
 | 
			
		||||
  pname = "parso";
 | 
			
		||||
 | 
			
		||||
  # TODO: Remove along with ./jedi.nix when version compatiblity issue is
 | 
			
		||||
  # resolved.
 | 
			
		||||
  version = "0.7.0";
 | 
			
		||||
 | 
			
		||||
  src = fetchPypi {
 | 
			
		||||
    inherit pname version;
 | 
			
		||||
    sha256 = "908e9fae2144a076d72ae4e25539143d40b8e3eafbaeae03c1bfe226f4cdf12c";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  checkInputs = [ pytest ];
 | 
			
		||||
 | 
			
		||||
  meta = {
 | 
			
		||||
    description = "A Python Parser";
 | 
			
		||||
    homepage = "https://github.com/davidhalter/parso";
 | 
			
		||||
    license = lib.licenses.mit;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										68
									
								
								pkgs/development/tools/sourcetrail/python.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								pkgs/development/tools/sourcetrail/python.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,68 @@
 | 
			
		||||
{ stdenv, lib, fetchFromGitHub, wrapPython, python, jedi, parso, cmake, swig }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "SourcetrailPythonIndexer";
 | 
			
		||||
  version = "v1_db25_p5";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "CoatiSoftware";
 | 
			
		||||
    repo = pname;
 | 
			
		||||
    rev = version;
 | 
			
		||||
    sha256 = "05hlpd3am029pv1wi6mys3q0ggp64axmg8bdf1fabl9cl9jffscq";
 | 
			
		||||
    fetchSubmodules = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ wrapPython cmake swig ];
 | 
			
		||||
  buildInputs = [ python ];
 | 
			
		||||
  pythonPath = [ jedi parso ];
 | 
			
		||||
 | 
			
		||||
  dontUseCmakeConfigure = true;
 | 
			
		||||
  cmakeFlags = [
 | 
			
		||||
    "-DBUILD_BINDINGS_PYTHON=1"
 | 
			
		||||
    "-DPYTHON_VERSION=${lib.versions.majorMinor python.version}"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  buildPhase = ''
 | 
			
		||||
    pushd SourcetrailDB
 | 
			
		||||
    cmake -Bbuild $cmakeFlags .
 | 
			
		||||
    pushd build
 | 
			
		||||
    make -j $NIX_BUILD_CORES
 | 
			
		||||
    popd
 | 
			
		||||
    popd
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  checkPhase = ''
 | 
			
		||||
    buildPythonPath "$pythonPath"
 | 
			
		||||
 | 
			
		||||
    # FIXME: some tests are failing
 | 
			
		||||
    # PYTHONPATH="$program_PYTHONPATH:SourcetrailDB/build/bindings_python" \
 | 
			
		||||
    #   ${python}/bin/python test.py
 | 
			
		||||
    PYTHONPATH="$program_PYTHONPATH:SourcetrailDB/build/bindings_python" \
 | 
			
		||||
      ${python}/bin/python test_shallow.py
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    shopt -s extglob
 | 
			
		||||
    mkdir -p $out/{bin,libexec}
 | 
			
		||||
 | 
			
		||||
    cp !(run).py $out/libexec # copy *.py excluding run.py (needs extglob)
 | 
			
		||||
    cat <(echo '#!/usr/bin/env python') run.py > $out/libexec/run.py
 | 
			
		||||
    chmod +x $out/libexec/run.py
 | 
			
		||||
    ln -s $out/libexec/run.py $out/bin/SourcetrailPythonIndexer
 | 
			
		||||
 | 
			
		||||
    pushd SourcetrailDB/build/bindings_python
 | 
			
		||||
    cp sourcetraildb.py $out/libexec
 | 
			
		||||
    cp _sourcetraildb* $out/libexec/_sourcetraildb.so
 | 
			
		||||
    popd
 | 
			
		||||
 | 
			
		||||
    wrapPythonProgramsIn "$out/libexec" "$pythonPath"
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  doCheck = true;
 | 
			
		||||
 | 
			
		||||
  meta = with lib; {
 | 
			
		||||
    description = "Python indexer for Sourcetrail";
 | 
			
		||||
    homepage = "https://github.com/CoatiSoftware/SourcetrailPythonIndexer";
 | 
			
		||||
    license = licenses.gpl3;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -23480,7 +23480,11 @@ in
 | 
			
		||||
 | 
			
		||||
  libspotify = callPackage ../development/libraries/libspotify (config.libspotify or {});
 | 
			
		||||
 | 
			
		||||
  sourcetrail = callPackage ../development/tools/sourcetrail { };
 | 
			
		||||
  sourcetrail = libsForQt5.callPackage ../development/tools/sourcetrail {
 | 
			
		||||
    jdk = jdk8;
 | 
			
		||||
    llvmPackages = llvmPackages_10;
 | 
			
		||||
    pythonPackages = python3Packages;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  spotifywm = callPackage ../applications/audio/spotifywm { };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -89,6 +89,9 @@ in {
 | 
			
		||||
    mavenCommonArtifactFilters_1_3
 | 
			
		||||
    mavenCommonArtifactFilters_1_4;
 | 
			
		||||
 | 
			
		||||
  inherit (callPackage ../development/java-modules/maven/compiler-plugin.nix { inherit fetchMaven; })
 | 
			
		||||
    mavenCompiler_3_2;
 | 
			
		||||
 | 
			
		||||
  inherit (callPackage ../development/java-modules/maven/core.nix { inherit fetchMaven; })
 | 
			
		||||
    mavenCore_2_0_1
 | 
			
		||||
    mavenCore_2_0_6
 | 
			
		||||
@ -243,13 +246,16 @@ in {
 | 
			
		||||
    plexusClassworlds_2_4;
 | 
			
		||||
 | 
			
		||||
  inherit (callPackage ../development/java-modules/plexus/compiler-api.nix { inherit fetchMaven; })
 | 
			
		||||
    plexusCompilerApi_2_2;
 | 
			
		||||
    plexusCompilerApi_2_2
 | 
			
		||||
    plexusCompilerApi_2_4;
 | 
			
		||||
 | 
			
		||||
  inherit (callPackage ../development/java-modules/plexus/compiler-javac.nix { inherit fetchMaven; })
 | 
			
		||||
    plexusCompilerJavac_2_2;
 | 
			
		||||
    plexusCompilerJavac_2_2
 | 
			
		||||
    plexusCompilerJavac_2_4;
 | 
			
		||||
 | 
			
		||||
  inherit (callPackage ../development/java-modules/plexus/compiler-manager.nix { inherit fetchMaven; })
 | 
			
		||||
    plexusCompilerManager_2_2;
 | 
			
		||||
    plexusCompilerManager_2_2
 | 
			
		||||
    plexusCompilerManager_2_4;
 | 
			
		||||
 | 
			
		||||
  inherit (callPackage ../development/java-modules/plexus/component-annotations.nix { inherit fetchMaven; })
 | 
			
		||||
    plexusComponentAnnotations_1_5_5;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user