summary refs log tree commit diff
path: root/pkgs/development/mobile
diff options
context:
space:
mode:
authorSander van der Burg <svanderburg@gmail.com>2020-03-16 22:48:17 +0100
committerGitHub <noreply@github.com>2020-03-16 22:48:17 +0100
commit52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb (patch)
tree5a562655f514bda18617df8385c9a39bf20743e5 /pkgs/development/mobile
parent2f5b8d65224090fd9f25d550fdf55db54399362a (diff)
parentde119ca8eaf85eb6efcf8ca31ba9091cc670e868 (diff)
downloadnixpkgs-52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb.tar
nixpkgs-52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb.tar.gz
nixpkgs-52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb.tar.bz2
nixpkgs-52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb.tar.lz
nixpkgs-52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb.tar.xz
nixpkgs-52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb.tar.zst
nixpkgs-52c89d0572e9497f1cbbf38dcbcebf0a214ee5eb.zip
Merge pull request #82067 from lucafavatella/androidenv-generate
androidenv: enhance script for the generated expressions
Diffstat (limited to 'pkgs/development/mobile')
-rw-r--r--pkgs/development/mobile/androidenv/convertpackages.xsl2
-rw-r--r--pkgs/development/mobile/androidenv/convertsystemimages.xsl69
-rwxr-xr-x[-rw-r--r--]pkgs/development/mobile/androidenv/generate.sh28
3 files changed, 74 insertions, 25 deletions
diff --git a/pkgs/development/mobile/androidenv/convertpackages.xsl b/pkgs/development/mobile/androidenv/convertpackages.xsl
index 9623e01abcd..5c36deb73c0 100644
--- a/pkgs/development/mobile/androidenv/convertpackages.xsl
+++ b/pkgs/development/mobile/androidenv/convertpackages.xsl
@@ -28,7 +28,7 @@
 
 {
   <!-- Convert all remote packages -->
-  <xsl:for-each select="remotePackage"><xsl:sort select="@path" />
+  <xsl:for-each select="remotePackage[not(contains(@path, ';') and substring-after(@path, ';') = 'latest')]"><xsl:sort select="@path" />
 
   <!-- Extract the package name from the path -->
   <xsl:variable name="name">
diff --git a/pkgs/development/mobile/androidenv/convertsystemimages.xsl b/pkgs/development/mobile/androidenv/convertsystemimages.xsl
index 42d19cb6965..de57041f192 100644
--- a/pkgs/development/mobile/androidenv/convertsystemimages.xsl
+++ b/pkgs/development/mobile/androidenv/convertsystemimages.xsl
@@ -6,7 +6,7 @@
 
   <xsl:param name="imageType" />
 
-  <xsl:output omit-xml-declaration="yes" indent="no" />
+  <xsl:output method="text" omit-xml-declaration="yes" indent="no" />
 
   <xsl:template name="repository-url">
     <xsl:variable name="raw-url" select="complete/url"/>
@@ -15,33 +15,62 @@
         <xsl:value-of select="$raw-url"/>
       </xsl:when>
       <xsl:otherwise>
-        https://dl.google.com/android/repository/sys-img/<xsl:value-of select="$imageType" />/<xsl:value-of select="$raw-url"/>
+        <xsl:text>https://dl.google.com/android/repository/sys-img/</xsl:text><xsl:value-of select="$imageType" /><xsl:text>/</xsl:text><xsl:value-of select="$raw-url"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>
 
+  <xsl:template mode="revision" match="type-details[codename]">
+    <xsl:value-of select="codename" />-<xsl:value-of select="tag/id" />-<xsl:value-of select="abi" />
+  </xsl:template>
+
+  <xsl:template mode="revision" match="type-details[not(codename)]">
+    <xsl:value-of select="api-level" />-<xsl:value-of select="tag/id" />-<xsl:value-of select="abi" />
+  </xsl:template>
+
+  <xsl:template mode="attrkey" match="type-details[codename]">
+    <xsl:text>"</xsl:text>
+    <xsl:value-of select="codename" />
+    <xsl:text>".</xsl:text>
+    <xsl:value-of select="tag/id" />
+    <xsl:text>."</xsl:text>
+    <xsl:value-of select="abi" />
+    <xsl:text>"</xsl:text>
+  </xsl:template>
+
+  <xsl:template mode="attrkey" match="type-details[not(codename)]">
+    <xsl:text>"</xsl:text>
+    <xsl:value-of select="api-level" />
+    <xsl:text>".</xsl:text>
+    <xsl:value-of select="tag/id" />
+    <xsl:text>."</xsl:text>
+    <xsl:value-of select="abi" />
+    <xsl:text>"</xsl:text>
+  </xsl:template>
+
   <xsl:template match="/sys-img:sdk-sys-img">
-{fetchurl}:
+<xsl:text>{fetchurl}:
 
 {
-  <xsl:for-each select="remotePackage[starts-with(@path, 'system-images;')]">
-    <xsl:variable name="revision">
-      <xsl:value-of select="type-details/api-level" />-<xsl:value-of select="type-details/tag/id" />-<xsl:value-of select="type-details/abi" />
-    </xsl:variable>
-
-    "<xsl:value-of select="type-details/api-level" />".<xsl:value-of select="type-details/tag/id" />."<xsl:value-of select="type-details/abi" />" = {
-      name = "system-image-<xsl:value-of select="$revision" />";
-      path = "<xsl:value-of select="translate(@path, ';', '/')" />";
-      revision = "<xsl:value-of select="$revision" />";
-      displayName = "<xsl:value-of select="display-name" />";
-      archives.all = fetchurl {
-      <xsl:for-each select="archives/archive">
-        url = <xsl:call-template name="repository-url"/>;
-        sha1 = "<xsl:value-of select="complete/checksum" />";
-      </xsl:for-each>
-      };
+</xsl:text><xsl:for-each select="remotePackage[starts-with(@path, 'system-images;')]">
+  <xsl:variable name="revision"><xsl:apply-templates mode="revision" select="type-details" /></xsl:variable>
+
+  <xsl:variable name="attrkey"><xsl:apply-templates mode="attrkey" select="type-details" /></xsl:variable>
+
+  <xsl:text>  </xsl:text><xsl:value-of select="$attrkey" /><xsl:text> = {
+    name = "system-image-</xsl:text><xsl:value-of select="$revision" /><xsl:text>";
+    path = "</xsl:text><xsl:value-of select="translate(@path, ';', '/')" /><xsl:text>";
+    revision = "</xsl:text><xsl:value-of select="$revision" /><xsl:text>";
+    displayName = "</xsl:text><xsl:value-of select="display-name" /><xsl:text>";
+    archives.all = fetchurl {</xsl:text>
+    <xsl:for-each select="archives/archive"><xsl:text>
+      url = </xsl:text><xsl:call-template name="repository-url"/><xsl:text>;
+      sha1 = "</xsl:text><xsl:value-of select="complete/checksum" /><xsl:text>";</xsl:text>
+    </xsl:for-each><xsl:text>
+    };
   };
+</xsl:text>
   </xsl:for-each>
-}
+<xsl:text>}</xsl:text>
   </xsl:template>
 </xsl:stylesheet>
diff --git a/pkgs/development/mobile/androidenv/generate.sh b/pkgs/development/mobile/androidenv/generate.sh
index 1c55734f5f4..895a741adff 100644..100755
--- a/pkgs/development/mobile/androidenv/generate.sh
+++ b/pkgs/development/mobile/androidenv/generate.sh
@@ -1,16 +1,36 @@
-#!/bin/sh -e
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl libxslt
+
+set -e
+
+die() {
+    echo "$1" >&2
+    exit 1
+}
+
+fetch() {
+    local url="https://dl.google.com/android/repository/$1"
+    echo "$url -> $2"
+    curl -s "$url" -o "$2" || die "Failed to fetch $url"
+}
+
+pushd "$(dirname "$0")" &>/dev/null || exit 1
+
+mkdir -p xml
 
 # Convert base packages
-curl https://dl.google.com/android/repository/repository2-1.xml -o xml/repository2-1.xml
+fetch repository2-1.xml xml/repository2-1.xml
 xsltproc convertpackages.xsl xml/repository2-1.xml > generated/packages.nix
 
 # Convert system images
 for img in android android-tv android-wear android-wear-cn google_apis google_apis_playstore
 do
-    curl https://dl.google.com/android/repository/sys-img/$img/sys-img2-1.xml -o xml/$img-sys-img2-1.xml
+    fetch sys-img/$img/sys-img2-1.xml xml/$img-sys-img2-1.xml
     xsltproc --stringparam imageType $img convertsystemimages.xsl xml/$img-sys-img2-1.xml > generated/system-images-$img.nix
 done
 
 # Convert system addons
-curl https://dl.google.com/android/repository/addon2-1.xml -o xml/addon2-1.xml
+fetch addon2-1.xml xml/addon2-1.xml
 xsltproc convertaddons.xsl xml/addon2-1.xml > generated/addons.nix
+
+popd &>/dev/null