summary refs log tree commit diff
path: root/pkgs/development/mobile/androidenv/generate-sources.xsl
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/mobile/androidenv/generate-sources.xsl')
-rw-r--r--pkgs/development/mobile/androidenv/generate-sources.xsl52
1 files changed, 52 insertions, 0 deletions
diff --git a/pkgs/development/mobile/androidenv/generate-sources.xsl b/pkgs/development/mobile/androidenv/generate-sources.xsl
new file mode 100644
index 00000000000..ad76369b2be
--- /dev/null
+++ b/pkgs/development/mobile/androidenv/generate-sources.xsl
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:sdk="http://schemas.android.com/sdk/android/repository/11">
+
+  <xsl:output omit-xml-declaration="yes" indent="no" />
+
+  <xsl:template name="repository-url">
+    <xsl:variable name="raw-url" select="sdk:archives/sdk:archive/sdk:url"/>
+    <xsl:choose>
+      <xsl:when test="starts-with($raw-url, 'http')">
+        <xsl:value-of select="$raw-url"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text>https://dl.google.com/android/repository/</xsl:text>
+        <xsl:value-of select="$raw-url"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="/sdk:sdk-repository">
+# This file is generated from generate-sources.sh. DO NOT EDIT.
+# Execute generate-sources.sh or fetch.sh to update the file.
+{stdenv, fetchurl, unzip}:
+
+let
+  buildSource = args:
+    stdenv.mkDerivation (args // {
+      buildInputs = [ unzip ];
+      buildCommand = ''
+        mkdir -p $out
+        cd $out
+        unzip $src
+    '';
+  });
+in
+{
+<xsl:for-each select="sdk:source"><xsl:sort select="sdk:api-level" data-type="number"/>
+  source_<xsl:value-of select="sdk:api-level" /> = buildSource {
+    name = "android-source-<xsl:value-of select="sdk:api-level" />";
+    src = fetchurl {
+      url = <xsl:call-template name="repository-url"/>;
+      sha1 = "<xsl:value-of select="sdk:archives/sdk:archive/sdk:checksum[@type='sha1']" />";
+    };
+    meta = {
+      description = "Source code for Android API <xsl:value-of select="sdk:api-level" />";
+    };
+  };
+</xsl:for-each>
+}
+</xsl:template>
+</xsl:stylesheet>