It happned again,
also add metadata gradle2nix doesnt put the 1.3.0 version of the forms library, so I had to add it to the gradle-env.json myself
This commit is contained in:
parent
fcf78b5e80
commit
fd0a67450d
|
@ -27,6 +27,14 @@ buildGradle {
|
||||||
cat ./bin/source | sed 's~$JAVA_HOME~${openjdk11}~' > $out/bin/JAVMovieScraper
|
cat ./bin/source | sed 's~$JAVA_HOME~${openjdk11}~' > $out/bin/JAVMovieScraper
|
||||||
chmod +x $out/bin/JAVMovieScraper
|
chmod +x $out/bin/JAVMovieScraper
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
meta = with pkgs.stdenv.lib; {
|
||||||
|
broken = true;
|
||||||
|
description = "A program to fetch metadata for Japanese Adult Video";
|
||||||
|
homepage = "https://github.com/DoctorD1501/JAVMovieScraper";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -19,7 +19,7 @@
|
||||||
# '';
|
# '';
|
||||||
# }
|
# }
|
||||||
|
|
||||||
{ stdenv, lib, buildEnv, fetchurl, gradleGen, writeText }:
|
{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }:
|
||||||
|
|
||||||
{ envSpec
|
{ envSpec
|
||||||
, pname ? null
|
, pname ? null
|
||||||
|
@ -27,9 +27,18 @@
|
||||||
, enableParallelBuilding ? true
|
, enableParallelBuilding ? true
|
||||||
, gradleFlags ? [ "build" ]
|
, gradleFlags ? [ "build" ]
|
||||||
, gradlePackage ? null
|
, gradlePackage ? null
|
||||||
|
, enableDebug ? false
|
||||||
, ... } @ args:
|
, ... } @ args:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (builtins)
|
||||||
|
filter sort replaceStrings attrValues match fromJSON
|
||||||
|
concatStringsSep;
|
||||||
|
|
||||||
|
inherit (stdenv.lib)
|
||||||
|
versionOlder unique mapAttrs last concatMapStringsSep removeSuffix
|
||||||
|
optionalString groupBy' readFile hasSuffix;
|
||||||
|
|
||||||
mkDep = depSpec: stdenv.mkDerivation {
|
mkDep = depSpec: stdenv.mkDerivation {
|
||||||
inherit (depSpec) name;
|
inherit (depSpec) name;
|
||||||
|
|
||||||
|
@ -41,40 +50,171 @@ let
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/${depSpec.path}
|
mkdir -p $out/${depSpec.path}
|
||||||
ln -s $src $out/${depSpec.path}/${depSpec.filename}
|
ln -s $src $out/${depSpec.path}/${depSpec.name}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mkModuleMetadata = deps:
|
||||||
|
let
|
||||||
|
ids = filter
|
||||||
|
(id: id.type == "pom")
|
||||||
|
(map (dep: dep.id) deps);
|
||||||
|
|
||||||
|
modules = groupBy'
|
||||||
|
(meta: id:
|
||||||
|
let
|
||||||
|
isNewer = versionOlder meta.latest id.version;
|
||||||
|
isNewerRelease =
|
||||||
|
!(hasSuffix "-SNAPSHOT" id.version) &&
|
||||||
|
versionOlder meta.release id.version;
|
||||||
|
in {
|
||||||
|
groupId = id.group;
|
||||||
|
artifactId = id.name;
|
||||||
|
latest = if isNewer then id.version else meta.latest;
|
||||||
|
release = if isNewerRelease then id.version else meta.release;
|
||||||
|
versions = meta.versions ++ [id.version];
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{
|
||||||
|
latest = "";
|
||||||
|
release = "";
|
||||||
|
versions = [];
|
||||||
|
}
|
||||||
|
(id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml")
|
||||||
|
ids;
|
||||||
|
|
||||||
|
in
|
||||||
|
attrValues (mapAttrs (path: meta:
|
||||||
|
let
|
||||||
|
versions' = sort versionOlder (unique meta.versions);
|
||||||
|
in
|
||||||
|
with meta; writeTextDir path ''
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<metadata modelVersion="1.1">
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<versioning>
|
||||||
|
${optionalString (latest != "") "<latest>${latest}</latest>"}
|
||||||
|
${optionalString (release != "") "<release>${release}</release>"}
|
||||||
|
<versions>
|
||||||
|
${concatMapStringsSep "\n " (v: "<version>${v}</version>") versions'}
|
||||||
|
</versions>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
||||||
|
''
|
||||||
|
) modules);
|
||||||
|
|
||||||
|
mkSnapshotMetadata = deps:
|
||||||
|
let
|
||||||
|
snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps;
|
||||||
|
|
||||||
|
modules = groupBy'
|
||||||
|
(meta: dep:
|
||||||
|
let
|
||||||
|
id = dep.id;
|
||||||
|
isNewer = dep.build > meta.buildNumber;
|
||||||
|
# Timestamp values can be bogus, e.g. jitpack.io
|
||||||
|
updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null
|
||||||
|
then replaceStrings ["."] [""] dep.timestamp
|
||||||
|
else "";
|
||||||
|
in {
|
||||||
|
groupId = id.group;
|
||||||
|
artifactId = id.name;
|
||||||
|
version = id.version;
|
||||||
|
timestamp = if isNewer then dep.timestamp else meta.timestamp;
|
||||||
|
buildNumber = if isNewer then dep.build else meta.buildNumber;
|
||||||
|
lastUpdated = if isNewer then updated else meta.lastUpdated;
|
||||||
|
versions = meta.versions or [] ++ [{
|
||||||
|
classifier = id.classifier or "";
|
||||||
|
extension = id.extension;
|
||||||
|
value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}";
|
||||||
|
updated = updated;
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{
|
||||||
|
timestamp = "";
|
||||||
|
buildNumber = -1;
|
||||||
|
lastUpdated = "";
|
||||||
|
}
|
||||||
|
(dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml")
|
||||||
|
snapshotDeps;
|
||||||
|
|
||||||
|
mkSnapshotVersion = version: ''
|
||||||
|
<snapshotVersion>
|
||||||
|
${optionalString (version.classifier != "") "<classifier>${version.classifier}</classifier>"}
|
||||||
|
<extension>${version.extension}</extension>
|
||||||
|
<value>${version.value}</value>
|
||||||
|
${optionalString (version.updated != "") "<updated>${version.updated}</updated>"}
|
||||||
|
</snapshotVersion>
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
attrValues (mapAttrs (path: meta:
|
||||||
|
with meta; writeTextDir path ''
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<metadata modelVersion="1.1">
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
<versioning>
|
||||||
|
<snapshot>
|
||||||
|
${optionalString (timestamp != "") "<timestamp>${timestamp}</timestamp>"}
|
||||||
|
${optionalString (buildNumber != -1) "<buildNumber>${toString buildNumber}</buildNumber>"}
|
||||||
|
</snapshot>
|
||||||
|
${optionalString (lastUpdated != "") "<lastUpdated>${lastUpdated}</lastUpdated>"}
|
||||||
|
<snapshotVersions>
|
||||||
|
${concatMapStringsSep "\n " mkSnapshotVersion versions}
|
||||||
|
</snapshotVersions>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
||||||
|
''
|
||||||
|
) modules);
|
||||||
|
|
||||||
mkRepo = project: type: deps: buildEnv {
|
mkRepo = project: type: deps: buildEnv {
|
||||||
name = "${project}-gradle-${type}-env";
|
name = "${project}-gradle-${type}-env";
|
||||||
paths = map mkDep deps;
|
paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps;
|
||||||
};
|
};
|
||||||
|
|
||||||
mkInitScript = projectSpec:
|
mkInitScript = projectSpec:
|
||||||
let
|
let
|
||||||
repos = builtins.mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
|
repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
|
||||||
in
|
in
|
||||||
writeText "init.gradle" ''
|
writeText "init.gradle" ''
|
||||||
|
static def offlineRepo(RepositoryHandler repositories, String env, String path) {
|
||||||
|
repositories.clear()
|
||||||
|
repositories.maven {
|
||||||
|
name "Nix''${env.capitalize()}MavenOffline"
|
||||||
|
url path
|
||||||
|
metadataSources {
|
||||||
|
it.gradleMetadata()
|
||||||
|
it.mavenPom()
|
||||||
|
it.artifact()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
repositories.ivy {
|
||||||
|
name "Nix''${env.capitalize()}IvyOffline"
|
||||||
|
url path
|
||||||
|
layout "maven"
|
||||||
|
metadataSources {
|
||||||
|
it.gradleMetadata()
|
||||||
|
it.ivyDescriptor()
|
||||||
|
it.artifact()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gradle.settingsEvaluated {
|
gradle.settingsEvaluated {
|
||||||
it.pluginManagement.repositories {
|
offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}")
|
||||||
clear()
|
|
||||||
maven { url = uri("${repos.plugin}") }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gradle.projectsLoaded {
|
gradle.projectsLoaded {
|
||||||
allprojects {
|
allprojects {
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
offlineRepo(repositories, "buildscript", "${repos.buildscript}")
|
||||||
clear()
|
}
|
||||||
maven { url = uri("${repos.buildscript}") }
|
offlineRepo(repositories, "project", "${repos.project}")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
repositories {
|
|
||||||
clear()
|
|
||||||
maven { url = uri("${repos.project}") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -95,9 +235,9 @@ let
|
||||||
gradle = args.gradlePackage or mkGradle projectSpec.gradle;
|
gradle = args.gradlePackage or mkGradle projectSpec.gradle;
|
||||||
};
|
};
|
||||||
|
|
||||||
gradleEnv = builtins.mapAttrs
|
gradleEnv = mapAttrs
|
||||||
(_: p: mkProjectEnv p)
|
(_: p: mkProjectEnv p)
|
||||||
(builtins.fromJSON (builtins.readFile envSpec));
|
(fromJSON (readFile envSpec));
|
||||||
|
|
||||||
projectEnv = gradleEnv."";
|
projectEnv = gradleEnv."";
|
||||||
pname = args.pname or projectEnv.name;
|
pname = args.pname or projectEnv.name;
|
||||||
|
@ -118,9 +258,10 @@ in stdenv.mkDerivation (args // {
|
||||||
"GRADLE_USER_HOME=$(mktemp -d)" \
|
"GRADLE_USER_HOME=$(mktemp -d)" \
|
||||||
gradle --offline --no-daemon --no-build-cache \
|
gradle --offline --no-daemon --no-build-cache \
|
||||||
--info --full-stacktrace --warning-mode=all \
|
--info --full-stacktrace --warning-mode=all \
|
||||||
${lib.optionalString enableParallelBuilding "--parallel"} \
|
${optionalString enableParallelBuilding "--parallel"} \
|
||||||
|
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
|
||||||
--init-script ${projectEnv.initScript} \
|
--init-script ${projectEnv.initScript} \
|
||||||
${builtins.concatStringsSep " " gradleFlags}
|
${concatStringsSep " " gradleFlags}
|
||||||
)
|
)
|
||||||
|
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
|
|
Loading…
Reference in New Issue