diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix index 8a536bad9c48..c980999dc6ba 100644 --- a/pkgs/applications/editors/android-studio/common.nix +++ b/pkgs/applications/editors/android-studio/common.nix @@ -1,4 +1,5 @@ -{ pname, version, build, sha256Hash, meta }: +{ channel, pname, version, build, sha256Hash, deprecated ? false }: + { bash , buildFHSUserEnv , coreutils @@ -36,8 +37,21 @@ }: let + # TODO: This is a bit stupid to be honest... + # The problem is that we have to make sure this is only executed if the + # derivation is actually build to avoid always printing this warning (e.g. + # "nix-env -qaP"). Since this will always evaluate to "" it won't actually + # change the derivation (only generate a side-effect) but we have to make + # sure this expression is evaluated lazily! + printDeprecationWarning = if deprecated then (builtins.trace '' + android-studio-preview and androidStudioPackages.preview are old aliases + and will be dropped at some point, please use androidStudioPackages.beta + instead (corresponds to the correct channel name).'' + "") + else ""; + drvName = "android-studio-${channel}-${version}"; androidStudio = stdenv.mkDerivation { - name = "${pname}-${version}"; + name = drvName; src = fetchurl { url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${build}-linux.zip"; @@ -115,17 +129,32 @@ let # (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS # environment is used as a work around for that. fhsEnv = buildFHSUserEnv { - name = "${pname}-fhs-env"; + name = "${drvName}-fhs-env"; multiPkgs = pkgs: [ pkgs.ncurses5 ]; }; in writeTextFile { - name = "${pname}-${version}"; + name = "${drvName}-wrapper"; + # TODO: Rename preview -> beta (and add -stable suffix?): destination = "/bin/${pname}"; executable = true; text = '' #!${bash}/bin/bash - ${fhsEnv}/bin/${pname}-fhs-env ${androidStudio}/bin/studio.sh - ''; - } // { inherit meta; } + ${fhsEnv}/bin/${drvName}-fhs-env ${androidStudio}/bin/studio.sh + '' + printDeprecationWarning; + } // { + meta = with stdenv.lib; { + description = "The Official IDE for Android (${channel} channel)"; + longDescription = '' + Android Studio is the official IDE for Android app development, based on + IntelliJ IDEA. + ''; + homepage = if channel == "stable" + then https://developer.android.com/studio/index.html + else https://developer.android.com/studio/preview/index.html; + license = licenses.asl20; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ primeos ]; + }; + } diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix index ab76166a8f94..af58611bddf4 100644 --- a/pkgs/applications/editors/android-studio/default.nix +++ b/pkgs/applications/editors/android-studio/default.nix @@ -12,60 +12,43 @@ let build = "173.4819257"; sha256Hash = "196yaswbxh2nd83gimjxr8ggr5xkdxq7n3xlh6ax73v59pj4hryq"; }; - latestVersion = { + betaVersion = { + version = "3.2.0.22"; # "Android Studio 3.2 Beta 5" + build = "181.4913314"; + sha256Hash = "016nyn1pqviy089hg0dq7m4cqb39fdxdcy4zknkaq7dmgv1dj6x9"; + }; + latestVersion = { # canary & dev version = "3.3.0.2"; # "Android Studio 3.3 Canary 3" build = "181.4884283"; sha256Hash = "0r93yzw87cgzz60p60gknij5vaqmv1a1kyd4cr9gx8cbxw46lhwh"; }; in rec { - # Old alias - preview = beta; - - # Attributes are named by the corresponding release channels - - stable = mkStudio (stableVersion // { - pname = "android-studio"; - #pname = "android-studio-stable"; # TODO: Rename and provide symlink - - meta = with stdenv.lib; { - description = "The Official IDE for Android (stable channel)"; - longDescription = '' - Android Studio is the official IDE for Android app development, based on - IntelliJ IDEA. - ''; - homepage = https://developer.android.com/studio/index.html; - license = licenses.asl20; - platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ primeos ]; - }; + # TODO: Drop old alias after 18.09 + preview = mkStudio (betaVersion // { + channel = "beta"; + pname = "android-studio-preview"; + deprecated = true; }); - beta = mkStudio (latestVersion // { - pname = "android-studio-preview"; - #pname = "android-studio-beta"; # TODO: Rename and provide symlink - version = "3.2.0.22"; # "Android Studio 3.2 Beta 5" - build = "181.4913314"; - sha256Hash = "016nyn1pqviy089hg0dq7m4cqb39fdxdcy4zknkaq7dmgv1dj6x9"; + # Attributes are named by their corresponding release channels - meta = stable.meta // { - description = "The Official IDE for Android (beta channel)"; - homepage = https://developer.android.com/studio/preview/index.html; - }; + stable = mkStudio (stableVersion // { + channel = "stable"; + pname = "android-studio"; + }); + + beta = mkStudio (betaVersion // { + channel = "beta"; + pname = "android-studio-preview"; }); dev = mkStudio (latestVersion // { + channel = "dev"; pname = "android-studio-dev"; - - meta = beta.meta // { - description = "The Official IDE for Android (dev channel)"; - }; }); canary = mkStudio (latestVersion // { + channel = "canary"; pname = "android-studio-canary"; - - meta = beta.meta // { - description = "The Official IDE for Android (canary channel)"; - }; }); } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1623c1262d66..944c084cc3ae 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15182,9 +15182,10 @@ with pkgs; amsn = callPackage ../applications/networking/instant-messengers/amsn { }; - androidStudioPackages = callPackage ../applications/editors/android-studio { }; + androidStudioPackages = recurseIntoAttrs + (callPackage ../applications/editors/android-studio { }); android-studio = androidStudioPackages.stable; - android-studio-preview = androidStudioPackages.beta; + android-studio-preview = androidStudioPackages.preview; # TODO: Drop old alias after 18.09 antfs-cli = callPackage ../applications/misc/antfs-cli {};