diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md index db4aea04e5e0..b640ba8d5011 100644 --- a/doc/languages-frameworks/android.section.md +++ b/doc/languages-frameworks/android.section.md @@ -27,7 +27,7 @@ buildInputs = [ ]; ``` -These will export ANDROID_SDK_ROOT and ANDROID_NDK_ROOT to the SDK and NDK directories +These will export `ANDROID_SDK_ROOT` and `ANDROID_NDK_ROOT` to the SDK and NDK directories in the specified Android build environment. ## Deploying an Android SDK installation with plugins {#deploying-an-android-sdk-installation-with-plugins} @@ -39,24 +39,12 @@ with import {}; let androidComposition = androidenv.composeAndroidPackages { - cmdLineToolsVersion = "8.0"; - toolsVersion = "26.1.1"; - platformToolsVersion = "30.0.5"; - buildToolsVersions = [ "30.0.3" ]; - includeEmulator = false; - emulatorVersion = "30.3.4"; - platformVersions = [ "28" "29" "30" ]; - includeSources = false; - includeSystemImages = false; + platformVersions = [ "34" "35" ]; systemImageTypes = [ "google_apis_playstore" ]; abiVersions = [ "armeabi-v7a" "arm64-v8a" ]; - cmakeVersions = [ "3.10.2" ]; includeNDK = true; - ndkVersions = ["22.0.7026061"]; - useGoogleAPIs = false; - useGoogleTVAddOns = false; includeExtras = [ - "extras;google;gcm" + "extras;google;auto" ]; }; in @@ -69,27 +57,44 @@ exceptions are the tools, platform-tools and build-tools sub packages. The following parameters are supported: -* `cmdLineToolsVersion `, specifies the version of the `cmdline-tools` package to use +* `cmdLineToolsVersion` specifies the version of the `cmdline-tools` package to use. + It defaults to the latest. * `toolsVersion`, specifies the version of the `tools` package. Notice `tools` is obsolete, and currently only `26.1.1` is available, so there's not a lot of - options here, however, you can set it as `null` if you don't want it. -* `platformsToolsVersion` specifies the version of the `platform-tools` plugin + options here, however, you can set it as `null` if you don't want it. It defaults + to the latest. +* `platformToolsVersion` specifies the version of the `platform-tools` plugin. + It defaults to the latest. * `buildToolsVersions` specifies the versions of the `build-tools` plugins to - use. + use. It defaults to the latest. * `includeEmulator` specifies whether to deploy the emulator package (`false` by default). When enabled, the version of the emulator to deploy can be - specified by setting the `emulatorVersion` parameter. + specified by setting the `emulatorVersion` parameter. If set to + `"if-supported"`, it will deploy the emulator if it's supported by the system. +* `includeCmake` specifies whether CMake should be included. It defaults to true + on x86-64 and Darwin platforms, and also supports `"if-supported"`. * `cmakeVersions` specifies which CMake versions should be deployed. + It defaults to the latest. * `includeNDK` specifies that the Android NDK bundle should be included. - Defaults to: `false`. + Defaults to `false` though can be set to `true` or `"if-supported"`. * `ndkVersions` specifies the NDK versions that we want to use. These are linked under the `ndk` directory of the SDK root, and the first is linked under the - `ndk-bundle` directory. + `ndk-bundle` directory. It defaults to the latest. * `ndkVersion` is equivalent to specifying one entry in `ndkVersions`, and `ndkVersions` overrides this parameter if provided. * `includeExtras` is an array of identifier strings referring to arbitrary - add-on packages that should be installed. + add-on packages that should be installed. Note that extras may not be compatible + with all platforms (for example, the Google TV head unit, which does not + have an aarch64-linux compile). * `platformVersions` specifies which platform SDK versions should be included. + It defaults to including only the latest API level, though you can add more. +* `numLatestPlatformVersions` specifies how many of the latest API levels to include, + if you are using the default for `platformVersions`. It defaults to 1, though you can + increase this to, for example, 5 to get the last 5 years of Android API packages. +* `minPlatformVersion` and `maxPlatformVersion` take priority over `platformVersions` + if both are provided. Note that `maxPlatformVersion` always defaults to the latest + Android SDK platform version, allowing you to specify `minPlatformVersion` to describe + the minimum SDK version your Android composition supports. For each platform version that has been specified, we can apply the following options: @@ -108,9 +113,10 @@ For each requested system image we can specify the following options: * `systemImageTypes` specifies what kind of system images should be included. Defaults to: `default`. * `abiVersions` specifies what kind of ABI version of each system image should - be included. Defaults to: `armeabi-v7a`. + be included. Defaults to `armeabi-v7a` and `arm64-v8a`. -Most of the function arguments have reasonable default settings. +Most of the function arguments have reasonable default settings, preferring the latest +versions of tools when possible. You can specify license names: @@ -127,7 +133,8 @@ pull from: by running `generate.sh`, which in turn will call into `mkrepo.rb`. * `repoXmls` is an attribute set containing paths to repo XML files. If specified, it takes priority over `repoJson`, and will trigger a local build writing out a - repo.json to the Nix store based on the given repository XMLs. + repo.json to the Nix store based on the given repository XMLs. Note that this uses + import-from-derivation. ```nix { @@ -312,27 +319,23 @@ android { ## Querying the available versions of each plugin {#querying-the-available-versions-of-each-plugin} -repo.json provides all the options in one file now. - -A shell script in the `pkgs/development/mobile/androidenv/` subdirectory can be used to retrieve all -possible options: - -```bash -./querypackages.sh packages -``` - -The above command-line instruction queries all package versions in repo.json. +All androidenv packages are available on [search.nixos.org](https://search.nixos.org). +Note that `aarch64-linux` compatibility is currently spotty, though `x86_64-linux` and `aarch64-darwin` +are well supported. This is because Google's repository definitions mark some packages for "all" architectures +that are really only for `x86_64` or `aarch64`. ## Updating the generated expressions {#updating-the-generated-expressions} repo.json is generated from XML files that the Android Studio package manager uses. -To update the expressions run the `generate.sh` script that is stored in the +To update the expressions run the `update.sh` script that is stored in the `pkgs/development/mobile/androidenv/` subdirectory: ```bash -./generate.sh +./update.sh ``` +This is run automatically by the nixpkgs update script. + ## Building an Android application with Ant {#building-an-android-application-with-ant} In addition to the SDK, it is also possible to build an Ant-based Android diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 0efae325b6bc..645938338b63 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -3639,6 +3639,11 @@ githubId = 200617; name = "Ben Sima"; }; + bstanderline = { + name = "bstanderline"; + github = "bstanderline"; + githubId = 153822813; + }; btlvr = { email = "btlvr@protonmail.com"; github = "btlvr"; @@ -7851,6 +7856,12 @@ githubId = 11705326; name = "Max Kochurov"; }; + fettgoenner = { + email = "paulmatti@protonmail.com"; + github = "fettgoenner"; + githubId = 92429150; + name = "Paul Meinhold"; + }; ffinkdevs = { email = "fink@h0st.space"; github = "ffinkdevs"; @@ -17372,6 +17383,12 @@ githubId = 7191115; name = "Nova Leary"; }; + novmar = { + email = "novotny@marnov.cz"; + github = "novmar"; + githubId = 26750149; + name = "Marcel Novotny"; + }; novoxd = { email = "radnovox@gmail.com"; github = "novoxd"; @@ -19576,6 +19593,13 @@ github = "qdlmcfresh"; githubId = 10837173; }; + qf0xb = { + name = "Quirin Brändli"; + email = "development@qf0xb.de"; + github = "QF0xB"; + githubId = 37348361; + keys = [ { fingerprint = "9036 0B7D B6B7 8B75 E901 3D11 3FF8 C23C 46F2 CC90"; } ]; + }; qjoly = { email = "github@une-pause-cafe.fr"; github = "qjoly"; diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix index 3746a1440746..dd74d1f080ac 100644 --- a/maintainers/team-list.nix +++ b/maintainers/team-list.nix @@ -597,6 +597,7 @@ with lib.maintainers; jitsi = { members = [ cleeyv + novmar ryantm lassulus yayayayaka diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md index c21e36403161..486b5f542ff4 100644 --- a/nixos/doc/manual/release-notes/rl-2205.section.md +++ b/nixos/doc/manual/release-notes/rl-2205.section.md @@ -101,7 +101,7 @@ In addition to numerous new and upgraded packages, this release has the followin - [InvoicePlane](https://invoiceplane.com), web application for managing and creating invoices. Available at [services.invoiceplane](#opt-services.invoiceplane.sites._name_.enable). -- [k3b](https://userbase.kde.org/K3b), the KDE disk burning application. Available as [programs.k3b](#opt-programs.k3b.enable). +- [k3b](https://userbase.kde.org/K3b), the KDE disk burning application. Available as programs.k3b. - [K40-Whisperer](https://www.scorchworks.com/K40whisperer/k40whisperer.html), a program to control cheap Chinese laser cutters. Available as [programs.k40-whisperer.enable](#opt-programs.k40-whisperer.enable). Users must add themselves to the `k40` group to be able to access the device. diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index 3b833479033f..b0e6f9a10e9b 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -61,6 +61,11 @@ - A new `pkgs.mattermost.buildPlugin` function has been added, which allows plugins to be built from source, including webapp frontends with a supported package-lock.json. See the Mattermost NixOS test and [manual](https://nixos.org/manual/nixpkgs/unstable/#sec-mattermost-plugins-build) for an example. - Note that the Mattermost module will create an account _without_ a well-known UID if the username differs from the default (`mattermost`). If you used Mattermost with a nonstandard username, you may want to review the module changes before upgrading. +- androidenv has been updated: + - All versions specified in composeAndroidPackages now track latest. Android packages are automatically updated on unstable, and run the androidenv test suite on every update. + - Some androidenv packages are now searchable on [search.nixos.org](https://search.nixos.org). + - We now use the latest Google repositories, which should improve aarch64-darwin compatibility. The SDK now additionally evaluates on aarch64-linux, though not all packages are functional. + ## New Modules {#sec-release-25.05-new-modules} diff --git a/nixos/modules/programs/k3b.nix b/nixos/modules/programs/k3b.nix index 3e9435d3dc60..4bb76e2e7966 100644 --- a/nixos/modules/programs/k3b.nix +++ b/nixos/modules/programs/k3b.nix @@ -1,50 +1,8 @@ -{ config, pkgs, lib, ... }: +{ lib, ... }: { - # interface - options.programs.k3b = { - enable = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to enable k3b, the KDE disk burning application. - - Additionally to installing `k3b` enabling this will - add `setuid` wrappers in `/run/wrappers/bin` - for both `cdrdao` and `cdrecord`. On first - run you must manually configure the path of `cdrdae` and - `cdrecord` to correspond to the appropriate paths under - `/run/wrappers/bin` in the "Setup External Programs" menu. - ''; - }; - }; - - # implementation - config = lib.mkIf config.programs.k3b.enable { - - environment.systemPackages = with pkgs; [ - k3b - dvdplusrwtools - cdrdao - cdrtools - ]; - - security.wrappers = { - cdrdao = { - setuid = true; - owner = "root"; - group = "cdrom"; - permissions = "u+wrx,g+x"; - source = "${pkgs.cdrdao}/bin/cdrdao"; - }; - cdrecord = { - setuid = true; - owner = "root"; - group = "cdrom"; - permissions = "u+wrx,g+x"; - source = "${pkgs.cdrtools}/bin/cdrecord"; - }; - }; - - }; + imports = [ + (lib.mkRemovedOptionModule [ "programs" "k3b" "enable" ] + "Please add kdePackages.k3b to environment.systemPackages instead") + ]; } diff --git a/nixos/modules/services/web-apps/agorakit.nix b/nixos/modules/services/web-apps/agorakit.nix index 583f68ee5881..b7c86d7585dd 100644 --- a/nixos/modules/services/web-apps/agorakit.nix +++ b/nixos/modules/services/web-apps/agorakit.nix @@ -13,6 +13,7 @@ let user = cfg.user; group = cfg.group; + php = lib.getExe pkgs.php82; # shell script for local administration artisan = pkgs.writeScriptBin "agorakit" '' @@ -25,7 +26,7 @@ let exec "$@" fi } - sudo ${lib.getExe pkgs.php} artisan "$@" + sudo ${php} artisan "$@" ''; tlsEnabled = cfg.nginx.addSSL || cfg.nginx.forceSSL || cfg.nginx.onlySSL || cfg.nginx.enableACME; @@ -447,9 +448,9 @@ in fi # migrate & seed db - ${pkgs.php}/bin/php artisan key:generate --force - ${pkgs.php}/bin/php artisan migrate --force - ${pkgs.php}/bin/php artisan config:cache + ${php} artisan key:generate --force + ${php} artisan migrate --force + ${php} artisan config:cache ''; }; diff --git a/nixos/modules/services/web-apps/calibre-web.nix b/nixos/modules/services/web-apps/calibre-web.nix index 8f61a8ac9e97..217adb801236 100644 --- a/nixos/modules/services/web-apps/calibre-web.nix +++ b/nixos/modules/services/web-apps/calibre-web.nix @@ -4,7 +4,7 @@ let cfg = config.services.calibre-web; dataDir = if lib.hasPrefix "/" cfg.dataDir then cfg.dataDir else "/var/lib/${cfg.dataDir}"; - inherit (lib) concatStringsSep mkEnableOption mkIf mkOption optional optionalString types; + inherit (lib) concatStringsSep mkEnableOption mkIf mkOption optional optionals optionalString types; in { options = { @@ -129,7 +129,10 @@ in "config_reverse_proxy_login_header_name = '${cfg.options.reverseProxyAuth.header}'" ] ++ optional (cfg.options.calibreLibrary != null) "config_calibre_dir = '${cfg.options.calibreLibrary}'" - ++ optional cfg.options.enableBookConversion "config_converterpath = '${pkgs.calibre}/bin/ebook-convert'" + ++ optionals cfg.options.enableBookConversion [ + "config_converterpath = '${pkgs.calibre}/bin/ebook-convert'" + "config_binariesdir = '${pkgs.calibre}/bin/'" + ] ++ optional cfg.options.enableKepubify "config_kepubifypath = '${pkgs.kepubify}/bin/kepubify'" ); in diff --git a/nixos/modules/services/web-apps/dolibarr.nix b/nixos/modules/services/web-apps/dolibarr.nix index 136720ef67b4..877490652989 100644 --- a/nixos/modules/services/web-apps/dolibarr.nix +++ b/nixos/modules/services/web-apps/dolibarr.nix @@ -312,7 +312,7 @@ in systemd.services."phpfpm-dolibarr".after = mkIf cfg.database.createLocally [ "mysql.service" ]; services.phpfpm.pools.dolibarr = { inherit (cfg) user group; - phpPackage = pkgs.php.buildEnv { + phpPackage = pkgs.php83.buildEnv { extensions = { enabled, all }: enabled ++ [ all.calendar ]; # recommended by dolibarr web application extraConfig = '' @@ -339,13 +339,17 @@ in description = "dolibarr configuration file management via NixOS"; wantedBy = [ "multi-user.target" ]; - script = '' - # extract the 'main instance unique id' secret that the dolibarr installer generated for us, store it in a file for use by our own NixOS generated configuration file - ${pkgs.php}/bin/php -r "include '${cfg.stateDir}/conf.php'; file_put_contents('${cfg.stateDir}/dolibarr_main_instance_unique_id', \$dolibarr_main_instance_unique_id);" + script = + let + php = lib.getExe config.services.phpfpm.pools.dolibarr.phpPackage; + in + '' + # extract the 'main instance unique id' secret that the dolibarr installer generated for us, store it in a file for use by our own NixOS generated configuration file + ${php} -r "include '${cfg.stateDir}/conf.php'; file_put_contents('${cfg.stateDir}/dolibarr_main_instance_unique_id', \$dolibarr_main_instance_unique_id);" - # replace configuration file generated by installer with the NixOS generated configuration file - install -m 440 ${mkConfigFile "conf.php" cfg.settings} '${cfg.stateDir}/conf.php' - ''; + # replace configuration file generated by installer with the NixOS generated configuration file + install -m 440 ${mkConfigFile "conf.php" cfg.settings} '${cfg.stateDir}/conf.php' + ''; serviceConfig = { Type = "oneshot"; diff --git a/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix b/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix index 680257d23b21..880ae5f55994 100644 --- a/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix +++ b/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix @@ -192,7 +192,7 @@ in ) ); }; - phpPackage = pkgs.php.withExtensions ({ enabled, all }: [ all.imagick ] ++ enabled); + phpPackage = pkgs.php83.withExtensions ({ enabled, all }: [ all.imagick ] ++ enabled); phpOptions = '' date.timezone = "${cfg.timezone}" ''; diff --git a/nixos/modules/services/web-apps/monica.nix b/nixos/modules/services/web-apps/monica.nix index 16263e70c2e8..00bb9bb7de2d 100644 --- a/nixos/modules/services/web-apps/monica.nix +++ b/nixos/modules/services/web-apps/monica.nix @@ -15,6 +15,8 @@ with lib; let user = cfg.user; group = cfg.group; + php = lib.getExe pkgs.php83; + # shell script for local administration artisan = pkgs.writeScriptBin "monica" '' #! ${pkgs.runtimeShell} @@ -26,7 +28,7 @@ with lib; let exec "$@" fi } - sudo ${pkgs.php}/bin/php artisan "$@" + sudo ${php} artisan "$@" ''; tlsEnabled = cfg.nginx.addSSL || cfg.nginx.forceSSL || cfg.nginx.onlySSL || cfg.nginx.enableACME; @@ -419,8 +421,8 @@ in { fi # migrate & seed db - ${pkgs.php}/bin/php artisan key:generate --force - ${pkgs.php}/bin/php artisan setup:production -v --force + ${php} artisan key:generate --force + ${php} artisan setup:production -v --force ''; }; @@ -432,7 +434,7 @@ in { Type = "oneshot"; User = user; WorkingDirectory = "${monica}"; - ExecStart = "${pkgs.php}/bin/php ${monica}/artisan schedule:run -v"; + ExecStart = "${php} ${monica}/artisan schedule:run -v"; }; }; @@ -465,4 +467,3 @@ in { }; }; } - diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix index ed436dad32e0..8c5c45dbfc44 100644 --- a/nixos/modules/services/web-apps/nextcloud.nix +++ b/nixos/modules/services/web-apps/nextcloud.nix @@ -130,10 +130,17 @@ let --quiet \ ${command} elif [[ "$USER" != nextcloud ]]; then - exec /run/wrappers/bin/sudo \ - --preserve-env=CREDENTIALS_DIRECTORY \ - --user=nextcloud \ - ${command} + if [[ -x /run/wrappers/bin/sudo ]]; then + exec /run/wrappers/bin/sudo \ + --preserve-env=CREDENTIALS_DIRECTORY \ + --user=nextcloud \ + ${command} + else + exec ${lib.getExe' pkgs.util-linux "runuser"} \ + --whitelist-environment=CREDENTIALS_DIRECTORY \ + --user=nextcloud \ + ${command} + fi else exec ${command} fi diff --git a/nixos/modules/services/web-apps/rutorrent.nix b/nixos/modules/services/web-apps/rutorrent.nix index be2af96ae05b..d1c3c2eafe38 100644 --- a/nixos/modules/services/web-apps/rutorrent.nix +++ b/nixos/modules/services/web-apps/rutorrent.nix @@ -211,7 +211,7 @@ in $throttleMaxSpeed = 327625*1024; $pathToExternals = array( - "php" => "${pkgs.php}/bin/php", // Something like /usr/bin/php. If empty, will be found in PATH. + "php" => "${pkgs.php82}/bin/php", // Something like /usr/bin/php. If empty, will be found in PATH. "curl" => "${pkgs.curl}/bin/curl", // Something like /usr/bin/curl. If empty, will be found in PATH. "gzip" => "${pkgs.gzip}/bin/gzip", // Something like /usr/bin/gzip. If empty, will be found in PATH. "id" => "${pkgs.coreutils}/bin/id", // Something like /usr/bin/id. If empty, will be found in PATH. diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index d44ac5ebd08d..98240a9f15e7 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -341,8 +341,8 @@ in { documize = handleTest ./documize.nix {}; documentation = pkgs.callPackage ../modules/misc/documentation/test.nix { inherit nixosLib; }; doh-proxy-rust = handleTest ./doh-proxy-rust.nix {}; - dokuwiki = handleTest ./dokuwiki.nix {}; - dolibarr = handleTest ./dolibarr.nix {}; + dokuwiki = runTest ./dokuwiki.nix; + dolibarr = runTest ./dolibarr.nix; domination = handleTest ./domination.nix {}; dovecot = handleTest ./dovecot.nix {}; drawterm = discoverTests (import ./drawterm.nix); @@ -557,7 +557,7 @@ in { hub = handleTest ./git/hub.nix {}; hydra = handleTest ./hydra {}; i3wm = handleTest ./i3wm.nix {}; - icingaweb2 = handleTest ./icingaweb2.nix {}; + icingaweb2 = runTest ./icingaweb2.nix; ifm = handleTest ./ifm.nix {}; iftop = handleTest ./iftop.nix {}; immich = handleTest ./web-apps/immich.nix {}; @@ -725,7 +725,7 @@ in { mollysocket = handleTest ./mollysocket.nix { }; monado = handleTest ./monado.nix {}; monetdb = handleTest ./monetdb.nix {}; - monica = handleTest ./web-apps/monica.nix {}; + monica = runTest ./web-apps/monica.nix; mongodb = runTest ./mongodb.nix; mongodb-ce = runTest ({ config, ... }: { imports = [ ./mongodb.nix ]; @@ -797,15 +797,15 @@ in { nfs3 = handleTest ./nfs { version = 3; }; nfs4 = handleTest ./nfs { version = 4; }; nghttpx = handleTest ./nghttpx.nix {}; - nginx = handleTest ./nginx.nix {}; - nginx-auth = handleTest ./nginx-auth.nix {}; - nginx-etag = handleTest ./nginx-etag.nix {}; - nginx-etag-compression = handleTest ./nginx-etag-compression.nix {}; - nginx-globalredirect = handleTest ./nginx-globalredirect.nix {}; + nginx = runTest ./nginx.nix; + nginx-auth = runTest ./nginx-auth.nix; + nginx-etag = runTest ./nginx-etag.nix; + nginx-etag-compression = runTest ./nginx-etag-compression.nix; + nginx-globalredirect = runTest ./nginx-globalredirect.nix; nginx-http3 = handleTest ./nginx-http3.nix {}; - nginx-mime = handleTest ./nginx-mime.nix {}; - nginx-modsecurity = handleTest ./nginx-modsecurity.nix {}; - nginx-moreheaders = handleTest ./nginx-moreheaders.nix {}; + nginx-mime = runTest ./nginx-mime.nix; + nginx-modsecurity = runTest ./nginx-modsecurity.nix; + nginx-moreheaders = runTest ./nginx-moreheaders.nix; nginx-njs = handleTest ./nginx-njs.nix {}; nginx-proxyprotocol = handleTest ./nginx-proxyprotocol {}; nginx-pubhtml = handleTest ./nginx-pubhtml.nix {}; @@ -1257,7 +1257,7 @@ in { umurmur = handleTest ./umurmur.nix {}; unbound = handleTest ./unbound.nix {}; unifi = handleTest ./unifi.nix {}; - unit-php = handleTest ./web-servers/unit-php.nix {}; + unit-php = runTest ./web-servers/unit-php.nix; unit-perl = handleTest ./web-servers/unit-perl.nix {}; upnp.iptables = handleTest ./upnp.nix { useNftables = false; }; upnp.nftables = handleTest ./upnp.nix { useNftables = true; }; @@ -1306,7 +1306,7 @@ in { weblate = handleTest ./web-apps/weblate.nix {}; whisparr = handleTest ./whisparr.nix {}; whoogle-search = handleTest ./whoogle-search.nix {}; - wiki-js = handleTest ./wiki-js.nix {}; + wiki-js = runTest ./wiki-js.nix; wine = handleTest ./wine.nix {}; wireguard = handleTest ./wireguard {}; wg-access-server = handleTest ./wg-access-server.nix {}; @@ -1314,7 +1314,7 @@ in { wmderland = handleTest ./wmderland.nix {}; workout-tracker = handleTest ./workout-tracker.nix {}; wpa_supplicant = import ./wpa_supplicant.nix { inherit pkgs runTest; }; - wordpress = handleTest ./wordpress.nix {}; + wordpress = runTest ./wordpress.nix; wrappers = handleTest ./wrappers.nix {}; writefreely = handleTest ./web-apps/writefreely.nix {}; wstunnel = runTest ./wstunnel.nix; diff --git a/nixos/tests/dokuwiki.nix b/nixos/tests/dokuwiki.nix index 6f7ee60fc193..ebbefd0dcfaf 100644 --- a/nixos/tests/dokuwiki.nix +++ b/nixos/tests/dokuwiki.nix @@ -1,6 +1,8 @@ -import ./make-test-python.nix ({ pkgs, ... }: +{ config, ... }: let + pkgs = config.node.pkgs; + template-bootstrap3 = pkgs.stdenv.mkDerivation rec { name = "bootstrap3"; version = "2022-07-27"; @@ -163,4 +165,4 @@ in { "curl -sSfL http://site1.local/rewrite-test | grep 'Hello, NixOS!'", ) ''; -}) +} diff --git a/nixos/tests/dolibarr.nix b/nixos/tests/dolibarr.nix index 5d7098f763f5..5a67a4a66e77 100644 --- a/nixos/tests/dolibarr.nix +++ b/nixos/tests/dolibarr.nix @@ -1,62 +1,60 @@ -import ./make-test-python.nix ( - { pkgs, lib, ... }: - { - name = "dolibarr"; - meta.maintainers = [ ]; +{ ... }: +{ + name = "dolibarr"; + meta.maintainers = [ ]; - nodes.machine = - { ... }: - { - services.dolibarr = { - enable = true; - domain = "localhost"; - nginx = { - forceSSL = false; - enableACME = false; - }; + nodes.machine = + { ... }: + { + services.dolibarr = { + enable = true; + domain = "localhost"; + nginx = { + forceSSL = false; + enableACME = false; }; - - networking.firewall.allowedTCPPorts = [ 80 ]; }; - testScript = '' - from html.parser import HTMLParser - start_all() + networking.firewall.allowedTCPPorts = [ 80 ]; + }; - csrf_token = None - class TokenParser(HTMLParser): - def handle_starttag(self, tag, attrs): - attrs = dict(attrs) # attrs is an assoc list originally - if tag == 'input' and attrs.get('name') == 'token': - csrf_token = attrs.get('value') - print(f'[+] Caught CSRF token: {csrf_token}') - def handle_endtag(self, tag): pass - def handle_data(self, data): pass + testScript = '' + from html.parser import HTMLParser + start_all() - machine.wait_for_unit("phpfpm-dolibarr.service") - machine.wait_for_unit("nginx.service") - machine.wait_for_open_port(80) - # Sanity checks on URLs. - # machine.succeed("curl -fL http://localhost/index.php") - # machine.succeed("curl -fL http://localhost/") - # Perform installation. - machine.succeed('curl -fL -X POST http://localhost/install/check.php -F selectlang=auto') - machine.succeed('curl -fL -X POST http://localhost/install/fileconf.php -F selectlang=auto') - # First time is to write the configuration file correctly. - machine.succeed('curl -fL -X POST http://localhost/install/step1.php -F "testpost=ok" -F "action=set" -F "selectlang=auto"') - # Now, we have a proper conf.php in $stateDir. - assert 'nixos' in machine.succeed("cat /var/lib/dolibarr/conf.php") - machine.succeed('curl -fL -X POST http://localhost/install/step2.php --data "testpost=ok&action=set&dolibarr_main_db_character_set=utf8&dolibarr_main_db_collation=utf8_unicode_ci&selectlang=auto"') - machine.succeed('curl -fL -X POST http://localhost/install/step4.php --data "testpost=ok&action=set&selectlang=auto"') - machine.succeed('curl -fL -X POST http://localhost/install/step5.php --data "testpost=ok&action=set&login=root&pass=hunter2&pass_verif=hunter2&selectlang=auto"') - # Now, we have installed the machine, let's verify we still have the right configuration. - assert 'nixos' in machine.succeed("cat /var/lib/dolibarr/conf.php") - # We do not want any redirect now as we have installed the machine. - machine.succeed('curl -f -X GET http://localhost') - # Test authentication to the webservice. - parser = TokenParser() - parser.feed(machine.succeed('curl -f -X GET http://localhost/index.php?mainmenu=login&username=root')) - machine.succeed(f'curl -f -X POST http://localhost/index.php?mainmenu=login&token={csrf_token}&username=root&password=hunter2') - ''; - } -) + csrf_token = None + class TokenParser(HTMLParser): + def handle_starttag(self, tag, attrs): + attrs = dict(attrs) # attrs is an assoc list originally + if tag == 'input' and attrs.get('name') == 'token': + csrf_token = attrs.get('value') + print(f'[+] Caught CSRF token: {csrf_token}') + def handle_endtag(self, tag): pass + def handle_data(self, data): pass + + machine.wait_for_unit("phpfpm-dolibarr.service") + machine.wait_for_unit("nginx.service") + machine.wait_for_open_port(80) + # Sanity checks on URLs. + # machine.succeed("curl -fL http://localhost/index.php") + # machine.succeed("curl -fL http://localhost/") + # Perform installation. + machine.succeed('curl -fL -X POST http://localhost/install/check.php -F selectlang=auto') + machine.succeed('curl -fL -X POST http://localhost/install/fileconf.php -F selectlang=auto') + # First time is to write the configuration file correctly. + machine.succeed('curl -fL -X POST http://localhost/install/step1.php -F "testpost=ok" -F "action=set" -F "selectlang=auto"') + # Now, we have a proper conf.php in $stateDir. + assert 'nixos' in machine.succeed("cat /var/lib/dolibarr/conf.php") + machine.succeed('curl -fL -X POST http://localhost/install/step2.php --data "testpost=ok&action=set&dolibarr_main_db_character_set=utf8&dolibarr_main_db_collation=utf8_unicode_ci&selectlang=auto"') + machine.succeed('curl -fL -X POST http://localhost/install/step4.php --data "testpost=ok&action=set&selectlang=auto"') + machine.succeed('curl -fL -X POST http://localhost/install/step5.php --data "testpost=ok&action=set&login=root&pass=hunter2&pass_verif=hunter2&selectlang=auto"') + # Now, we have installed the machine, let's verify we still have the right configuration. + assert 'nixos' in machine.succeed("cat /var/lib/dolibarr/conf.php") + # We do not want any redirect now as we have installed the machine. + machine.succeed('curl -f -X GET http://localhost') + # Test authentication to the webservice. + parser = TokenParser() + parser.feed(machine.succeed('curl -f -X GET http://localhost/index.php?mainmenu=login&username=root')) + machine.succeed(f'curl -f -X POST http://localhost/index.php?mainmenu=login&token={csrf_token}&username=root&password=hunter2') + ''; +} diff --git a/nixos/tests/icingaweb2.nix b/nixos/tests/icingaweb2.nix index 2039fbcb2bcd..08fc4f262c08 100644 --- a/nixos/tests/icingaweb2.nix +++ b/nixos/tests/icingaweb2.nix @@ -1,76 +1,74 @@ -import ./make-test-python.nix ( - { pkgs, ... }: - { - name = "icingaweb2"; - meta = { - maintainers = pkgs.lib.teams.helsinki-systems.members; - }; +{ pkgs, ... }: +{ + name = "icingaweb2"; + meta = { + maintainers = pkgs.lib.teams.helsinki-systems.members; + }; - nodes = { - icingaweb2 = - { config, pkgs, ... }: - { - services.icingaweb2 = { - enable = true; + nodes = { + icingaweb2 = + { config, pkgs, ... }: + { + services.icingaweb2 = { + enable = true; - modulePackages = with pkgs.icingaweb2Modules; { - particles = theme-particles; - spring = theme-spring; + modulePackages = with pkgs.icingaweb2Modules; { + particles = theme-particles; + spring = theme-spring; + }; + + modules = { + doc.enable = true; + migrate.enable = true; + setup.enable = true; + test.enable = true; + translation.enable = true; + }; + + generalConfig = { + global = { + module_path = "${pkgs.icingaweb2}/modules"; }; + }; - modules = { - doc.enable = true; - migrate.enable = true; - setup.enable = true; - test.enable = true; - translation.enable = true; + authentications = { + icingaweb = { + backend = "external"; }; + }; - generalConfig = { - global = { - module_path = "${pkgs.icingaweb2}/modules"; - }; + groupBackends = { + icingaweb = { + backend = "db"; + resource = "icingaweb_db"; }; + }; - authentications = { - icingaweb = { - backend = "external"; - }; + resources = { + # Not used, so no DB server needed + icingaweb_db = { + type = "db"; + db = "mysql"; + host = "localhost"; + username = "icingaweb2"; + password = "icingaweb2"; + dbname = "icingaweb2"; }; + }; - groupBackends = { - icingaweb = { - backend = "db"; - resource = "icingaweb_db"; - }; - }; - - resources = { - # Not used, so no DB server needed - icingaweb_db = { - type = "db"; - db = "mysql"; - host = "localhost"; - username = "icingaweb2"; - password = "icingaweb2"; - dbname = "icingaweb2"; - }; - }; - - roles = { - Administrators = { - users = "*"; - permissions = "*"; - }; + roles = { + Administrators = { + users = "*"; + permissions = "*"; }; }; }; - }; + }; + }; - testScript = '' - start_all() - icingaweb2.wait_for_unit("multi-user.target") - icingaweb2.succeed("curl -sSf http://icingaweb2/authentication/login") - ''; - } -) + testScript = '' + start_all() + icingaweb2.wait_for_unit("multi-user.target") + icingaweb2.succeed("curl -sSf http://icingaweb2/authentication/login") + ''; +} diff --git a/nixos/tests/nginx-auth.nix b/nixos/tests/nginx-auth.nix index eb04b2571941..1042eee2e0ab 100644 --- a/nixos/tests/nginx-auth.nix +++ b/nixos/tests/nginx-auth.nix @@ -1,54 +1,52 @@ -import ./make-test-python.nix ( - { pkgs, ... }: - { - name = "nginx-auth"; +{ pkgs, ... }: +{ + name = "nginx-auth"; - nodes = { - webserver = - { pkgs, lib, ... }: - { - services.nginx = - let - root = pkgs.runCommand "testdir" { } '' - mkdir "$out" - echo hello world > "$out/index.html" - ''; - in - { - enable = true; + nodes = { + webserver = + { pkgs, lib, ... }: + { + services.nginx = + let + root = pkgs.runCommand "testdir" { } '' + mkdir "$out" + echo hello world > "$out/index.html" + ''; + in + { + enable = true; - virtualHosts.lockedroot = { - inherit root; - basicAuth.alice = "pwofa"; - }; + virtualHosts.lockedroot = { + inherit root; + basicAuth.alice = "pwofa"; + }; - virtualHosts.lockedsubdir = { - inherit root; - locations."/sublocation/" = { - alias = "${root}/"; - basicAuth.bob = "pwofb"; - }; + virtualHosts.lockedsubdir = { + inherit root; + locations."/sublocation/" = { + alias = "${root}/"; + basicAuth.bob = "pwofb"; }; }; - }; - }; + }; + }; + }; - testScript = '' - webserver.wait_for_unit("nginx") - webserver.wait_for_open_port(80) + testScript = '' + webserver.wait_for_unit("nginx") + webserver.wait_for_open_port(80) - webserver.fail("curl --fail --resolve lockedroot:80:127.0.0.1 http://lockedroot") - webserver.succeed( - "curl --fail --resolve lockedroot:80:127.0.0.1 http://alice:pwofa@lockedroot" - ) + webserver.fail("curl --fail --resolve lockedroot:80:127.0.0.1 http://lockedroot") + webserver.succeed( + "curl --fail --resolve lockedroot:80:127.0.0.1 http://alice:pwofa@lockedroot" + ) - webserver.succeed("curl --fail --resolve lockedsubdir:80:127.0.0.1 http://lockedsubdir") - webserver.fail( - "curl --fail --resolve lockedsubdir:80:127.0.0.1 http://lockedsubdir/sublocation/index.html" - ) - webserver.succeed( - "curl --fail --resolve lockedsubdir:80:127.0.0.1 http://bob:pwofb@lockedsubdir/sublocation/index.html" - ) - ''; - } -) + webserver.succeed("curl --fail --resolve lockedsubdir:80:127.0.0.1 http://lockedsubdir") + webserver.fail( + "curl --fail --resolve lockedsubdir:80:127.0.0.1 http://lockedsubdir/sublocation/index.html" + ) + webserver.succeed( + "curl --fail --resolve lockedsubdir:80:127.0.0.1 http://bob:pwofb@lockedsubdir/sublocation/index.html" + ) + ''; +} diff --git a/nixos/tests/nginx-etag-compression.nix b/nixos/tests/nginx-etag-compression.nix index b012c8b1c15c..a194c6fd26b4 100644 --- a/nixos/tests/nginx-etag-compression.nix +++ b/nixos/tests/nginx-etag-compression.nix @@ -1,4 +1,5 @@ -import ./make-test-python.nix { +{ ... }: +{ name = "nginx-etag-compression"; nodes.machine = diff --git a/nixos/tests/nginx-etag.nix b/nixos/tests/nginx-etag.nix index e1154466d796..88aaefd0e476 100644 --- a/nixos/tests/nginx-etag.nix +++ b/nixos/tests/nginx-etag.nix @@ -1,4 +1,5 @@ -import ./make-test-python.nix { +{ ... }: +{ name = "nginx-etag"; nodes = { @@ -85,7 +86,7 @@ import ./make-test-python.nix { testScript = { nodes, ... }: let - inherit (nodes.server.config.system.build) toplevel; + inherit (nodes.server.system.build) toplevel; newSystem = "${toplevel}/specialisation/pass-checks"; in '' diff --git a/nixos/tests/nginx-globalredirect.nix b/nixos/tests/nginx-globalredirect.nix index 42dda6ccaab5..ba1c0623593b 100644 --- a/nixos/tests/nginx-globalredirect.nix +++ b/nixos/tests/nginx-globalredirect.nix @@ -1,29 +1,27 @@ -import ./make-test-python.nix ( - { pkgs, ... }: - { - name = "nginx-globalredirect"; +{ ... }: +{ + name = "nginx-globalredirect"; - nodes = { - webserver = - { pkgs, lib, ... }: - { - services.nginx = { - enable = true; - virtualHosts.localhost = { - globalRedirect = "other.example.com"; - # Add an exception - locations."/noredirect".return = "200 'foo'"; - }; + nodes = { + webserver = + { pkgs, lib, ... }: + { + services.nginx = { + enable = true; + virtualHosts.localhost = { + globalRedirect = "other.example.com"; + # Add an exception + locations."/noredirect".return = "200 'foo'"; }; }; - }; + }; + }; - testScript = '' - webserver.wait_for_unit("nginx") - webserver.wait_for_open_port(80) + testScript = '' + webserver.wait_for_unit("nginx") + webserver.wait_for_open_port(80) - webserver.succeed("curl --fail -si http://localhost/alf | grep '^Location:.*/alf'") - webserver.fail("curl --fail -si http://localhost/noredirect | grep '^Location:'") - ''; - } -) + webserver.succeed("curl --fail -si http://localhost/alf | grep '^Location:.*/alf'") + webserver.fail("curl --fail -si http://localhost/noredirect | grep '^Location:'") + ''; +} diff --git a/nixos/tests/nginx-mime.nix b/nixos/tests/nginx-mime.nix index 157b9f13f142..9752fc01370b 100644 --- a/nixos/tests/nginx-mime.nix +++ b/nixos/tests/nginx-mime.nix @@ -1,26 +1,24 @@ -import ./make-test-python.nix ( - { lib, pkgs, ... }: - { - name = "nginx-mime"; - meta.maintainers = with pkgs.lib.maintainers; [ izorkin ]; +{ lib, pkgs, ... }: +{ + name = "nginx-mime"; + meta.maintainers = with pkgs.lib.maintainers; [ izorkin ]; - nodes = { - server = - { pkgs, ... }: - { - services.nginx = { - enable = true; - virtualHosts."localhost" = { }; - }; + nodes = { + server = + { pkgs, ... }: + { + services.nginx = { + enable = true; + virtualHosts."localhost" = { }; }; - }; + }; + }; - testScript = '' - server.start() - server.wait_for_unit("nginx") - # Check optimal size of types_hash - server.fail("journalctl --unit nginx --grep 'could not build optimal types_hash'") - server.shutdown() - ''; - } -) + testScript = '' + server.start() + server.wait_for_unit("nginx") + # Check optimal size of types_hash + server.fail("journalctl --unit nginx --grep 'could not build optimal types_hash'") + server.shutdown() + ''; +} diff --git a/nixos/tests/nginx-modsecurity.nix b/nixos/tests/nginx-modsecurity.nix index 892180f1cf73..f6aa58b79859 100644 --- a/nixos/tests/nginx-modsecurity.nix +++ b/nixos/tests/nginx-modsecurity.nix @@ -1,51 +1,49 @@ -import ./make-test-python.nix ( - { pkgs, lib, ... }: - { - name = "nginx-modsecurity"; +{ ... }: +{ + name = "nginx-modsecurity"; - nodes.machine = - { - config, - lib, - pkgs, - ... - }: - { - services.nginx = { - enable = true; - additionalModules = [ pkgs.nginxModules.modsecurity ]; - virtualHosts.localhost = - let - modsecurity_conf = pkgs.writeText "modsecurity.conf" '' - SecRuleEngine On - SecDefaultAction "phase:1,log,auditlog,deny,status:403" - SecDefaultAction "phase:2,log,auditlog,deny,status:403" - SecRule REQUEST_METHOD "HEAD" "id:100, phase:1, block" - SecRule REQUEST_FILENAME "secret.html" "id:101, phase:2, block" - ''; - testroot = pkgs.runCommand "testroot" { } '' - mkdir -p $out - echo "Hello World!" > $out/index.html - echo "s3cret" > $out/secret.html - ''; - in - { - root = testroot; - extraConfig = '' - modsecurity on; - modsecurity_rules_file ${modsecurity_conf}; - ''; - }; - }; + nodes.machine = + { + config, + lib, + pkgs, + ... + }: + { + services.nginx = { + enable = true; + additionalModules = [ pkgs.nginxModules.modsecurity ]; + virtualHosts.localhost = + let + modsecurity_conf = pkgs.writeText "modsecurity.conf" '' + SecRuleEngine On + SecDefaultAction "phase:1,log,auditlog,deny,status:403" + SecDefaultAction "phase:2,log,auditlog,deny,status:403" + SecRule REQUEST_METHOD "HEAD" "id:100, phase:1, block" + SecRule REQUEST_FILENAME "secret.html" "id:101, phase:2, block" + ''; + testroot = pkgs.runCommand "testroot" { } '' + mkdir -p $out + echo "Hello World!" > $out/index.html + echo "s3cret" > $out/secret.html + ''; + in + { + root = testroot; + extraConfig = '' + modsecurity on; + modsecurity_rules_file ${modsecurity_conf}; + ''; + }; }; - testScript = '' - machine.wait_for_unit("nginx") + }; + testScript = '' + machine.wait_for_unit("nginx") - response = machine.wait_until_succeeds("curl -fvvv -s http://127.0.0.1/") - assert "Hello World!" in response + response = machine.wait_until_succeeds("curl -fvvv -s http://127.0.0.1/") + assert "Hello World!" in response - machine.fail("curl -fvvv -X HEAD -s http://127.0.0.1/") - machine.fail("curl -fvvv -s http://127.0.0.1/secret.html") - ''; - } -) + machine.fail("curl -fvvv -X HEAD -s http://127.0.0.1/") + machine.fail("curl -fvvv -s http://127.0.0.1/secret.html") + ''; +} diff --git a/nixos/tests/nginx-moreheaders.nix b/nixos/tests/nginx-moreheaders.nix index 34bbb211dc9d..446f0ed179e2 100644 --- a/nixos/tests/nginx-moreheaders.nix +++ b/nixos/tests/nginx-moreheaders.nix @@ -1,4 +1,5 @@ -import ./make-test-python.nix { +{ ... }: +{ name = "nginx-more-headers"; nodes = { diff --git a/nixos/tests/nginx.nix b/nixos/tests/nginx.nix index 8b1f921ec520..476824e3a9ec 100644 --- a/nixos/tests/nginx.nix +++ b/nixos/tests/nginx.nix @@ -4,134 +4,150 @@ # 2. whether the ETag header is properly generated whenever we're serving # files in Nix store paths # 3. nginx doesn't restart on configuration changes (only reloads) -import ./make-test-python.nix ({ pkgs, ... }: { +{ pkgs, ... }: +{ name = "nginx"; meta = with pkgs.lib.maintainers; { - maintainers = [ mbbx6spp danbst ]; + maintainers = [ + mbbx6spp + danbst + ]; }; nodes = { - webserver = { pkgs, lib, ... }: { - services.nginx.enable = true; - services.nginx.commonHttpConfig = '' - log_format ceeformat '@cee: {"status":"$status",' - '"request_time":$request_time,' - '"upstream_response_time":$upstream_response_time,' - '"pipe":"$pipe","bytes_sent":$bytes_sent,' - '"connection":"$connection",' - '"remote_addr":"$remote_addr",' - '"host":"$host",' - '"timestamp":"$time_iso8601",' - '"request":"$request",' - '"http_referer":"$http_referer",' - '"upstream_addr":"$upstream_addr"}'; - ''; - services.nginx.virtualHosts."0.my.test" = { - extraConfig = '' - access_log syslog:server=unix:/dev/log,facility=user,tag=mytag,severity=info ceeformat; - location /favicon.ico { allow all; access_log off; log_not_found off; } + webserver = + { pkgs, lib, ... }: + { + services.nginx.enable = true; + services.nginx.commonHttpConfig = '' + log_format ceeformat '@cee: {"status":"$status",' + '"request_time":$request_time,' + '"upstream_response_time":$upstream_response_time,' + '"pipe":"$pipe","bytes_sent":$bytes_sent,' + '"connection":"$connection",' + '"remote_addr":"$remote_addr",' + '"host":"$host",' + '"timestamp":"$time_iso8601",' + '"request":"$request",' + '"http_referer":"$http_referer",' + '"upstream_addr":"$upstream_addr"}'; ''; - }; + services.nginx.virtualHosts."0.my.test" = { + extraConfig = '' + access_log syslog:server=unix:/dev/log,facility=user,tag=mytag,severity=info ceeformat; + location /favicon.ico { allow all; access_log off; log_not_found off; } + ''; + }; - services.nginx.virtualHosts.localhost = { - root = pkgs.runCommand "testdir" {} '' - mkdir "$out" - echo hello world > "$out/index.html" - ''; - }; - - services.nginx.enableReload = true; - - specialisation.etagSystem.configuration = { services.nginx.virtualHosts.localhost = { - root = lib.mkForce (pkgs.runCommand "testdir2" {} '' + root = pkgs.runCommand "testdir" { } '' mkdir "$out" - echo content changed > "$out/index.html" - ''); + echo hello world > "$out/index.html" + ''; + }; + + services.nginx.enableReload = true; + + specialisation.etagSystem.configuration = { + services.nginx.virtualHosts.localhost = { + root = lib.mkForce ( + pkgs.runCommand "testdir2" { } '' + mkdir "$out" + echo content changed > "$out/index.html" + '' + ); + }; + }; + + specialisation.justReloadSystem.configuration = { + services.nginx.virtualHosts."1.my.test".listen = [ + { + addr = "127.0.0.1"; + port = 8080; + } + ]; + }; + + specialisation.reloadRestartSystem.configuration = { + services.nginx.package = pkgs.nginxMainline; + }; + + specialisation.reloadWithErrorsSystem.configuration = { + services.nginx.package = pkgs.nginxMainline; + services.nginx.virtualHosts."!@$$(#*%".locations."~@#*$*!)".proxyPass = ";;;"; }; }; - - specialisation.justReloadSystem.configuration = { - services.nginx.virtualHosts."1.my.test".listen = [ { addr = "127.0.0.1"; port = 8080; }]; - }; - - specialisation.reloadRestartSystem.configuration = { - services.nginx.package = pkgs.nginxMainline; - }; - - specialisation.reloadWithErrorsSystem.configuration = { - services.nginx.package = pkgs.nginxMainline; - services.nginx.virtualHosts."!@$$(#*%".locations."~@#*$*!)".proxyPass = ";;;"; - }; - }; }; - testScript = { nodes, ... }: let - etagSystem = "${nodes.webserver.system.build.toplevel}/specialisation/etagSystem"; - justReloadSystem = "${nodes.webserver.system.build.toplevel}/specialisation/justReloadSystem"; - reloadRestartSystem = "${nodes.webserver.system.build.toplevel}/specialisation/reloadRestartSystem"; - reloadWithErrorsSystem = "${nodes.webserver.system.build.toplevel}/specialisation/reloadWithErrorsSystem"; - in '' - url = "http://localhost/index.html" + testScript = + { nodes, ... }: + let + etagSystem = "${nodes.webserver.system.build.toplevel}/specialisation/etagSystem"; + justReloadSystem = "${nodes.webserver.system.build.toplevel}/specialisation/justReloadSystem"; + reloadRestartSystem = "${nodes.webserver.system.build.toplevel}/specialisation/reloadRestartSystem"; + reloadWithErrorsSystem = "${nodes.webserver.system.build.toplevel}/specialisation/reloadWithErrorsSystem"; + in + '' + url = "http://localhost/index.html" - def check_etag(): - etag = webserver.succeed( - f'curl -v {url} 2>&1 | sed -n -e "s/^< etag: *//ip"' - ).rstrip() - http_code = webserver.succeed( - f"curl -w '%{{http_code}}' --head --fail -H 'If-None-Match: {etag}' {url}" - ) - assert http_code.split("\n")[-1] == "304" + def check_etag(): + etag = webserver.succeed( + f'curl -v {url} 2>&1 | sed -n -e "s/^< etag: *//ip"' + ).rstrip() + http_code = webserver.succeed( + f"curl -w '%{{http_code}}' --head --fail -H 'If-None-Match: {etag}' {url}" + ) + assert http_code.split("\n")[-1] == "304" - return etag + return etag - def wait_for_nginx_on_port(port): - webserver.wait_for_unit("nginx") - webserver.wait_for_open_port(port) + def wait_for_nginx_on_port(port): + webserver.wait_for_unit("nginx") + webserver.wait_for_open_port(port) - # nginx can be ready before multi-user.target, in which case switching to - # a different configuration might not realize it needs to restart nginx. - webserver.wait_for_unit("multi-user.target") + # nginx can be ready before multi-user.target, in which case switching to + # a different configuration might not realize it needs to restart nginx. + webserver.wait_for_unit("multi-user.target") - wait_for_nginx_on_port(80) + wait_for_nginx_on_port(80) - with subtest("check ETag if serving Nix store paths"): - old_etag = check_etag() - webserver.succeed( - "${etagSystem}/bin/switch-to-configuration test >&2" - ) - wait_for_nginx_on_port(80) - new_etag = check_etag() - assert old_etag != new_etag + with subtest("check ETag if serving Nix store paths"): + old_etag = check_etag() + webserver.succeed( + "${etagSystem}/bin/switch-to-configuration test >&2" + ) + wait_for_nginx_on_port(80) + new_etag = check_etag() + assert old_etag != new_etag - with subtest("config is reloaded on nixos-rebuild switch"): - webserver.succeed( - "${justReloadSystem}/bin/switch-to-configuration test >&2" - ) - wait_for_nginx_on_port(8080) - webserver.fail("journalctl -u nginx | grep -q -i stopped") - webserver.succeed("journalctl -u nginx | grep -q -i reloaded") + with subtest("config is reloaded on nixos-rebuild switch"): + webserver.succeed( + "${justReloadSystem}/bin/switch-to-configuration test >&2" + ) + wait_for_nginx_on_port(8080) + webserver.fail("journalctl -u nginx | grep -q -i stopped") + webserver.succeed("journalctl -u nginx | grep -q -i reloaded") - with subtest("restart when nginx package changes"): - webserver.succeed( - "${reloadRestartSystem}/bin/switch-to-configuration test >&2" - ) - wait_for_nginx_on_port(80) - webserver.succeed("journalctl -u nginx | grep -q -i stopped") + with subtest("restart when nginx package changes"): + webserver.succeed( + "${reloadRestartSystem}/bin/switch-to-configuration test >&2" + ) + wait_for_nginx_on_port(80) + webserver.succeed("journalctl -u nginx | grep -q -i stopped") - with subtest("nixos-rebuild --switch should fail when there are configuration errors"): - webserver.fail( - "${reloadWithErrorsSystem}/bin/switch-to-configuration test >&2" - ) - webserver.succeed("[[ $(systemctl is-failed nginx-config-reload) == failed ]]") - webserver.succeed("[[ $(systemctl is-failed nginx) == active ]]") - # just to make sure operation is idempotent. During development I had a situation - # when first time it shows error, but stops showing it on subsequent rebuilds - webserver.fail( - "${reloadWithErrorsSystem}/bin/switch-to-configuration test >&2" - ) - ''; -}) + with subtest("nixos-rebuild --switch should fail when there are configuration errors"): + webserver.fail( + "${reloadWithErrorsSystem}/bin/switch-to-configuration test >&2" + ) + webserver.succeed("[[ $(systemctl is-failed nginx-config-reload) == failed ]]") + webserver.succeed("[[ $(systemctl is-failed nginx) == active ]]") + # just to make sure operation is idempotent. During development I had a situation + # when first time it shows error, but stops showing it on subsequent rebuilds + webserver.fail( + "${reloadWithErrorsSystem}/bin/switch-to-configuration test >&2" + ) + ''; +} diff --git a/nixos/tests/web-apps/monica.nix b/nixos/tests/web-apps/monica.nix index bb770828d5f7..9b1995d393d3 100644 --- a/nixos/tests/web-apps/monica.nix +++ b/nixos/tests/web-apps/monica.nix @@ -1,37 +1,35 @@ -import ../make-test-python.nix ( - { pkgs, ... }: - let - cert = pkgs.runCommand "selfSignedCerts" { nativeBuildInputs = [ pkgs.openssl ]; } '' - openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=localhost' -days 36500 - mkdir -p $out - cp key.pem cert.pem $out - ''; - in - { - name = "monica"; +{ pkgs, ... }: +let + cert = pkgs.runCommand "selfSignedCerts" { nativeBuildInputs = [ pkgs.openssl ]; } '' + openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=localhost' -days 36500 + mkdir -p $out + cp key.pem cert.pem $out + ''; +in +{ + name = "monica"; - nodes = { - machine = - { pkgs, ... }: - { - services.monica = { - enable = true; - hostname = "localhost"; - appKeyFile = "${pkgs.writeText "keyfile" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}"; - nginx = { - forceSSL = true; - sslCertificate = "${cert}/cert.pem"; - sslCertificateKey = "${cert}/key.pem"; - }; + nodes = { + machine = + { pkgs, ... }: + { + services.monica = { + enable = true; + hostname = "localhost"; + appKeyFile = "${pkgs.writeText "keyfile" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}"; + nginx = { + forceSSL = true; + sslCertificate = "${cert}/cert.pem"; + sslCertificateKey = "${cert}/key.pem"; }; }; - }; + }; + }; - testScript = '' - start_all() - machine.wait_for_unit("monica-setup.service") - machine.wait_for_open_port(443) - machine.succeed("curl -k --fail https://localhost", timeout=10) - ''; - } -) + testScript = '' + start_all() + machine.wait_for_unit("monica-setup.service") + machine.wait_for_open_port(443) + machine.succeed("curl -k --fail https://localhost", timeout=10) + ''; +} diff --git a/nixos/tests/web-servers/unit-php.nix b/nixos/tests/web-servers/unit-php.nix index fcf0224639da..ae7503ad0ffa 100644 --- a/nixos/tests/web-servers/unit-php.nix +++ b/nixos/tests/web-servers/unit-php.nix @@ -1,62 +1,60 @@ -import ../make-test-python.nix ( - { pkgs, ... }: - let - testdir = pkgs.writeTextDir "www/info.php" " CMake Error at CMakeLists.txt:236 (find_package): + # > By not providing "FindNAUTY.cmake" in CMAKE_MODULE_PATH this project has + # > asked CMake to find a package configuration file provided by "NAUTY", but + # > CMake did not find one. + # with this weird workaround of setting SCIPOptSuite_SOURCE_DIR to include the scipopt-scip source + # files via symlinks, so the specific nauty files are found: + preConfigure = '' + mkdir -pv $out/scip + ln -sv ${scipopt-scip.src}/src/ $out/scip/src + cmakeFlagsArray+=( + "-DSCIPOptSuite_SOURCE_DIR=$out" + ) + ''; + doCheck = true; + meta = { + maintainers = with lib.maintainers; [ fettgoenner ]; + changelog = "https://scipopt.org/doc-${scipVersion}/html/RN${lib.versions.major scipVersion}.php"; + description = "Branch-and-Price & Column Generation for Everyone"; + license = lib.licenses.lgpl3Plus; + homepage = "https://gcg.zib.de"; + mainProgram = "gcg"; + }; +} diff --git a/pkgs/by-name/sc/scipopt-papilo/package.nix b/pkgs/by-name/sc/scipopt-papilo/package.nix new file mode 100644 index 000000000000..9f0581f4f575 --- /dev/null +++ b/pkgs/by-name/sc/scipopt-papilo/package.nix @@ -0,0 +1,59 @@ +{ + lib, + stdenv, + cmake, + fetchFromGitHub, + boost, + blas, + gmp, + tbb_2021_11, + gfortran, +}: + +stdenv.mkDerivation rec { + pname = "scipopt-papilo"; + version = "2.4.1"; + + # To correlate scipVersion and version, check: https://scipopt.org/#news + scipVersion = "9.2.1"; + + src = fetchFromGitHub { + owner = "scipopt"; + repo = "papilo"; + tag = "v${version}"; + hash = "sha256-oQ9iq5UkFK0ghUx6uxdJIOo5niQjniHegSZptqi2fgE="; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + blas + gmp + gfortran + boost + tbb_2021_11 + ]; + + cmakeFlags = [ + # Disable automatic download of TBB. + (lib.cmakeBool "TBB_DOWNLOAD" false) + + # Explicitly disable SoPlex as a built-in back-end solver to avoid this error: + # > include/boost/multiprecision/mpfr.hpp:22: fatal error: mpfr.h: No such file or directory + # > compilation terminated. + (lib.cmakeBool "SOPLEX" false) + + # (lib.cmakeBool "GMP" true) + # (lib.cmakeBool "QUADMATH" true) + # (lib.cmakeBool "TBB" true) + ]; + doCheck = true; + meta = { + maintainers = with lib.maintainers; [ fettgoenner ]; + changelog = "https://scipopt.org/doc-${scipVersion}/html/RN${lib.versions.major scipVersion}.php"; + description = "Parallel Presolve for Integer and Linear Optimization"; + license = lib.licenses.lgpl3Plus; + homepage = "https://github.com/scipopt/papilo"; + mainProgram = "papilo"; + }; +} diff --git a/pkgs/by-name/sc/scipopt-scip/package.nix b/pkgs/by-name/sc/scipopt-scip/package.nix new file mode 100644 index 000000000000..c4939120ae08 --- /dev/null +++ b/pkgs/by-name/sc/scipopt-scip/package.nix @@ -0,0 +1,61 @@ +{ + lib, + stdenv, + fetchzip, + fetchFromGitHub, + cmake, + zlib, + readline, + gmp, + scipopt-soplex, + scipopt-papilo, + scipopt-zimpl, + ipopt, + tbb_2021_11, + boost, + gfortran, + criterion, + mpfr, +}: + +stdenv.mkDerivation rec { + pname = "scipopt-scip"; + version = "9.2.1"; + + src = fetchFromGitHub { + owner = "scipopt"; + repo = "scip"; + tag = "v${lib.replaceStrings [ "." ] [ "" ] version}"; + hash = "sha256-xYxbMZYYqFNInlct8Ju0SrksfJlwV9Q+AHjxq7xhfAs="; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + scipopt-soplex + scipopt-papilo + scipopt-zimpl + ipopt + gmp + readline + zlib + tbb_2021_11 + boost + gfortran + criterion + mpfr # if not included, throws fatal error: mpfr.h not found + ]; + + cmakeFlags = [ ]; + + doCheck = true; + + meta = { + maintainers = with lib.maintainers; [ fettgoenner ]; + changelog = "https://scipopt.org/doc-${version}/html/RN${lib.versions.major version}.php"; + description = "Solving Constraint Integer Programs"; + license = lib.licenses.asl20; + homepage = "https://github.com/scipopt/scip"; + mainProgram = "scip"; + }; +} diff --git a/pkgs/by-name/sc/scipopt-soplex/package.nix b/pkgs/by-name/sc/scipopt-soplex/package.nix new file mode 100644 index 000000000000..ab79ae825c21 --- /dev/null +++ b/pkgs/by-name/sc/scipopt-soplex/package.nix @@ -0,0 +1,48 @@ +{ + lib, + stdenv, + cmake, + gmp, + mpfr, + zlib, + boost, + fetchFromGitHub, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "scipopt-soplex"; + version = "713"; + + # To correlate scipVersion and version, check: https://scipopt.org/#news + scipVersion = "9.2.1"; + + src = fetchFromGitHub { + owner = "scipopt"; + repo = "soplex"; + rev = "release-${builtins.replaceStrings [ "." ] [ "" ] finalAttrs.version}"; + hash = "sha256-qI7VGPAm3ALzeiD/OgvlZ1w2GzHRYdBajTW5XdIN9pU="; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + boost + gmp + mpfr + zlib + ]; + + strictDeps = true; + + doCheck = true; + + meta = { + homepage = "https://soplex.zib.de/"; + description = "Sequential object-oriented simPlex"; + license = with lib.licenses; [ asl20 ]; + mainProgram = "soplex"; + maintainers = with lib.maintainers; [ david-r-cox ]; + changelog = "https://scipopt.org/doc-${finalAttrs.scipVersion}/html/RN${lib.versions.major finalAttrs.scipVersion}.php"; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/sc/scipopt-ug/package.nix b/pkgs/by-name/sc/scipopt-ug/package.nix new file mode 100644 index 000000000000..5905ce388596 --- /dev/null +++ b/pkgs/by-name/sc/scipopt-ug/package.nix @@ -0,0 +1,45 @@ +{ + lib, + stdenv, + fetchzip, + cmake, + scipopt-scip, + zlib, + mpi, +}: + +stdenv.mkDerivation rec { + pname = "scipopt-ug"; + version = "1.0.0-beta6"; + + # To correlate scipVersion and version, check: https://scipopt.org/#news + scipVersion = "9.2.1"; + + # Take the SCIPOptSuite source since no other source exists publicly. + src = fetchzip { + url = "https://github.com/scipopt/scip/releases/download/v${ + lib.replaceStrings [ "." ] [ "" ] scipVersion + }/scipoptsuite-${scipVersion}.tgz"; + sha256 = "sha256-Hi6oDPtJZODTBIuRYE62sUMTJqfmF0flY3cGoWh2IZE="; + }; + + sourceRoot = "${src.name}/ug"; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = [ + scipopt-scip + mpi + zlib + ]; + + meta = { + maintainers = with lib.maintainers; [ fettgoenner ]; + changelog = "https://scipopt.org/doc-${scipVersion}/html/RN${lib.versions.major scipVersion}.php"; + description = "Ubiquity Generator framework to parallelize branch-and-bound based solvers"; + license = lib.licenses.lgpl3Plus; + homepage = "https://ug.zib.de"; + }; +} diff --git a/pkgs/by-name/sc/scipopt-zimpl/package.nix b/pkgs/by-name/sc/scipopt-zimpl/package.nix new file mode 100644 index 000000000000..d0e768b3e7ac --- /dev/null +++ b/pkgs/by-name/sc/scipopt-zimpl/package.nix @@ -0,0 +1,75 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + bison, + flex, + gmp, + zlib, +}: + +stdenv.mkDerivation rec { + pname = "scipopt-zimpl"; + version = "362"; + + # To correlate scipVersion and version, check: https://scipopt.org/#news + scipVersion = "9.2.1"; + + src = fetchFromGitHub { + owner = "scipopt"; + repo = "zimpl"; + tag = "v${version}"; + sha256 = "juqAwzqBArsFXmz7L7RQaE78EhQdP5P51wQFlCoo7/o="; + }; + + postPatch = '' + chmod +x check/check.sh + ''; + + nativeBuildInputs = [ + cmake + bison + flex + ]; + + buildInputs = [ + gmp + zlib + ]; + doCheck = true; + + checkPhase = '' + runHook preCheck + pushd ../check + ./check.sh ../build/bin/zimpl + popd + runHook postCheck + ''; + meta = { + maintainers = with lib.maintainers; [ fettgoenner ]; + changelog = "https://scipopt.org/doc-${scipVersion}/html/RN${lib.versions.major scipVersion}.php"; + description = "Zuse Institut Mathematical Programming Language"; + longDescription = '' + ZIMPL is a little language to translate the mathematical model of a + problem into a linear or (mixed-)integer mathematical program + expressed in .lp or .mps file format which can be read by a LP or MIP + solver. + + If you use Zimpl for research and publish results, the best way + to refer to Zimpl is to cite my Ph.d. thesis: + + @PHDTHESIS{Koch2004, + author = "Thorsten Koch", + title = "Rapid Mathematical Programming", + year = "2004", + school = "Technische {Universit\"at} Berlin", + url = "http://www.zib.de/Publications/abstracts/ZR-04-58/", + note = "ZIB-Report 04-58", + } + ''; + license = lib.licenses.lgpl3Plus; + homepage = "https://zimpl.zib.de"; + mainProgram = "zimpl"; + }; +} diff --git a/pkgs/by-name/se/sendme/package.nix b/pkgs/by-name/se/sendme/package.nix index 4370d32e565c..bc68f58f9745 100644 --- a/pkgs/by-name/se/sendme/package.nix +++ b/pkgs/by-name/se/sendme/package.nix @@ -8,17 +8,17 @@ rustPlatform.buildRustPackage rec { pname = "sendme"; - version = "0.24.0"; + version = "0.25.0"; src = fetchFromGitHub { owner = "n0-computer"; repo = "sendme"; rev = "v${version}"; - hash = "sha256-r9RZZqf6IVwMkCKHHH7hBP0t1HIr8zuhoaL4fD3UXso="; + hash = "sha256-OmP2FLvBupeJeGhMMBgcTpMSgQZ5JWzXBVeFZt7EU4Q="; }; useFetchCargoVendor = true; - cargoHash = "sha256-mpVh6bRZVec9SXOuc9/BY0SSkzUPE7ykmHXSdzaMwrc="; + cargoHash = "sha256-8Ry3rpGTNcvMIA3Q10Cb3uJHOBQin9AhlLNRekaKw/0="; buildInputs = lib.optionals stdenv.hostPlatform.isDarwin ( with darwin.apple_sdk.frameworks; diff --git a/pkgs/by-name/se/servo/package.nix b/pkgs/by-name/se/servo/package.nix index 0f4666648a55..62faa989d3dd 100644 --- a/pkgs/by-name/se/servo/package.nix +++ b/pkgs/by-name/se/servo/package.nix @@ -62,13 +62,13 @@ in rustPlatform.buildRustPackage { pname = "servo"; - version = "0-unstable-2025-03-18"; + version = "0-unstable-2025-03-29"; src = fetchFromGitHub { owner = "servo"; repo = "servo"; - rev = "8d39d7706aee50971e848a5e31fc6bfd7ef552c1"; - hash = "sha256-PdkES7tvECVoJWa78t/K4ab+brqCLHY47c+TnDNQ3Ps="; + rev = "5d1c64dba9cf3e65f770370eb17f00ad4114edce"; + hash = "sha256-0DuS2WfgWgnxh5qDc/XNL28XxXKnYPQW7F2m4OlANck="; # Breaks reproducibility depending on whether the picked commit # has other ref-names or not, which may change over time, i.e. with # "ref-names: HEAD -> main" as long this commit is the branch HEAD @@ -79,7 +79,7 @@ rustPlatform.buildRustPackage { }; useFetchCargoVendor = true; - cargoHash = "sha256-mxbRqJ+ex9k1h6wOgjPHWfG8RA0vVRBAqsHtwSRI12Y="; + cargoHash = "sha256-m6lsXHf7SIgbIt8RyhUkJpd1/nJQMSNRS9uTJ6th9ng="; # set `HOME` to a temp dir for write access # Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328) diff --git a/pkgs/by-name/sn/snakefmt/package.nix b/pkgs/by-name/sn/snakefmt/package.nix index ba565b5c20b3..44735da75e42 100644 --- a/pkgs/by-name/sn/snakefmt/package.nix +++ b/pkgs/by-name/sn/snakefmt/package.nix @@ -8,14 +8,14 @@ python3.pkgs.buildPythonApplication rec { pname = "snakefmt"; - version = "0.10.2"; + version = "0.11.0"; pyproject = true; - disabled = python3.pythonOlder "3.8.1"; + disabled = python3.pythonOlder "3.11"; src = fetchPypi { inherit pname version; - hash = "sha256-QoalkDtm2n5SdjxegYTaTtyVETt1j0RIUogE+1T5t1o="; + hash = "sha256-r8O5LhA8/agP/35381f2zB2rdCJy7nY0K6NC8w5yHzA="; }; build-system = [ python3.pkgs.poetry-core ]; @@ -27,6 +27,8 @@ python3.pkgs.buildPythonApplication rec { toml ]; + pythonRelaxDeps = [ "black" ]; + pythonImportsCheck = [ "snakefmt" ]; nativeInstallCheckInputs = [ versionCheckHook ]; diff --git a/pkgs/by-name/sp/spire/package.nix b/pkgs/by-name/sp/spire/package.nix index 5e07b18b1030..d4563bebf85f 100644 --- a/pkgs/by-name/sp/spire/package.nix +++ b/pkgs/by-name/sp/spire/package.nix @@ -6,7 +6,7 @@ buildGoModule rec { pname = "spire"; - version = "1.11.2"; + version = "1.12.0"; outputs = [ "out" @@ -18,10 +18,10 @@ buildGoModule rec { owner = "spiffe"; repo = pname; rev = "v${version}"; - sha256 = "sha256-aLAJbNnFd7fcxLJ/htoFacU5NjPnnrlC6/LiT/sVHwk="; + sha256 = "sha256-hNa1e6h4IhD2SfhZZ5xkwQ7e7X5x3Gk4v33nw2t+cvk="; }; - vendorHash = "sha256-QE0+3TzJQ9Ue6V1QjNJzkrleXPZrd17lY+KqcPf/Hwg="; + vendorHash = "sha256-6qtR9SF6QQKqsVpKpp6YBkB9wOLFwm8C3PF0DlN0Ud0="; subPackages = [ "cmd/spire-agent" diff --git a/pkgs/by-name/sq/sqlpage/package.nix b/pkgs/by-name/sq/sqlpage/package.nix index 26ea41b0c0b4..120c0cca258b 100644 --- a/pkgs/by-name/sq/sqlpage/package.nix +++ b/pkgs/by-name/sq/sqlpage/package.nix @@ -37,13 +37,13 @@ in rustPlatform.buildRustPackage rec { pname = "sqlpage"; - version = "0.33.1"; + version = "0.34.0"; src = fetchFromGitHub { owner = "lovasoa"; repo = "SQLpage"; tag = "v${version}"; - hash = "sha256-Yme+Nh6x5cJzDm3o4s+QVrOmv6afnmoD7ZjhTkWDAgo="; + hash = "sha256-cqMXdAXc46DbbONz1A6uf2Oo2Cu4sig6ntuLqYlihR4="; }; postPatch = '' @@ -69,7 +69,7 @@ rustPlatform.buildRustPackage rec { useFetchCargoVendor = true; - cargoHash = "sha256-/LTDlZseS4V2nqBKyi3HaxjNyqKHVYYNFmEJOTp0pqs="; + cargoHash = "sha256-NUbCSYUTXN8glw94Lr/+Jj54PukRXFlzTxq0d7znjwA="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/ss/ssocr/package.nix b/pkgs/by-name/ss/ssocr/package.nix index b25351bfb37f..6179b456225c 100644 --- a/pkgs/by-name/ss/ssocr/package.nix +++ b/pkgs/by-name/ss/ssocr/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation rec { pname = "ssocr"; - version = "2.24.1"; + version = "2.25.0"; src = fetchFromGitHub { owner = "auerswal"; repo = "ssocr"; rev = "v${version}"; - sha256 = "sha256-5v97v9sBoHDCH2onpmBI7otK9UuhqJbM1TMapKp4XsM="; + sha256 = "sha256-yQPjs4kGvp6C7kFcWQ3EzoFhwEAhm2nC7yXu9RbU4os="; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/st/stackit-cli/package.nix b/pkgs/by-name/st/stackit-cli/package.nix index 69a8b759f915..cd678c8f98a9 100644 --- a/pkgs/by-name/st/stackit-cli/package.nix +++ b/pkgs/by-name/st/stackit-cli/package.nix @@ -12,16 +12,16 @@ buildGoModule rec { pname = "stackit-cli"; - version = "0.26.0"; + version = "0.29.0"; src = fetchFromGitHub { owner = "stackitcloud"; repo = "stackit-cli"; rev = "v${version}"; - hash = "sha256-7XI5YkfLY/Jo1lVEQ2waN7/g8xN8LUTXIva8OzRdRSo="; + hash = "sha256-EPjQrPt6m7yOFgYqHOaWAZN7CjlsOgl2jsEuRB8+1fE="; }; - vendorHash = "sha256-ZVDe28D2vw/p5i6MoBZ1KS9pjncOzul3/bLB4cGoY80="; + vendorHash = "sha256-NiaY0HKDerYqehZkYToAHazaJe0eMUuue+8h6QdQDHM="; subPackages = [ "." ]; diff --git a/pkgs/by-name/st/steel/package.nix b/pkgs/by-name/st/steel/package.nix index 71eb5df05e8b..7b3289bfb5ed 100644 --- a/pkgs/by-name/st/steel/package.nix +++ b/pkgs/by-name/st/steel/package.nix @@ -20,13 +20,13 @@ }: rustPlatform.buildRustPackage { pname = "steel"; - version = "0.6.0-unstable-2025-03-17"; + version = "0.6.0-unstable-2025-03-28"; src = fetchFromGitHub { owner = "mattwparas"; repo = "steel"; - rev = "8482d947369230b3af45e8775b78dad2379f7a1a"; - hash = "sha256-/2j8olMZngr5tKmM0JfxM8oi+CYn05LY5406syq7jak="; + rev = "2f0fba8b16a3fbab083cedcf09974514b3a29d25"; + hash = "sha256-i/bmZFoC3fRocO1KeCPGB9K/0yEAcKlLh56N+r1V7CI="; }; useFetchCargoVendor = true; diff --git a/pkgs/by-name/su/sunxi-tools/package.nix b/pkgs/by-name/su/sunxi-tools/package.nix index 075b94148822..c6ec1b65cd04 100644 --- a/pkgs/by-name/su/sunxi-tools/package.nix +++ b/pkgs/by-name/su/sunxi-tools/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation { pname = "sunxi-tools"; - version = "0-unstable-2024-10-13"; + version = "0-unstable-2025-03-07"; src = fetchFromGitHub { owner = "linux-sunxi"; repo = "sunxi-tools"; - rev = "29d48c3c39d74200fb35b5750f99d06a4886bf2e"; - sha256 = "sha256-IUgAM/wVHGbidJ2bfLcTIdXg7wxEjxCg1IA8FtDFpR4="; + rev = "4390ca668f3b2e62f885edb6952b189c4489d83d"; + sha256 = "sha256-TwMV+hsbfARrns1ZimYTXNdGS8E9gIal6NqXBzsQjAc="; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/su/superfile/package.nix b/pkgs/by-name/su/superfile/package.nix index 2a364fbb7bcb..67c4cebfbe82 100644 --- a/pkgs/by-name/su/superfile/package.nix +++ b/pkgs/by-name/su/superfile/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, }: let - version = "1.2.0.0"; + version = "1.2.1"; tag = "v${version}"; in buildGoModule { @@ -15,10 +15,10 @@ buildGoModule { owner = "yorukot"; repo = "superfile"; inherit tag; - hash = "sha256-ByCKpNUWwVzO6A8Ad9V0P0lsquYgVqDS3eCta5iOfXI="; + hash = "sha256-yClDrDpt6QUWeAtWkG0tkmFqnaviRixz6Kez0q4cRuk="; }; - vendorHash = "sha256-5mjy6Mu/p7UJCxn2XRbgtfGmrS+9bEt4+EVheYZcDpY="; + vendorHash = "sha256-STiuaNcmoviHBXGcSPPs39sICsks3Z8I3ANdnlUqA/k="; ldflags = [ "-s" diff --git a/pkgs/by-name/su/suricata/package.nix b/pkgs/by-name/su/suricata/package.nix index 630da8c0aeca..e03df3fd06f8 100644 --- a/pkgs/by-name/su/suricata/package.nix +++ b/pkgs/by-name/su/suricata/package.nix @@ -40,11 +40,11 @@ let in stdenv.mkDerivation rec { pname = "suricata"; - version = "7.0.8"; + version = "7.0.9"; src = fetchurl { url = "https://www.openinfosecfoundation.org/download/${pname}-${version}.tar.gz"; - hash = "sha256-SSkoxiLhcL2cRdNTC8KxAzxVgtwYCFxDb86vtigp084="; + hash = "sha256-5XspNDx7ahhXyZG9crCzRKuimOThGVM7F56BfampnT0="; }; nativeBuildInputs = diff --git a/pkgs/by-name/ta/taler-challenger/package.nix b/pkgs/by-name/ta/taler-challenger/package.nix index 69ba10d6c06d..c59e90506bd2 100644 --- a/pkgs/by-name/ta/taler-challenger/package.nix +++ b/pkgs/by-name/ta/taler-challenger/package.nix @@ -21,12 +21,12 @@ stdenv.mkDerivation (finalAttrs: { pname = "taler-challenger"; - version = "0.14.1"; + version = "0.14.3-unstable-2025-02-17"; src = fetchgit { url = "https://git.taler.net/challenger.git"; - rev = "v${finalAttrs.version}"; - hash = "sha256-W7oImw5ptrLVIK8KPtmb7PJKSpmh8KsazxV6reUoRO8="; + rev = "e49e33a13df92c6a1d6f119775baa31778163531"; + hash = "sha256-AOtCx/r6JzwOSF3b3lDeY0/S+dGGNrJELerFoQ/K4tA="; }; # https://git.taler.net/challenger.git/tree/bootstrap diff --git a/pkgs/by-name/ta/taler-exchange/package.nix b/pkgs/by-name/ta/taler-exchange/package.nix index 208a7dfbc686..d9be94b66252 100644 --- a/pkgs/by-name/ta/taler-exchange/package.nix +++ b/pkgs/by-name/ta/taler-exchange/package.nix @@ -22,13 +22,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "taler-exchange"; - version = "0.14.1"; + version = "0.14.6-unstable-2025-03-02"; src = fetchgit { url = "https://git.taler.net/exchange.git"; - rev = "v${finalAttrs.version}"; + rev = "13e058a902a3dbee9d7fe327030b88c2d126675b"; fetchSubmodules = true; - hash = "sha256-DD6fX54K1q4f2d/IqC+urVpMkypDRaL3lrBoQieGviI="; + hash = "sha256-fqlYpFggQkB/IqD6V01ec+G4EtoNaA/FXigM+jqIMe0="; }; patches = [ ./0001-add-TALER_TEMPLATING_init_path.patch ]; diff --git a/pkgs/by-name/ta/taler-merchant/package.nix b/pkgs/by-name/ta/taler-merchant/package.nix index 2cf1f7de6cf5..c144c8a607b6 100644 --- a/pkgs/by-name/ta/taler-merchant/package.nix +++ b/pkgs/by-name/ta/taler-merchant/package.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "taler-merchant"; - version = "0.14.1"; + version = "0.14.6-unstable-2025-03-02"; src = fetchgit { url = "https://git.taler.net/merchant.git"; - rev = "v${finalAttrs.version}"; + rev = "c84ed905e2d4af60162a7def5c0fc430394930e6"; fetchSubmodules = true; - hash = "sha256-ac7ajHBLW6BJrL0iaa+b7XNZHMEEmbAo17URIdPSXd8="; + hash = "sha256-LXmrY8foiYOxCik23d3f4t9+tldbm7bVGG8eQOLsm+A="; }; postUnpack = '' diff --git a/pkgs/by-name/ta/taler-sync/package.nix b/pkgs/by-name/ta/taler-sync/package.nix index 34f9021c759b..7eb982f9b120 100644 --- a/pkgs/by-name/ta/taler-sync/package.nix +++ b/pkgs/by-name/ta/taler-sync/package.nix @@ -19,12 +19,12 @@ stdenv.mkDerivation (finalAttrs: { pname = "taler-sync"; - version = "0.14.1"; + version = "0.14.2-unstable-2025-03-02"; src = fetchgit { url = "https://git.taler.net/sync.git"; - rev = "v${finalAttrs.version}"; - hash = "sha256-v+BBn9GZ+4Zc8iUebGmLtxAQN+7+cTdG8jNOpi+jN2c="; + rev = "10d0e97f191a8bd7de07049559a2eccb29a78507"; + hash = "sha256-aihxgknPCE8tbRfncbMO/zHGg395LHVuXWyln2ryiCw="; }; strictDeps = true; diff --git a/pkgs/by-name/te/temporal/package.nix b/pkgs/by-name/te/temporal/package.nix index 9f046d3b811b..a76f4ef4d16a 100644 --- a/pkgs/by-name/te/temporal/package.nix +++ b/pkgs/by-name/te/temporal/package.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "temporal"; - version = "1.27.1"; + version = "1.27.2"; src = fetchFromGitHub { owner = "temporalio"; repo = "temporal"; rev = "v${version}"; - hash = "sha256-hQs2rSTbNqknQ/N0mZ8BxeKQn2Pm9Yt/5eKGB2Kc+ME="; + hash = "sha256-3x94Cccy5CHAKb2eHdMThAC+ONQjuYZ4UyQ8YwrWvgU="; }; - vendorHash = "sha256-kasKs692fHojyCLsSdho5LWej11Asu8JJb61rbg1k2k="; + vendorHash = "sha256-g3XASZFZPS2Zs7gvGQpy9GO5kpA9gSL4Ur3LQhKIL6Y="; excludedPackages = [ "./build" ]; diff --git a/pkgs/by-name/te/tetragon/package.nix b/pkgs/by-name/te/tetragon/package.nix index b59f3310ad10..fb8fb7c8e86e 100644 --- a/pkgs/by-name/te/tetragon/package.nix +++ b/pkgs/by-name/te/tetragon/package.nix @@ -7,19 +7,26 @@ llvm_16, clang_16, bash, + writableTmpDirAsHomeHook, + gitMinimal, }: stdenv.mkDerivation (finalAttrs: { pname = "tetragon"; - version = "1.2.0"; + version = "1.4.0"; src = fetchFromGitHub { owner = "cilium"; repo = "tetragon"; tag = "v${finalAttrs.version}"; - hash = "sha256-KOR5MMRnhrlcMPqRjzjSJXvitiZQ8/tlxEnBiQG2x/Q="; + hash = "sha256-HOVQdKUIBLq9/2hTokZKvLZOgRQu5/lAwYy1yQa1bus="; }; + nativeBuildInputs = [ + writableTmpDirAsHomeHook + gitMinimal + ]; + buildInputs = [ clang_16 go @@ -27,48 +34,51 @@ stdenv.mkDerivation (finalAttrs: { pkg-config ]; - env.NIX_CFLAGS_COMPILE = "-fno-stack-protector -Qunused-arguments"; + env = { + LOCAL_CLANG = 1; + LOCAL_CLANG_FORMAT = 1; + NIX_CFLAGS_COMPILE = "-fno-stack-protector -Qunused-arguments"; + }; buildPhase = '' runHook preBuild - export HOME=$TMP - export LOCAL_CLANG=1 - export LOCAL_CLANG_FORMAT=1 + make tetragon make tetragon-operator make tetra make tetragon-bpf + runHook postBuild ''; # For BPF compilation - hardeningDisable = [ - "zerocallusedregs" - ]; + hardeningDisable = [ "zerocallusedregs" ]; postPatch = '' - substituteInPlace bpf/Makefile --replace '/bin/bash' '${lib.getExe bash}' - substituteInPlace pkg/defaults/defaults.go --replace '/var/lib/tetragon/' $out/lib/tetragon/bpf/ + substituteInPlace bpf/Makefile.defs --replace-fail '/bin/bash' '${lib.getExe bash}' + substituteInPlace pkg/defaults/defaults.go --replace-fail '/var/lib/tetragon/' $out/lib/tetragon/bpf/ ''; installPhase = '' runHook preInstall + mkdir -p $out/lib/tetragon $out/lib/tetragon/tetragon.tp.d/ sed -i "s+/usr/local/+$out/+g" install/linux-tarball/usr/local/lib/tetragon/tetragon.conf.d/bpf-lib cp -n -r install/linux-tarball/usr/local/lib/tetragon/tetragon.conf.d/ $out/lib/tetragon/ cp -n -r ./bpf/objs $out/lib/tetragon/bpf install -m755 -D ./tetra $out/bin/tetra install -m755 -D ./tetragon $out/bin/tetragon + runHook postInstall ''; - meta = with lib; { + meta = { description = "Real-time, eBPF-based Security Observability and Runtime Enforcement tool"; homepage = "https://github.com/cilium/tetragon"; - license = licenses.asl20; + license = lib.licenses.asl20; mainProgram = "tetragon"; - maintainers = with maintainers; [ gangaram ]; - platforms = platforms.linux; - sourceProvenance = with sourceTypes; [ fromSource ]; + maintainers = with lib.maintainers; [ gangaram ]; + platforms = lib.platforms.linux; + sourceProvenance = with lib.sourceTypes; [ fromSource ]; }; }) diff --git a/pkgs/by-name/th/theforceengine/package.nix b/pkgs/by-name/th/theforceengine/package.nix index 5135dda20a5e..001b277ffc2a 100644 --- a/pkgs/by-name/th/theforceengine/package.nix +++ b/pkgs/by-name/th/theforceengine/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - fetchpatch, SDL2, SDL2_image, rtaudio, @@ -13,6 +12,7 @@ cmake, pkg-config, zenity, + withEditor ? true, }: let # package depends on SDL2main static library @@ -22,23 +22,15 @@ let in stdenv.mkDerivation rec { pname = "theforceengine"; - version = "1.15.000"; + version = "1.22.200"; src = fetchFromGitHub { owner = "luciusDXL"; repo = "TheForceEngine"; rev = "v${version}"; - hash = "sha256-pcPR2KCGbyL1JABF30yJrlcLPGU2h0//Ghf7e7zYO0s="; + hash = "sha256-Mvp9VrPk36wNTUwNQT83JPOEO72Xhqmhkn3/KfZhQX4="; }; - patches = [ - # https://github.com/luciusDXL/TheForceEngine/pull/493 -- fixes finding data files outside program directory - (fetchpatch { - url = "https://github.com/luciusDXL/TheForceEngine/commit/476a5277666bfdffb33ed10bdd1177bfe8ec3a70.diff"; - hash = "sha256-ZcfKIXQMcWMmnM4xfQRd/Ozl09vkQr3jUxZ5e4Mw5CU="; - }) - ]; - nativeBuildInputs = [ cmake pkg-config @@ -57,8 +49,7 @@ stdenv.mkDerivation rec { hardeningDisable = [ "format" ]; cmakeFlags = [ - (lib.cmakeBool "ENABLE_EDITOR" true) - (lib.cmakeBool "ENABLE_FORCE_SCRIPT" true) + (lib.cmakeBool "ENABLE_EDITOR" withEditor) ]; prePatch = '' @@ -78,6 +69,6 @@ stdenv.mkDerivation rec { homepage = "https://theforceengine.github.io"; license = licenses.gpl2Only; maintainers = with maintainers; [ devusb ]; - platforms = [ "x86_64-linux" ]; + platforms = platforms.linux; }; } diff --git a/pkgs/by-name/to/tooling-language-server/package.nix b/pkgs/by-name/to/tooling-language-server/package.nix index 3a90b7ea2433..1feca73499a3 100644 --- a/pkgs/by-name/to/tooling-language-server/package.nix +++ b/pkgs/by-name/to/tooling-language-server/package.nix @@ -8,17 +8,17 @@ rustPlatform.buildRustPackage rec { pname = "tooling-language-server"; - version = "0.4.2"; + version = "0.5.0"; src = fetchFromGitHub { owner = "filiptibell"; repo = "tooling-language-server"; tag = "v${version}"; - hash = "sha256-4jwL2XD4bK3QnsQ/nOLySjp6e5nGB8jUOf6reYzNrAc="; + hash = "sha256-0FF9p3Z8C3C/fcTvu66ozCs/G3UAJ/Kf2v+4IZU4eCA="; }; useFetchCargoVendor = true; - cargoHash = "sha256-L7LfnF9C6JNjY9pGJb0uuj38H9KI3vkkvtx7QCB1GO0="; + cargoHash = "sha256-DxQMAnlE8oWtigU1gUEdTdBIvEtbL8xhaPLx6kt8T2c="; nativeInstallCheckInputs = [ versionCheckHook ]; versionCheckProgramArg = [ "--version" ]; diff --git a/pkgs/by-name/tr/transcode/package.nix b/pkgs/by-name/tr/transcode/package.nix deleted file mode 100644 index d64d4f760b33..000000000000 --- a/pkgs/by-name/tr/transcode/package.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - flac, - lame, - zlib, - libjpeg, - libvorbis, - libtheora, - libxml2, - lzo, - libdvdread, - pkg-config, - x264, - libmpeg2, - xvidcore, -}: - -stdenv.mkDerivation rec { - pname = "transcode"; - version = "1.1.7"; - src = fetchurl { - url = "https://bitbucket.org/france/transcode-tcforge/downloads/${pname}-${version}.tar.bz2"; - sha256 = "1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92"; - }; - - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - flac - lame - zlib - libjpeg - libvorbis - libtheora - libxml2 - lzo - libdvdread - x264 - libmpeg2 - xvidcore - ]; - configureFlags = [ - "--disable-ffmpeg" - "--disable-libavcodec" - "--disable-libavformat" - "--enable-lzo" - "--enable-ogg" - "--enable-vorbis" - "--enable-theora" - "--enable-libxml2" - "--enable-x264" - "--enable-libmpeg2" - "--enable-xvid" - ]; - - enableParallelBuilding = true; - - # Workaround build failure on -fno-common toolchains like upstream - # gcc-10. Otherwise build fails as: - # ld: tcextract-extract_pcm.o:/build/transcode-1.1.7/import/extract_pcm.c:36: multiple definition of - # `audio'; tcextract-extract_ac3.o:/build/transcode-1.1.7/import/extract_ac3.c:337: first defined here - env.NIX_CFLAGS_COMPILE = "-fcommon"; - - meta = with lib; { - description = "Suite of command line utilities for transcoding video and audio codecs, and for converting between different container formats"; - homepage = "http://www.transcoding.org/"; - license = licenses.lgpl2Plus; - platforms = platforms.linux; - }; -} diff --git a/pkgs/by-name/tr/treesheets/package.nix b/pkgs/by-name/tr/treesheets/package.nix index e08be9dd7609..12737b3e670d 100644 --- a/pkgs/by-name/tr/treesheets/package.nix +++ b/pkgs/by-name/tr/treesheets/package.nix @@ -12,13 +12,13 @@ stdenv.mkDerivation rec { pname = "treesheets"; - version = "0-unstable-2025-03-03"; + version = "0-unstable-2025-03-15"; src = fetchFromGitHub { owner = "aardappel"; repo = "treesheets"; - rev = "a09352dabf6c491eed411bca5e613ba58142debc"; - hash = "sha256-3lO8bsdluj24EMikvSQ7qOciHmIlKVxR3GWAG/SfUFM="; + rev = "6240644205b963e3e1b1fd4d21762e209ef38c05"; + hash = "sha256-sgzgqb1lirVVE1TKNarMgnn5altsSyNL/CQd+IBatPI="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/tr/trivy/package.nix b/pkgs/by-name/tr/trivy/package.nix index 0c1861d9f1a8..00edf3cf211d 100644 --- a/pkgs/by-name/tr/trivy/package.nix +++ b/pkgs/by-name/tr/trivy/package.nix @@ -11,19 +11,19 @@ buildGo124Module rec { pname = "trivy"; - version = "0.60.0"; + version = "0.61.0"; src = fetchFromGitHub { owner = "aquasecurity"; repo = "trivy"; tag = "v${version}"; - hash = "sha256-9JArivz+4GWfU2R7e4pFI/cWJgNFhMj/cQ09a4ESoy8="; + hash = "sha256-SC/EYozsPdqummWBCrQi852rHk6TAMnzxyn0FzwjJ6w="; }; # Hash mismatch on across Linux and Darwin proxyVendor = true; - vendorHash = "sha256-EF2oq3iYVhdeXjAYYLqtcF0OwDh6vgDay1y8z5w/S4k="; + vendorHash = "sha256-cQPfZnLDNqMfunBr0xa45H/Trh9+EvdDdiYrjZsOyF0="; subPackages = [ "cmd/trivy" ]; diff --git a/pkgs/by-name/ts/ts_query_ls/package.nix b/pkgs/by-name/ts/ts_query_ls/package.nix index 2a41da495b6a..aab0192fe498 100644 --- a/pkgs/by-name/ts/ts_query_ls/package.nix +++ b/pkgs/by-name/ts/ts_query_ls/package.nix @@ -6,7 +6,7 @@ }: let pname = "ts_query_ls"; - version = "1.9.0"; + version = "1.10.0"; in rustPlatform.buildRustPackage { inherit pname version; @@ -15,13 +15,13 @@ rustPlatform.buildRustPackage { owner = "ribru17"; repo = "ts_query_ls"; rev = "v${version}"; - hash = "sha256-pjV5WRHcBZUFGr06YKlkZST0E47SNt5bxOM7my3TiF8="; + hash = "sha256-3dUmHux+kXuIGao8vX0ZzVZO6fnPegQ4yqzmt2mMmOg="; }; nativeBuildInputs = [ cmake ]; useFetchCargoVendor = true; - cargoHash = "sha256-Tyw8IqaqHmxN//MNtrSuS0xLwh+xDjemquKouLIlsHQ="; + cargoHash = "sha256-14RSZC4yo76g1E2fcN22iQ9ElniNV4RZey0H2kLxoGE="; meta = { description = "LSP implementation for Tree-sitter's query files"; diff --git a/pkgs/by-name/ts/tsid/package.nix b/pkgs/by-name/ts/tsid/package.nix index 988e95a039ad..73746434696f 100644 --- a/pkgs/by-name/ts/tsid/package.nix +++ b/pkgs/by-name/ts/tsid/package.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "tsid"; - version = "1.7.1"; + version = "1.8.0"; src = fetchFromGitHub { owner = "stack-of-tasks"; repo = "tsid"; rev = "v${finalAttrs.version}"; - hash = "sha256-id6OCOX01o41Z5kqzwvjYa5uoQZtzhRaFBuOBhbLcTA="; + hash = "sha256-SS6JhU4fuZtTzv/EY31ixwwLOzmO/dN3H5HEMh/URTA="; }; cmakeFlags = [ diff --git a/pkgs/by-name/tu/tutanota-desktop/package.nix b/pkgs/by-name/tu/tutanota-desktop/package.nix index fc04ad442124..2e5179dea11e 100644 --- a/pkgs/by-name/tu/tutanota-desktop/package.nix +++ b/pkgs/by-name/tu/tutanota-desktop/package.nix @@ -7,11 +7,11 @@ appimageTools.wrapType2 rec { pname = "tutanota-desktop"; - version = "271.250227.0"; + version = "274.250312.0"; src = fetchurl { url = "https://github.com/tutao/tutanota/releases/download/tutanota-desktop-release-${version}/tutanota-desktop-linux.AppImage"; - hash = "sha256-03RNIGY9gTuvHurVX1UiZEZwnBoxrL4GfsEMdoN/irM="; + hash = "sha256-30+ZKqbIEUvmWhQ3ZrDZkZMBUc7lKkv02Vbraq9vPrU="; }; extraPkgs = pkgs: [ pkgs.libsecret ]; diff --git a/pkgs/by-name/ve/velocity/deps.json b/pkgs/by-name/ve/velocity/deps.json index 8259e84806ce..586ce877c159 100644 --- a/pkgs/by-name/ve/velocity/deps.json +++ b/pkgs/by-name/ve/velocity/deps.json @@ -598,72 +598,72 @@ "io/netty#netty-bom/4.1.104.Final": { "pom": "sha256-WmXgahWdINO0gAYkpXDGRtvucQsrU5s0SaJoVYwonpw=" }, - "io/netty#netty-buffer/4.1.114.Final": { - "jar": "sha256-Q26iVyXZLB9ZCoV9Rtwcj1xU1/J3WYTbJlXl47wNl8k=", - "pom": "sha256-s/B89Cce5aSkWeqKDZ9PFpEak1U1eDHQVxDvZPi4xc4=" + "io/netty#netty-buffer/4.1.119.Final": { + "jar": "sha256-MiJiGNhUwuUdSTWn6+RmO3Lsua9NqIG4a/UY5hrtSNM=", + "pom": "sha256-ZxrAlb6wlY6qKsRVFJKWSVO3ZDD3VBbGa93g8++Qb0k=" }, - "io/netty#netty-codec-haproxy/4.1.114.Final": { - "jar": "sha256-qWIW00fHIZ9psvT4dDzgruasdQs2kXOXReu8wQ60lSg=", - "pom": "sha256-o5m+RgepdUnSSa128vz24JKvY9NE4ycu/UTfIXV8z+A=" + "io/netty#netty-codec-haproxy/4.1.119.Final": { + "jar": "sha256-37y7TkXFgwaVU57Z6L3+EHQKorLM0Df3xsJXny5wq/4=", + "pom": "sha256-igsZt4CSwJwqUaAhzhIyeBTtF/L77u1WjeprreJlelo=" }, - "io/netty#netty-codec-http/4.1.114.Final": { - "jar": "sha256-VhUM6QD22TH843p/sF19dUeNbQuLVWoheBly65w+198=", - "pom": "sha256-6P6eu4YvHdXDpr6H6FGjs7KKfuxK+NcKy+ywwegW864=" + "io/netty#netty-codec-http/4.1.119.Final": { + "jar": "sha256-/0jbY+ROJz5neDLlLMKhziZw2nlvIq8SmovUw3hqLTQ=", + "pom": "sha256-vOiQ0Qr5A4IpExJ+naVAK73GZuDCUEOKeMkcwS4nKNA=" }, - "io/netty#netty-codec/4.1.114.Final": { - "jar": "sha256-cdFFSRRWtTIS444keHu77Qx32FD3NS4k5TXSam7qkTs=", - "pom": "sha256-9VFgq+xGNjTDZFmRTMYMtZSJ3Lcj6H6acaw3vfNwa4Q=" + "io/netty#netty-codec/4.1.119.Final": { + "jar": "sha256-xJeTSgV0RLEmqG4G8rUJGI5IymxaXhTBgqAvHoyNX9s=", + "pom": "sha256-ZJYD0FaxmxgvbbDAyUVlNHgLtLpXV8/lRAYsIiTBb44=" }, - "io/netty#netty-common/4.1.114.Final": { - "jar": "sha256-1rBTs7J8xWggfyVJAty2+V3SOMG51V73GdLE+OtHYiM=", - "pom": "sha256-PC59GBM6xtjk9ELMX6X+BJL1y/h4vw9xV8bUENpxn10=" + "io/netty#netty-common/4.1.119.Final": { + "jar": "sha256-mRppsVlNytmSbiaOfpRTDP2qif7vQq8mkiowLT4ukhI=", + "pom": "sha256-PMa/2IxM0XguEknOg8O1TyruD8YVy32HoFU3i66XUyM=" }, - "io/netty#netty-handler/4.1.114.Final": { - "jar": "sha256-V74l7GyPpwUv6QEZNz2LyXnNN/oAcKE1wOafX44N2tA=", - "pom": "sha256-aU/m+43+kUiiMm539WFB/Ou8zCy4sp8oV3Z5YWTsapM=" + "io/netty#netty-handler/4.1.119.Final": { + "jar": "sha256-m0m+mONrt5ogJf+1FZrsh9onIM+lRfVt45w7wQhYexs=", + "pom": "sha256-thDmZTNdjjhqUojfU4o1bv+tZCNR4ZoVgzXqDSoASUs=" }, - "io/netty#netty-parent/4.1.114.Final": { - "pom": "sha256-ocilU65+Q78O2YbSLwN53PDC+3/Dlx3GBX7VydBMWmg=" + "io/netty#netty-parent/4.1.119.Final": { + "pom": "sha256-/zqMSVFYZZvdITF/YSVIv1jXFNswT87Gm4BJake2hgM=" }, - "io/netty#netty-resolver/4.1.114.Final": { - "jar": "sha256-GWYefx297pf+maIn++0GltKcPN8/jy2YOaeQaVwr8Kw=", - "pom": "sha256-hoQ5BUAfZgXVdfSFi1jB6tzx48C8zUF3h8sK0GIcwSA=" + "io/netty#netty-resolver/4.1.119.Final": { + "jar": "sha256-O2yfn282B0chPRVJcd7B/IhSgg3BqY0FX/CdCWdviDY=", + "pom": "sha256-NmDAaSSYZKymorltz1va46qqJv8G7zHGgy8fRbPcfXc=" }, - "io/netty#netty-transport-classes-epoll/4.1.114.Final": { - "jar": "sha256-qQtCd99Wi+BWLggnEGCiiHDFe6WpH+eSBX8R6Yb+d34=", - "pom": "sha256-Zsd1AZ1ns6QKaIAmW5DciLAWYMU9t64vZc/qXnSZRxU=" + "io/netty#netty-transport-classes-epoll/4.1.119.Final": { + "jar": "sha256-OO28600PPByHvI25+BLTFzQsnI6VpKBS+3lqL3itCY4=", + "pom": "sha256-b+EBjyF42dyvIbm0LVNPHT/2eLUS7Km+wORqr9KEGdU=" }, - "io/netty#netty-transport-classes-kqueue/4.1.114.Final": { - "jar": "sha256-igf+1ZhVAt1ok29wsN1WOdLmnCV8IwBhCTbODm2phH0=", - "pom": "sha256-kMv2b+fCoYWq8twosBNvjvi6jrUb4cMZvL1/c3KvCfU=" + "io/netty#netty-transport-classes-kqueue/4.1.119.Final": { + "jar": "sha256-r4T3GgvN6eTKLY8ct79qbU0kmSOnms4UqG/qgYqPkPc=", + "pom": "sha256-UD3mbIm3UTYOnfZkk8ME617x8T3IdwhZZrHV4mqnMHw=" }, - "io/netty#netty-transport-native-epoll/4.1.114.Final": { - "jar": "sha256-2JkbiwluoPBNh/463pSAS79rzh5gGfiGt/cVBHQbqW8=", - "pom": "sha256-ktTe6GXcAC/vZOGeYCtvZhZmfaIlaIafsRNXFaA0S/g=" + "io/netty#netty-transport-native-epoll/4.1.119.Final": { + "jar": "sha256-lgYKW1oKODfqQmHpfPpCi9HXZFqIMsGFievNhokLXRg=", + "pom": "sha256-irxRuVvO8pFNK/HU9PpWny7DWG3qRT5wjJw0HtVe4ek=" }, - "io/netty#netty-transport-native-epoll/4.1.114.Final/linux-aarch_64": { - "jar": "sha256-+6GSmRoRefTwTILWmkOwYTYhbqxZdPijCIGIcFj6Zq0=" + "io/netty#netty-transport-native-epoll/4.1.119.Final/linux-aarch_64": { + "jar": "sha256-IlrvlWIYlmLgPJK9Xls+uFGlSZ2H75ArJky5JJiLGH0=" }, - "io/netty#netty-transport-native-epoll/4.1.114.Final/linux-x86_64": { - "jar": "sha256-eYcT5BNd6bq35L0DqHsG6XLojUz0oflRu7Kj6jnMyjg=" + "io/netty#netty-transport-native-epoll/4.1.119.Final/linux-x86_64": { + "jar": "sha256-ElV5I6UGnnNqkwXHOoezA7qeibMto+yV3qaoVvP9Y5c=" }, - "io/netty#netty-transport-native-kqueue/4.1.114.Final": { - "jar": "sha256-ZDsb2bP3TupUEfQodb3GT7grOpQT1mzqKuRmIAc/V4A=", - "pom": "sha256-DKdmrzuwjfpEdHx8rGe0CNW2zB/tBR/rwbQj7cB3r7c=" + "io/netty#netty-transport-native-kqueue/4.1.119.Final": { + "jar": "sha256-F0Q4piU+ddPbVQ69CGJxq5bBHU5+jaPWpyr5xrSjhac=", + "pom": "sha256-sRoWwXL4F9pvCSo64FJjKP7oNU7GH9kdmQsEqsaPlA4=" }, - "io/netty#netty-transport-native-kqueue/4.1.114.Final/osx-aarch_64": { - "jar": "sha256-aLbd/ls3tAJMJUNGChZcA0qRzDIVMk1OR6EwjqPrQEY=" + "io/netty#netty-transport-native-kqueue/4.1.119.Final/osx-aarch_64": { + "jar": "sha256-UtgGg6dkTO9ClKcZ0oXNaJeagkMZCB4kDRScsuZcx1E=" }, - "io/netty#netty-transport-native-kqueue/4.1.114.Final/osx-x86_64": { - "jar": "sha256-Wjj8Tr8ZkHfEkl+lJTzm73ibqlQhCgNQkZAvBgckWhk=" + "io/netty#netty-transport-native-kqueue/4.1.119.Final/osx-x86_64": { + "jar": "sha256-vDl3sM1Wo99hxhF6jfQd/Trv7oYuPFHKDUo4wzP/SqA=" }, - "io/netty#netty-transport-native-unix-common/4.1.114.Final": { - "jar": "sha256-/WTAfJ4Gj4DcJx9idyeCRjKKFxvmaavf4LyLIibZgN4=", - "pom": "sha256-gytDwoTiwM8PV9YpKPpylntqpuXch2bGybLQH933lR0=" + "io/netty#netty-transport-native-unix-common/4.1.119.Final": { + "jar": "sha256-iuVhj2kybm0Xt3sBQPnSdxGNvSOQbKB2OLwBNlcoxlA=", + "pom": "sha256-SqiNTykFV76vUGtoXKVeZH7LM0d2IYCID+Qiypddgko=" }, - "io/netty#netty-transport/4.1.114.Final": { - "jar": "sha256-KoYJ/mqLTJ1ZZca5AXd7S9CyZgBkfuKqfU2T9NXHgN4=", - "pom": "sha256-lFGxCRev0ijFiSVB2UrMPWgUyNc1icQFDHeakh+rnII=" + "io/netty#netty-transport/4.1.119.Final": { + "jar": "sha256-wJIeoOecO5Ntqr4Iom6SZkKkrSSVHWEV+0M2LCHf6xA=", + "pom": "sha256-emUG02VfdKWneuAMaq/ZB70qt+0gAMNesqiObuTdA70=" }, "it/unimi/dsi#fastutil/8.5.15": { "jar": "sha256-z/62ZzvfHm5Dd9aE3y9VrDWc9c9t9hPgXmLe7qUAk2o=", diff --git a/pkgs/by-name/ve/velocity/package.nix b/pkgs/by-name/ve/velocity/package.nix index 5cf39a780a19..15b0c13e0593 100644 --- a/pkgs/by-name/ve/velocity/package.nix +++ b/pkgs/by-name/ve/velocity/package.nix @@ -35,13 +35,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "velocity"; - version = "3.4.0-unstable-2025-02-28"; + version = "3.4.0-unstable-2025-03-27"; src = fetchFromGitHub { owner = "PaperMC"; repo = "Velocity"; - rev = "b8fe3577c9582972a92134642e35eb7fac671376"; - hash = "sha256-V+h2+M567niYmDWxT6hInbsVivL3pLp2pZO8D91kXkg="; + rev = "d2cd79185b56bab1adbd45acb1caf0ea7f24d84e"; + hash = "sha256-WnXDBofr2zkkNvuFYG/6AijgzuDR/8CISafmGDXazgc="; }; nativeBuildInputs = diff --git a/pkgs/by-name/vi/video-compare/package.nix b/pkgs/by-name/vi/video-compare/package.nix new file mode 100644 index 000000000000..fb50c72099ef --- /dev/null +++ b/pkgs/by-name/vi/video-compare/package.nix @@ -0,0 +1,53 @@ +{ + lib, + stdenv, + fetchFromGitHub, + SDL2, + SDL2_ttf, + ffmpeg, +}: + +stdenv.mkDerivation rec { + pname = "video-compare"; + version = "20250223"; + + src = fetchFromGitHub { + owner = "pixop"; + repo = "video-compare"; + tag = version; + hash = "sha256-h74TWXPcbIjfejGfHnjKZqKzpV0DIkC5llSD1jmiDDY="; + }; + + postPatch = '' + # Fix build on Darwin by using $CXX set by setup-hook + substituteInPlace makefile \ + --replace-fail 'CXX = g++' "" + ''; + + buildInputs = [ + SDL2 + SDL2_ttf + ffmpeg + ]; + + env.NIX_CFLAGS_COMPILE = "-I${lib.getDev SDL2}/include/SDL2"; + + installPhase = '' + runHook preInstall + + install -Dt $out/bin video-compare + + runHook postInstall + ''; + + enableParallelBuilding = true; + + meta = { + homepage = "https://github.com/pixop/video-compare"; + description = "Split screen video comparison tool"; + maintainers = with lib.maintainers; [ orivej ]; + license = lib.licenses.gpl2Only; + mainProgram = "video-compare"; + platforms = lib.platforms.unix; + }; +} diff --git a/pkgs/by-name/wa/watchyourlan/package.nix b/pkgs/by-name/wa/watchyourlan/package.nix index f7ab4f9022c6..5cf2e91c4d53 100644 --- a/pkgs/by-name/wa/watchyourlan/package.nix +++ b/pkgs/by-name/wa/watchyourlan/package.nix @@ -5,18 +5,19 @@ lib, arp-scan, }: + buildGoModule rec { pname = "watchyourlan"; - version = "2.0.4"; + version = "2.1.1"; src = fetchFromGitHub { owner = "aceberg"; repo = "WatchYourLAN"; - rev = version; - hash = "sha256-nJYDGCkT8vCkxySLONG3OkWVkaBqXqSFgd7N1TTMAf4="; + tag = version; + hash = "sha256-xiwDcqEfuNuqNQO2wtJ2XK0mPf91C1bapEqKKmKxw4c="; }; - vendorHash = "sha256-urSFoFkYllV+bsKIRV/azkbL30mbGeciYR7jy/fOE/w="; + vendorHash = "sha256-NUv90wq3nFHDtfk3BitwJ3ZfciPESUIDzS5S/6zafEQ="; ldflags = [ "-s" @@ -33,6 +34,7 @@ buildGoModule rec { meta = { description = "Lightweight network IP scanner with web GUI"; homepage = "https://github.com/aceberg/WatchYourLAN"; + changelog = "https://github.com/aceberg/WatchYourLAN/releases/tag/${src.tag}"; license = lib.licenses.mit; mainProgram = "WatchYourLAN"; maintainers = [ lib.maintainers.iv-nn ]; diff --git a/pkgs/by-name/wa/wavelog/package.nix b/pkgs/by-name/wa/wavelog/package.nix index 2d4b4aa1ac98..c58471bed6d1 100644 --- a/pkgs/by-name/wa/wavelog/package.nix +++ b/pkgs/by-name/wa/wavelog/package.nix @@ -8,13 +8,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "wavelog"; - version = "2.0.1"; + version = "2.0.2"; src = fetchFromGitHub { owner = "wavelog"; repo = "wavelog"; tag = finalAttrs.version; - hash = "sha256-ERyJQNfVdr7uocJtmiyFIax8RS/5mvWOP0GfIxTs7bs="; + hash = "sha256-2cIUWrDOfKiTubS8l904dd5lJsNY9+MGtV2KBTa6fFM="; }; installPhase = '' diff --git a/pkgs/by-name/we/weaviate/package.nix b/pkgs/by-name/we/weaviate/package.nix index 54b39716769a..ef0e55faacb4 100644 --- a/pkgs/by-name/we/weaviate/package.nix +++ b/pkgs/by-name/we/weaviate/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "weaviate"; - version = "1.29.0"; + version = "1.29.1"; src = fetchFromGitHub { owner = "weaviate"; repo = "weaviate"; rev = "v${version}"; - hash = "sha256-tyztq4oXN9tPVSqQme8IG3dcba7ytblVW98jU6Nao5M="; + hash = "sha256-Akg0iY5M3X6ztKxhNEkhi03VnbNpNW7/Vcbv2KB6X54="; }; - vendorHash = "sha256-WfqYmqEjgZwQgFKW97oIEaBXTKqOOFKviuYTRyqVQP0="; + vendorHash = "sha256-U2ean49ESKmcQ3fTtd6y9MwfWPr6tolvgioyKbQsBmU="; subPackages = [ "cmd/weaviate-server" ]; diff --git a/pkgs/by-name/we/web-ext/package.nix b/pkgs/by-name/we/web-ext/package.nix index 41e6089a8422..401aff4d5867 100644 --- a/pkgs/by-name/we/web-ext/package.nix +++ b/pkgs/by-name/we/web-ext/package.nix @@ -8,16 +8,16 @@ buildNpmPackage rec { pname = "web-ext"; - version = "8.4.0"; + version = "8.5.0"; src = fetchFromGitHub { owner = "mozilla"; repo = "web-ext"; rev = version; - hash = "sha256-zPOXl/7v/yP1ggqSKruGli/FC8Vf7i4J3LZey4WC/Lc="; + hash = "sha256-RT/K/fYMys1RAvnusAMuHtfZ7gndYf3FPuHBYCklBpw="; }; - npmDepsHash = "sha256-tU/NTeMjUyw1ftXLTP3HpLQqfzTNVwgY3oKvuIZXPxw="; + npmDepsHash = "sha256-O8DmeT0wRNpuPU1K6kH97D9+mxOxCchAUrvOVPq4VPc="; npmBuildFlags = [ "--production" ]; diff --git a/pkgs/by-name/wo/workout-tracker/package.nix b/pkgs/by-name/wo/workout-tracker/package.nix index f15bae2ca5ea..6e4cbf3b58d6 100644 --- a/pkgs/by-name/wo/workout-tracker/package.nix +++ b/pkgs/by-name/wo/workout-tracker/package.nix @@ -9,13 +9,13 @@ }: let pname = "workout-tracker"; - version = "2.1.1"; + version = "2.2.0"; src = fetchFromGitHub { owner = "jovandeginste"; repo = "workout-tracker"; tag = "v${version}"; - hash = "sha256-J2Pu8SR1kS9rpbq6uvZncU+oGvB4Ijfrajw2EtakluA="; + hash = "sha256-6t+p/P8gAHTOMiWJ1lDcpHRPptO+lk0jl/llKy8fNrg="; }; assets = buildNpmPackage { diff --git a/pkgs/by-name/xa/xan/package.nix b/pkgs/by-name/xa/xan/package.nix index ed1d02c116af..f2587510a527 100644 --- a/pkgs/by-name/xa/xan/package.nix +++ b/pkgs/by-name/xa/xan/package.nix @@ -5,16 +5,16 @@ }: rustPlatform.buildRustPackage rec { pname = "xan"; - version = "0.46.2"; + version = "0.48.0"; src = fetchFromGitHub { owner = "medialab"; repo = "xan"; tag = version; - hash = "sha256-scLpmKlMIqBScvtMcrNnU0UPEJ8ufOefksk/kVQzZhE="; + hash = "sha256-TBrPe4kmxLiyFfP6s4lAV3PjzXihqdBZ+emisd2Yjbs="; }; - cargoHash = "sha256-aTDT3kMSEjOzbjEez5i13D8HsnP1ZYBt6GkorR1EZiM="; + cargoHash = "sha256-XKiYF619IEQEU7P5mRjnCEJSxr2G3t3cV4MpvBlWcNw="; useFetchCargoVendor = true; # FIXME: tests fail and I do not have the time to investigate. Temporarily disable diff --git a/pkgs/by-name/xp/xprompt/package.nix b/pkgs/by-name/xp/xprompt/package.nix index bbab28e66c8e..1d787c2df31b 100644 --- a/pkgs/by-name/xp/xprompt/package.nix +++ b/pkgs/by-name/xp/xprompt/package.nix @@ -30,11 +30,16 @@ stdenv.mkDerivation rec { ]; postPatch = - let - configFile = - if lib.isDerivation conf || builtins.isPath conf then conf else writeText "config.h" conf; - in - lib.optionalString (conf != null) "cp ${configFile} config.h"; + '' + sed -i "8i #include " xprompt.c + '' + + ( + let + configFile = + if lib.isDerivation conf || builtins.isPath conf then conf else writeText "config.h" conf; + in + lib.optionalString (conf != null) "cp ${configFile} config.h" + ); makeFlags = [ "CC:=$(CC)" diff --git a/pkgs/by-name/ya/yamlscript/package.nix b/pkgs/by-name/ya/yamlscript/package.nix index cbde39f5b156..7d37601b0102 100644 --- a/pkgs/by-name/ya/yamlscript/package.nix +++ b/pkgs/by-name/ya/yamlscript/package.nix @@ -2,11 +2,11 @@ buildGraalvmNativeImage rec { pname = "yamlscript"; - version = "0.1.94"; + version = "0.1.95"; src = fetchurl { url = "https://github.com/yaml/yamlscript/releases/download/${version}/yamlscript.cli-${version}-standalone.jar"; - hash = "sha256-WDA6ppD4qO24kKn1M12CVWykK+Uxs9fYNhC1RRLV/vI="; + hash = "sha256-8GmKMRMQ5YaCK0jJkLVlWHTngr5DJSN/Vm+0nMYBkr8="; }; executable = "ys"; diff --git a/pkgs/by-name/zo/zoekt/package.nix b/pkgs/by-name/zo/zoekt/package.nix index f50dd0237162..8ce975e4c9cc 100644 --- a/pkgs/by-name/zo/zoekt/package.nix +++ b/pkgs/by-name/zo/zoekt/package.nix @@ -8,13 +8,13 @@ buildGoModule { pname = "zoekt"; - version = "3.7.2-2-unstable-2025-02-21"; + version = "3.7.2-2-unstable-2025-03-25"; src = fetchFromGitHub { owner = "sourcegraph"; repo = "zoekt"; - rev = "3d43fdf3b1c9f93f384f126901f069ebb5efdd32"; - hash = "sha256-qex38HoQ40S61fdjdKm5qgbSwOKvmu3gnsqrw+B2MSQ="; + rev = "47287adecfbd6b068cf7ad5fb67c9548a7062156"; + hash = "sha256-RRlCfv34hSBWpeXxvXsPtfziE0L0FhZfMIfBi8i2XWg="; }; vendorHash = "sha256-B45Q9G+p/idqqz45lLQQuDGLwAzhKuo9Ev+cISGbKUo="; diff --git a/pkgs/by-name/zw/zwave-js-server/package.nix b/pkgs/by-name/zw/zwave-js-server/package.nix index f40a1341d687..c0152506c7ad 100644 --- a/pkgs/by-name/zw/zwave-js-server/package.nix +++ b/pkgs/by-name/zw/zwave-js-server/package.nix @@ -6,16 +6,16 @@ buildNpmPackage rec { pname = "zwave-js-server"; - version = "1.40.3"; + version = "3.0.0"; src = fetchFromGitHub { owner = "zwave-js"; repo = "zwave-js-server"; rev = version; - hash = "sha256-fk9UBtdbU9ZVoqCXXeeGpaiGhU9/pcR87NP1S86axSM="; + hash = "sha256-vY/afOza0ewOqlhbp6uMf/mw9nvQLN0lEFmHekxpJVA="; }; - npmDepsHash = "sha256-iSrgrgepUZzlBvwMe6lmFUW4i6DVx1Bq4I4UBph/oNA="; + npmDepsHash = "sha256-HgXFFA1aa25vRpw4ujj6aeIX75soDYv3TaM5bQOfEv4="; # For some reason the zwave-js dependency is in devDependencies npmFlags = [ "--include=dev" ]; diff --git a/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix index 7f2a58625385..5811e867d9d4 100644 --- a/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix @@ -18,13 +18,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "lomiri-polkit-agent"; - version = "0.2"; + version = "0.3"; src = fetchFromGitLab { owner = "ubports"; repo = "development/core/lomiri-polkit-agent"; tag = finalAttrs.version; - hash = "sha256-U4NNPBuLhe+m5WvfOYq5ZFE70OYJ/mn69wyK+ALebRE="; + hash = "sha256-3x2gwKhRDXE6tuwM7pXIwsWg/8pQrKLJ1zds8Ljtk+I="; }; strictDeps = true; diff --git a/pkgs/desktops/xfce/applications/mousepad/default.nix b/pkgs/desktops/xfce/applications/mousepad/default.nix index 98dc771ded7a..3851fdd452d9 100644 --- a/pkgs/desktops/xfce/applications/mousepad/default.nix +++ b/pkgs/desktops/xfce/applications/mousepad/default.nix @@ -29,6 +29,8 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-6ddPma6B4hNgtILavJFz/wtSzLViABkluZ5BTXpbcEE="; }; + strictDeps = true; + nativeBuildInputs = [ glib # glib-compile-schemas meson diff --git a/pkgs/desktops/xfce/applications/orage/default.nix b/pkgs/desktops/xfce/applications/orage/default.nix index 811150041a25..fe64709b1631 100644 --- a/pkgs/desktops/xfce/applications/orage/default.nix +++ b/pkgs/desktops/xfce/applications/orage/default.nix @@ -13,9 +13,9 @@ mkXfceDerivation { category = "apps"; pname = "orage"; - version = "4.20.0"; + version = "4.20.1"; - sha256 = "sha256-VaabhMRgH/q9HiFXBPQ90HbMLW21BXTvZtxd8bhYYnw="; + sha256 = "sha256-WdvqsgHfhJ2sk4vQ75m1zmWjefJBJdDKH8E0GA4fCNg="; buildInputs = [ glib diff --git a/pkgs/desktops/xfce/applications/ristretto/default.nix b/pkgs/desktops/xfce/applications/ristretto/default.nix index 44ef452b5025..2de8179ce99e 100644 --- a/pkgs/desktops/xfce/applications/ristretto/default.nix +++ b/pkgs/desktops/xfce/applications/ristretto/default.nix @@ -1,28 +1,52 @@ { + stdenv, lib, - mkXfceDerivation, - gtk3, + fetchFromGitLab, glib, - gnome, + meson, + ninja, + pkg-config, + wrapGAppsHook3, + cairo, + exo, + gtk3, libexif, + libxfce4ui, + libxfce4util, + xfconf, + gnome, libheif, libjxl, librsvg, - libxfce4ui, - libxfce4util, webp-pixbuf-loader, - xfconf, + gitUpdater, }: -mkXfceDerivation { - category = "apps"; +stdenv.mkDerivation (finalAttrs: { pname = "ristretto"; - version = "0.13.3"; - odd-unstable = false; + version = "0.13.4"; - sha256 = "sha256-cJMHRN4Wl6Fm0yoVqe0h30ZUlE1+Hw1uEDBHfHXBbC0="; + src = fetchFromGitLab { + domain = "gitlab.xfce.org"; + owner = "apps"; + repo = "ristretto"; + tag = "ristretto-${finalAttrs.version}"; + hash = "sha256-X0liZddeEOxlo0tyn3Irvo0+MTnMFuvKY2m4h+/EI2E="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + glib # glib-compile-schemas + meson + ninja + pkg-config + wrapGAppsHook3 + ]; buildInputs = [ + cairo + exo glib gtk3 libexif @@ -46,9 +70,14 @@ mkXfceDerivation { }" ''; - meta = with lib; { + passthru.updateScript = gitUpdater { rev-prefix = "ristretto-"; }; + + meta = { description = "Fast and lightweight picture-viewer for the Xfce desktop environment"; + homepage = "https://gitlab.xfce.org/apps/ristretto"; + license = lib.licenses.gpl2Plus; mainProgram = "ristretto"; - maintainers = with maintainers; [ ] ++ teams.xfce.members; + maintainers = lib.teams.xfce.members; + platforms = lib.platforms.linux; }; -} +}) diff --git a/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix b/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix index 0d6277a0d8e0..f6acb93dd3a3 100644 --- a/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix +++ b/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix @@ -1,50 +1,75 @@ { + stdenv, lib, - mkXfceDerivation, - glib, - gtk3, - gtk-layer-shell, - libX11, - libxfce4ui, - vte, - xfconf, - pcre2, - libxslt, + fetchFromGitLab, docbook_xml_dtd_45, docbook_xsl, + glib, + libxslt, # xsltproc + meson, + ninja, + pkg-config, + wrapGAppsHook3, + gtk3, + gtk-layer-shell, + libutempter, + libX11, + libxfce4ui, + pcre2, + vte, + xfconf, nixosTests, + gitUpdater, }: -mkXfceDerivation { - category = "apps"; +stdenv.mkDerivation (finalAttrs: { pname = "xfce4-terminal"; - version = "1.1.4"; - odd-unstable = false; + version = "1.1.5"; - sha256 = "sha256-WrmffY8kC9tBorvtEb8q6DmHKX5d7HnvbxtBbpy4LJs="; + src = fetchFromGitLab { + domain = "gitlab.xfce.org"; + owner = "apps"; + repo = "xfce4-terminal"; + tag = "xfce4-terminal-${finalAttrs.version}"; + hash = "sha256-qNXrxUjmuY6+k95/zcOu1/CUfhb1u0Ca91aFD3c4uoc="; + }; + + strictDeps = true; nativeBuildInputs = [ - libxslt docbook_xml_dtd_45 docbook_xsl + glib # glib-mkenums + libxslt # xsltproc + meson + ninja + pkg-config + wrapGAppsHook3 ]; buildInputs = [ glib gtk3 gtk-layer-shell + libutempter libX11 libxfce4ui + pcre2 vte xfconf - pcre2 ]; - passthru.tests.test = nixosTests.terminal-emulators.xfce4-terminal; - - meta = with lib; { - description = "Modern terminal emulator"; - maintainers = with maintainers; [ ] ++ teams.xfce.members; - mainProgram = "xfce4-terminal"; + passthru = { + tests.test = nixosTests.terminal-emulators.xfce4-terminal; + updateScript = gitUpdater { rev-prefix = "xfce4-terminal-"; }; }; -} + + meta = { + description = "Modern terminal emulator"; + homepage = "https://gitlab.xfce.org/apps/xfce4-terminal"; + license = lib.licenses.gpl2Plus; + mainProgram = "xfce4-terminal"; + maintainers = lib.teams.xfce.members; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/development/beam-modules/elixir-ls/default.nix b/pkgs/development/beam-modules/elixir-ls/default.nix index 04eae0082f60..77891bd51268 100644 --- a/pkgs/development/beam-modules/elixir-ls/default.nix +++ b/pkgs/development/beam-modules/elixir-ls/default.nix @@ -11,12 +11,12 @@ let pname = "elixir-ls"; - version = "0.27.1"; + version = "0.27.2"; src = fetchFromGitHub { owner = "elixir-lsp"; repo = "elixir-ls"; rev = "v${version}"; - hash = "sha256-YSu9uN0n8x1833iqvskk/47JnoXJ2Y8RCRmA12YYgDc="; + hash = "sha256-y1QT+wRFc+++OVFJwEheqcDIwaKHlyjbhEjhLJ2rYaI="; }; in mixRelease { diff --git a/pkgs/development/compilers/elm/packages/node/node-composition.nix b/pkgs/development/compilers/elm/packages/node/node-composition.nix index f23ba8e11e71..e095e45b97db 100644 --- a/pkgs/development/compilers/elm/packages/node/node-composition.nix +++ b/pkgs/development/compilers/elm/packages/node/node-composition.nix @@ -13,7 +13,6 @@ let inherit (pkgs) stdenv lib - python2 runCommand writeTextFile writeShellScript diff --git a/pkgs/development/interpreters/erlang/25.nix b/pkgs/development/interpreters/erlang/25.nix index bd158cf04892..7fa30796e44c 100644 --- a/pkgs/development/interpreters/erlang/25.nix +++ b/pkgs/development/interpreters/erlang/25.nix @@ -1,6 +1,6 @@ { mkDerivation }: mkDerivation { - version = "25.3.2.18"; - sha256 = "sha256-PmDEJ0o6s27K0+g9zUXkmwbqibXNWQkF412DFYizrd8="; + version = "25.3.2.19"; + sha256 = "sha256-fd2YxFx/Skst+jRXAm4nLVxEIriu34lPRuBWvj+qaIk="; } diff --git a/pkgs/development/interpreters/erlang/26.nix b/pkgs/development/interpreters/erlang/26.nix index b6322d8ac8f3..5bb6407f8d70 100644 --- a/pkgs/development/interpreters/erlang/26.nix +++ b/pkgs/development/interpreters/erlang/26.nix @@ -1,6 +1,6 @@ { mkDerivation }: mkDerivation { - version = "26.2.5.9"; - sha256 = "sha256-FRNVmaeBUCFLmfhE9JVb1DgC/MIoryDV7lvh+YayRNA="; + version = "26.2.5.10"; + sha256 = "sha256-dnkt2tg2jQ4pHvkrUvDPmw7Bxsd5ECd/3lLvuScyFoc="; } diff --git a/pkgs/development/libraries/libwpe/fdo.nix b/pkgs/development/libraries/libwpe/fdo.nix index b7f09b7ebb7b..789c698216c1 100644 --- a/pkgs/development/libraries/libwpe/fdo.nix +++ b/pkgs/development/libraries/libwpe/fdo.nix @@ -17,11 +17,11 @@ stdenv.mkDerivation rec { pname = "wpebackend-fdo"; - version = "1.14.3"; + version = "1.16.0"; src = fetchurl { url = "https://wpewebkit.org/releases/wpebackend-fdo-${version}.tar.xz"; - sha256 = "sha256-EBIYQllahQKR2z6C89sLmYTfB5Ai04bOQsK4UIFZ3Gw="; + sha256 = "sha256-vt3zISMtW9CBBsF528YA+M6I6zYgtKWaYykGO3j2RjU="; }; depsBuildBuild = [ diff --git a/pkgs/development/libraries/mapnik/default.nix b/pkgs/development/libraries/mapnik/default.nix index 9a4bb7465219..5ac9522155f1 100644 --- a/pkgs/development/libraries/mapnik/default.nix +++ b/pkgs/development/libraries/mapnik/default.nix @@ -134,5 +134,15 @@ stdenv.mkDerivation rec { ]; license = licenses.lgpl21Plus; platforms = platforms.all; + + # 29-03-2025: On darwin, the libc++ standard library is used to compile C++ programs. + # 29-03-2025: Since the base template for `std::char_traits` was removed in LLVM 19, + # 29-03-2025: usages of `boost::u32regex` will no longer compile. + # 29-03-2025: Linux builds do not fail as they use libstdc++, which has not removed + # 29-03-2025: such `std::char_trait` declarations. + # + # 29-03-2025: See https://github.com/mapnik/mapnik/issues/4499 for more information + # 29-03-2025: and a Minimal Reproducible Example. + badPlatforms = platforms.darwin; }; } diff --git a/pkgs/development/mobile/androidenv/build-app.nix b/pkgs/development/mobile/androidenv/build-app.nix index 2be0ac567821..1385e1a38e81 100644 --- a/pkgs/development/mobile/androidenv/build-app.nix +++ b/pkgs/development/mobile/androidenv/build-app.nix @@ -6,6 +6,7 @@ jdk, gnumake, gawk, + meta, }: { @@ -64,6 +65,8 @@ stdenv.mkDerivation ( mkdir -p $out/nix-support echo "file binary-dist \"$(echo $out/*.apk)\"" > $out/nix-support/hydra-build-products ''; + + inherit meta; } // extraArgs ) diff --git a/pkgs/development/mobile/androidenv/build-tools.nix b/pkgs/development/mobile/androidenv/build-tools.nix index 53a80dd14967..9a38383f4ad1 100644 --- a/pkgs/development/mobile/androidenv/build-tools.nix +++ b/pkgs/development/mobile/androidenv/build-tools.nix @@ -1,27 +1,56 @@ -{deployAndroidPackage, lib, stdenv, package, os, autoPatchelfHook, makeWrapper, pkgs, pkgsi686Linux, postInstall}: +{ + deployAndroidPackage, + lib, + stdenv, + package, + os, + arch, + autoPatchelfHook, + makeWrapper, + pkgs, + pkgsi686Linux, + postInstall, + meta, +}: deployAndroidPackage { - inherit package; - nativeBuildInputs = [ makeWrapper ] - ++ lib.optionals (os == "linux") [ autoPatchelfHook ]; - buildInputs = lib.optionals (os == "linux") [ pkgs.glibc pkgs.zlib pkgs.ncurses5 pkgs.libcxx ] - ++ lib.optionals (os == "linux" && stdenv.isx86_64) (with pkgsi686Linux; [ glibc zlib ncurses5 ]); - patchInstructions = '' - ${lib.optionalString (os == "linux") '' - addAutoPatchelfSearchPath $packageBaseDir/lib - if [[ -d $packageBaseDir/lib64 ]]; then - addAutoPatchelfSearchPath $packageBaseDir/lib64 - autoPatchelf --no-recurse $packageBaseDir/lib64 - fi - autoPatchelf --no-recurse $packageBaseDir - ''} + inherit package os arch; + nativeBuildInputs = [ makeWrapper ] ++ lib.optionals (os == "linux") [ autoPatchelfHook ]; + buildInputs = + lib.optionals (os == "linux") [ + pkgs.glibc + pkgs.zlib + pkgs.ncurses5 + pkgs.libcxx + ] + ++ lib.optionals (os == "linux" && stdenv.isx86_64) ( + with pkgsi686Linux; + [ + glibc + zlib + ncurses5 + ] + ); + patchInstructions = + '' + ${lib.optionalString (os == "linux") '' + addAutoPatchelfSearchPath $packageBaseDir/lib + if [[ -d $packageBaseDir/lib64 ]]; then + addAutoPatchelfSearchPath $packageBaseDir/lib64 + autoPatchelf --no-recurse $packageBaseDir/lib64 + fi + autoPatchelf --no-recurse $packageBaseDir + ''} - ${lib.optionalString (lib.toInt (lib.versions.major package.revision) < 33) '' - wrapProgram $PWD/mainDexClasses \ - --prefix PATH : ${pkgs.jdk8}/bin - ''} + ${lib.optionalString (lib.toInt (lib.versions.major package.revision) < 33) '' + wrapProgram $PWD/mainDexClasses \ + --prefix PATH : ${pkgs.jdk8}/bin + ''} - cd $out/libexec/android-sdk - '' + postInstall; + cd $out/libexec/android-sdk + '' + + postInstall; noAuditTmpdir = true; # The checker script gets confused by the build-tools path that is incorrectly identified as a reference to /build + + inherit meta; } diff --git a/pkgs/development/mobile/androidenv/cmake.nix b/pkgs/development/mobile/androidenv/cmake.nix index 02c5ab24aab2..d5f54ac4d102 100644 --- a/pkgs/development/mobile/androidenv/cmake.nix +++ b/pkgs/development/mobile/androidenv/cmake.nix @@ -1,10 +1,28 @@ -{deployAndroidPackage, lib, package, os, autoPatchelfHook, pkgs, stdenv}: +{ + deployAndroidPackage, + lib, + package, + os, + arch, + autoPatchelfHook, + pkgs, + stdenv, + meta, +}: deployAndroidPackage { - inherit package; + inherit package os arch; nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; - buildInputs = lib.optionals (os == "linux") [ pkgs.stdenv.cc.libc pkgs.stdenv.cc.cc pkgs.ncurses5 ]; + buildInputs = lib.optionals (os == "linux") [ + pkgs.stdenv.cc.libc + pkgs.stdenv.cc.cc + pkgs.ncurses5 + ]; patchInstructions = lib.optionalString (os == "linux") '' autoPatchelf $packageBaseDir/bin ''; + + meta = meta // { + license = lib.licenses.bsd3; + }; } diff --git a/pkgs/development/mobile/androidenv/cmdline-tools.nix b/pkgs/development/mobile/androidenv/cmdline-tools.nix index d3935d547b04..adb1dcba94bd 100644 --- a/pkgs/development/mobile/androidenv/cmdline-tools.nix +++ b/pkgs/development/mobile/androidenv/cmdline-tools.nix @@ -5,14 +5,16 @@ autoPatchelfHook, makeWrapper, os, + arch, pkgs, stdenv, postInstall, + meta, }: deployAndroidPackage { name = "androidsdk"; - inherit package os; + inherit package os arch; nativeBuildInputs = [ makeWrapper ] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; @@ -46,5 +48,5 @@ deployAndroidPackage { ${postInstall} ''; - meta.license = lib.licenses.unfree; + inherit meta; } diff --git a/pkgs/development/mobile/androidenv/compose-android-packages.nix b/pkgs/development/mobile/androidenv/compose-android-packages.nix index 5dad457d6b89..e7552862c2b7 100644 --- a/pkgs/development/mobile/androidenv/compose-android-packages.nix +++ b/pkgs/development/mobile/androidenv/compose-android-packages.nix @@ -1,286 +1,291 @@ -{ callPackage, stdenv, lib, fetchurl, ruby, writeText -, licenseAccepted ? false +{ + callPackage, + stdenv, + stdenvNoCC, + lib, + fetchurl, + ruby, + writeText, + licenseAccepted ? false, + meta, }: -{ cmdLineToolsVersion ? "13.0" -, toolsVersion ? "26.1.1" -, platformToolsVersion ? "35.0.2" -, buildToolsVersions ? [ "35.0.0" ] -, includeEmulator ? false -, emulatorVersion ? "35.5.2" -, platformVersions ? [] -, includeSources ? false -, includeSystemImages ? false -, systemImageTypes ? [ "google_apis" "google_apis_playstore" ] -, abiVersions ? [ "x86" "x86_64" "armeabi-v7a" "arm64-v8a" ] -, cmakeVersions ? [ ] -, includeNDK ? false -, ndkVersion ? "27.0.12077973" -, ndkVersions ? [ndkVersion] -, useGoogleAPIs ? false -, useGoogleTVAddOns ? false -, includeExtras ? [] -, repoJson ? ./repo.json -, repoXmls ? null -, extraLicenses ? [] +let + # Coerces a string to an int. + coerceInt = val: if lib.isInt val then val else lib.toIntBase10 val; +in +{ + repoJson ? ./repo.json, + repoXmls ? null, + repo ? ( + # Reads the repo JSON. If repoXmls is provided, will build a repo JSON into the Nix store. + if repoXmls != null then + let + # Uses mkrepo.rb to create a repo spec. + mkRepoJson = + { + packages ? [ ], + images ? [ ], + addons ? [ ], + }: + let + mkRepoRuby = ( + ruby.withPackages ( + pkgs: with pkgs; [ + slop + nokogiri + ] + ) + ); + mkRepoRubyArguments = lib.lists.flatten [ + (map (package: [ + "--packages" + "${package}" + ]) packages) + (map (image: [ + "--images" + "${image}" + ]) images) + (map (addon: [ + "--addons" + "${addon}" + ]) addons) + ]; + in + stdenvNoCC.mkDerivation { + name = "androidenv-repo-json"; + buildInputs = [ mkRepoRuby ]; + preferLocalBuild = true; + unpackPhase = "true"; + buildPhase = '' + ruby ${./mkrepo.rb} ${lib.escapeShellArgs mkRepoRubyArguments} > repo.json + ''; + installPhase = '' + mv repo.json $out + ''; + }; + repoXmlSpec = { + packages = repoXmls.packages or [ ]; + images = repoXmls.images or [ ]; + addons = repoXmls.addons or [ ]; + }; + in + lib.importJSON "${mkRepoJson repoXmlSpec}" + else + lib.importJSON repoJson + ), + cmdLineToolsVersion ? repo.latest.cmdline-tools, + toolsVersion ? repo.latest.tools, + platformToolsVersion ? repo.latest.platform-tools, + buildToolsVersions ? [ repo.latest.build-tools ], + includeEmulator ? false, + emulatorVersion ? repo.latest.emulator, + minPlatformVersion ? null, + maxPlatformVersion ? coerceInt repo.latest.platforms, + numLatestPlatformVersions ? 1, + platformVersions ? + if minPlatformVersion != null && maxPlatformVersion != null then + let + minPlatformVersionInt = coerceInt minPlatformVersion; + maxPlatformVersionInt = coerceInt maxPlatformVersion; + in + lib.range (lib.min minPlatformVersionInt maxPlatformVersionInt) ( + lib.max minPlatformVersionInt maxPlatformVersionInt + ) + else + let + minPlatformVersionInt = if minPlatformVersion == null then 1 else coerceInt minPlatformVersion; + latestPlatformVersionInt = lib.max minPlatformVersionInt (coerceInt repo.latest.platforms); + firstPlatformVersionInt = lib.max minPlatformVersionInt ( + latestPlatformVersionInt - (lib.max 1 numLatestPlatformVersions) + 1 + ); + in + lib.range firstPlatformVersionInt latestPlatformVersionInt, + includeSources ? false, + includeSystemImages ? false, + systemImageTypes ? [ + "google_apis" + "google_apis_playstore" + ], + abiVersions ? [ + "x86" + "x86_64" + "armeabi-v7a" + "arm64-v8a" + ], + # cmake has precompiles on x86_64 and Darwin platforms. Default to true there for compatibility. + includeCmake ? stdenv.hostPlatform.isx86_64 || stdenv.hostPlatform.isDarwin, + cmakeVersions ? [ repo.latest.cmake ], + includeNDK ? false, + ndkVersion ? repo.latest.ndk, + ndkVersions ? [ ndkVersion ], + useGoogleAPIs ? false, + useGoogleTVAddOns ? false, + includeExtras ? [ ], + extraLicenses ? [ ], }: let # Determine the Android os identifier from Nix's system identifier - os = { + os = + { x86_64-linux = "linux"; x86_64-darwin = "macosx"; aarch64-linux = "linux"; aarch64-darwin = "macosx"; - }.${stdenv.hostPlatform.system} or "all"; + } + .${stdenv.hostPlatform.system} or "all"; # Determine the Android arch identifier from Nix's system identifier - arch = { + arch = + { x86_64-linux = "x64"; x86_64-darwin = "x64"; aarch64-linux = "aarch64"; aarch64-darwin = "aarch64"; - }.${stdenv.hostPlatform.system} or "all"; - - # Uses mkrepo.rb to create a repo spec. - mkRepoJson = { packages ? [], images ? [], addons ? [] }: let - mkRepoRuby = (ruby.withPackages (pkgs: with pkgs; [ slop nokogiri ])); - mkRepoRubyArguments = lib.lists.flatten [ - (builtins.map (package: ["--packages" "${package}"]) packages) - (builtins.map (image: ["--images" "${image}"]) images) - (builtins.map (addon: ["--addons" "${addon}"]) addons) - ]; - in - stdenv.mkDerivation { - name = "androidenv-repo-json"; - buildInputs = [ mkRepoRuby ]; - preferLocalBuild = true; - unpackPhase = "true"; - buildPhase = '' - ruby ${./mkrepo.rb} ${lib.escapeShellArgs mkRepoRubyArguments} > repo.json - ''; - installPhase = '' - mv repo.json $out - ''; - }; - - # Reads the repo JSON. If repoXmls is provided, will build a repo JSON into the Nix store. - repo = if repoXmls != null then - let - repoXmlSpec = { - packages = repoXmls.packages or []; - images = repoXmls.images or []; - addons = repoXmls.addons or []; - }; - in - lib.importJSON "${mkRepoJson repoXmlSpec}" - else - lib.importJSON repoJson; + } + .${stdenv.hostPlatform.system} or "all"; # Converts all 'archives' keys in a repo spec to fetchurl calls. - fetchArchives = attrSet: - lib.attrsets.mapAttrsRecursive - (path: value: - if (builtins.elemAt path ((builtins.length path) - 1)) == "archives" then - let - validArchives = builtins.filter (archive: - let - isTargetOs = if builtins.hasAttr "os" archive then - archive.os == os || archive.os == "all" else true; - isTargetArc = if builtins.hasAttr "arch" archive then - archive.arch == arch || archive.arch == "all" else true; - in - isTargetOs && isTargetArc - ) value; - in - lib.warnIf (builtins.length validArchives == 0) - "No valid archives for ${lib.concatMapStringsSep "." (x: ''"${x}"'') path} for os=${os}, arch=${arch}" - (lib.optionals (builtins.length validArchives > 0) - (lib.last (map (archive: - (fetchurl { inherit (archive) url sha1; }) - ) validArchives))) - else value - ) - attrSet; + fetchArchives = + attrSet: + lib.attrsets.mapAttrsRecursive ( + path: value: + if (builtins.elemAt path (builtins.length path - 1)) == "archives" then + let + validArchives = builtins.filter ( + archive: + let + isTargetOs = + if builtins.hasAttr "os" archive then archive.os == os || archive.os == "all" else true; + isTargetArch = + if builtins.hasAttr "arch" archive then archive.arch == arch || archive.arch == "all" else true; + in + isTargetOs && isTargetArch + ) value; + packageInfo = lib.attrByPath (lib.sublist 0 (builtins.length path - 1) path) null attrSet; + in + lib.optionals (builtins.length validArchives > 0) ( + lib.last ( + map ( + archive: + (fetchurl { + inherit (archive) url sha1; + preferLocalBuild = true; + passthru = { + info = packageInfo; + }; + }) + ) validArchives + ) + ) + else + value + ) attrSet; - # Converts the repo attrset into fetch calls - packages = fetchArchives repo.packages; - system-images-packages = fetchArchives repo.images; - addons = { + # Converts the repo attrset into fetch calls. + allArchives = { + packages = fetchArchives repo.packages; + system-images = fetchArchives repo.images; addons = fetchArchives repo.addons; extras = fetchArchives repo.extras; }; + # Lift the archives to the package level for easy search, + # and add recurseIntoAttrs to all of them. + allPackages = + let + liftedArchives = lib.attrsets.mapAttrsRecursiveCond (value: !(builtins.hasAttr "archives" value)) ( + path: value: + if (value.archives or null) != null && (value.archives or [ ]) != [ ] then + lib.dontRecurseIntoAttrs value.archives + else + null + ) allArchives; + + # Creates a version key from a name. + # Converts things like 'extras;google;auto' to 'extras-google-auto' + toVersionKey = + name: + lib.optionalString (lib.match "^[0-9].*" name != null) "v" + + lib.concatStringsSep "_" (lib.splitVersion (lib.replaceStrings [ ";" ] [ "-" ] name)); + + recurse = lib.mapAttrs' ( + name: value: + if builtins.isAttrs value && (value.recurseForDerivations or true) then + lib.nameValuePair (toVersionKey name) (lib.recurseIntoAttrs (recurse value)) + else + lib.nameValuePair (toVersionKey name) value + ); + in + lib.recurseIntoAttrs (recurse liftedArchives); + # Converts a license name to a list of license texts. mkLicenses = licenseName: repo.licenses.${licenseName}; # Converts a list of license names to a flattened list of license texts. # Just used for displaying licenses. - mkLicenseTexts = licenseNames: - lib.lists.flatten - (builtins.map - (licenseName: - builtins.map - (licenseText: "--- ${licenseName} ---\n${licenseText}") - (mkLicenses licenseName)) - licenseNames); + mkLicenseTexts = + licenseNames: + lib.lists.flatten ( + builtins.map ( + licenseName: + builtins.map (licenseText: "--- ${licenseName} ---\n${licenseText}") (mkLicenses licenseName) + ) licenseNames + ); # Converts a license name to a list of license hashes. - mkLicenseHashes = licenseName: - builtins.map - (licenseText: builtins.hashString "sha1" licenseText) - (mkLicenses licenseName); + mkLicenseHashes = + licenseName: + builtins.map (licenseText: builtins.hashString "sha1" licenseText) (mkLicenses licenseName); # The list of all license names we're accepting. Put android-sdk-license there # by default. - licenseNames = lib.lists.unique ([ - "android-sdk-license" - ] ++ extraLicenses); -in -rec { - deployAndroidPackages = callPackage ./deploy-androidpackages.nix { - inherit stdenv lib mkLicenses; - }; - - deployAndroidPackage = ({package, buildInputs ? [], patchInstructions ? "", meta ? {}, ...}@args: - let - extraParams = removeAttrs args [ "package" "os" "buildInputs" "patchInstructions" ]; - in - deployAndroidPackages ({ - inherit buildInputs; - packages = [ package ]; - patchesInstructions = { "${package.name}" = patchInstructions; }; - } // extraParams - )); + licenseNames = lib.lists.unique ( + [ + "android-sdk-license" + ] + ++ extraLicenses + ); # put a much nicer error message that includes the available options. - check-version = packages: package: version: + check-version = + packages: package: version: if lib.hasAttrByPath [ package version ] packages then packages.${package}.${version} else throw '' The version ${version} is missing in package ${package}. - The only available versions are ${builtins.concatStringsSep ", " (builtins.attrNames packages.${package})}. + The only available versions are ${ + builtins.concatStringsSep ", " (builtins.attrNames packages.${package}) + }. ''; - platform-tools = callPackage ./platform-tools.nix { - inherit deployAndroidPackage os; - package = check-version packages "platform-tools" platformToolsVersion; - }; - - tools = callPackage ./tools.nix { - inherit deployAndroidPackage os; - package = check-version packages "tools" toolsVersion; - - postInstall = '' - ${linkPlugin { name = "platform-tools"; plugin = platform-tools; }} - ${linkPlugin { name = "emulator"; plugin = emulator; check = includeEmulator; }} - ''; - }; - - build-tools = map (version: - callPackage ./build-tools.nix { - inherit deployAndroidPackage os; - package = check-version packages "build-tools" version; - - postInstall = '' - ${linkPlugin { name = "tools"; plugin = tools; check = toolsVersion != null; }} - ''; - } - ) buildToolsVersions; - - emulator = lib.optionals includeEmulator (callPackage ./emulator.nix { - inherit deployAndroidPackage os; - package = check-version packages "emulator" emulatorVersion; - - postInstall = '' - ${linkSystemImages { images = system-images; check = includeSystemImages; }} - ''; - }); - - platforms = map (version: - deployAndroidPackage { - package = check-version packages "platforms" version; - } - ) platformVersions; - - sources = map (version: - deployAndroidPackage { - package = check-version packages "sources" version; - } - ) platformVersions; - - system-images = lib.flatten (map (apiVersion: - map (type: - # Deploy all system images with the same systemImageType in one derivation to avoid the `null` problem below - # with avdmanager when trying to create an avd! - # - # ``` - # $ yes "" | avdmanager create avd --force --name testAVD --package 'system-images;android-33;google_apis;x86_64' - # Error: Package path is not valid. Valid system image paths are: - # null - # ``` + # Returns true if we should link the specified plugins. + shouldLink = + check: packages: + assert builtins.isList packages; + if check == true then + true + else if check == false then + false + else if check == "if-supported" then let - availablePackages = map (abiVersion: - system-images-packages.${apiVersion}.${type}.${abiVersion} - ) (builtins.filter (abiVersion: - lib.hasAttrByPath [apiVersion type abiVersion] system-images-packages - ) abiVersions); - - instructions = builtins.listToAttrs (map (package: { - name = package.name; - value = lib.optionalString (lib.hasPrefix "google_apis" type) '' - # Patch 'google_apis' system images so they're recognized by the sdk. - # Without this, `android list targets` shows 'Tag/ABIs : no ABIs' instead - # of 'Tag/ABIs : google_apis*/*' and the emulator fails with an ABI-related error. - sed -i '/^Addon.Vendor/d' source.properties - ''; - }) availablePackages - ); + hasSrc = + package: package.src != null && (builtins.isList package.src -> builtins.length package.src > 0); in - lib.optionals (availablePackages != []) - (deployAndroidPackages { - packages = availablePackages; - patchesInstructions = instructions; - }) - ) systemImageTypes - ) platformVersions); - - cmake = map (version: - callPackage ./cmake.nix { - inherit deployAndroidPackage os; - package = check-version packages "cmake" version; - } - ) cmakeVersions; - - # Creates a NDK bundle. - makeNdkBundle = ndkVersion: - callPackage ./ndk-bundle { - inherit deployAndroidPackage os platform-tools; - package = packages.ndk-bundle.${ndkVersion} or packages.ndk.${ndkVersion}; - }; - - # All NDK bundles. - ndk-bundles = lib.optionals includeNDK (map makeNdkBundle ndkVersions); - - # The "default" NDK bundle. - ndk-bundle = if includeNDK then lib.findFirst (x: x != null) null ndk-bundles else null; - - google-apis = map (version: - deployAndroidPackage { - package = (check-version addons "addons" version).google_apis; - } - ) (builtins.filter (platformVersion: platformVersion < "26") platformVersions); # API level 26 and higher include Google APIs by default - - google-tv-addons = map (version: - deployAndroidPackage { - package = (check-version addons "addons" version).google_tv_addon; - } - ) platformVersions; + packages != [ ] && lib.all hasSrc packages + else + throw "Invalid argument ${toString check}; use true, false, or if-supported"; # Function that automatically links all plugins for which multiple versions can coexist - linkPlugins = {name, plugins}: - lib.optionalString (plugins != []) '' + linkPlugins = + { + name, + plugins, + check ? true, + }: + lib.optionalString (shouldLink check plugins) '' mkdir -p ${name} ${lib.concatMapStrings (plugin: '' ln -s ${plugin}/libexec/android-sdk/${name}/* ${name} @@ -288,8 +293,14 @@ rec { ''; # Function that automatically links all NDK plugins. - linkNdkPlugins = {name, plugins, rootName ? name}: - lib.optionalString (plugins != []) '' + linkNdkPlugins = + { + name, + plugins, + rootName ? name, + check ? true, + }: + lib.optionalString (shouldLink check plugins) '' mkdir -p ${rootName} ${lib.concatMapStrings (plugin: '' ln -s ${plugin}/libexec/android-sdk/${name} ${rootName}/${plugin.version} @@ -297,114 +308,432 @@ rec { ''; # Function that automatically links the default NDK plugin. - linkNdkPlugin = {name, plugin, check}: - lib.optionalString check '' + linkNdkPlugin = + { + name, + plugin, + check, + }: + lib.optionalString (shouldLink check [ plugin ]) '' ln -s ${plugin}/libexec/android-sdk/${name} ${name} ''; # Function that automatically links a plugin for which only one version exists - linkPlugin = {name, plugin, check ? true}: - lib.optionalString check '' + linkPlugin = + { + name, + plugin, + check ? true, + }: + lib.optionalString (shouldLink check [ plugin ]) '' ln -s ${plugin}/libexec/android-sdk/${name} ${name} ''; - linkSystemImages = { images, check }: lib.optionalString check '' - mkdir -p system-images - ${lib.concatMapStrings (system-image: '' - apiVersion=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*)) - type=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*/*)) - mkdir -p system-images/$apiVersion - ln -s ${system-image}/libexec/android-sdk/system-images/$apiVersion/$type system-images/$apiVersion/$type - '') images} - ''; + linkSystemImages = + { images, check }: + lib.optionalString (shouldLink check images) '' + mkdir -p system-images + ${lib.concatMapStrings (system-image: '' + apiVersion=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*)) + type=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*/*)) + mkdir -p system-images/$apiVersion + ln -s ${system-image}/libexec/android-sdk/system-images/$apiVersion/$type system-images/$apiVersion/$type + '') images} + ''; # Links all plugins related to a requested platform - linkPlatformPlugins = {name, plugins, check}: - lib.optionalString check '' + linkPlatformPlugins = + { + name, + plugins, + check, + }: + lib.optionalString (shouldLink check plugins) '' mkdir -p ${name} ${lib.concatMapStrings (plugin: '' ln -s ${plugin}/libexec/android-sdk/${name}/* ${name} '') plugins} ''; # */ - cmdline-tools-package = check-version packages "cmdline-tools" cmdLineToolsVersion; +in +lib.recurseIntoAttrs rec { + deployAndroidPackages = callPackage ./deploy-androidpackages.nix { + inherit + stdenv + lib + mkLicenses + meta + os + arch + ; + }; + + deployAndroidPackage = ( + { + package, + buildInputs ? [ ], + patchInstructions ? "", + meta ? { }, + ... + }@args: + let + extraParams = removeAttrs args [ + "package" + "os" + "arch" + "buildInputs" + "patchInstructions" + ]; + in + deployAndroidPackages ( + { + inherit buildInputs; + packages = [ package ]; + patchesInstructions = { + "${package.name}" = patchInstructions; + }; + } + // extraParams + ) + ); + + all = allPackages; + + platform-tools = callPackage ./platform-tools.nix { + inherit + deployAndroidPackage + os + arch + meta + ; + package = check-version allArchives.packages "platform-tools" platformToolsVersion; + }; + + tools = callPackage ./tools.nix { + inherit + deployAndroidPackage + os + arch + meta + ; + package = check-version allArchives.packages "tools" toolsVersion; + + postInstall = '' + ${linkPlugin { + name = "platform-tools"; + plugin = platform-tools; + }} + ${linkPlugin { + name = "emulator"; + plugin = emulator; + check = includeEmulator; + }} + ''; + }; + + build-tools = map ( + version: + callPackage ./build-tools.nix { + inherit + deployAndroidPackage + os + arch + meta + ; + package = check-version allArchives.packages "build-tools" version; + + postInstall = '' + ${linkPlugin { + name = "tools"; + plugin = tools; + check = toolsVersion != null; + }} + ''; + } + ) buildToolsVersions; + + emulator = callPackage ./emulator.nix { + inherit + deployAndroidPackage + os + arch + meta + ; + package = check-version allArchives.packages "emulator" emulatorVersion; + + postInstall = '' + ${linkSystemImages { + images = system-images; + check = includeSystemImages; + }} + ''; + }; + + inherit platformVersions; + + platforms = map ( + version: + deployAndroidPackage { + package = check-version allArchives.packages "platforms" (toString version); + } + ) platformVersions; + + sources = map ( + version: + deployAndroidPackage { + package = check-version allArchives.packages "sources" (toString version); + } + ) platformVersions; + + system-images = lib.flatten ( + map ( + apiVersion: + map ( + type: + # Deploy all system images with the same systemImageType in one derivation to avoid the `null` problem below + # with avdmanager when trying to create an avd! + # + # ``` + # $ yes "" | avdmanager create avd --force --name testAVD --package 'system-images;android-33;google_apis;x86_64' + # Error: Package path is not valid. Valid system image paths are: + # null + # ``` + let + availablePackages = + map (abiVersion: allArchives.system-images.${toString apiVersion}.${type}.${abiVersion}) + ( + builtins.filter ( + abiVersion: lib.hasAttrByPath [ (toString apiVersion) type abiVersion ] allArchives.system-images + ) abiVersions + ); + + instructions = builtins.listToAttrs ( + map (package: { + name = package.name; + value = lib.optionalString (lib.hasPrefix "google_apis" type) '' + # Patch 'google_apis' system images so they're recognized by the sdk. + # Without this, `android list targets` shows 'Tag/ABIs : no ABIs' instead + # of 'Tag/ABIs : google_apis*/*' and the emulator fails with an ABI-related error. + sed -i '/^Addon.Vendor/d' source.properties + ''; + }) availablePackages + ); + in + lib.optionals (availablePackages != [ ]) (deployAndroidPackages { + packages = availablePackages; + patchesInstructions = instructions; + }) + ) systemImageTypes + ) platformVersions + ); + + cmake = map ( + version: + callPackage ./cmake.nix { + inherit + deployAndroidPackage + os + arch + meta + ; + package = check-version allArchives.packages "cmake" version; + } + ) cmakeVersions; + + # All NDK bundles. + ndk-bundles = + let + # Creates a NDK bundle. + makeNdkBundle = + package: + callPackage ./ndk-bundle { + inherit + deployAndroidPackage + os + arch + platform-tools + meta + package + ; + }; + in + lib.flatten ( + map ( + version: + let + package = makeNdkBundle ( + allArchives.packages.ndk-bundle.${ndkVersion} or allArchives.packages.ndk.${ndkVersion} + ); + in + lib.optional (shouldLink includeNDK [ package ]) package + ) ndkVersions + ); + + # The "default" NDK bundle. + ndk-bundle = if ndk-bundles == [ ] then null else lib.head ndk-bundles; + + # Makes a Google API bundle. + google-apis = + map + ( + version: + deployAndroidPackage { + package = (check-version allArchives "addons" (toString version)).google_apis; + } + ) + ( + builtins.filter (platformVersion: lib.versionOlder (toString platformVersion) "26") platformVersions + ); # API level 26 and higher include Google APIs by default + + google-tv-addons = map ( + version: + deployAndroidPackage { + package = (check-version allArchives "addons" (toString version)).google_tv_addon; + } + ) platformVersions; + + cmdline-tools-package = check-version allArchives.packages "cmdline-tools" cmdLineToolsVersion; # This derivation deploys the tools package and symlinks all the desired # plugins that we want to use. If the license isn't accepted, prints all the licenses # requested and throws. - androidsdk = if !licenseAccepted then throw '' - ${builtins.concatStringsSep "\n\n" (mkLicenseTexts licenseNames)} + androidsdk = + if !licenseAccepted then + throw '' + ${builtins.concatStringsSep "\n\n" (mkLicenseTexts licenseNames)} - You must accept the following licenses: - ${lib.concatMapStringsSep "\n" (str: " - ${str}") licenseNames} + You must accept the following licenses: + ${lib.concatMapStringsSep "\n" (str: " - ${str}") licenseNames} - a) - by setting nixpkgs config option 'android_sdk.accept_license = true;'. - b) - by an environment variable for a single invocation of the nix tools. - $ export NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE=1 - '' else callPackage ./cmdline-tools.nix { - inherit deployAndroidPackage os; + a) + by setting nixpkgs config option 'android_sdk.accept_license = true;'. + b) + by an environment variable for a single invocation of the nix tools. + $ export NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE=1 + '' + else + callPackage ./cmdline-tools.nix { + inherit + deployAndroidPackage + os + arch + meta + ; - package = cmdline-tools-package; + package = cmdline-tools-package; - postInstall = '' - # Symlink all requested plugins - ${linkPlugin { name = "platform-tools"; plugin = platform-tools; }} - ${linkPlugin { name = "tools"; plugin = tools; check = toolsVersion != null; }} - ${linkPlugins { name = "build-tools"; plugins = build-tools; }} - ${linkPlugin { name = "emulator"; plugin = emulator; check = includeEmulator; }} - ${linkPlugins { name = "platforms"; plugins = platforms; }} - ${linkPlatformPlugins { name = "sources"; plugins = sources; check = includeSources; }} - ${linkPlugins { name = "cmake"; plugins = cmake; }} - ${linkNdkPlugins { name = "ndk-bundle"; rootName = "ndk"; plugins = ndk-bundles; }} - ${linkNdkPlugin { name = "ndk-bundle"; plugin = ndk-bundle; check = includeNDK; }} - ${linkSystemImages { images = system-images; check = includeSystemImages; }} - ${linkPlatformPlugins { name = "add-ons"; plugins = google-apis; check = useGoogleAPIs; }} - ${linkPlatformPlugins { name = "add-ons"; plugins = google-apis; check = useGoogleTVAddOns; }} + postInstall = '' + # Symlink all requested plugins + ${linkPlugin { + name = "platform-tools"; + plugin = platform-tools; + }} + ${linkPlugin { + name = "tools"; + plugin = tools; + check = toolsVersion != null; + }} + ${linkPlugins { + name = "build-tools"; + plugins = build-tools; + }} + ${linkPlugin { + name = "emulator"; + plugin = emulator; + check = includeEmulator; + }} + ${linkPlugins { + name = "platforms"; + plugins = platforms; + }} + ${linkPlatformPlugins { + name = "sources"; + plugins = sources; + check = includeSources; + }} + ${linkPlugins { + name = "cmake"; + plugins = cmake; + check = includeCmake; + }} + ${linkNdkPlugins { + name = "ndk-bundle"; + rootName = "ndk"; + plugins = ndk-bundles; + check = includeNDK; + }} + ${linkNdkPlugin { + name = "ndk-bundle"; + plugin = ndk-bundle; + check = includeNDK; + }} + ${linkSystemImages { + images = system-images; + check = includeSystemImages; + }} + ${linkPlatformPlugins { + name = "add-ons"; + plugins = google-apis; + check = useGoogleAPIs; + }} + ${linkPlatformPlugins { + name = "add-ons"; + plugins = google-tv-addons; + check = useGoogleTVAddOns; + }} - # Link extras - ${lib.concatMapStrings (identifier: - let - package = addons.extras.${identifier}; - path = package.path; - extras = callPackage ./extras.nix { - inherit deployAndroidPackage package os; - }; - in - '' - targetDir=$(dirname ${path}) - mkdir -p $targetDir - ln -s ${extras}/libexec/android-sdk/${path} $targetDir - '') includeExtras} + # Link extras + ${lib.concatMapStrings ( + identifier: + let + package = allArchives.extras.${identifier}; + path = package.path; + extras = callPackage ./extras.nix { + inherit + deployAndroidPackage + package + os + arch + meta + ; + }; + in + '' + targetDir=$(dirname ${path}) + mkdir -p $targetDir + ln -s ${extras}/libexec/android-sdk/${path} $targetDir + '' + ) includeExtras} - # Expose common executables in bin/ - mkdir -p $out/bin + # Expose common executables in bin/ + mkdir -p $out/bin - for i in ${platform-tools}/bin/*; do - ln -s $i $out/bin - done + for i in ${platform-tools}/bin/*; do + ln -s $i $out/bin + done - ${lib.optionalString includeEmulator '' - for i in ${emulator}/bin/*; do - ln -s $i $out/bin - done - ''} + ${lib.optionalString (shouldLink includeEmulator [ emulator ]) '' + for i in ${emulator}/bin/*; do + ln -s $i $out/bin + done + ''} - find $ANDROID_SDK_ROOT/${cmdline-tools-package.path}/bin -type f -executable | while read i; do - ln -s $i $out/bin - done + find $ANDROID_SDK_ROOT/${cmdline-tools-package.path}/bin -type f -executable | while read i; do + ln -s $i $out/bin + done - # Write licenses - mkdir -p licenses - ${lib.concatMapStrings (licenseName: - let - licenseHashes = builtins.concatStringsSep "\n" (mkLicenseHashes licenseName); - licenseHashFile = writeText "androidenv-${licenseName}" licenseHashes; - in - '' - ln -s ${licenseHashFile} licenses/${licenseName} - '') licenseNames} - ''; - }; + # Write licenses + mkdir -p licenses + ${lib.concatMapStrings ( + licenseName: + let + licenseHashes = builtins.concatStringsSep "\n" (mkLicenseHashes licenseName); + licenseHashFile = writeText "androidenv-${licenseName}" licenseHashes; + in + '' + ln -s ${licenseHashFile} licenses/${licenseName} + '' + ) licenseNames} + ''; + }; } diff --git a/pkgs/development/mobile/androidenv/default.nix b/pkgs/development/mobile/androidenv/default.nix index d461afa1c322..38084115c1c4 100644 --- a/pkgs/development/mobile/androidenv/default.nix +++ b/pkgs/development/mobile/androidenv/default.nix @@ -1,51 +1,42 @@ { - config, + lib, pkgs ? import { }, - licenseAccepted ? - config.android_sdk.accept_license or (builtins.getEnv "NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE" == "1"), + licenseAccepted ? pkgs.callPackage ./license.nix { }, }: -rec { +lib.recurseIntoAttrs rec { composeAndroidPackages = pkgs.callPackage ./compose-android-packages.nix { - inherit licenseAccepted; + inherit licenseAccepted meta; }; buildApp = pkgs.callPackage ./build-app.nix { - inherit composeAndroidPackages; + inherit composeAndroidPackages meta; }; emulateApp = pkgs.callPackage ./emulate-app.nix { - inherit composeAndroidPackages; + inherit composeAndroidPackages meta; }; androidPkgs = composeAndroidPackages { - platformVersions = [ - "28" - "29" - "30" - "31" - "32" - "33" - "34" - "35" - ]; - includeEmulator = - with pkgs.stdenv.hostPlatform; - system == "x86_64-linux" || system == "x86_64-darwin" || system == "aarch64-darwin"; - includeSystemImages = - with pkgs.stdenv.hostPlatform; - system == "x86_64-linux" || system == "x86_64-darwin" || system == "aarch64-darwin"; - includeNDK = - with pkgs.stdenv.hostPlatform; - system == "x86_64-linux" || system == "x86_64-darwin" || system == "aarch64-darwin"; + # Support roughly the last 5 years of Android packages and system images by default in nixpkgs. + numLatestPlatformVersions = 5; + includeEmulator = "if-supported"; + includeSystemImages = "if-supported"; + includeNDK = "if-supported"; }; - test-suite = pkgs.callPackage ./test-suite.nix { }; + test-suite = pkgs.callPackage ./test-suite.nix { + inherit meta; + }; - meta = with pkgs.lib; { - description = "Android SDK & sdkmanager"; - homepage = "https://developer.android.com/tools/sdkmanager"; - maintainers = with maintainers; [ + inherit (test-suite) passthru; + + meta = { + homepage = "https://developer.android.com/tools"; + description = "Android SDK tools, packaged in Nixpkgs"; + license = lib.licenses.unfree; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ numinit hadilq ]; diff --git a/pkgs/development/mobile/androidenv/deploy-androidpackages.nix b/pkgs/development/mobile/androidenv/deploy-androidpackages.nix index 1cfa3f7e9fc7..1a4e8b9fb780 100644 --- a/pkgs/development/mobile/androidenv/deploy-androidpackages.nix +++ b/pkgs/development/mobile/androidenv/deploy-androidpackages.nix @@ -1,30 +1,59 @@ -{stdenv, lib, unzip, mkLicenses}: -{packages, nativeBuildInputs ? [], buildInputs ? [], patchesInstructions ? {}, meta ? {}, ...}@args: +{ + stdenv, + lib, + unzip, + mkLicenses, + os, + arch, + meta, +}: +{ + packages, + nativeBuildInputs ? [ ], + buildInputs ? [ ], + patchesInstructions ? { }, + ... +}@args: let - extraParams = removeAttrs args [ "packages" "os" "buildInputs" "nativeBuildInputs" "patchesInstructions" ]; + extraParams = removeAttrs args [ + "packages" + "os" + "buildInputs" + "nativeBuildInputs" + "patchesInstructions" + ]; sortedPackages = builtins.sort (x: y: builtins.lessThan x.name y.name) packages; - mkXmlAttrs = attrs: - lib.concatStrings (lib.mapAttrsToList (name: value: " ${name}=\"${value}\"") attrs); - mkXmlValues = attrs: - lib.concatStrings (lib.mapAttrsToList (name: value: - let - tag = builtins.head (builtins.match "([^:]+).*" name); - in + mkXmlAttrs = + attrs: lib.concatStrings (lib.mapAttrsToList (name: value: " ${name}=\"${value}\"") attrs); + mkXmlValues = + attrs: + lib.concatStrings ( + lib.mapAttrsToList ( + name: value: + let + tag = builtins.head (builtins.match "([^:]+).*" name); + in if builtins.typeOf value == "string" then "<${tag}>${value}" else mkXmlDoc name value - ) attrs); - mkXmlDoc = name: doc: - let - tag = builtins.head (builtins.match "([^:]+).*" name); - hasXmlAttrs = builtins.hasAttr "element-attributes" doc; - xmlValues = removeAttrs doc [ "element-attributes" ]; - hasXmlValues = builtins.length (builtins.attrNames xmlValues) > 0; - in - if hasXmlAttrs && hasXmlValues then "<${tag}${mkXmlAttrs doc.element-attributes}>${mkXmlValues xmlValues }" - else if hasXmlAttrs && !hasXmlValues then "<${tag}${mkXmlAttrs doc.element-attributes}/>" - else if !hasXmlAttrs && hasXmlValues then "<${tag}>${mkXmlValues xmlValues}" - else "<${tag}/>"; + ) attrs + ); + mkXmlDoc = + name: doc: + let + tag = builtins.head (builtins.match "([^:]+).*" name); + hasXmlAttrs = builtins.hasAttr "element-attributes" doc; + xmlValues = removeAttrs doc [ "element-attributes" ]; + hasXmlValues = builtins.length (builtins.attrNames xmlValues) > 0; + in + if hasXmlAttrs && hasXmlValues then + "<${tag}${mkXmlAttrs doc.element-attributes}>${mkXmlValues xmlValues}" + else if hasXmlAttrs && !hasXmlValues then + "<${tag}${mkXmlAttrs doc.element-attributes}/>" + else if !hasXmlAttrs && hasXmlValues then + "<${tag}>${mkXmlValues xmlValues}" + else + "<${tag}/>"; mkXmlPackage = package: '' ${lib.concatStringsSep "---" (mkLicenses package.license)} + if (lib.hasAttrByPath [ "obsolete" ] package) then package.obsolete else "false" + }"> ${mkXmlDoc "type-details" package.type-details} ${mkXmlDoc "revision" package.revision-details} - ${lib.optionalString (lib.hasAttrByPath [ "dependencies" ] package) - (mkXmlDoc "dependencies" package.dependencies) - } + ${lib.optionalString (lib.hasAttrByPath [ "dependencies" ] package) ( + mkXmlDoc "dependencies" package.dependencies + )} ${package.displayName} ''; in -stdenv.mkDerivation ({ - inherit buildInputs; - pname = "android-sdk-${lib.concatMapStringsSep "-" (package: package.name) sortedPackages}"; - version = lib.concatMapStringsSep "-" (package: package.revision) sortedPackages; - src = map (package: package.archives) packages; - nativeBuildInputs = [ unzip ] ++ nativeBuildInputs; - preferLocalBuild = true; +stdenv.mkDerivation ( + { + inherit buildInputs; + pname = "android-sdk-${lib.concatMapStringsSep "-" (package: package.name) sortedPackages}"; + version = lib.concatMapStringsSep "-" (package: package.revision) sortedPackages; + src = lib.flatten (map (package: package.archives) packages); + inherit os arch; + nativeBuildInputs = [ unzip ] ++ nativeBuildInputs; + preferLocalBuild = true; - unpackPhase = '' - buildDir=$PWD - i=0 - for srcArchive in $src; do - extractedZip="extractedzip-$i" - i=$((i+1)) - cd "$buildDir" - mkdir "$extractedZip" - cd "$extractedZip" - unpackFile "$srcArchive" - done - ''; + unpackPhase = '' + runHook preUnpack + if [ -z "$src" ]; then + echo "$pname did not have any sources available for os=$os, arch=$arch." >&2 + echo "Are packages available for this architecture?" >&2 + exit 1 + fi + buildDir=$PWD + i=0 + for srcArchive in $src; do + extractedZip="extractedzip-$i" + i=$((i+1)) + cd "$buildDir" + mkdir "$extractedZip" + cd "$extractedZip" + unpackFile "$srcArchive" + done + runHook postUnpack + ''; - installPhase = lib.concatStrings (lib.imap0 (i: package: '' - cd $buildDir/extractedzip-${toString i} + installPhase = + '' + runHook preInstall + '' + + lib.concatStrings ( + lib.imap0 (i: package: '' + cd $buildDir/extractedzip-${toString i} - # Most Android Zip packages have a root folder, but some don't. We unpack - # the zip file in a folder and we try to discover whether it has a single root - # folder. If this is the case, we adjust the current working folder. - if [ "$(find . -mindepth 1 -maxdepth 1 -type d | wc -l)" -eq 1 ]; then - cd "$(find . -mindepth 1 -maxdepth 1 -type d)" - fi - extractedZip="$PWD" + # Most Android Zip packages have a root folder, but some don't. We unpack + # the zip file in a folder and we try to discover whether it has a single root + # folder. If this is the case, we adjust the current working folder. + if [ "$(find . -mindepth 1 -maxdepth 1 -type d | wc -l)" -eq 1 ]; then + cd "$(find . -mindepth 1 -maxdepth 1 -type d)" + fi + extractedZip="$PWD" - packageBaseDir=$out/libexec/android-sdk/${package.path} - mkdir -p $packageBaseDir - cd $packageBaseDir - cp -a $extractedZip/* . - ${patchesInstructions.${package.name}} + packageBaseDir=$out/libexec/android-sdk/${package.path} + mkdir -p $packageBaseDir + cd $packageBaseDir + cp -a $extractedZip/* . + ${patchesInstructions.${package.name}} - if [ ! -f $packageBaseDir/package.xml ]; then - cat << EOF > $packageBaseDir/package.xml - ${mkXmlPackage package} - EOF - fi - '') packages); + if [ ! -f $packageBaseDir/package.xml ]; then + cat << EOF > $packageBaseDir/package.xml + ${mkXmlPackage package} + EOF + fi + '') packages + ) + + '' + runHook postInstall + ''; - # Some executables that have been patched with patchelf may not work any longer after they have been stripped. - dontStrip = true; - dontPatchELF = true; - dontAutoPatchelf = true; + # Some executables that have been patched with patchelf may not work any longer after they have been stripped. + dontStrip = true; + dontPatchELF = true; + dontAutoPatchelf = true; - meta = { - description = lib.concatMapStringsSep "\n" (package: package.displayName) packages; - } // meta; -} // extraParams) + inherit meta; + } + // extraParams +) diff --git a/pkgs/development/mobile/androidenv/emulate-app.nix b/pkgs/development/mobile/androidenv/emulate-app.nix index e215d4981af7..2e9b83854a8a 100644 --- a/pkgs/development/mobile/androidenv/emulate-app.nix +++ b/pkgs/development/mobile/androidenv/emulate-app.nix @@ -3,6 +3,7 @@ stdenv, lib, runtimeShell, + meta, }: { name, @@ -195,5 +196,7 @@ stdenv.mkDerivation { chmod +x $out/bin/run-test-emulator ''; - meta.mainProgram = "run-test-emulator"; + meta = meta // { + mainProgram = "run-test-emulator"; + }; } diff --git a/pkgs/development/mobile/androidenv/emulator.nix b/pkgs/development/mobile/androidenv/emulator.nix index 765bf40df364..e2f724ada13c 100644 --- a/pkgs/development/mobile/androidenv/emulator.nix +++ b/pkgs/development/mobile/androidenv/emulator.nix @@ -1,27 +1,46 @@ -{ deployAndroidPackage, lib, stdenv, package, os, autoPatchelfHook, makeWrapper, pkgs, pkgsi686Linux, postInstall }: +{ + deployAndroidPackage, + lib, + stdenv, + package, + os, + arch, + autoPatchelfHook, + makeWrapper, + pkgs, + pkgsi686Linux, + postInstall, + meta, +}: deployAndroidPackage { - inherit package; - nativeBuildInputs = [ makeWrapper ] - ++ lib.optionals (os == "linux") [ autoPatchelfHook ]; - buildInputs = lib.optionals (os == "linux") (with pkgs; [ - glibc - libcxx - libGL - libpulseaudio - libtiff - libuuid - zlib - libbsd - ncurses5 - libdrm - stdenv.cc.cc - expat - freetype - nss - nspr - alsa-lib - ]) ++ (with pkgs.xorg; [ + inherit package os arch; + nativeBuildInputs = [ makeWrapper ] ++ lib.optionals (os == "linux") [ autoPatchelfHook ]; + buildInputs = + lib.optionals (os == "linux") ( + with pkgs; + [ + glibc + libcxx + libGL + libpulseaudio + libtiff + libuuid + zlib + libbsd + ncurses5 + libdrm + stdenv.cc.cc + expat + freetype + nss + nspr + alsa-lib + llvmPackages_15.libllvm.lib + waylandpp.lib + ] + ) + ++ (with pkgs.xorg; [ libX11 libXext libXdamage @@ -35,7 +54,9 @@ deployAndroidPackage { libICE libSM libxkbfile - ]) ++ lib.optional (os == "linux" && stdenv.isx86_64) pkgsi686Linux.glibc; + libxshmfence + ]) + ++ lib.optional (os == "linux" && stdenv.isx86_64) pkgsi686Linux.glibc; patchInstructions = lib.optionalString (os == "linux") '' addAutoPatchelfSearchPath $packageBaseDir/lib addAutoPatchelfSearchPath $packageBaseDir/lib64 @@ -48,14 +69,20 @@ deployAndroidPackage { patchelf --replace-needed libtiff.so.5 libtiff.so "$file" || true done + for file in $out/libexec/android-sdk/emulator/lib64/vulkan/libvulkan_lvp.so; do + patchelf --replace-needed libLLVM-15.so.1 libLLVM-15.so "$file" || true + done + autoPatchelf $out # Wrap emulator so that it can load required libraries at runtime wrapProgram $out/libexec/android-sdk/emulator/emulator \ - --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ - pkgs.dbus - pkgs.systemd - ]} \ + --prefix LD_LIBRARY_PATH : ${ + lib.makeLibraryPath [ + pkgs.dbus + pkgs.systemd + ] + } \ --set QT_XKB_CONFIG_ROOT ${pkgs.xkeyboard_config}/share/X11/xkb \ --set QTCOMPOSE ${pkgs.xorg.libX11.out}/share/X11/locale @@ -69,4 +96,6 @@ deployAndroidPackage { ${postInstall} ''; dontMoveLib64 = true; + + inherit meta; } diff --git a/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix b/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix index 9cd207611c25..eb5a48681931 100644 --- a/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix +++ b/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix @@ -19,22 +19,12 @@ config.allowUnfree = true; }, - config ? pkgs.config, # You probably need to set it to true to express consent. - licenseAccepted ? - config.android_sdk.accept_license or (builtins.getEnv "NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE" == "1"), + licenseAccepted ? pkgs.callPackage ../license.nix { }, }: # Copy this file to your Android project. let - # Declaration of versions for everything. This is useful since these - # versions may be used in multiple places in this Nix expression. - android = { - platforms = [ "35" ]; - systemImageTypes = [ "google_apis" ]; - abis = [ "x86_64" ]; - }; - # If you copy this example out of nixpkgs, something like this will work: /* androidEnvNixpkgs = fetchTarball { @@ -44,23 +34,21 @@ let }; androidEnv = pkgs.callPackage "${androidEnvNixpkgs}/pkgs/development/mobile/androidenv" { - inherit config pkgs; + inherit pkgs; licenseAccepted = true; }; */ # Otherwise, just use the in-tree androidenv: androidEnv = pkgs.callPackage ./.. { - inherit config pkgs licenseAccepted; + inherit pkgs licenseAccepted; }; - sdkArgs = { - platformVersions = android.platforms; - abiVersions = android.abis; - systemImageTypes = android.systemImageTypes; + emulatorSupported = pkgs.stdenv.hostPlatform.isx86_64 || pkgs.stdenv.hostPlatform.isDarwin; + sdkArgs = { includeSystemImages = true; - includeEmulator = true; + includeEmulator = "if-supported"; # Accepting more licenses declaratively: extraLicenses = [ @@ -89,6 +77,7 @@ let }; androidSdk = androidComposition.androidsdk; platformTools = androidComposition.platform-tools; + latestSdk = pkgs.lib.foldl' pkgs.lib.max 0 androidComposition.platformVersions; jdk = pkgs.jdk; in pkgs.mkShell rec { @@ -133,10 +122,11 @@ pkgs.mkShell rec { echo "installed_packages_section: ''${installed_packages_section}" packages=( - "build-tools;35.0.0" "cmdline-tools;13.0" \ - "emulator" "platform-tools" "platforms;android-35" \ - "system-images;android-35;google_apis;x86_64" + "build-tools" "cmdline-tools" \ + "platform-tools" "platforms;android-${toString latestSdk}" \ + "system-images;android-${toString latestSdk};google_apis;x86_64" ) + ${pkgs.lib.optionalString emulatorSupported ''packages+=("emulator")''} for package in "''${packages[@]}"; do if [[ ! $installed_packages_section =~ "$package" ]]; then @@ -160,24 +150,17 @@ pkgs.mkShell rec { output="$(sdkmanager --list)" installed_packages_section=$(echo "''${output%%Available Packages*}" | awk 'NR>4 {print $1}') - excluded_packages=( - "platforms;android-23" "platforms;android-24" "platforms;android-25" "platforms;android-26" \ - "platforms;android-27" "platforms;android-28" "platforms;android-29" "platforms;android-30" \ - "platforms;android-31" "platforms;android-32" "platforms;android-33" "platforms;android-34" \ - "sources;android-23" "sources;android-24" "sources;android-25" "sources;android-26" \ - "sources;android-27" "sources;android-28" "sources;android-29" "sources;android-30" \ - "sources;android-31" "sources;android-32" "sources;android-33" "sources;android-34" \ - "system-images;android-28" \ - "system-images;android-29" \ - "system-images;android-30" \ - "system-images;android-31" \ - "system-images;android-32" \ - "system-images;android-33" \ - "ndk" - ) + excluded_packages=(ndk) + for x in $(seq 1 ${toString latestSdk}); do + excluded_packages+=( + "platforms;android-$x" + "sources;android-$x" + "system-images;android-$x" + ) + done for package in "''${excluded_packages[@]}"; do - if [[ $installed_packages_section =~ "$package" ]]; then + if [[ $installed_packages_section =~ ^"$package"$ ]]; then echo "$package package was installed, while it was excluded!" exit 1 fi @@ -195,21 +178,25 @@ pkgs.mkShell rec { jdk ]; } - '' - export ANDROID_USER_HOME=$PWD/.android - mkdir -p $ANDROID_USER_HOME + ( + pkgs.lib.optionalString emulatorSupported '' + export ANDROID_USER_HOME=$PWD/.android + mkdir -p $ANDROID_USER_HOME - avdmanager delete avd -n testAVD || true - echo "" | avdmanager create avd --force --name testAVD --package 'system-images;android-35;google_apis;x86_64' - result=$(avdmanager list avd) + avdmanager delete avd -n testAVD || true + echo "" | avdmanager create avd --force --name testAVD --package 'system-images;android-${toString latestSdk};google_apis;x86_64' + result=$(avdmanager list avd) - if [[ ! $result =~ "Name: testAVD" ]]; then - echo "avdmanager couldn't create the avd! The output is :''${result}" - exit 1 - fi + if [[ ! $result =~ "Name: testAVD" ]]; then + echo "avdmanager couldn't create the avd! The output is :''${result}" + exit 1 + fi - avdmanager delete avd -n testAVD || true - touch "$out" - ''; + avdmanager delete avd -n testAVD || true + '' + + '' + touch $out + '' + ); }; } diff --git a/pkgs/development/mobile/androidenv/examples/shell-without-emulator.nix b/pkgs/development/mobile/androidenv/examples/shell-without-emulator.nix index 16fd105e4b59..3af80459b347 100644 --- a/pkgs/development/mobile/androidenv/examples/shell-without-emulator.nix +++ b/pkgs/development/mobile/androidenv/examples/shell-without-emulator.nix @@ -5,12 +5,12 @@ # This example pins nixpkgs: https://nix.dev/tutorials/first-steps/towards-reproducibility-pinning-nixpkgs.html /* nixpkgsSource ? (builtins.fetchTarball { - name = "nixpkgs-20.09"; - url = "https://github.com/NixOS/nixpkgs/archive/20.09.tar.gz"; - sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy"; + name = "nixpkgs-20.09"; + url = "https://github.com/NixOS/nixpkgs/archive/20.09.tar.gz"; + sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy"; }), pkgs ? import nixpkgsSource { - config.allowUnfree = true; + config.allowUnfree = true; }, */ @@ -18,49 +18,32 @@ pkgs ? import ../../../../.. { config.allowUnfree = true; }, - config ? pkgs.config, - # You probably need to set it to true to express consent. - licenseAccepted ? - config.android_sdk.accept_license or (builtins.getEnv "NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE" == "1"), + + licenseAccepted ? pkgs.callPackage ../license.nix { }, }: # Copy this file to your Android project. let - # Declaration of versions for everything. This is useful since these - # versions may be used in multiple places in this Nix expression. - android = { - versions = { - cmdLineToolsVersion = "13.0"; - platformTools = "35.0.2"; - buildTools = "35.0.0"; - }; - platforms = [ "35" ]; - }; - # If you copy this example out of nixpkgs, something like this will work: /* androidEnvNixpkgs = fetchTarball { - name = "androidenv"; - url = "https://github.com/NixOS/nixpkgs/archive/.tar.gz"; - sha256 = ""; + name = "androidenv"; + url = "https://github.com/NixOS/nixpkgs/archive/.tar.gz"; + sha256 = ""; }; androidEnv = pkgs.callPackage "${androidEnvNixpkgs}/pkgs/development/mobile/androidenv" { - inherit config pkgs; - licenseAccepted = true; + inherit pkgs; + licenseAccepted = true; }; */ # Otherwise, just use the in-tree androidenv: androidEnv = pkgs.callPackage ./.. { - inherit config pkgs licenseAccepted; + inherit pkgs licenseAccepted; }; sdkArgs = { - cmdLineToolsVersion = android.versions.cmdLineToolsVersion; - platformToolsVersion = android.versions.platformTools; - buildToolsVersions = [ android.versions.buildTools ]; - platformVersions = android.platforms; includeNDK = false; includeSystemImages = false; includeEmulator = false; @@ -85,6 +68,7 @@ let androidComposition = androidEnv.composeAndroidPackages sdkArgs; androidSdk = androidComposition.androidsdk; platformTools = androidComposition.platform-tools; + latestSdk = pkgs.lib.foldl' pkgs.lib.max 0 androidComposition.platformVersions; jdk = pkgs.jdk; in pkgs.mkShell { @@ -126,8 +110,8 @@ pkgs.mkShell { echo "installed_packages_section: ''${installed_packages_section}" packages=( - "build-tools;35.0.0" "cmdline-tools;13.0" \ - "platform-tools" "platforms;android-35" + "build-tools" "cmdline-tools" \ + "platform-tools" "platforms;android-${toString latestSdk}" ) for package in "''${packages[@]}"; do diff --git a/pkgs/development/mobile/androidenv/examples/shell.nix b/pkgs/development/mobile/androidenv/examples/shell.nix index 05e078a03f9e..7a45dcfbbcbc 100644 --- a/pkgs/development/mobile/androidenv/examples/shell.nix +++ b/pkgs/development/mobile/androidenv/examples/shell.nix @@ -1,14 +1,15 @@ { # If you copy this example out of nixpkgs, use these lines instead of the next. # This example pins nixpkgs: https://nix.dev/tutorials/first-steps/towards-reproducibility-pinning-nixpkgs.html - /*nixpkgsSource ? (builtins.fetchTarball { - name = "nixpkgs-20.09"; - url = "https://github.com/NixOS/nixpkgs/archive/20.09.tar.gz"; - sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy"; - }), - pkgs ? import nixpkgsSource { - config.allowUnfree = true; - }, + /* + nixpkgsSource ? (builtins.fetchTarball { + name = "nixpkgs-20.09"; + url = "https://github.com/NixOS/nixpkgs/archive/20.09.tar.gz"; + sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy"; + }), + pkgs ? import nixpkgsSource { + config.allowUnfree = true; + }, */ # If you want to use the in-tree version of nixpkgs: @@ -16,88 +17,70 @@ config.allowUnfree = true; }, - config ? pkgs.config, # You probably need to set it to true to express consent. - licenseAccepted ? - config.android_sdk.accept_license or (builtins.getEnv "NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE" == "1"), + licenseAccepted ? pkgs.callPackage ../license.nix { }, }: # Copy this file to your Android project. let - # Declaration of versions for everything. This is useful since these - # versions may be used in multiple places in this Nix expression. - android = { - versions = { - cmdLineToolsVersion = "13.0"; - platformTools = "35.0.2"; - buildTools = "35.0.0"; - ndk = [ - "27.0.12077973" - ]; - cmake = "3.6.4111459"; - emulator = "35.1.4"; + # If you copy this example out of nixpkgs, something like this will work: + /* + androidEnvNixpkgs = fetchTarball { + name = "androidenv"; + url = "https://github.com/NixOS/nixpkgs/archive/.tar.gz"; + sha256 = ""; }; - platforms = [ "23" "24" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" ]; - abis = [ "x86_64" ]; - extras = [ - "extras;google;gcm" - "extras;google;auto" - ]; - }; - - # If you copy this example out of nixpkgs, something like this will work: - /*androidEnvNixpkgs = fetchTarball { - name = "androidenv"; - url = "https://github.com/NixOS/nixpkgs/archive/.tar.gz"; - sha256 = ""; - }; - - androidEnv = pkgs.callPackage "${androidEnvNixpkgs}/pkgs/development/mobile/androidenv" { - inherit config pkgs; - licenseAccepted = true; - };*/ + androidEnv = pkgs.callPackage "${androidEnvNixpkgs}/pkgs/development/mobile/androidenv" { + inherit pkgs; + licenseAccepted = true; + }; + */ # Otherwise, just use the in-tree androidenv: androidEnv = pkgs.callPackage ./.. { - inherit config pkgs licenseAccepted; + inherit pkgs licenseAccepted; }; + # The head unit only works on these platforms + includeAuto = pkgs.stdenv.hostPlatform.isx86_64 || pkgs.stdenv.hostPlatform.isDarwin; + androidComposition = androidEnv.composeAndroidPackages { - cmdLineToolsVersion = android.versions.cmdLineToolsVersion; - platformToolsVersion = android.versions.platformTools; - buildToolsVersions = [android.versions.buildTools]; - platformVersions = android.platforms; - abiVersions = android.abis; - includeSources = true; - includeSystemImages = true; - includeEmulator = true; - emulatorVersion = android.versions.emulator; - - includeNDK = true; - ndkVersions = android.versions.ndk; - cmakeVersions = [android.versions.cmake]; - + includeSystemImages = false; + includeEmulator = "if-supported"; + includeNDK = "if-supported"; useGoogleAPIs = true; - includeExtras = android.extras; + + # Make sure everything from the last decade works since we are not using system images. + numLatestPlatformVersions = 10; # If you want to use a custom repo JSON: # repoJson = ../repo.json; # If you want to use custom repo XMLs: - /*repoXmls = { - packages = [ ../xml/repository2-1.xml ]; - images = [ - ../xml/android-sys-img2-1.xml - ../xml/android-tv-sys-img2-1.xml - ../xml/android-wear-sys-img2-1.xml - ../xml/android-wear-cn-sys-img2-1.xml - ../xml/google_apis-sys-img2-1.xml - ../xml/google_apis_playstore-sys-img2-1.xml + /* + repoXmls = { + packages = [ ../xml/repository2-1.xml ]; + images = [ + ../xml/android-sys-img2-1.xml + ../xml/android-tv-sys-img2-1.xml + ../xml/android-wear-sys-img2-1.xml + ../xml/android-wear-cn-sys-img2-1.xml + ../xml/google_apis-sys-img2-1.xml + ../xml/google_apis_playstore-sys-img2-1.xml + ]; + addons = [ ../xml/addon2-1.xml ]; + }; + */ + + includeExtras = + [ + "extras;google;gcm" + ] + ++ pkgs.lib.optionals includeAuto [ + "extras;google;auto" ]; - addons = [ ../xml/addon2-1.xml ]; - };*/ # Accepting more licenses declaratively: extraLicenses = [ @@ -118,11 +101,17 @@ let androidSdk = androidComposition.androidsdk; platformTools = androidComposition.platform-tools; + firstSdk = pkgs.lib.foldl' pkgs.lib.min 100 androidComposition.platformVersions; + latestSdk = pkgs.lib.foldl' pkgs.lib.max 0 androidComposition.platformVersions; jdk = pkgs.jdk; in pkgs.mkShell rec { name = "androidenv-demo"; - packages = [ androidSdk platformTools jdk ]; + packages = [ + androidSdk + platformTools + jdk + ]; LANG = "C.UTF-8"; LC_ALL = "C.UTF-8"; @@ -132,12 +121,12 @@ pkgs.mkShell rec { ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle"; - # Ensures that we don't have to use a FHS env by using the nix store's aapt2. - GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${android.versions.buildTools}/aapt2"; - shellHook = '' + # Ensures that we don't have to use a FHS env by using the nix store's aapt2. + export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=$(echo "$ANDROID_SDK_ROOT/build-tools/"*"/aapt2")" + # Add cmake to the path. - cmake_root="$(echo "$ANDROID_SDK_ROOT/cmake/${android.versions.cmake}"*/)" + cmake_root="$(echo "$ANDROID_SDK_ROOT/cmake/"*/)" export PATH="$cmake_root/bin:$PATH" # Write out local.properties for Android Studio. @@ -151,53 +140,57 @@ pkgs.mkShell rec { passthru.tests = { - shell-sdkmanager-licenses-test = pkgs.runCommand "shell-sdkmanager-licenses-test" { - nativeBuildInputs = [ androidSdk jdk ]; - } '' - if [[ ! "$(sdkmanager --licenses)" =~ "All SDK package licenses accepted." ]]; then - echo "At least one of SDK package licenses are not accepted." - exit 1 - fi - touch $out - ''; + shell-sdkmanager-licenses-test = + pkgs.runCommand "shell-sdkmanager-licenses-test" + { + nativeBuildInputs = [ + androidSdk + jdk + ]; + } + '' + if [[ ! "$(sdkmanager --licenses)" =~ "All SDK package licenses accepted." ]]; then + echo "At least one of SDK package licenses are not accepted." + exit 1 + fi + touch $out + ''; - shell-sdkmanager-packages-test = pkgs.runCommand "shell-sdkmanager-packages-test" { - nativeBuildInputs = [ androidSdk jdk ]; - } '' - output="$(sdkmanager --list)" - installed_packages_section=$(echo "''${output%%Available Packages*}" | awk 'NR>4 {print $1}') + shell-sdkmanager-packages-test = + pkgs.runCommand "shell-sdkmanager-packages-test" + { + nativeBuildInputs = [ + androidSdk + jdk + ]; + } + '' + output="$(sdkmanager --list)" + installed_packages_section=$(echo "''${output%%Available Packages*}" | awk 'NR>4 {print $1}') - # FIXME couldn't find platforms;android-34, even though it's in the correct directory!! sdkmanager's bug?! - packages=( - "build-tools;35.0.0" "platform-tools" \ - "platforms;android-23" "platforms;android-24" "platforms;android-25" "platforms;android-26" \ - "platforms;android-27" "platforms;android-28" "platforms;android-29" "platforms;android-30" \ - "platforms;android-31" "platforms;android-32" "platforms;android-33" "platforms;android-35" \ - "sources;android-23" "sources;android-24" "sources;android-25" "sources;android-26" \ - "sources;android-27" "sources;android-28" "sources;android-29" "sources;android-30" \ - "sources;android-31" "sources;android-32" "sources;android-33" "sources;android-34" \ - "sources;android-35" \ - "system-images;android-28;google_apis_playstore;x86_64" \ - "system-images;android-29;google_apis_playstore;x86_64" \ - "system-images;android-30;google_apis_playstore;x86_64" \ - "system-images;android-31;google_apis_playstore;x86_64" \ - "system-images;android-32;google_apis_playstore;x86_64" \ - "system-images;android-33;google_apis_playstore;x86_64" \ - "system-images;android-34;google_apis;x86_64" \ - "system-images;android-35;google_apis;x86_64" \ - "extras;google;gcm" - "extras;google;auto" - ) + packages=( + "build-tools" "platform-tools" \ + "extras;google;gcm" + ) - for package in "''${packages[@]}"; do - if [[ ! $installed_packages_section =~ "$package" ]]; then - echo "$package package was not installed." - exit 1 - fi - done + for x in $(seq ${toString firstSdk} ${toString latestSdk}); do + if [ $x -ne 34 ]; then + # FIXME couldn't find platforms;android-34, even though it's in the correct directory!! sdkmanager's bug?! + packages+=("platforms;android-$x") + fi + packages+=("sources;android-$x") + done - touch "$out" - ''; + ${pkgs.lib.optionalString includeAuto ''packages+=("extras;google;auto")''} + + for package in "''${packages[@]}"; do + if [[ ! $installed_packages_section =~ "$package" ]]; then + echo "$package package was not installed." + exit 1 + fi + done + + touch "$out" + ''; }; } - diff --git a/pkgs/development/mobile/androidenv/extras.nix b/pkgs/development/mobile/androidenv/extras.nix index 7e6123635f59..fd98f1f2af84 100644 --- a/pkgs/development/mobile/androidenv/extras.nix +++ b/pkgs/development/mobile/androidenv/extras.nix @@ -3,13 +3,15 @@ lib, package, os, + arch, autoPatchelfHook, makeWrapper, pkgs, + meta, }: deployAndroidPackage { - inherit package os; + inherit package os arch; nativeBuildInputs = [ makeWrapper ] ++ lib.optionals (os == "linux") [ autoPatchelfHook ]; buildInputs = lib.optionals (os == "linux") ( with pkgs; @@ -36,4 +38,6 @@ deployAndroidPackage { } fi ''; + + inherit meta; } diff --git a/pkgs/development/mobile/androidenv/fetchrepo.sh b/pkgs/development/mobile/androidenv/fetchrepo.sh index 10c106ff96c5..61f8aa66fe7c 100755 --- a/pkgs/development/mobile/androidenv/fetchrepo.sh +++ b/pkgs/development/mobile/androidenv/fetchrepo.sh @@ -8,7 +8,7 @@ die() { fetch() { local url="https://dl.google.com/android/repository/$1" - echo "$url -> $2" + echo "$url -> $2" >&2 curl -s "$url" -o "$2" || die "Failed to fetch $url" } diff --git a/pkgs/development/mobile/androidenv/generate.sh b/pkgs/development/mobile/androidenv/generate.sh deleted file mode 100755 index 2c9a0a9f591b..000000000000 --- a/pkgs/development/mobile/androidenv/generate.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -./fetchrepo.sh && ./mkrepo.sh diff --git a/pkgs/development/mobile/androidenv/license.nix b/pkgs/development/mobile/androidenv/license.nix new file mode 100644 index 000000000000..7b89babdaf52 --- /dev/null +++ b/pkgs/development/mobile/androidenv/license.nix @@ -0,0 +1,9 @@ +{ + config, +}: + +# Accept the license in the test suite. +config.android_sdk.accept_license or ( + builtins.getEnv "NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE" == "1" + || builtins.getEnv "UPDATE_NIX_ATTR_PATH" == "androidenv.test-suite" +) diff --git a/pkgs/development/mobile/androidenv/mkrepo.rb b/pkgs/development/mobile/androidenv/mkrepo.rb index eef50b463a38..66fee5c47322 100644 --- a/pkgs/development/mobile/androidenv/mkrepo.rb +++ b/pkgs/development/mobile/androidenv/mkrepo.rb @@ -1,8 +1,11 @@ #!/usr/bin/env ruby require 'json' +require 'rubygems' require 'nokogiri' require 'slop' +require 'shellwords' +require 'erb' # Returns a repo URL for a given package name. def repo_url value @@ -467,6 +470,18 @@ opts[:addons].each do |filename| merge result['extras'], extras end +result['latest'] = {} +result['packages'].each do |name, versions| + max_version = Gem::Version.new('0') + versions.each do |version, package| + if package['license'] == 'android-sdk-license' && Gem::Version.correct?(package['revision']) + package_version = Gem::Version.new(package['revision']) + max_version = package_version if package_version > max_version + end + end + result['latest'][name] = max_version.to_s +end + # As we keep the old packages in the repo JSON file, we should have # a strategy to remove them at some point! # So with this variable we claim it's okay to remove them from the @@ -474,17 +489,21 @@ end two_years_ago = today - 2 * 365 input = {} +prev_latest = {} begin - input_json = (STDIN.tty?) ? "{}" : $stdin.read + input_json = (STDIN.tty?) ? "{}" : STDIN.read if input_json != nil && !input_json.empty? - input = expire_records(JSON.parse(input_json), two_years_ago) + input = expire_records(JSON.parse(input_json), two_years_ago) + + # Just create a new set of latest packages. + prev_latest = input['latest'] || {} + input['latest'] = {} end rescue JSON::ParserError => e - $stderr.write(e.message) + STDERR.write(e.message) return end - fixup_result = fixup(result) # Regular installation of Android SDK would keep the previously installed packages even if they are not @@ -492,4 +511,70 @@ fixup_result = fixup(result) # therefore the old packages will work as long as the links are working on the Google servers. output = merge input, fixup_result -puts JSON.pretty_generate(sort_recursively(output)) +# See if there are any changes in the latest versions. +cur_latest = output['latest'] || {} + +old_versions = [] +new_versions = [] +changes = [] +changed = false + +cur_latest.each do |k, v| + prev = prev_latest[k] + if prev && prev != v + old_versions << "#{k}:#{prev}" + new_versions << "#{k}:#{v}" + changes << "#{k}: #{prev} -> #{v}" + changed = true + end +end + +# Write the repository. Append a \n to keep nixpkgs Github Actions happy. +File.write 'repo.json', (JSON.pretty_generate(sort_recursively(output)) + "\n") + +# Output metadata for the nixpkgs update script. +changed_paths = [] +if changed + if ENV['UPDATE_NIX_ATTR_PATH'] + # Instantiate it. + test_result = `NIXPKGS_ALLOW_UNFREE=1 NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE=1 nix-build ../../../../default.nix -A #{Shellwords.join [ENV['UPDATE_NIX_ATTR_PATH']]} 2>&1` + test_status = $?.exitstatus + tests_ran = true + else + tests_ran = false + end + + template = ERB.new(<<-EOF, trim_mode: '<>-') +androidenv: <%= changes.join('; ') %> + +Performed the following automatic androidenv updates: + +<% changes.each do |change| %> +- <%= change -%> +<% end %> + +<% if tests_ran %> +Tests exited with status: <%= test_status -%> + +<% if !test_result.empty? %> +Last 100 lines of output: +``` +<%= test_result.lines.last(100).join -%> +``` +<% end %> +<% end %> +EOF + + changed_paths << { + attrPath: 'androidenv.androidPkgs.androidsdk', + oldVersion: old_versions.join('; '), + newVersion: new_versions.join('; '), + files: [ + File.realpath('repo.json') + ], + commitMessage: template.result(binding) + } +end + +# nix-update info is on stderr +STDOUT.puts JSON.pretty_generate(changed_paths) diff --git a/pkgs/development/mobile/androidenv/mkrepo.sh b/pkgs/development/mobile/androidenv/mkrepo.sh index 81dfdbdb210c..174b765e9c34 100755 --- a/pkgs/development/mobile/androidenv/mkrepo.sh +++ b/pkgs/development/mobile/androidenv/mkrepo.sh @@ -6,7 +6,7 @@ set -e pushd "$(dirname "$0")" &>/dev/null || exit 1 echo "Writing repo.json" >&2 -cat ./repo.json | ruby mkrepo.rb \ +ruby mkrepo.rb \ --packages ./xml/repository2-3.xml \ --images ./xml/android-sys-img2-3.xml \ --images ./xml/android-tv-sys-img2-3.xml \ @@ -15,7 +15,5 @@ cat ./repo.json | ruby mkrepo.rb \ --images ./xml/android-automotive-sys-img2-3.xml \ --images ./xml/google_apis-sys-img2-3.xml \ --images ./xml/google_apis_playstore-sys-img2-3.xml \ - --addons ./xml/addon2-3.xml \ - | sponge repo.json - + --addons ./xml/addon2-3.xml <./repo.json popd &>/dev/null diff --git a/pkgs/development/mobile/androidenv/ndk-bundle/default.nix b/pkgs/development/mobile/androidenv/ndk-bundle/default.nix index b57d0c84d7bc..ba1d9ea3e81b 100644 --- a/pkgs/development/mobile/androidenv/ndk-bundle/default.nix +++ b/pkgs/development/mobile/androidenv/ndk-bundle/default.nix @@ -1,18 +1,47 @@ -{ stdenv, lib, pkgs, pkgsHostHost, makeWrapper, autoPatchelfHook -, deployAndroidPackage, package, os, platform-tools +{ + stdenv, + lib, + pkgs, + pkgsHostHost, + makeWrapper, + autoPatchelfHook, + deployAndroidPackage, + package, + os, + arch, + platform-tools, + meta, }: let - runtime_paths = lib.makeBinPath (with pkgsHostHost; [ - coreutils file findutils gawk gnugrep gnused jdk python3 which - ]) + ":${platform-tools}/platform-tools"; + runtime_paths = + lib.makeBinPath ( + with pkgsHostHost; + [ + coreutils + file + findutils + gawk + gnugrep + gnused + jdk + python3 + which + ] + ) + + ":${platform-tools}/platform-tools"; in deployAndroidPackage rec { - inherit package; - nativeBuildInputs = [ makeWrapper ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; + inherit package os arch; + nativeBuildInputs = [ + makeWrapper + ] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; autoPatchelfIgnoreMissingDeps = [ "*" ]; - buildInputs = lib.optionals (os == "linux") [ pkgs.zlib pkgs.libcxx (lib.getLib stdenv.cc.cc) ]; + buildInputs = lib.optionals (os == "linux") [ + pkgs.zlib + pkgs.libcxx + (lib.getLib stdenv.cc.cc) + ]; patchElfBnaries = '' # Patch the executables of the toolchains, but not the libraries -- they are needed for crosscompiling @@ -70,8 +99,10 @@ deployAndroidPackage rec { done ''; - patchInstructions = patchOsAgnostic - + lib.optionalString stdenv.hostPlatform.isLinux patchElfBnaries; + patchInstructions = + patchOsAgnostic + lib.optionalString stdenv.hostPlatform.isLinux patchElfBnaries; noAuditTmpdir = true; # Audit script gets invoked by the build/ component in the path for the make standalone script + + inherit meta; } diff --git a/pkgs/development/mobile/androidenv/patcher.nix b/pkgs/development/mobile/androidenv/patcher.nix index e52013f9c323..6d89de28244c 100644 --- a/pkgs/development/mobile/androidenv/patcher.nix +++ b/pkgs/development/mobile/androidenv/patcher.nix @@ -3,12 +3,13 @@ lib, package, os, + arch, autoPatchelfHook, stdenv, }: deployAndroidPackage { - inherit package os; + inherit package os arch; nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; patchInstructions = lib.optionalString (os == "linux") '' autoPatchelf $packageBaseDir/bin diff --git a/pkgs/development/mobile/androidenv/platform-tools.nix b/pkgs/development/mobile/androidenv/platform-tools.nix index 478259e812c9..f1fab2e5eb2e 100644 --- a/pkgs/development/mobile/androidenv/platform-tools.nix +++ b/pkgs/development/mobile/androidenv/platform-tools.nix @@ -1,20 +1,37 @@ -{deployAndroidPackage, lib, package, os, autoPatchelfHook, pkgs}: +{ + deployAndroidPackage, + lib, + package, + os, + arch, + autoPatchelfHook, + pkgs, + meta, +}: deployAndroidPackage { - inherit package; + inherit package os arch; nativeBuildInputs = lib.optionals (os == "linux") [ autoPatchelfHook ]; - buildInputs = lib.optionals (os == "linux") [ pkgs.glibc (lib.getLib pkgs.stdenv.cc.cc) pkgs.zlib pkgs.ncurses5 ]; + buildInputs = lib.optionals (os == "linux") [ + pkgs.glibc + (lib.getLib pkgs.stdenv.cc.cc) + pkgs.zlib + pkgs.ncurses5 + ]; - patchInstructions = lib.optionalString (os == "linux") '' - addAutoPatchelfSearchPath $packageBaseDir/lib64 - autoPatchelf --no-recurse $packageBaseDir/lib64 - autoPatchelf --no-recurse $packageBaseDir - '' + '' - mkdir -p $out/bin - cd $out/bin - find $out/libexec/android-sdk/platform-tools -type f -executable -mindepth 1 -maxdepth 1 -not -name sqlite3 | while read i - do - ln -s $i - done - ''; + patchInstructions = + lib.optionalString (os == "linux") '' + addAutoPatchelfSearchPath $packageBaseDir/lib64 + autoPatchelf --no-recurse $packageBaseDir/lib64 + autoPatchelf --no-recurse $packageBaseDir + '' + + '' + mkdir -p $out/bin + cd $out/bin + find $out/libexec/android-sdk/platform-tools -type f -executable -mindepth 1 -maxdepth 1 -not -name sqlite3 | while read i + do + ln -s $i + done + ''; + inherit meta; } diff --git a/pkgs/development/mobile/androidenv/repo.json b/pkgs/development/mobile/androidenv/repo.json index 77295eeaa17a..26dc4252f547 100644 --- a/pkgs/development/mobile/androidenv/repo.json +++ b/pkgs/development/mobile/androidenv/repo.json @@ -12,7 +12,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-10", @@ -91,7 +91,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-11", @@ -156,7 +156,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-12", @@ -233,7 +233,7 @@ } ], "displayName": "Google TV Addon", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-googletv-license", "name": "google_tv_addon", "path": "add-ons/addon-google_tv_addon-google-12", @@ -280,7 +280,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-13", @@ -357,7 +357,7 @@ } ], "displayName": "Google TV Addon", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-googletv-license", "name": "google_tv_addon", "path": "add-ons/addon-google_tv_addon-google-13", @@ -404,7 +404,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-14", @@ -483,7 +483,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-15", @@ -576,7 +576,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-16", @@ -669,7 +669,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-17", @@ -762,7 +762,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-18", @@ -855,7 +855,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-19", @@ -948,7 +948,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-21", @@ -1041,7 +1041,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-22", @@ -1134,7 +1134,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-23", @@ -1227,7 +1227,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-24", @@ -1320,7 +1320,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-25", @@ -1413,7 +1413,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-3", @@ -1478,7 +1478,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-4", @@ -1543,7 +1543,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-5", @@ -1608,7 +1608,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-6", @@ -1673,7 +1673,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-7", @@ -1738,7 +1738,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-8", @@ -1803,7 +1803,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-9", @@ -1869,7 +1869,7 @@ } ], "displayName": "Android Support Repository", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-android-m2repository", "path": "extras/android/m2repository", @@ -1900,7 +1900,7 @@ } ], "displayName": "Android Emulator hypervisor driver (installer)", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-Android_Emulator_Hypervisor_Driver", "path": "extras/google/Android_Emulator_Hypervisor_Driver", @@ -1931,7 +1931,7 @@ } ], "displayName": "Google AdMob Ads SDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-admob_ads_sdk", "path": "extras/google/admob_ads_sdk", @@ -1960,7 +1960,7 @@ } ], "displayName": "Google Analytics App Tracking SDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-analytics_sdk_v2", "path": "extras/google/analytics_sdk_v2", @@ -2010,7 +2010,7 @@ } ], "displayName": "Android Auto Desktop Head Unit Emulator", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-auto", "path": "extras/google/auto", @@ -2036,7 +2036,7 @@ } ], "displayName": "Google Cloud Messaging for Android Library", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-gcm", "path": "extras/google/gcm", @@ -2072,7 +2072,7 @@ } }, "displayName": "Google Play services", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-google_play_services", "path": "extras/google/google_play_services", @@ -2101,7 +2101,7 @@ } ], "displayName": "Google Play services for Froyo", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-google_play_services_froyo", "path": "extras/google/google_play_services_froyo", @@ -2130,7 +2130,7 @@ } ], "displayName": "Google Play Instant Development SDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-instantapps", "path": "extras/google/instantapps", @@ -2168,7 +2168,7 @@ } }, "displayName": "Google Repository", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-m2repository", "path": "extras/google/m2repository", @@ -2197,7 +2197,7 @@ } ], "displayName": "Google Play APK Expansion library", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-market_apk_expansion", "path": "extras/google/market_apk_expansion", @@ -2226,7 +2226,7 @@ } ], "displayName": "Google Play Licensing Library", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-market_licensing", "path": "extras/google/market_licensing", @@ -2256,7 +2256,7 @@ } ], "displayName": "Android Auto API Simulators", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-simulators", "path": "extras/google/simulators", @@ -2285,7 +2285,7 @@ } ], "displayName": "Google USB Driver", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-usb_driver", "path": "extras/google/usb_driver", @@ -2314,7 +2314,7 @@ } ], "displayName": "Google Web Driver", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "extras-google-webdriver", "path": "extras/google/webdriver", @@ -2984,7 +2984,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-10-default-armeabi-v7a", "path": "system-images/android-10/default/armeabi-v7a", @@ -3030,7 +3030,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-10-default-x86", "path": "system-images/android-10/default/x86", @@ -3078,7 +3078,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-10-google_apis-armeabi-v7a", "path": "system-images/android-10/google_apis/armeabi-v7a", @@ -3130,7 +3130,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-10-google_apis-x86", "path": "system-images/android-10/google_apis/x86", @@ -3179,7 +3179,7 @@ } ], "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-14-default-armeabi-v7a", "path": "system-images/android-14/default/armeabi-v7a", @@ -3229,7 +3229,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-15-default-armeabi-v7a", "path": "system-images/android-15/default/armeabi-v7a", @@ -3275,7 +3275,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-15-default-x86", "path": "system-images/android-15/default/x86", @@ -3323,7 +3323,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-15-google_apis-armeabi-v7a", "path": "system-images/android-15/google_apis/armeabi-v7a", @@ -3375,7 +3375,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-15-google_apis-x86", "path": "system-images/android-15/google_apis/x86", @@ -3431,7 +3431,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-16-default-armeabi-v7a", "path": "system-images/android-16/default/armeabi-v7a", @@ -3470,7 +3470,7 @@ } ], "displayName": "MIPS System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "mips-android-sysimage-license", "name": "system-image-16-default-mips", "path": "system-images/android-16/default/mips", @@ -3516,7 +3516,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-16-default-x86", "path": "system-images/android-16/default/x86", @@ -3564,7 +3564,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-16-google_apis-armeabi-v7a", "path": "system-images/android-16/google_apis/armeabi-v7a", @@ -3616,7 +3616,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-16-google_apis-x86", "path": "system-images/android-16/google_apis/x86", @@ -3672,7 +3672,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-17-default-armeabi-v7a", "path": "system-images/android-17/default/armeabi-v7a", @@ -3711,7 +3711,7 @@ } ], "displayName": "MIPS System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "mips-android-sysimage-license", "name": "system-image-17-default-mips", "path": "system-images/android-17/default/mips", @@ -3757,7 +3757,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-17-default-x86", "path": "system-images/android-17/default/x86", @@ -3811,7 +3811,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-17-google_apis-armeabi-v7a", "path": "system-images/android-17/google_apis/armeabi-v7a", @@ -3863,7 +3863,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-17-google_apis-x86", "path": "system-images/android-17/google_apis/x86", @@ -3919,7 +3919,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-18-default-armeabi-v7a", "path": "system-images/android-18/default/armeabi-v7a", @@ -3965,7 +3965,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-18-default-x86", "path": "system-images/android-18/default/x86", @@ -4013,7 +4013,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-18-google_apis-armeabi-v7a", "path": "system-images/android-18/google_apis/armeabi-v7a", @@ -4065,7 +4065,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-18-google_apis-x86", "path": "system-images/android-18/google_apis/x86", @@ -4121,7 +4121,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-19-default-armeabi-v7a", "path": "system-images/android-19/default/armeabi-v7a", @@ -4167,7 +4167,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-19-default-x86", "path": "system-images/android-19/default/x86", @@ -4215,7 +4215,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-19-google_apis-armeabi-v7a", "path": "system-images/android-19/google_apis/armeabi-v7a", @@ -4267,7 +4267,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-19-google_apis-x86", "path": "system-images/android-19/google_apis/x86", @@ -4316,7 +4316,7 @@ } ], "displayName": "Android TV ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-android-tv-armeabi-v7a", "path": "system-images/android-21/android-tv/armeabi-v7a", @@ -4353,7 +4353,7 @@ } ], "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-android-tv-x86", "path": "system-images/android-21/android-tv/x86", @@ -4392,7 +4392,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-default-arm64-v8a", "path": "system-images/android-21/default/arm64-v8a", @@ -4438,7 +4438,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-default-armeabi-v7a", "path": "system-images/android-21/default/armeabi-v7a", @@ -4484,7 +4484,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-default-x86", "path": "system-images/android-21/default/x86", @@ -4530,7 +4530,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-default-x86_64", "path": "system-images/android-21/default/x86_64", @@ -4571,7 +4571,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-google_apis-arm64-v8a", "path": "system-images/android-21/google_apis/arm64-v8a", @@ -4623,7 +4623,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-google_apis-armeabi-v7a", "path": "system-images/android-21/google_apis/armeabi-v7a", @@ -4675,7 +4675,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-google_apis-x86", "path": "system-images/android-21/google_apis/x86", @@ -4727,7 +4727,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-21-google_apis-x86_64", "path": "system-images/android-21/google_apis/x86_64", @@ -4776,7 +4776,7 @@ } ], "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-android-tv-x86", "path": "system-images/android-22/android-tv/x86", @@ -4815,7 +4815,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-default-arm64-v8a", "path": "system-images/android-22/default/arm64-v8a", @@ -4861,7 +4861,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-default-armeabi-v7a", "path": "system-images/android-22/default/armeabi-v7a", @@ -4907,7 +4907,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-default-x86", "path": "system-images/android-22/default/x86", @@ -4953,7 +4953,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-default-x86_64", "path": "system-images/android-22/default/x86_64", @@ -4994,7 +4994,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-google_apis-arm64-v8a", "path": "system-images/android-22/google_apis/arm64-v8a", @@ -5046,7 +5046,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-google_apis-armeabi-v7a", "path": "system-images/android-22/google_apis/armeabi-v7a", @@ -5098,7 +5098,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-google_apis-x86", "path": "system-images/android-22/google_apis/x86", @@ -5150,7 +5150,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-22-google_apis-x86_64", "path": "system-images/android-22/google_apis/x86_64", @@ -5199,7 +5199,7 @@ } ], "displayName": "Android TV ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-android-tv-armeabi-v7a", "path": "system-images/android-23/android-tv/armeabi-v7a", @@ -5243,7 +5243,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-android-tv-x86", "path": "system-images/android-23/android-tv/x86", @@ -5282,7 +5282,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-default-arm64-v8a", "path": "system-images/android-23/default/arm64-v8a", @@ -5328,7 +5328,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-default-armeabi-v7a", "path": "system-images/android-23/default/armeabi-v7a", @@ -5374,7 +5374,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-default-x86", "path": "system-images/android-23/default/x86", @@ -5420,7 +5420,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-default-x86_64", "path": "system-images/android-23/default/x86_64", @@ -5461,7 +5461,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-google_apis-arm64-v8a", "path": "system-images/android-23/google_apis/arm64-v8a", @@ -5513,7 +5513,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-google_apis-armeabi-v7a", "path": "system-images/android-23/google_apis/armeabi-v7a", @@ -5565,7 +5565,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-google_apis-x86", "path": "system-images/android-23/google_apis/x86", @@ -5617,7 +5617,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-23-google_apis-x86_64", "path": "system-images/android-23/google_apis/x86_64", @@ -5673,7 +5673,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-android-tv-x86", "path": "system-images/android-24/android-tv/x86", @@ -5712,7 +5712,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-default-arm64-v8a", "path": "system-images/android-24/default/arm64-v8a", @@ -5758,7 +5758,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-default-armeabi-v7a", "path": "system-images/android-24/default/armeabi-v7a", @@ -5804,7 +5804,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-default-x86", "path": "system-images/android-24/default/x86", @@ -5850,7 +5850,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-default-x86_64", "path": "system-images/android-24/default/x86_64", @@ -5898,7 +5898,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-google_apis-arm64-v8a", "path": "system-images/android-24/google_apis/arm64-v8a", @@ -5950,7 +5950,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-google_apis-x86", "path": "system-images/android-24/google_apis/x86", @@ -6002,7 +6002,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-google_apis-x86_64", "path": "system-images/android-24/google_apis/x86_64", @@ -6056,7 +6056,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-24-google_apis_playstore-x86", "path": "system-images/android-24/google_apis_playstore/x86", @@ -6112,7 +6112,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-android-tv-x86", "path": "system-images/android-25/android-tv/x86", @@ -6158,7 +6158,7 @@ } }, "displayName": "Android Wear ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-android-wear-armeabi-v7a", "path": "system-images/android-25/android-wear/armeabi-v7a", @@ -6202,7 +6202,7 @@ } }, "displayName": "Android Wear Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-android-wear-x86", "path": "system-images/android-25/android-wear/x86", @@ -6241,7 +6241,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-default-arm64-v8a", "path": "system-images/android-25/default/arm64-v8a", @@ -6287,7 +6287,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-default-x86", "path": "system-images/android-25/default/x86", @@ -6333,7 +6333,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-default-x86_64", "path": "system-images/android-25/default/x86_64", @@ -6374,7 +6374,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-google_apis-arm64-v8a", "path": "system-images/android-25/google_apis/arm64-v8a", @@ -6426,7 +6426,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-google_apis-armeabi-v7a", "path": "system-images/android-25/google_apis/armeabi-v7a", @@ -6478,7 +6478,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-google_apis-x86", "path": "system-images/android-25/google_apis/x86", @@ -6530,7 +6530,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-google_apis-x86_64", "path": "system-images/android-25/google_apis/x86_64", @@ -6584,7 +6584,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-25-google_apis_playstore-x86", "path": "system-images/android-25/google_apis_playstore/x86", @@ -6655,7 +6655,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-26-android-tv-x86", "path": "system-images/android-26/android-tv/x86", @@ -6701,7 +6701,7 @@ } }, "displayName": "Android Wear Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-26-android-wear-x86", "path": "system-images/android-26/android-wear/x86", @@ -6752,7 +6752,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-26-default-arm64-v8a", "path": "system-images/android-26/default/arm64-v8a", @@ -6796,7 +6796,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-26-default-x86", "path": "system-images/android-26/default/x86", @@ -6840,7 +6840,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-26-default-x86_64", "path": "system-images/android-26/default/x86_64", @@ -6891,7 +6891,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-26-google_apis-arm64-v8a", "path": "system-images/android-26/google_apis/arm64-v8a", @@ -6958,7 +6958,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-26-google_apis-x86", "path": "system-images/android-26/google_apis/x86", @@ -7025,7 +7025,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-26-google_apis-x86_64", "path": "system-images/android-26/google_apis/x86_64", @@ -7094,7 +7094,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-26-google_apis_playstore-x86", "path": "system-images/android-26/google_apis_playstore/x86", @@ -7150,7 +7150,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-27-android-tv-x86", "path": "system-images/android-27/android-tv/x86", @@ -7201,7 +7201,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-27-default-arm64-v8a", "path": "system-images/android-27/default/arm64-v8a", @@ -7245,7 +7245,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-27-default-x86", "path": "system-images/android-27/default/x86", @@ -7289,7 +7289,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-27-default-x86_64", "path": "system-images/android-27/default/x86_64", @@ -7340,7 +7340,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-27-google_apis-arm64-v8a", "path": "system-images/android-27/google_apis/arm64-v8a", @@ -7407,7 +7407,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-27-google_apis-x86", "path": "system-images/android-27/google_apis/x86", @@ -7476,7 +7476,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-27-google_apis_playstore-x86", "path": "system-images/android-27/google_apis_playstore/x86", @@ -7537,7 +7537,7 @@ } }, "displayName": "Automotive Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-28-android-automotive-playstore-x86", "path": "system-images/android-28/android-automotive-playstore/x86", @@ -7582,7 +7582,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-28-android-tv-x86", "path": "system-images/android-28/android-tv/x86", @@ -7628,7 +7628,7 @@ } }, "displayName": "Wear OS Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-28-android-wear-x86", "path": "system-images/android-28/android-wear/x86", @@ -7679,7 +7679,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-28-default-arm64-v8a", "path": "system-images/android-28/default/arm64-v8a", @@ -7716,7 +7716,7 @@ } ], "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-28-default-x86", "path": "system-images/android-28/default/x86", @@ -7753,7 +7753,7 @@ } ], "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-28-default-x86_64", "path": "system-images/android-28/default/x86_64", @@ -7804,7 +7804,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-28-google_apis-arm64-v8a", "path": "system-images/android-28/google_apis/arm64-v8a", @@ -7871,7 +7871,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-28-google_apis-x86", "path": "system-images/android-28/google_apis/x86", @@ -7938,7 +7938,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-28-google_apis-x86_64", "path": "system-images/android-28/google_apis/x86_64", @@ -7997,7 +7997,7 @@ } }, "displayName": "Google ARM64-V8a Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-28-google_apis_playstore-arm64-v8a", "path": "system-images/android-28/google_apis_playstore/arm64-v8a", @@ -8064,7 +8064,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-28-google_apis_playstore-x86", "path": "system-images/android-28/google_apis_playstore/x86", @@ -8131,7 +8131,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-28-google_apis_playstore-x86_64", "path": "system-images/android-28/google_apis_playstore/x86_64", @@ -8192,7 +8192,7 @@ } }, "displayName": "Automotive with Play Store Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-android-automotive-playstore-x86", "path": "system-images/android-29/android-automotive-playstore/x86", @@ -8252,7 +8252,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-29-android-tv-x86", "path": "system-images/android-29/android-tv/x86", @@ -8291,7 +8291,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-default-arm64-v8a", "path": "system-images/android-29/default/arm64-v8a", @@ -8354,7 +8354,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-default-x86", "path": "system-images/android-29/default/x86", @@ -8417,7 +8417,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-default-x86_64", "path": "system-images/android-29/default/x86_64", @@ -8450,8 +8450,8 @@ { "arch": "all", "os": "all", - "sha1": "5ef4888ce47a24a9e96e45418f9fd26f1c8e0f13", - "size": 1170272392, + "sha1": "f96b1ee677f1bd2ddcff0b93485e9c65db2e6160", + "size": 1170273162, "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-29_r13.zip" } ], @@ -8468,7 +8468,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-29-google_apis-arm64-v8a", "path": "system-images/android-29/google_apis/arm64-v8a", @@ -8507,9 +8507,9 @@ { "arch": "all", "os": "all", - "sha1": "8dc45a7406b922116f2121f6826868c2e7087389", - "size": 1133056400, - "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-29_r12.zip" + "sha1": "7eb6ddbea82b94978f7c708fe09a05d8b977f9e9", + "size": 1136013362, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-29_r13.zip" } ], "dependencies": { @@ -8525,13 +8525,13 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-google_apis-x86", "path": "system-images/android-29/google_apis/x86", "revision": "29-google_apis-x86", "revision-details": { - "major:0": "12" + "major:0": "13" }, "type-details": { "abi:3": "x86", @@ -8564,9 +8564,9 @@ { "arch": "all", "os": "all", - "sha1": "8392b93dc05c380bb0e6b2375ba318c14b263b37", - "size": 1313280930, - "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-29_r12.zip" + "sha1": "50c2953ab13f312ed797a961577ee74a911d087d", + "size": 1314706136, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-29_r13.zip" } ], "dependencies": { @@ -8582,13 +8582,13 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-google_apis-x86_64", "path": "system-images/android-29/google_apis/x86_64", "revision": "29-google_apis-x86_64", "revision-details": { - "major:0": "12" + "major:0": "13" }, "type-details": { "abi:3": "x86_64", @@ -8622,17 +8622,10 @@ "archives": [ { "arch": "all", - "os": "macosx", - "sha1": "47705387b8fbbfe87e3679d272c29f7064defba8", - "size": 1242979582, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-29_r09-darwin.zip" - }, - { - "arch": "all", - "os": "linux", - "sha1": "47705387b8fbbfe87e3679d272c29f7064defba8", - "size": 1242979582, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-29_r09-linux.zip" + "os": "all", + "sha1": "4827a12df810087c899f522abe227f250a101548", + "size": 1167440660, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-29_r09.zip" } ], "dependencies": { @@ -8648,7 +8641,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-29-google_apis_playstore-arm64-v8a", "path": "system-images/android-29/google_apis_playstore/arm64-v8a", @@ -8686,10 +8679,10 @@ "archives": [ { "arch": "all", - "os": "windows", - "sha1": "1c45e690e9ee6a44f40549e9fb68d3fd52ba4970", - "size": 1153916727, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86-29_r08-windows.zip" + "os": "all", + "sha1": "f5cf2ac122f1a0d8a4a9361f786f79f48c54ccc3", + "size": 1161024570, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86-29_r09.zip" }, { "arch": "all", @@ -8712,9 +8705,9 @@ "path": "emulator" }, "min-revision:0": { - "major:0": "28", - "micro:2": "9", - "minor:1": "1" + "major:0": "30", + "micro:2": "2", + "minor:1": "8" } }, "dependency:1": { @@ -8729,13 +8722,13 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-google_apis_playstore-x86", "path": "system-images/android-29/google_apis_playstore/x86", "revision": "29-google_apis_playstore-x86", "revision-details": { - "major:0": "8" + "major:0": "9" }, "type-details": { "abi:3": "x86", @@ -8767,10 +8760,10 @@ "archives": [ { "arch": "all", - "os": "windows", - "sha1": "94835980b4a6eaeeb41936d7fb1381698e48433a", - "size": 1322004798, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-29_r08-windows.zip" + "os": "all", + "sha1": "96569c901288b5c29f3699c481ac491eadf368d1", + "size": 1328071660, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-29_r09.zip" }, { "arch": "all", @@ -8793,9 +8786,9 @@ "path": "emulator" }, "min-revision:0": { - "major:0": "28", - "micro:2": "9", - "minor:1": "1" + "major:0": "30", + "micro:2": "2", + "minor:1": "8" } }, "dependency:1": { @@ -8810,13 +8803,13 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-29-google_apis_playstore-x86_64", "path": "system-images/android-29/google_apis_playstore/x86_64", "revision": "29-google_apis_playstore-x86_64", "revision-details": { - "major:0": "8" + "major:0": "9" }, "type-details": { "abi:3": "x86_64", @@ -8871,7 +8864,7 @@ } }, "displayName": "Automotive with Play Store Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-android-automotive-playstore-x86_64", "path": "system-images/android-30/android-automotive-playstore/x86_64", @@ -8931,7 +8924,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-30-android-tv-x86", "path": "system-images/android-30/android-tv/x86", @@ -8977,7 +8970,7 @@ } }, "displayName": "Wear OS 3 ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-android-wear-arm64-v8a", "path": "system-images/android-30/android-wear/arm64-v8a", @@ -9021,7 +9014,7 @@ } }, "displayName": "Wear OS 3 Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-android-wear-x86", "path": "system-images/android-30/android-wear/x86", @@ -9060,7 +9053,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-default-arm64-v8a", "path": "system-images/android-30/default/arm64-v8a", @@ -9109,7 +9102,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-default-x86_64", "path": "system-images/android-30/default/x86_64", @@ -9160,7 +9153,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-30-google_apis-arm64-v8a", "path": "system-images/android-30/google_apis/arm64-v8a", @@ -9227,7 +9220,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-google_apis-x86", "path": "system-images/android-30/google_apis/x86", @@ -9294,7 +9287,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-google_apis-x86_64", "path": "system-images/android-30/google_apis/x86_64", @@ -9360,7 +9353,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-30-google_apis_playstore-arm64-v8a", "path": "system-images/android-30/google_apis_playstore/arm64-v8a", @@ -9441,7 +9434,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-30-google_apis_playstore-x86", "path": "system-images/android-30/google_apis_playstore/x86", @@ -9522,7 +9515,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-30-google_apis_playstore-x86_64", "path": "system-images/android-30/google_apis_playstore/x86_64", @@ -9593,7 +9586,7 @@ } }, "displayName": "Android TV ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-31-android-tv-arm64-v8a", "path": "system-images/android-31/android-tv/arm64-v8a", @@ -9652,7 +9645,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-31-android-tv-x86", "path": "system-images/android-31/android-tv/x86", @@ -9703,7 +9696,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-31-default-arm64-v8a", "path": "system-images/android-31/default/arm64-v8a", @@ -9752,7 +9745,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-31-default-x86_64", "path": "system-images/android-31/default/x86_64", @@ -9813,7 +9806,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-31-google_apis-arm64-v8a", "path": "system-images/android-31/google_apis/arm64-v8a", @@ -9880,7 +9873,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-31-google_apis-x86_64", "path": "system-images/android-31/google_apis/x86_64", @@ -9956,7 +9949,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-31-google_apis_playstore-arm64-v8a", "path": "system-images/android-31/google_apis_playstore/arm64-v8a", @@ -10023,7 +10016,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-31-google_apis_playstore-x86_64", "path": "system-images/android-31/google_apis_playstore/x86_64", @@ -10084,7 +10077,7 @@ } }, "displayName": "Android Automotive with Google Play arm64-v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-32-android-automotive-playstore-arm64-v8a", "path": "system-images/android-32/android-automotive-playstore/arm64-v8a", @@ -10137,7 +10130,7 @@ } }, "displayName": "Android Automotive with Google Play x86_64 System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-32-android-automotive-playstore-x86_64", "path": "system-images/android-32/android-automotive-playstore/x86_64", @@ -10192,7 +10185,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-32-default-arm64-v8a", "path": "system-images/android-32/default/arm64-v8a", @@ -10241,7 +10234,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-32-default-x86_64", "path": "system-images/android-32/default/x86_64", @@ -10302,7 +10295,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-32-google_apis-arm64-v8a", "path": "system-images/android-32/google_apis/arm64-v8a", @@ -10369,7 +10362,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-32-google_apis-x86_64", "path": "system-images/android-32/google_apis/x86_64", @@ -10445,7 +10438,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-32-google_apis_playstore-arm64-v8a", "path": "system-images/android-32/google_apis_playstore/arm64-v8a", @@ -10526,7 +10519,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-32-google_apis_playstore-x86_64", "path": "system-images/android-32/google_apis_playstore/x86_64", @@ -10587,7 +10580,7 @@ } }, "displayName": "Android Automotive with Google APIs arm64-v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-android-automotive-arm64-v8a", "path": "system-images/android-33/android-automotive/arm64-v8a", @@ -10640,7 +10633,7 @@ } }, "displayName": "Android Automotive with Google APIs x86_64 System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-android-automotive-x86_64", "path": "system-images/android-33/android-automotive/x86_64", @@ -10705,7 +10698,7 @@ } }, "displayName": "Android TV ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-android-tv-arm64-v8a", "path": "system-images/android-33/android-tv/arm64-v8a", @@ -10764,7 +10757,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-android-tv-x86", "path": "system-images/android-33/android-tv/x86", @@ -10810,7 +10803,7 @@ } }, "displayName": "Wear OS 4 ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-android-wear-arm64-v8a", "path": "system-images/android-33/android-wear/arm64-v8a", @@ -10854,7 +10847,7 @@ } }, "displayName": "Wear OS 4 Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-android-wear-x86_64", "path": "system-images/android-33/android-wear/x86_64", @@ -10905,7 +10898,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-default-arm64-v8a", "path": "system-images/android-33/default/arm64-v8a", @@ -10954,7 +10947,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-default-x86_64", "path": "system-images/android-33/default/x86_64", @@ -11015,7 +11008,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-33-google_apis-arm64-v8a", "path": "system-images/android-33/google_apis/arm64-v8a", @@ -11082,7 +11075,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-google_apis-x86_64", "path": "system-images/android-33/google_apis/x86_64", @@ -11151,7 +11144,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-33-google_apis_playstore-arm64-v8a", "path": "system-images/android-33/google_apis_playstore/arm64-v8a", @@ -11218,7 +11211,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-33-google_apis_playstore-x86_64", "path": "system-images/android-33/google_apis_playstore/x86_64", @@ -11293,7 +11286,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-33x-google_apis_playstore-arm64-v8a", "path": "system-images/android-33-ext4/google_apis_playstore/arm64-v8a", @@ -11342,7 +11335,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-33x-google_apis_playstore-x86_64", "path": "system-images/android-33-ext4/google_apis_playstore/x86_64", @@ -11405,7 +11398,7 @@ } }, "displayName": "Android TV ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-android-tv-arm64-v8a", "path": "system-images/android-34/android-tv/arm64-v8a", @@ -11465,7 +11458,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-android-tv-x86", "path": "system-images/android-34/android-tv/x86", @@ -11505,7 +11498,7 @@ } ], "displayName": "Wear OS 5 ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-android-wear-arm64-v8a", "path": "system-images/android-34/android-wear/arm64-v8a", @@ -11542,7 +11535,7 @@ } ], "displayName": "Wear OS 5 Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-android-wear-x86_64", "path": "system-images/android-34/android-wear/x86_64", @@ -11593,7 +11586,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-default-arm64-v8a", "path": "system-images/android-34/default/arm64-v8a", @@ -11642,7 +11635,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-default-x86_64", "path": "system-images/android-34/default/x86_64", @@ -11703,7 +11696,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-34-google_apis-arm64-v8a", "path": "system-images/android-34/google_apis/arm64-v8a", @@ -11771,7 +11764,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-google_apis-x86_64", "path": "system-images/android-34/google_apis/x86_64", @@ -11841,7 +11834,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-34-google_apis_playstore-arm64-v8a", "path": "system-images/android-34/google_apis_playstore/arm64-v8a", @@ -11910,7 +11903,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34-google_apis_playstore-x86_64", "path": "system-images/android-34/google_apis_playstore/x86_64", @@ -11973,7 +11966,7 @@ } }, "displayName": "Android Automotive with Google APIs arm64-v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34x-android-automotive-arm64-v8a", "path": "system-images/android-34-ext9/android-automotive/arm64-v8a", @@ -12026,7 +12019,7 @@ } }, "displayName": "Android Automotive with Google APIs x86_64 System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34x-android-automotive-x86_64", "path": "system-images/android-34-ext9/android-automotive/x86_64", @@ -12095,7 +12088,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-34x-google_apis_playstore-arm64-v8a", "path": "system-images/android-34-ext12/google_apis_playstore/arm64-v8a", @@ -12144,7 +12137,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-34x-google_apis_playstore-x86_64", "path": "system-images/android-34-ext12/google_apis_playstore/x86_64", @@ -12185,7 +12178,7 @@ } ], "displayName": "Wear OS 5.1 - Preview ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-35-android-wear-arm64-v8a", "path": "system-images/android-35/android-wear/arm64-v8a", @@ -12217,7 +12210,7 @@ } ], "displayName": "Wear OS 5.1 - Preview Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "system-image-35-android-wear-x86_64", "path": "system-images/android-35/android-wear/x86_64", @@ -12263,7 +12256,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-35-default-arm64-v8a", "path": "system-images/android-35/default/arm64-v8a", @@ -12308,7 +12301,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-35-default-x86_64", "path": "system-images/android-35/default/x86_64", @@ -12355,7 +12348,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-35-google_apis-arm64-v8a", "path": "system-images/android-35/google_apis/arm64-v8a", @@ -12413,7 +12406,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-35-google_apis-x86_64", "path": "system-images/android-35/google_apis/x86_64", @@ -12473,7 +12466,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-35-google_apis_playstore-arm64-v8a", "path": "system-images/android-35/google_apis_playstore/arm64-v8a", @@ -12531,7 +12524,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-35-google_apis_playstore-x86_64", "path": "system-images/android-35/google_apis_playstore/x86_64", @@ -12591,7 +12584,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-35-page_size_16kb-arm64-v8a", "path": "system-images/android-35/google_apis_playstore_ps16k/arm64-v8a", @@ -12653,7 +12646,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-35-page_size_16kb-x86_64", "path": "system-images/android-35/google_apis_playstore_ps16k/x86_64", @@ -12695,6 +12688,74 @@ } }, "35x": { + "android-wear": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "85f302e4038789563b3075c744645d06762a523c", + "size": 1235397800, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/arm64-v8a-35-ext15_r01.zip" + } + ], + "displayName": "Wear OS 5.1 ARM 64 v8a System Image", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "system-image-35x-android-wear-arm64-v8a", + "path": "system-images/android-35-ext15/android-wear/arm64-v8a", + "revision": "35x-android-wear-arm64-v8a", + "revision-details": { + "major:0": "1" + }, + "type-details": { + "abi:4": "arm64-v8a", + "api-level:0": "35x", + "base-extension:2": "false", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "15", + "tag:3": { + "display:1": "Wear OS 5.1", + "id:0": "android-wear" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "70b5cc9e0a070bb485113fba38df782aa3e21782", + "size": 1230585003, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/x86_64-35-ext15_r01.zip" + } + ], + "displayName": "Wear OS 5.1 Intel x86_64 Atom System Image", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "system-image-35x-android-wear-x86_64", + "path": "system-images/android-35-ext15/android-wear/x86_64", + "revision": "35x-android-wear-x86_64", + "revision-details": { + "major:0": "1" + }, + "type-details": { + "abi:4": "x86_64", + "api-level:0": "35x", + "base-extension:2": "false", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "15", + "tag:3": { + "display:1": "Wear OS 5.1", + "id:0": "android-wear" + } + } + } + }, "google_apis_playstore": { "arm64-v8a": { "archives": [ @@ -12719,7 +12780,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-35x-google_apis_playstore-arm64-v8a", "path": "system-images/android-35-ext14/google_apis_playstore/arm64-v8a", @@ -12768,7 +12829,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-35x-google_apis_playstore-x86_64", "path": "system-images/android-35-ext14/google_apis_playstore/x86_64", @@ -12796,16 +12857,16 @@ } } }, - "Baklava": { + "36": { "google_apis": { "arm64-v8a": { "archives": [ { "arch": "all", "os": "all", - "sha1": "9252bbb0cced0cfb7373a3236a7295ebf0f2945c", - "size": 1807500394, - "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-Baklava_r03.zip" + "sha1": "82c8c75e78c73e80a663472f278e61ae3219ff7e", + "size": 1814357571, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-36_r05.zip" } ], "dependencies": { @@ -12821,13 +12882,323 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, + "license": "android-sdk-arm-dbt-license", + "name": "system-image-36-google_apis-arm64-v8a", + "path": "system-images/android-36/google_apis/arm64-v8a", + "revision": "36-google_apis-arm64-v8a", + "revision-details": { + "major:0": "5" + }, + "type-details": { + "abi:5": "arm64-v8a", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "vendor:4": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "069c5654cb549e7ff7c817e7023d0c680a623f8c", + "size": 1706610245, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-36_r05.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "10", + "minor:1": "2" + } + } + }, + "displayName": "Google APIs Intel x86_64 Atom System Image", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "system-image-36-google_apis-x86_64", + "path": "system-images/android-36/google_apis/x86_64", + "revision": "36-google_apis-x86_64", + "revision-details": { + "major:0": "5" + }, + "type-details": { + "abi:5": "x86_64", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "vendor:4": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + }, + "google_apis_playstore": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "1605ca6608e2e83f250c4375e15489ade9169c52", + "size": 1835226829, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-36_r05.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "10", + "minor:1": "2" + } + } + }, + "displayName": "Google Play ARM 64 v8a System Image", + "last-available-day": 20174, + "license": "android-sdk-arm-dbt-license", + "name": "system-image-36-google_apis_playstore-arm64-v8a", + "path": "system-images/android-36/google_apis_playstore/arm64-v8a", + "revision": "36-google_apis_playstore-arm64-v8a", + "revision-details": { + "major:0": "5" + }, + "type-details": { + "abi:5": "arm64-v8a", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "Google Play", + "id:0": "google_apis_playstore" + }, + "vendor:4": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "b24c50ec8e211cc116f448b67f49ed482c55bd55", + "size": 1741001393, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-36_r05.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "10", + "minor:1": "2" + } + } + }, + "displayName": "Google Play Intel x86_64 Atom System Image", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "system-image-36-google_apis_playstore-x86_64", + "path": "system-images/android-36/google_apis_playstore/x86_64", + "revision": "36-google_apis_playstore-x86_64", + "revision-details": { + "major:0": "5" + }, + "type-details": { + "abi:5": "x86_64", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "Google Play", + "id:0": "google_apis_playstore" + }, + "vendor:4": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + }, + "page_size_16kb": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "da544188ab47a89f4b3cf6614523cf3cb3440129", + "size": 1887754420, + "url": "https://dl.google.com/android/repository/sys-img/page_size_16kb/arm64-v8a-playstore-ps16k-36_r05.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "10", + "minor:1": "2" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", + "last-available-day": 20174, + "license": "android-sdk-arm-dbt-license", + "name": "system-image-36-page_size_16kb-arm64-v8a", + "path": "system-images/android-36/google_apis_playstore_ps16k/arm64-v8a", + "revision": "36-page_size_16kb-arm64-v8a", + "revision-details": { + "major:0": "5" + }, + "type-details": { + "abi:6": "arm64-v8a", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:4": { + "display:1": "Google APIs PlayStore", + "id:0": "google_apis_playstore" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "d1f4ccf971300511e5f8d606c6d5fabf97647b36", + "size": 1738939657, + "url": "https://dl.google.com/android/repository/sys-img/page_size_16kb/x86_64-playstore-ps16k-36_r05.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "10", + "minor:1": "2" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google Play ARM Intel x86_64 Atom System Image", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "system-image-36-page_size_16kb-x86_64", + "path": "system-images/android-36/google_apis_playstore_ps16k/x86_64", + "revision": "36-page_size_16kb-x86_64", + "revision-details": { + "major:0": "5" + }, + "type-details": { + "abi:6": "x86_64", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:4": { + "display:1": "Google APIs PlayStore", + "id:0": "google_apis_playstore" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + } + }, + "Baklava": { + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "012427119cb7382eaea36bde92172cccd1eb2b7c", + "size": 1813124028, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-Baklava_r04.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "10", + "minor:1": "2" + } + } + }, + "displayName": "Google APIs ARM 64 v8a System Image", + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-Baklava-google_apis-arm64-v8a", "path": "system-images/android-Baklava/google_apis/arm64-v8a", "revision": "Baklava-google_apis-arm64-v8a", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:6": "arm64-v8a", @@ -12853,9 +13224,9 @@ { "arch": "all", "os": "all", - "sha1": "1548664b809576557fb4823e0f03e7c550fec443", - "size": 1814866164, - "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-Baklava_r03.zip" + "sha1": "a5158e787b4357422a8ebe971e2a310930adcb70", + "size": 1822731345, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-Baklava_r04.zip" } ], "dependencies": { @@ -12871,13 +13242,13 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-Baklava-google_apis-x86_64", "path": "system-images/android-Baklava/google_apis/x86_64", "revision": "Baklava-google_apis-x86_64", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:6": "x86_64", @@ -12905,9 +13276,9 @@ { "arch": "all", "os": "all", - "sha1": "029e0b3732aba5a4cb97621b84f5edea9b71775b", - "size": 1825799645, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-Baklava_r03.zip" + "sha1": "a04a36068b98b2fee3dea444425c4e38e6431876", + "size": 1832396476, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-Baklava_r04.zip" } ], "dependencies": { @@ -12923,13 +13294,13 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-Baklava-google_apis_playstore-arm64-v8a", "path": "system-images/android-Baklava/google_apis_playstore/arm64-v8a", "revision": "Baklava-google_apis_playstore-arm64-v8a", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:6": "arm64-v8a", @@ -12955,9 +13326,9 @@ { "arch": "all", "os": "all", - "sha1": "4fd21b8fa1b92c8f9a9f7838ffab55a1c344aa0a", - "size": 1848004792, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-Baklava_r03.zip" + "sha1": "1b274676d5920772015689ce480763caf6c72cd7", + "size": 1856730222, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-Baklava_r04.zip" } ], "dependencies": { @@ -12973,13 +13344,13 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-Baklava-google_apis_playstore-x86_64", "path": "system-images/android-Baklava/google_apis_playstore/x86_64", "revision": "Baklava-google_apis_playstore-x86_64", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:6": "x86_64", @@ -13007,9 +13378,9 @@ { "arch": "all", "os": "all", - "sha1": "9ed66f7ad190fedf5b20989a3914501234fbeff2", - "size": 1623140308, - "url": "https://dl.google.com/android/repository/sys-img/page_size_16kb/arm64-v8a-playstore-ps16k-Baklava_r03.zip" + "sha1": "fc3cf2d62ae0705ee0411d59e15fcb9d5e062f61", + "size": 1890722992, + "url": "https://dl.google.com/android/repository/sys-img/page_size_16kb/arm64-v8a-playstore-ps16k-Baklava_r04.zip" } ], "dependencies": { @@ -13025,13 +13396,13 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-arm-dbt-license", "name": "system-image-Baklava-page_size_16kb-arm64-v8a", "path": "system-images/android-Baklava/google_apis_playstore_ps16k/arm64-v8a", "revision": "Baklava-page_size_16kb-arm64-v8a", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:7": "arm64-v8a", @@ -13061,9 +13432,9 @@ { "arch": "all", "os": "all", - "sha1": "8242bdada27c1db6209d8b2fa68bd86d7b3ee3b9", - "size": 1588410201, - "url": "https://dl.google.com/android/repository/sys-img/page_size_16kb/x86_64-playstore-ps16k-Baklava_r03.zip" + "sha1": "10a84e0c1cbc56d6cd1cf6de17890603a88de395", + "size": 1862515759, + "url": "https://dl.google.com/android/repository/sys-img/page_size_16kb/x86_64-playstore-ps16k-Baklava_r04.zip" } ], "dependencies": { @@ -13079,13 +13450,13 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM Intel x86_64 Atom System Image", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "system-image-Baklava-page_size_16kb-x86_64", "path": "system-images/android-Baklava/google_apis_playstore_ps16k/x86_64", "revision": "Baklava-page_size_16kb-x86_64", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:7": "x86_64", @@ -13899,6 +14270,19 @@ } } }, + "latest": { + "build-tools": "36.0.0", + "cmake": "3.31.6", + "cmdline-tools": "19.0", + "emulator": "35.5.8", + "ndk": "28.0.13004108", + "ndk-bundle": "22.1.7171670", + "platform-tools": "35.0.2", + "platforms": "36", + "skiaparser": "7", + "sources": "36", + "tools": "26.1.1" + }, "licenses": { "android-googletv-license": [ "Terms and Conditions\n\nThis is the Google TV Add-on for the Android Software Development Kit License Agreement.\n\n1. Introduction\n\n1.1 The Google TV Add-on for the Android Software Development Kit (referred to in this License Agreement as the \"Google TV Add-on\" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the Google TV Add-on.\n\n1.2 \"Google\" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.\n\n2. Accepting this License Agreement\n\n2.1 In order to use the Google TV Add-on, you must first agree to this License Agreement. You may not use the Google TV Add-on if you do not accept this License Agreement.\n\n2.2 You can accept this License Agreement by:\n\n(A) clicking to accept or agree to this License Agreement, where this option is made available to you; or\n\n(B) by actually using the Google TV Add-on. In this case, you agree that use of the Google TV Add-on constitutes acceptance of the License Agreement from that point onwards.\n\n2.3 You may not use the Google TV Add-on and may not accept the Licensing Agreement if you are a person barred from receiving the Google TV Add-on under the laws of the United States or other countries including the country in which you are resident or from which you use the Google TV Add-on.\n\n2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the Licensing Agreement or use the Google TV Add-on on behalf of your employer or other entity.\n\n3. Google TV Add-on License from Google\n\n3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non- assignable and non-exclusive license to use the Google TV Add-on solely to develop applications to run on the Google TV platform.\n\n3.2 You agree that Google or third parties own all legal right, title and interest in and to the Google TV Add-on, including any Intellectual Property Rights that subsist in the Google TV Add-on. \"Intellectual Property Rights\" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.\n\n3.3 Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Google TV Add-on or any part of the Google TV Add-on. Except to the extent required by applicable third party licenses, you may not load any part of the Google TV Add-on onto a mobile handset, television, or any other hardware device except a personal computer, combine any part of the Google TV Add-on with other software, or distribute any software or device incorporating a part of the Google TV Add-on.\n\n3.4 Use, reproduction and distribution of components of the Google TV Add-on licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.\n\n3.5 You agree that the form and nature of the Google TV Add-on that Google provides may change without prior notice to you and that future versions of the Google TV Add-on may be incompatible with applications developed on previous versions of the Google TV Add-on. You agree that Google may stop (permanently or temporarily) providing the Google TV Add-on (or any features within the Google TV Add-on) to you or to users generally at Google's sole discretion, without prior notice to you.\n\n3.6 Nothing in this License Agreement gives you a right to use any of Google's or it’s licensors’ trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.\n\n3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the Google TV Add-on.\n\n4. Use of the Google TV Add-on by You\n\n4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the Google TV Add-on, including any intellectual property rights that subsist in those applications.\n\n4.2 You agree to use the Google TV Add-on and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).\n\n4.3 You agree that if you use the Google TV Add-on to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, your must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you explicit permission to do so.\n\n4.4 You agree that you will not engage in any activity with the Google TV Add-on, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google, Multichannel Video Program Distributors or any mobile communications carrier.\n\n4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through the Google TV platform and/or applications for the Google TV platform, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.\n\n4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.\n\n5. Your Developer Credentials\n\n5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.\n\n6. Privacy and Information\n\n6.1 In order to continually innovate and improve the Google TV Add-on, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the Google TV Add-on are being used and how they are being used. Before any of this information is collected, the Google TV Add-on will notify you and seek your consent. If you withhold consent, the information will not be collected.\n\n6.2 The data collected is examined in the aggregate to improve the Google TV Add-on and is maintained in accordance with Google's Privacy Policy.\n\n7. Third Party Applications for the Google TV Platform\n\n7.1 If you use the Google TV Add-on to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.\n\n7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.\n\n7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.\n\n8. Using Google TV APIs\n\n8.1 If you use any Google TV API to retrieve data from Google, you acknowledge that the data (“Google TV API Content”) may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service. Some portions of the Google TV API Content are licensed to Google by third parties, including but not limited to Tribune Media Services\n\n8.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.\n\n8.3 Except as explicitly permitted in Section 3 (Google TV Add-on License from Google), you must:\n\n(a) not modify nor format the Google TV API Content except to the extent reasonably and technically necessary to optimize the display such Google TV API Content in your application;\n\n(b) not edit the Google TV API Content in a manner that renders the Google TV API Content inaccurate of alters its inherent meaning (provided that displaying excerpts will not violate the foregoing); or\n\n(c) not create any commercial audience measurement tool or service using the Google TV API Content\n\n9. Terminating this License Agreement\n\n9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.\n\n9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the Google TV Add-on and any relevant developer credentials.\n\n9.3 Google may at any time, terminate this License Agreement with you if:\n\n(A) you have breached any provision of this License Agreement; or\n\n(B) Google is required to do so by law; or\n\n(C) the partner with whom Google offered certain parts of Google TV Add-on (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the Google TV Add-on to you; or\n\n(D) Google decides to no longer providing the Google TV Add-on or certain parts of the Google TV Add-on to users in the country in which you are resident or from which you use the service, or the provision of the Google TV Add-on or certain Google TV Add-on services to you by Google is, in Google's sole discretion, no longer commercially viable.\n\n9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.\n\n10. DISCLAIMER OF WARRANTIES\n\n10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE GOOGLE TV ADD-ON IS AT YOUR SOLE RISK AND THAT THE GOOGLE TV ADD-ON IS PROVIDED \"AS IS\" AND \"AS AVAILABLE\" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.\n\n10.2 YOUR USE OF THE GOOGLE TV ADD-ON AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE GOOGLE TV ADD-ON IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.\n\n10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\n\n11. LIMITATION OF LIABILITY\n\n11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.\n\n12. Indemnification\n\n12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the Google TV Add-on, (b) any application you develop on the Google TV Add-on that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.\n\n13. Changes to the License Agreement\n\n13.1 Google may make changes to the License Agreement as it distributes new versions of the Google TV Add-on.\n\n14. General Legal Terms\n\n14.1 This License Agreement constitute the whole legal agreement between you and Google and govern your use of the Google TV Add-on (excluding any services which Google may provide to you under a separate written agreement), and completely replace any prior agreements between you and Google in relation to the Google TV Add-on.\n\n14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.\n\n14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.\n\n14.4 You acknowledge and agree that Google’s API data licensors and each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.\n\n14.5 EXPORT RESTRICTIONS. THE GOOGLE TV ADD-ON IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE GOOGLE TV ADD-ON. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.\n\n14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.\n\n14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.\n\n\nAugust 15, 2011" @@ -13962,7 +14346,7 @@ } }, "displayName": "Android SDK Build-Tools 17", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14011,7 +14395,7 @@ } }, "displayName": "Android SDK Build-Tools 18.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14060,7 +14444,7 @@ } }, "displayName": "Android SDK Build-Tools 18.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14109,7 +14493,7 @@ } }, "displayName": "Android SDK Build-Tools 18.1.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14158,7 +14542,7 @@ } }, "displayName": "Android SDK Build-Tools 19", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14207,7 +14591,7 @@ } }, "displayName": "Android SDK Build-Tools 19.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14256,7 +14640,7 @@ } }, "displayName": "Android SDK Build-Tools 19.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14305,7 +14689,7 @@ } }, "displayName": "Android SDK Build-Tools 19.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14354,7 +14738,7 @@ } }, "displayName": "Android SDK Build-Tools 19.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/19.1.0", @@ -14402,7 +14786,7 @@ } }, "displayName": "Android SDK Build-Tools 20", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/20.0.0", @@ -14450,7 +14834,7 @@ } }, "displayName": "Android SDK Build-Tools 21", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14499,7 +14883,7 @@ } }, "displayName": "Android SDK Build-Tools 21.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14548,7 +14932,7 @@ } }, "displayName": "Android SDK Build-Tools 21.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14597,7 +14981,7 @@ } }, "displayName": "Android SDK Build-Tools 21.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14646,7 +15030,7 @@ } }, "displayName": "Android SDK Build-Tools 21.1.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14695,7 +15079,7 @@ } }, "displayName": "Android SDK Build-Tools 21.1.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/21.1.2", @@ -14743,7 +15127,7 @@ } }, "displayName": "Android SDK Build-Tools 22", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14792,7 +15176,7 @@ } }, "displayName": "Android SDK Build-Tools 22.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/22.0.1", @@ -14840,7 +15224,7 @@ } }, "displayName": "Android SDK Build-Tools 23", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -14889,7 +15273,7 @@ } }, "displayName": "Android SDK Build-Tools 23.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/23.0.1", @@ -14937,7 +15321,7 @@ } }, "displayName": "Android SDK Build-Tools 23.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/23.0.2", @@ -14985,7 +15369,7 @@ } }, "displayName": "Android SDK Build-Tools 23.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/23.0.3", @@ -15033,7 +15417,7 @@ } }, "displayName": "Android SDK Build-Tools 24", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.0", @@ -15081,7 +15465,7 @@ } }, "displayName": "Android SDK Build-Tools 24.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.1", @@ -15129,7 +15513,7 @@ } }, "displayName": "Android SDK Build-Tools 24.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.2", @@ -15177,7 +15561,7 @@ } }, "displayName": "Android SDK Build-Tools 24.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.3", @@ -15225,7 +15609,7 @@ } }, "displayName": "Android SDK Build-Tools 25", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.0", @@ -15273,7 +15657,7 @@ } }, "displayName": "Android SDK Build-Tools 25.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.1", @@ -15321,7 +15705,7 @@ } }, "displayName": "Android SDK Build-Tools 25.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.2", @@ -15369,7 +15753,7 @@ } }, "displayName": "Android SDK Build-Tools 25.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.3", @@ -15417,7 +15801,7 @@ } }, "displayName": "Android SDK Build-Tools 26", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.0", @@ -15465,7 +15849,7 @@ } }, "displayName": "Android SDK Build-Tools 26.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.1", @@ -15513,7 +15897,7 @@ } }, "displayName": "Android SDK Build-Tools 26.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.2", @@ -15561,7 +15945,7 @@ } }, "displayName": "Android SDK Build-Tools 26.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.3", @@ -15609,7 +15993,7 @@ } }, "displayName": "Android SDK Build-Tools 27", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.0", @@ -15657,7 +16041,7 @@ } }, "displayName": "Android SDK Build-Tools 27.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.1", @@ -15705,7 +16089,7 @@ } }, "displayName": "Android SDK Build-Tools 27.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.2", @@ -15753,7 +16137,7 @@ } }, "displayName": "Android SDK Build-Tools 27.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.3", @@ -15801,7 +16185,7 @@ } }, "displayName": "Android SDK Build-Tools 28", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.0", @@ -15849,7 +16233,7 @@ } }, "displayName": "Android SDK Build-Tools 28-rc1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -15899,7 +16283,7 @@ } }, "displayName": "Android SDK Build-Tools 28-rc2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -15949,7 +16333,7 @@ } }, "displayName": "Android SDK Build-Tools 28.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.1", @@ -15997,7 +16381,7 @@ } }, "displayName": "Android SDK Build-Tools 28.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.2", @@ -16045,7 +16429,7 @@ } }, "displayName": "Android SDK Build-Tools 28.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.3", @@ -16093,7 +16477,7 @@ } }, "displayName": "Android SDK Build-Tools 29", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.0", @@ -16141,7 +16525,7 @@ } }, "displayName": "Android SDK Build-Tools 29-rc1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -16191,7 +16575,7 @@ } }, "displayName": "Android SDK Build-Tools 29-rc2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -16241,7 +16625,7 @@ } }, "displayName": "Android SDK Build-Tools 29-rc3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -16291,7 +16675,7 @@ } }, "displayName": "Android SDK Build-Tools 29.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.1", @@ -16339,7 +16723,7 @@ } }, "displayName": "Android SDK Build-Tools 29.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.2", @@ -16387,7 +16771,7 @@ } }, "displayName": "Android SDK Build-Tools 29.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.3", @@ -16435,7 +16819,7 @@ } }, "displayName": "Android SDK Build-Tools 30", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.0", @@ -16483,7 +16867,7 @@ } }, "displayName": "Android SDK Build-Tools 30.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.1", @@ -16531,7 +16915,7 @@ } }, "displayName": "Android SDK Build-Tools 30.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.2", @@ -16579,7 +16963,7 @@ } }, "displayName": "Android SDK Build-Tools 30.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.3", @@ -16620,7 +17004,7 @@ } ], "displayName": "Android SDK Build-Tools 31", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/31.0.0", @@ -16661,7 +17045,7 @@ } ], "displayName": "Android SDK Build-Tools 32", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/32.0.0", @@ -16702,7 +17086,7 @@ } ], "displayName": "Android SDK Build-Tools 32.1-rc1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/32.1.0-rc1", @@ -16744,7 +17128,7 @@ } ], "displayName": "Android SDK Build-Tools 33", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.0", @@ -16785,7 +17169,7 @@ } ], "displayName": "Android SDK Build-Tools 33.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.1", @@ -16826,7 +17210,7 @@ } ], "displayName": "Android SDK Build-Tools 33.0.2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.2", @@ -16867,7 +17251,7 @@ } ], "displayName": "Android SDK Build-Tools 33.0.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.3", @@ -16908,7 +17292,7 @@ } ], "displayName": "Android SDK Build-Tools 34", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/34.0.0", @@ -16949,7 +17333,7 @@ } ], "displayName": "Android SDK Build-Tools 34-rc1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/34.0.0-rc1", @@ -16991,7 +17375,7 @@ } ], "displayName": "Android SDK Build-Tools 34-rc2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/34.0.0-rc2", @@ -17033,7 +17417,7 @@ } ], "displayName": "Android SDK Build-Tools 34-rc3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/34.0.0-rc3", @@ -17114,7 +17498,7 @@ } ], "displayName": "Android SDK Build-Tools 35", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/35.0.0", @@ -17155,7 +17539,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc1", @@ -17197,7 +17581,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc2", @@ -17239,7 +17623,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc3", @@ -17281,7 +17665,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc4", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc4", @@ -17323,7 +17707,7 @@ } ], "displayName": "Android SDK Build-Tools 35.0.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/35.0.1", @@ -17339,6 +17723,47 @@ } } }, + "36.0.0": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "b0b6376977657e8ad9b969bacf4093601da2c6fb", + "size": 63737259, + "url": "https://dl.google.com/android/repository/build-tools_r36_linux.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "f16ccffd34de8790dede813a6c7d8e2c11a27b50", + "size": 58699878, + "url": "https://dl.google.com/android/repository/build-tools_r36_windows.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "199ae0047ee61e842f8ee0c6d3918e44fb9a1f83", + "size": 79121749, + "url": "https://dl.google.com/android/repository/build-tools_r36_macosx.zip" + } + ], + "displayName": "Android SDK Build-Tools 36", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "build-tools", + "path": "build-tools/36.0.0", + "revision": "36.0.0", + "revision-details": { + "major:0": "36", + "micro:2": "0", + "minor:1": "0" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, "36.0.0-rc1": { "archives": [ { @@ -17364,7 +17789,7 @@ } ], "displayName": "Android SDK Build-Tools 36-rc1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.0.0-rc1", @@ -17406,7 +17831,7 @@ } ], "displayName": "Android SDK Build-Tools 36-rc3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.0.0-rc3", @@ -17448,7 +17873,7 @@ } ], "displayName": "Android SDK Build-Tools 36-rc4", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.0.0-rc4", @@ -17464,6 +17889,48 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "36.0.0-rc5": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "68e91b122664fead061c7963643de494a0dbb73e", + "size": 61709567, + "url": "https://dl.google.com/android/repository/build-tools_r36-rc5_linux.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "9d1f6fbf7ff15be61a9b122a055221b5e0a0edf7", + "size": 58459079, + "url": "https://dl.google.com/android/repository/build-tools_r36-rc5_windows.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "76aab21b11691d27c7012cd2288cb31f6e02e3b9", + "size": 78724827, + "url": "https://dl.google.com/android/repository/build-tools_r36-rc5_macosx.zip" + } + ], + "displayName": "Android SDK Build-Tools 36-rc5", + "last-available-day": 20174, + "license": "android-sdk-preview-license", + "name": "build-tools", + "path": "build-tools/36.0.0-rc5", + "revision": "36.0.0-rc5", + "revision-details": { + "major:0": "36", + "micro:2": "0", + "minor:1": "0", + "preview:3": "5" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "cmake": { @@ -17499,7 +17966,7 @@ } ], "displayName": "CMake 3.10.2.4988404", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.10.2.4988404", @@ -17540,7 +18007,7 @@ } ], "displayName": "CMake 3.18.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.18.1", @@ -17581,7 +18048,7 @@ } ], "displayName": "CMake 3.22.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.22.1", @@ -17622,7 +18089,7 @@ } ], "displayName": "CMake 3.30.3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.30.3", @@ -17663,7 +18130,7 @@ } ], "displayName": "CMake 3.30.4", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.30.4", @@ -17704,7 +18171,7 @@ } ], "displayName": "CMake 3.30.5", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.30.5", @@ -17745,7 +18212,7 @@ } ], "displayName": "CMake 3.31.0", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.0", @@ -17786,7 +18253,7 @@ } ], "displayName": "CMake 3.31.1", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.1", @@ -17827,7 +18294,7 @@ } ], "displayName": "CMake 3.31.4", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.4", @@ -17868,7 +18335,7 @@ } ], "displayName": "CMake 3.31.5", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.5", @@ -17884,6 +18351,47 @@ } } }, + "3.31.6": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "a54551dabd5daf8cc99f7f51769fd00ca759be0a", + "size": 30771638, + "url": "https://dl.google.com/android/repository/cmake-3.31.6-linux.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "78c3bf819d7bf6144783aeef06c5f9cbd3f8f5a9", + "size": 42861179, + "url": "https://dl.google.com/android/repository/cmake-3.31.6-darwin.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "1efbef168291afc5d6ae449b1a016f8bf034b0fc", + "size": 20491843, + "url": "https://dl.google.com/android/repository/cmake-3.31.6-windows.zip" + } + ], + "displayName": "CMake 3.31.6", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "cmake", + "path": "cmake/3.31.6", + "revision": "3.31.6", + "revision-details": { + "major:0": "3", + "micro:2": "6", + "minor:1": "31" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, "3.6.4111459": { "archives": [ { @@ -17916,7 +18424,7 @@ } ], "displayName": "CMake 3.6.4111459", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.6.4111459", @@ -17959,7 +18467,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/1.0", @@ -17999,7 +18507,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/10.0", @@ -18077,7 +18585,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/11.0", @@ -18193,7 +18701,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/12.0", @@ -18271,7 +18779,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/13.0", @@ -18311,7 +18819,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/13.0-rc01", @@ -18352,7 +18860,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/14.0-alpha01", @@ -18393,7 +18901,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/16.0", @@ -18433,7 +18941,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/16.0-alpha01", @@ -18474,7 +18982,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/17.0", @@ -18489,6 +18997,46 @@ } } }, + "19.0": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "5fdcc763663eefb86a5b8879697aa6088b041e70", + "size": 164760899, + "url": "https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "c3e06a1959762e89167d1cbaa988605f6f7c1d24", + "size": 143250852, + "url": "https://dl.google.com/android/repository/commandlinetools-mac-13114758_latest.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "54a582f3bf73e04253602f2d1c80bd5868aac115", + "size": 143040480, + "url": "https://dl.google.com/android/repository/commandlinetools-win-13114758_latest.zip" + } + ], + "displayName": "Android SDK Command-line Tools", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "cmdline-tools", + "path": "cmdline-tools/19.0", + "revision": "19.0", + "revision-details": { + "major:0": "19", + "minor:1": "0" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, "19.0-rc01": { "archives": [ { @@ -18514,7 +19062,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/19.0-alpha01", @@ -18555,7 +19103,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "obsolete": "true", @@ -18596,7 +19144,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/2.1", @@ -18636,7 +19184,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/3.0", @@ -18676,7 +19224,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/4.0", @@ -18716,7 +19264,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/5.0", @@ -18756,7 +19304,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/6.0", @@ -18796,7 +19344,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/7.0", @@ -18836,7 +19384,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/8.0", @@ -18876,7 +19424,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/9.0", @@ -19809,6 +20357,54 @@ } } }, + "35.3.12": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "c859ea9c0aa625cc4cf43ad13ba665891155c101", + "size": 297030576, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-12990079.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "67d4cc43dfb3983ae210ab51371a3c698fe9b226", + "size": 392170242, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-12990079.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "074fd2fb62febe34ba75c4eed75668aff7c7cc03", + "size": 311190387, + "url": "https://dl.google.com/android/repository/emulator-darwin_aarch64-12990079.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "9319f59bf621430a0f8ec25f124343fadcc4912f", + "size": 419761989, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-12990079.zip" + } + ], + "displayName": "Android Emulator", + "last-available-day": 20139, + "license": "android-sdk-license", + "name": "emulator", + "path": "emulator", + "revision": "35.3.12", + "revision-details": { + "major:0": "35", + "micro:2": "12", + "minor:1": "3" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, "35.4.8": { "archives": [ { @@ -19841,7 +20437,7 @@ } ], "displayName": "Android Emulator", - "last-available-day": 20131, + "last-available-day": 20139, "license": "android-sdk-license", "name": "emulator", "path": "emulator", @@ -19857,6 +20453,54 @@ } } }, + "35.4.9": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "dc8d58c3948dcfa946417afaa60ad397c7329765", + "size": 298118508, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-13025442.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "230baf96ebcb0d27779e5bd55ffeab7cfa98294c", + "size": 393818294, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-13025442.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "08ff527ae85394e8d9957d5ea17fffdc14abf035", + "size": 311961707, + "url": "https://dl.google.com/android/repository/emulator-darwin_aarch64-13025442.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "819cf13914861226713ca61beb9cbc01165d5044", + "size": 421982739, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-13025442.zip" + } + ], + "displayName": "Android Emulator", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "emulator", + "path": "emulator", + "revision": "35.4.9", + "revision-details": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, "35.5.2": { "archives": [ { @@ -19904,6 +20548,150 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "35.5.3": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "cea757d3e73c0cf40bb6f74b2aa40831d9c3a87b", + "size": 303896991, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-13023280.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "5f2004b9cf55db7473803069e77c5facce07a585", + "size": 401205692, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-13023280.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "4c997b00e0814603fbab1a19821ecda469e0cbec", + "size": 319180896, + "url": "https://dl.google.com/android/repository/emulator-darwin_aarch64-13023280.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "7b1bdb613b34af21fd5888c811999ba173e553a9", + "size": 429277282, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-13023280.zip" + } + ], + "displayName": "Android Emulator", + "last-available-day": 20139, + "license": "android-sdk-preview-license", + "name": "emulator", + "path": "emulator", + "revision": "35.5.3", + "revision-details": { + "major:0": "35", + "micro:2": "3", + "minor:1": "5" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, + "35.5.8": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "30a3e80f55f09d64ffc72e7ecd4dc962e2385fad", + "size": 301171981, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-13181580.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "ab51e1aaa71e1c95ac96b0087af0442ac80a62d6", + "size": 394047089, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-13181580.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "cee00a0495b1cdde264e71c364f411b6f84ca3bc", + "size": 312156337, + "url": "https://dl.google.com/android/repository/emulator-darwin_aarch64-13181580.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "11fb3933985bb97b49861ef42299c8a3800bc9d7", + "size": 423381031, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-13181580.zip" + } + ], + "displayName": "Android Emulator", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "emulator", + "path": "emulator", + "revision": "35.5.8", + "revision-details": { + "major:0": "35", + "micro:2": "8", + "minor:1": "5" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, + "35.6.2": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "d895e040a36a339490b44187bb57d09aa0e9e514", + "size": 323950884, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-13248170.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "5c46bfdbb66bad0926ea01028e7224b7c10ee1f7", + "size": 401371702, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-13248170.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "8ef0aeaa7b1224bf66021c077885741eab64a42f", + "size": 319286666, + "url": "https://dl.google.com/android/repository/emulator-darwin_aarch64-13248170.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "d9bbf3b50551e8a68df56b137c7cdb14428c8b5b", + "size": 429402312, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-13248170.zip" + } + ], + "displayName": "Android Emulator", + "last-available-day": 20174, + "license": "android-sdk-preview-license", + "name": "emulator", + "path": "emulator", + "revision": "35.6.2", + "revision-details": { + "major:0": "35", + "micro:2": "2", + "minor:1": "6" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "extras": { @@ -20029,7 +20817,7 @@ } }, "displayName": "NDK (Side by side) 16.1.4479499", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/16.1.4479499", @@ -20091,7 +20879,7 @@ } }, "displayName": "NDK (Side by side) 17.2.4988734", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/17.2.4988734", @@ -20153,7 +20941,7 @@ } }, "displayName": "NDK (Side by side) 18.1.5063045", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/18.1.5063045", @@ -20215,7 +21003,7 @@ } }, "displayName": "NDK (Side by side) 19.0.5232133", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "obsolete": "true", @@ -20278,7 +21066,7 @@ } }, "displayName": "NDK (Side by side) 19.2.5345600", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/19.2.5345600", @@ -20340,7 +21128,7 @@ } }, "displayName": "NDK (Side by side) 20.0.5392854", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "obsolete": "true", @@ -20404,7 +21192,7 @@ } }, "displayName": "NDK (Side by side) 20.0.5471264", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "obsolete": "true", @@ -20468,7 +21256,7 @@ } }, "displayName": "NDK (Side by side) 20.0.5594570", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/20.0.5594570", @@ -20530,7 +21318,7 @@ } }, "displayName": "NDK (Side by side) 20.1.5948944", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/20.1.5948944", @@ -20578,7 +21366,7 @@ } }, "displayName": "NDK (Side by side) 21.0.6011959", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.0.6011959", @@ -20627,7 +21415,7 @@ } }, "displayName": "NDK (Side by side) 21.0.6113669", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.0.6113669", @@ -20675,7 +21463,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6210238", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.1.6210238", @@ -20731,7 +21519,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6273396", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.1.6273396", @@ -20787,7 +21575,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6352462", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.1.6352462", @@ -20842,7 +21630,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6363665", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.1.6363665", @@ -20898,7 +21686,7 @@ } }, "displayName": "NDK (Side by side) 21.2.6472646", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.2.6472646", @@ -20953,7 +21741,7 @@ } }, "displayName": "NDK (Side by side) 21.3.6528147", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.3.6528147", @@ -21008,7 +21796,7 @@ } }, "displayName": "NDK (Side by side) 21.4.7075529", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.4.7075529", @@ -21063,7 +21851,7 @@ } }, "displayName": "NDK (Side by side) 22.0.6917172", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/22.0.6917172", @@ -21119,7 +21907,7 @@ } }, "displayName": "NDK (Side by side) 22.0.7026061", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/22.0.7026061", @@ -21174,7 +21962,7 @@ } }, "displayName": "NDK (Side by side) 22.1.7171670", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/22.1.7171670", @@ -21229,7 +22017,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7123448", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7123448", @@ -21285,7 +22073,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7196353", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7196353", @@ -21341,7 +22129,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7272597", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7272597", @@ -21397,7 +22185,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7344513", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7344513", @@ -21446,7 +22234,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7421159", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7421159", @@ -21495,7 +22283,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7530507", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7530507", @@ -21544,7 +22332,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7599858", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/23.0.7599858", @@ -21592,7 +22380,7 @@ } }, "displayName": "NDK (Side by side) 23.1.7779620", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/23.1.7779620", @@ -21640,7 +22428,7 @@ } }, "displayName": "NDK (Side by side) 23.2.8568313", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/23.2.8568313", @@ -21688,7 +22476,7 @@ } }, "displayName": "NDK (Side by side) 24.0.7856742", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/24.0.7856742", @@ -21737,7 +22525,7 @@ } }, "displayName": "NDK (Side by side) 24.0.7956693", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/24.0.7956693", @@ -21786,7 +22574,7 @@ } }, "displayName": "NDK (Side by side) 24.0.8079956", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/24.0.8079956", @@ -21835,7 +22623,7 @@ } }, "displayName": "NDK (Side by side) 24.0.8215888", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/24.0.8215888", @@ -21883,7 +22671,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8151533", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8151533", @@ -21932,7 +22720,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8221429", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8221429", @@ -21981,7 +22769,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8355429", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8355429", @@ -22030,7 +22818,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8528842", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8528842", @@ -22079,7 +22867,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8775105", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/25.0.8775105", @@ -22127,7 +22915,7 @@ } }, "displayName": "NDK (Side by side) 25.1.8937393", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/25.1.8937393", @@ -22175,7 +22963,7 @@ } }, "displayName": "NDK (Side by side) 25.2.9519653", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/25.2.9519653", @@ -22223,7 +23011,7 @@ } }, "displayName": "NDK (Side by side) 26.0.10404224", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/26.0.10404224", @@ -22265,7 +23053,7 @@ } ], "displayName": "NDK (Side by side) 26.0.10636728", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/26.0.10636728", @@ -22307,7 +23095,7 @@ } ], "displayName": "NDK (Side by side) 26.0.10792818", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.0.10792818", @@ -22348,7 +23136,7 @@ } ], "displayName": "NDK (Side by side) 26.1.10909125", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.1.10909125", @@ -22389,7 +23177,7 @@ } ], "displayName": "NDK (Side by side) 26.2.11394342", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.2.11394342", @@ -22430,7 +23218,7 @@ } ], "displayName": "NDK (Side by side) 26.3.11579264", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.3.11579264", @@ -22471,7 +23259,7 @@ } ], "displayName": "NDK (Side by side) 27.0.11718014", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/27.0.11718014", @@ -22513,7 +23301,7 @@ } ], "displayName": "NDK (Side by side) 27.0.11902837", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/27.0.11902837", @@ -22555,7 +23343,7 @@ } ], "displayName": "NDK (Side by side) 27.0.12077973", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/27.0.12077973", @@ -22596,7 +23384,7 @@ } ], "displayName": "NDK (Side by side) 27.1.12297006", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/27.1.12297006", @@ -22637,7 +23425,7 @@ } ], "displayName": "NDK (Side by side) 27.2.12479018", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/27.2.12479018", @@ -22678,7 +23466,7 @@ } ], "displayName": "NDK (Side by side) 28.0.12433566", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/28.0.12433566", @@ -22720,7 +23508,7 @@ } ], "displayName": "NDK (Side by side) 28.0.12674087", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/28.0.12674087", @@ -22762,7 +23550,7 @@ } ], "displayName": "NDK (Side by side) 28.0.12916984", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/28.0.12916984", @@ -22804,7 +23592,7 @@ } ], "displayName": "NDK (Side by side) 28.0.13004108", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk", "path": "ndk/28.0.13004108", @@ -22819,6 +23607,48 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "29.0.13113456-rc1": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "ec2d8801e42009edf66be853c1bab9ba216378f9", + "size": 773995428, + "url": "https://dl.google.com/android/repository/android-ndk-r29-beta1-linux.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "485c42ff6a04ef0ec9612420b3226de443f46e7a", + "size": 1027792565, + "url": "https://dl.google.com/android/repository/android-ndk-r29-beta1-darwin.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "90347ffa01dd1833b9ff116865958976fd66c264", + "size": 821548547, + "url": "https://dl.google.com/android/repository/android-ndk-r29-beta1-windows.zip" + } + ], + "displayName": "NDK (Side by side) 29.0.13113456", + "last-available-day": 20174, + "license": "android-sdk-preview-license", + "name": "ndk", + "path": "ndk/29.0.13113456", + "revision": "29.0.13113456-rc1", + "revision-details": { + "major:0": "29", + "micro:2": "13113456", + "minor:1": "0", + "preview:3": "1" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "ndk-bundle": { @@ -22868,7 +23698,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -22930,7 +23760,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -22992,7 +23822,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23054,7 +23884,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "obsolete": "true", @@ -23117,7 +23947,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23179,7 +24009,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "obsolete": "true", @@ -23243,7 +24073,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "obsolete": "true", @@ -23307,7 +24137,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23369,7 +24199,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23417,7 +24247,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23466,7 +24296,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23514,7 +24344,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23570,7 +24400,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23626,7 +24456,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23681,7 +24511,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23737,7 +24567,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23792,7 +24622,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23847,7 +24677,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23902,7 +24732,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -23958,7 +24788,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -24013,7 +24843,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -24068,7 +24898,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -24124,7 +24954,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -24180,7 +25010,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -24236,7 +25066,7 @@ } }, "displayName": "NDK", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -24496,7 +25326,7 @@ } ], "displayName": "Android SDK Platform-Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platform-tools", "path": "platform-tools", @@ -24525,7 +25355,7 @@ } ], "displayName": "Android SDK Platform 10", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-10", @@ -24564,7 +25394,7 @@ } ], "displayName": "Android SDK Platform 11", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-11", @@ -24603,7 +25433,7 @@ } ], "displayName": "Android SDK Platform 12", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-12", @@ -24642,7 +25472,7 @@ } ], "displayName": "Android SDK Platform 13", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-13", @@ -24681,7 +25511,7 @@ } ], "displayName": "Android SDK Platform 14", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-14", @@ -24720,7 +25550,7 @@ } ], "displayName": "Android SDK Platform 15", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-15", @@ -24759,7 +25589,7 @@ } ], "displayName": "Android SDK Platform 16", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-16", @@ -24798,7 +25628,7 @@ } ], "displayName": "Android SDK Platform 17", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-17", @@ -24837,7 +25667,7 @@ } ], "displayName": "Android SDK Platform 18", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-18", @@ -24876,7 +25706,7 @@ } ], "displayName": "Android SDK Platform 19", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-19", @@ -24929,7 +25759,7 @@ } ], "displayName": "Android SDK Platform 2", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -24969,7 +25799,7 @@ } ], "displayName": "Android SDK Platform 20", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-20", @@ -25008,7 +25838,7 @@ } ], "displayName": "Android SDK Platform 21", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-21", @@ -25047,7 +25877,7 @@ } ], "displayName": "Android SDK Platform 22", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-22", @@ -25086,7 +25916,7 @@ } ], "displayName": "Android SDK Platform 23", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-23", @@ -25125,7 +25955,7 @@ } ], "displayName": "Android SDK Platform 24", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-24", @@ -25164,7 +25994,7 @@ } ], "displayName": "Android SDK Platform 25", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-25", @@ -25203,7 +26033,7 @@ } ], "displayName": "Android SDK Platform 26", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-26", @@ -25242,7 +26072,7 @@ } ], "displayName": "Android SDK Platform 27", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-27", @@ -25281,7 +26111,7 @@ } ], "displayName": "Android SDK Platform 28", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-28", @@ -25320,7 +26150,7 @@ } ], "displayName": "Android SDK Platform 29", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-29", @@ -25373,7 +26203,7 @@ } ], "displayName": "Android SDK Platform 3", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -25413,7 +26243,7 @@ } ], "displayName": "Android SDK Platform 30", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-30", @@ -25452,7 +26282,7 @@ } ], "displayName": "Android SDK Platform 31", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-31", @@ -25491,7 +26321,7 @@ } ], "displayName": "Android SDK Platform 32", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-32", @@ -25530,7 +26360,7 @@ } ], "displayName": "Android SDK Platform 33", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-33", @@ -25570,7 +26400,7 @@ } ], "displayName": "Android SDK Platform 33-ext5", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-33-ext5", @@ -25605,7 +26435,7 @@ } ], "displayName": "Android SDK Platform 34", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -25651,7 +26481,7 @@ } ], "displayName": "Android SDK Platform 34-ext12", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-34-ext12", @@ -25684,7 +26514,7 @@ } ], "displayName": "Android SDK Platform 35", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-35", @@ -25722,7 +26552,7 @@ } ], "displayName": "Android SDK Platform 35-ext14", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-35-ext14", @@ -25744,6 +26574,39 @@ } } }, + "36": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "feed7041652a3744582bb233506013969dbadb46", + "size": 65749783, + "url": "https://dl.google.com/android/repository/platform-36_r01.zip" + } + ], + "displayName": "Android SDK Platform 36", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "platforms", + "path": "platforms/android-36", + "revision": "36", + "revision-details": { + "major:0": "1" + }, + "type-details": { + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns11:platformDetailsType" + }, + "extension-level:1": "17", + "layoutlib:3": { + "element-attributes": { + "api": "15" + } + } + } + }, "4": { "archives": [ { @@ -25769,7 +26632,7 @@ } ], "displayName": "Android SDK Platform 4", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -25823,7 +26686,7 @@ } ], "displayName": "Android SDK Platform 5", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -25877,7 +26740,7 @@ } ], "displayName": "Android SDK Platform 6", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -25917,7 +26780,7 @@ } ], "displayName": "Android SDK Platform 7", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-7", @@ -25956,7 +26819,7 @@ } ], "displayName": "Android SDK Platform 8", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-8", @@ -25995,7 +26858,7 @@ } ], "displayName": "Android SDK Platform 9", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-9", @@ -26028,19 +26891,19 @@ { "arch": "all", "os": "all", - "sha1": "69909269fe199e2d3817c10ecc13cd338da55d3b", - "size": 65460575, - "url": "https://dl.google.com/android/repository/platform-Baklava_r04.zip" + "sha1": "9dcd49009a005b0bdce2384cad0d9ca0fe74f1ce", + "size": 65604289, + "url": "https://dl.google.com/android/repository/platform-Baklava_r05.zip" } ], "displayName": "Android SDK Platform Baklava", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-Baklava", "revision": "Baklava", "revision-details": { - "major:0": "4" + "major:0": "5" }, "type-details": { "api-level:0": "35", @@ -26099,7 +26962,7 @@ } ], "displayName": "Android SDK Platform UpsideDownCake", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -26253,7 +27116,7 @@ } ], "displayName": "Layout Inspector image server for API S", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "skiaparser", "path": "skiaparser/2", @@ -26374,7 +27237,7 @@ } ], "displayName": "Layout Inspector image server for API 29-30", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "skiaparser", "path": "skiaparser/1", @@ -26387,6 +27250,52 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "7": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "bb1f92866924dc64e035516d36866f6d851c5f6d", + "size": 9075303, + "url": "https://dl.google.com/android/repository/skiaparser-13188227-linux-x64.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "a4a0037269a48d8eca8cdb8bc289e7b35b829b45", + "size": 2939258, + "url": "https://dl.google.com/android/repository/skiaparser-13188227-darwin-x64.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "44c55cb986abfb8d5dc2293db3a625b8d81dc1f6", + "size": 2601969, + "url": "https://dl.google.com/android/repository/skiaparser-13188227-darwin-aarch64.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "9c47bdff5f0bb8947426d766d28b35a6f3bba988", + "size": 2956517, + "url": "https://dl.google.com/android/repository/skiaparser-13188227-win-x64.zip" + } + ], + "displayName": "Layout Inspector image server for API 31-36", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "skiaparser", + "path": "skiaparser/3", + "revision": "7", + "revision-details": { + "major:0": "7" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "sources": { @@ -26401,7 +27310,7 @@ } ], "displayName": "Sources for Android 14", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "obsolete": "true", @@ -26431,7 +27340,7 @@ } ], "displayName": "Sources for Android 15", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-15", @@ -26460,7 +27369,7 @@ } ], "displayName": "Sources for Android 16", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-16", @@ -26489,7 +27398,7 @@ } ], "displayName": "Sources for Android 17", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-17", @@ -26518,7 +27427,7 @@ } ], "displayName": "Sources for Android 18", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-18", @@ -26547,7 +27456,7 @@ } ], "displayName": "Sources for Android 19", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-19", @@ -26576,7 +27485,7 @@ } ], "displayName": "Sources for Android 20", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-20", @@ -26605,7 +27514,7 @@ } ], "displayName": "Sources for Android 21", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-21", @@ -26634,7 +27543,7 @@ } ], "displayName": "Sources for Android 22", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-22", @@ -26663,7 +27572,7 @@ } ], "displayName": "Sources for Android 23", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-23", @@ -26692,7 +27601,7 @@ } ], "displayName": "Sources for Android 24", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-24", @@ -26721,7 +27630,7 @@ } ], "displayName": "Sources for Android 25", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-25", @@ -26750,7 +27659,7 @@ } ], "displayName": "Sources for Android 26", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-26", @@ -26779,7 +27688,7 @@ } ], "displayName": "Sources for Android 27", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-27", @@ -26808,7 +27717,7 @@ } ], "displayName": "Sources for Android 28", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-28", @@ -26837,7 +27746,7 @@ } ], "displayName": "Sources for Android 29", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-29", @@ -26866,7 +27775,7 @@ } ], "displayName": "Sources for Android 30", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-30", @@ -26895,7 +27804,7 @@ } ], "displayName": "Sources for Android 31", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-31", @@ -26924,7 +27833,7 @@ } ], "displayName": "Sources for Android 32", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-32", @@ -26953,7 +27862,7 @@ } ], "displayName": "Sources for Android 33", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-33", @@ -26983,7 +27892,7 @@ } ], "displayName": "Sources for Android 34", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-34", @@ -27013,7 +27922,7 @@ } ], "displayName": "Sources for Android 35", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "sources", "path": "sources/android-35", @@ -27031,6 +27940,34 @@ }, "extension-level:2": "13" } + }, + "36": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "57b6cbc3acff91f6b1bc56f4083c9446052a9851", + "size": 51345538, + "url": "https://dl.google.com/android/repository/source-36_r01.zip" + } + ], + "displayName": "Sources for Android 36", + "last-available-day": 20174, + "license": "android-sdk-license", + "name": "sources", + "path": "sources/android-36", + "revision": "36", + "revision-details": { + "major:0": "1" + }, + "type-details": { + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns11:sourceDetailsType" + }, + "extension-level:1": "17" + } } }, "tools": { @@ -27082,7 +28019,7 @@ } }, "displayName": "Android SDK Tools", - "last-available-day": 20131, + "last-available-day": 20174, "license": "android-sdk-license", "name": "tools", "obsolete": "true", diff --git a/pkgs/development/mobile/androidenv/test-suite.nix b/pkgs/development/mobile/androidenv/test-suite.nix index 20386f06b324..ba745109462b 100644 --- a/pkgs/development/mobile/androidenv/test-suite.nix +++ b/pkgs/development/mobile/androidenv/test-suite.nix @@ -2,6 +2,7 @@ callPackage, lib, stdenv, + meta, }: let examples-shell = callPackage ./examples/shell.nix { licenseAccepted = true; }; @@ -25,5 +26,14 @@ stdenv.mkDerivation { passthru.tests = all-tests; - meta.timeout = 60; + # This is the toplevel package, so inherit the update script + passthru.updateScript = { + command = [ ./update.sh ]; + attrPath = "androidenv.test-suite"; + supportedFeatures = [ "commit" ]; + }; + + meta = meta // { + timeout = 60; + }; } diff --git a/pkgs/development/mobile/androidenv/tools.nix b/pkgs/development/mobile/androidenv/tools.nix index 6cd41305bebb..0ed6bc86b544 100644 --- a/pkgs/development/mobile/androidenv/tools.nix +++ b/pkgs/development/mobile/androidenv/tools.nix @@ -1,17 +1,48 @@ -{deployAndroidPackage, lib, stdenv, package, autoPatchelfHook, makeWrapper, os, pkgs, pkgsi686Linux, postInstall}: +{ + deployAndroidPackage, + lib, + stdenv, + package, + os, + arch, + autoPatchelfHook, + makeWrapper, + pkgs, + pkgsi686Linux, + postInstall, + meta, +}: deployAndroidPackage { name = "androidsdk-tools"; - inherit package; - nativeBuildInputs = [ makeWrapper ] - ++ lib.optionals (os == "linux") [ autoPatchelfHook ]; + inherit package os arch; + nativeBuildInputs = [ makeWrapper ] ++ lib.optionals (os == "linux") [ autoPatchelfHook ]; buildInputs = lib.optional (os == "linux") ( - (with pkgs; [ glibc freetype fontconfig fontconfig.lib - stdenv.cc.cc.libgcc or null # fix for https://github.com/NixOS/nixpkgs/issues/226357 - ]) - ++ (with pkgs.xorg; [ libX11 libXrender libXext ]) - ++ lib.optionals (os == "linux" && stdenv.isx86_64) (with pkgsi686Linux; [ glibc xorg.libX11 xorg.libXrender xorg.libXext fontconfig.lib freetype zlib ]) - ); + (with pkgs; [ + glibc + freetype + fontconfig + fontconfig.lib + stdenv.cc.cc.libgcc or null # fix for https://github.com/NixOS/nixpkgs/issues/226357 + ]) + ++ (with pkgs.xorg; [ + libX11 + libXrender + libXext + ]) + ++ lib.optionals (os == "linux" && stdenv.isx86_64) ( + with pkgsi686Linux; + [ + glibc + xorg.libX11 + xorg.libXrender + xorg.libXext + fontconfig.lib + freetype + zlib + ] + ) + ); patchInstructions = '' ${lib.optionalString (os == "linux") '' @@ -31,7 +62,15 @@ deployAndroidPackage { # Wrap monitor script wrapProgram $PWD/monitor \ --prefix PATH : ${pkgs.jdk8}/bin \ - --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath (with pkgs; [ xorg.libX11 xorg.libXtst ])} + --prefix LD_LIBRARY_PATH : ${ + lib.makeLibraryPath ( + with pkgs; + [ + xorg.libX11 + xorg.libXtst + ] + ) + } # Patch all script shebangs patchShebangs . @@ -40,5 +79,5 @@ deployAndroidPackage { ${postInstall} ''; - meta.license = lib.licenses.unfree; + inherit meta; } diff --git a/pkgs/development/mobile/androidenv/update.sh b/pkgs/development/mobile/androidenv/update.sh new file mode 100755 index 000000000000..f79676069f9c --- /dev/null +++ b/pkgs/development/mobile/androidenv/update.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +pushd "$(dirname "$0")" &>/dev/null || exit 1 +./fetchrepo.sh && ./mkrepo.sh +popd &>/dev/null diff --git a/pkgs/development/node-packages/composition.nix b/pkgs/development/node-packages/composition.nix index 659c43a1feec..6d49245bff5d 100644 --- a/pkgs/development/node-packages/composition.nix +++ b/pkgs/development/node-packages/composition.nix @@ -13,7 +13,6 @@ let inherit (pkgs) stdenv lib - python2 runCommand writeTextFile writeShellScript diff --git a/pkgs/development/node-packages/node-env.nix b/pkgs/development/node-packages/node-env.nix index 4123ca029664..b1ba5526816d 100644 --- a/pkgs/development/node-packages/node-env.nix +++ b/pkgs/development/node-packages/node-env.nix @@ -1,9 +1,9 @@ # This file originates from node2nix -{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript}: +{lib, stdenv, nodejs, pkgs, libtool, runCommand, writeTextFile, writeShellScript}: let - python = if nodejs ? python then nodejs.python else python2; + inherit (nodejs) python; # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise tarWrapper = runCommand "tarWrapper" {} '' diff --git a/pkgs/development/python-modules/aiocoap/default.nix b/pkgs/development/python-modules/aiocoap/default.nix index 109627e26ce2..2e7cec7569dc 100644 --- a/pkgs/development/python-modules/aiocoap/default.nix +++ b/pkgs/development/python-modules/aiocoap/default.nix @@ -19,16 +19,16 @@ buildPythonPackage rec { pname = "aiocoap"; - version = "0.4.12"; + version = "0.4.14"; pyproject = true; - disabled = pythonOlder "3.7"; + disabled = pythonOlder "3.10"; src = fetchFromGitHub { owner = "chrysn"; repo = "aiocoap"; tag = version; - hash = "sha256-yy9TsNTdk7kfLilXsjDCVAe1C3O70P09It71zU26PKo="; + hash = "sha256-v0OzRWHlGaBKqqcIyAlVafd/siXVwaTAZqw+Sstju3s="; }; build-system = [ setuptools ]; @@ -59,29 +59,14 @@ buildPythonPackage rec { "tests/test_oscore_plugtest.py" ]; - disabledTests = - [ - # Communication is not properly mocked - "test_uri_parser" - # Doctest - "test_001" - ] - ++ lib.optionals (pythonAtLeast "3.12") [ - # https://github.com/chrysn/aiocoap/issues/339 - "TestServerTCP::test_big_resource" - "TestServerTCP::test_empty_accept" - "TestServerTCP::test_error_resources" - "TestServerTCP::test_fast_resource" - "TestServerTCP::test_js_accept" - "TestServerTCP::test_manualbig_resource" - "TestServerTCP::test_nonexisting_resource" - "TestServerTCP::test_replacing_resource" - "TestServerTCP::test_root_resource" - "TestServerTCP::test_slow_resource" - "TestServerTCP::test_slowbig_resource" - "TestServerTCP::test_spurious_resource" - "TestServerTCP::test_unacceptable_accept" - ]; + disabledTests = [ + # Communication is not properly mocked + "test_uri_parser" + # Doctest + "test_001" + # CLI test + "test_help" + ]; pythonImportsCheck = [ "aiocoap" ]; @@ -89,7 +74,7 @@ buildPythonPackage rec { description = "Python CoAP library"; homepage = "https://aiocoap.readthedocs.io/"; changelog = "https://github.com/chrysn/aiocoap/blob/${version}/NEWS"; - license = with licenses; [ mit ]; + license = licenses.mit; maintainers = with maintainers; [ fab ]; }; } diff --git a/pkgs/development/python-modules/aiopulse/default.nix b/pkgs/development/python-modules/aiopulse/default.nix index 7309f774b14f..5d3527104be8 100644 --- a/pkgs/development/python-modules/aiopulse/default.nix +++ b/pkgs/development/python-modules/aiopulse/default.nix @@ -9,14 +9,14 @@ buildPythonPackage rec { pname = "aiopulse"; - version = "0.4.6"; + version = "0.4.7"; pyproject = true; disabled = pythonOlder "3.6"; src = fetchPypi { inherit pname version; - hash = "sha256-juubQHAAQYN9mSssfF3prYByy+wxscZFxwgspJU8zYA="; + hash = "sha256-DM/zDFoTYgaW+o2YYv4bDAja5iwabIBfFJ7Yep4Fywc="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/auditwheel/default.nix b/pkgs/development/python-modules/auditwheel/default.nix index 55085347745c..c010fd7dce1d 100644 --- a/pkgs/development/python-modules/auditwheel/default.nix +++ b/pkgs/development/python-modules/auditwheel/default.nix @@ -17,14 +17,14 @@ buildPythonPackage rec { pname = "auditwheel"; - version = "6.2.0"; + version = "6.3.0"; pyproject = true; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-T8n3eM2B2sVoIOjN7phC3ES49DX4eDYG2r1JZNRjizA="; + hash = "sha256-BccKI0+hTBQKptkHYTXZVQli2VhJkRuNXQQZo63QnwA="; }; build-system = [ setuptools-scm ]; diff --git a/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix b/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix index aa05085d1968..9935c3e0cc99 100644 --- a/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix +++ b/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix @@ -6,24 +6,30 @@ azure-common, azure-mgmt-core, isodate, + setuptools, + typing-extensions, }: buildPythonPackage rec { pname = "azure-mgmt-containerregistry"; - version = "10.3.0"; - format = "setuptools"; + version = "12.0.0"; + pyproject = true; disabled = pythonOlder "3.8"; src = fetchPypi { - inherit pname version; - hash = "sha256-riFlGFXfsZxC2R1rOpZcbGEeI/i8S/cTiDXmUtL5GOM="; + pname = "azure_mgmt_containerregistry"; + inherit version; + hash = "sha256-8Z+PqniB3q8rUBXA6wUKkuI4DNnRje4zzbXyfUSgbAM="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ azure-common azure-mgmt-core isodate + typing-extensions ]; # no tests included @@ -36,7 +42,7 @@ buildPythonPackage rec { meta = with lib; { description = "Microsoft Azure Container Registry Client Library for Python"; - homepage = "https://github.com/Azure/azure-sdk-for-python"; + homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/containerregistry/azure-mgmt-containerregistry"; changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-containerregistry_${version}/sdk/containerregistry/azure-mgmt-containerregistry/CHANGELOG.md"; license = licenses.mit; maintainers = [ ]; diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index a49d213a117f..80636d58b042 100644 --- a/pkgs/development/python-modules/boto3-stubs/default.nix +++ b/pkgs/development/python-modules/boto3-stubs/default.nix @@ -359,7 +359,7 @@ buildPythonPackage rec { pname = "boto3-stubs"; - version = "1.37.20"; + version = "1.37.23"; pyproject = true; disabled = pythonOlder "3.7"; @@ -367,7 +367,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "boto3_stubs"; inherit version; - hash = "sha256-fkGik7zbvqmbIdanOAgi58ijGZL21n2ImJrrums1zcI="; + hash = "sha256-AR8G2tzV7zxifsmAi5r6Thg3sPAJ2CuCCfEqhP+7OGc="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/botocore-stubs/default.nix b/pkgs/development/python-modules/botocore-stubs/default.nix index e86b479d4cbf..cd45dc4a24d2 100644 --- a/pkgs/development/python-modules/botocore-stubs/default.nix +++ b/pkgs/development/python-modules/botocore-stubs/default.nix @@ -10,7 +10,7 @@ buildPythonPackage rec { pname = "botocore-stubs"; - version = "1.37.20"; + version = "1.37.23"; pyproject = true; disabled = pythonOlder "3.7"; @@ -18,7 +18,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "botocore_stubs"; inherit version; - hash = "sha256-KVuSGMCocfk5JuAMG71pVvArOsmwWKRb27AL9ssEVAI="; + hash = "sha256-N5H0Y86UFIEcluKatmAryAapjLRrHVXaE/+UXeGQ5bY="; }; nativeBuildInputs = [ setuptools ]; diff --git a/pkgs/development/python-modules/coiled/default.nix b/pkgs/development/python-modules/coiled/default.nix index fe11ef7dd8e5..e46e38f083cd 100644 --- a/pkgs/development/python-modules/coiled/default.nix +++ b/pkgs/development/python-modules/coiled/default.nix @@ -39,12 +39,12 @@ buildPythonPackage rec { pname = "coiled"; - version = "1.86.0"; + version = "1.90.2"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-umwAG7+ykCWLqgyQzWdrYUuslyWWP1/uKlsSci50qR4="; + hash = "sha256-5u33FbSB86jR9KIAhR24J0wSz9kRCaOJ0ituEzULHH8="; }; build-system = [ @@ -79,15 +79,12 @@ buildPythonPackage rec { wheel ]; - pythonImportsCheck = [ - "coiled" - ]; + pythonImportsCheck = [ "coiled" ]; nativeCheckInputs = [ versionCheckHook ]; - - versionCheckProgramArg = [ "--version" ]; + versionCheckProgramArg = "--version"; meta = { description = "Python client for coiled.io dask clusters"; diff --git a/pkgs/development/python-modules/compressed-rtf/default.nix b/pkgs/development/python-modules/compressed-rtf/default.nix index 46ad11bfc1fc..acfdd2dae763 100644 --- a/pkgs/development/python-modules/compressed-rtf/default.nix +++ b/pkgs/development/python-modules/compressed-rtf/default.nix @@ -9,7 +9,7 @@ buildPythonPackage { pname = "compressed-rtf"; - version = "1.0.6-unstable-2023-10-15"; + version = "1.0.7"; pyproject = true; disabled = pythonOlder "3.7"; diff --git a/pkgs/development/python-modules/craft-parts/default.nix b/pkgs/development/python-modules/craft-parts/default.nix index 636fde33039f..c3601041d17c 100644 --- a/pkgs/development/python-modules/craft-parts/default.nix +++ b/pkgs/development/python-modules/craft-parts/default.nix @@ -28,7 +28,7 @@ buildPythonPackage rec { pname = "craft-parts"; - version = "2.6.2"; + version = "2.7.0"; pyproject = true; @@ -36,7 +36,7 @@ buildPythonPackage rec { owner = "canonical"; repo = "craft-parts"; tag = version; - hash = "sha256-3NFbAxgY183RmZ+ats6M5WM07VO2amj7EdqMCLcKNvI="; + hash = "sha256-Diu8cHy3tRWsyI7mPsAcYREK9nUG7tzasmZYAARzpXU="; }; patches = [ ./bash-path.patch ]; diff --git a/pkgs/development/python-modules/dlms-cosem/default.nix b/pkgs/development/python-modules/dlms-cosem/default.nix index cfe444813ade..ed9435cc8735 100644 --- a/pkgs/development/python-modules/dlms-cosem/default.nix +++ b/pkgs/development/python-modules/dlms-cosem/default.nix @@ -16,7 +16,7 @@ buildPythonPackage rec { pname = "dlms-cosem"; - version = "24.1.0"; + version = "25.1.0"; pyproject = true; disabled = pythonOlder "3.7"; @@ -25,12 +25,12 @@ buildPythonPackage rec { owner = "pwitab"; repo = "dlms-cosem"; tag = version; - hash = "sha256-NeTaU8i18Zb39Y2JnYzr87Ozt7Rj074xusL4xaNe0q0="; + hash = "sha256-ZsF+GUVG9bZNZE5daROQJIZZgqpjAkB/bFyre2oGu+E="; }; - nativeBuildInputs = [ setuptools ]; + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ asn1crypto attrs cryptography @@ -47,8 +47,8 @@ buildPythonPackage rec { meta = with lib; { description = "Python module to parse DLMS/COSEM"; homepage = "https://github.com/pwitab/dlms-cosem"; - changelog = "https://github.com/pwitab/dlms-cosem/blob/${version}/HISTORY.md"; - license = with licenses; [ mit ]; + changelog = "https://github.com/pwitab/dlms-cosem/blob/${src.tag}/HISTORY.md"; + license = licenses.mit; maintainers = with maintainers; [ fab ]; }; } diff --git a/pkgs/development/python-modules/evernote/default.nix b/pkgs/development/python-modules/evernote/default.nix deleted file mode 100644 index 9d9b9cc9ad02..000000000000 --- a/pkgs/development/python-modules/evernote/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - isPy27, - oauth2, -}: - -buildPythonPackage rec { - pname = "evernote"; - version = "1.25.3"; - format = "setuptools"; - disabled = !isPy27; # some dependencies do not work with py3 - - src = fetchPypi { - inherit pname version; - sha256 = "796847e0b7517e729041c5187fa1665c3f6fc0491cb4d71fb95a62c4f22e64eb"; - }; - - propagatedBuildInputs = [ oauth2 ]; - - meta = with lib; { - description = "Evernote SDK for Python"; - homepage = "https://dev.evernote.com"; - license = licenses.asl20; - maintainers = with maintainers; [ hbunke ]; - }; -} diff --git a/pkgs/development/python-modules/evtx/default.nix b/pkgs/development/python-modules/evtx/default.nix index 8cd18b628502..e43a86f28702 100644 --- a/pkgs/development/python-modules/evtx/default.nix +++ b/pkgs/development/python-modules/evtx/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "evtx"; - version = "0.8.5"; + version = "0.8.9"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -20,13 +20,13 @@ buildPythonPackage rec { owner = "omerbenamram"; repo = "pyevtx-rs"; tag = version; - hash = "sha256-wo6CeHlEBbu3klzzC4dUbjSfu7XwLo/cmtmZsVIKgS8="; + hash = "sha256-rxE3Srm+5L9r6uNIeOPBnpQAbS89WCel/U7xgLc2ZDU="; }; cargoDeps = rustPlatform.fetchCargoVendor { inherit src; name = "${pname}-${version}"; - hash = "sha256-Zdj0trB0wIVC9xg64wVOIrstdG7LGMOhWcRFXQJGNls="; + hash = "sha256-IqV4BsLE+5Dk3ey4M+h5wxR/SToZTLf8vU0BlWU5e8c="; }; nativeBuildInputs = with rustPlatform; [ diff --git a/pkgs/development/python-modules/extractcode/7z.nix b/pkgs/development/python-modules/extractcode/7z.nix index bc1ae9e07ab9..a9ea8e5f94a2 100644 --- a/pkgs/development/python-modules/extractcode/7z.nix +++ b/pkgs/development/python-modules/extractcode/7z.nix @@ -11,10 +11,10 @@ buildPythonPackage rec { version = "21.5.31"; src = fetchFromGitHub { - owner = "nexB"; + owner = "aboutcode-org"; repo = "scancode-plugins"; - rev = "v${version}"; - sha256 = "02qinla281fc6pmg5xzsrmqnf9js76f2qcbf98zq7m2dkn70as4w"; + tag = "v${version}"; + hash = "sha256-nGgFjp1N1IM/Sm4xLJw5WiZncc369/LqNcwFJBS1EQs="; }; sourceRoot = "${src.name}/builtins/extractcode_7z-linux"; @@ -36,14 +36,14 @@ buildPythonPackage rec { pythonImportsCheck = [ "extractcode_7z" ]; - meta = with lib; { + meta = { description = "ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations"; - homepage = "https://github.com/nexB/scancode-plugins/tree/main/builtins/extractcode_7z-linux"; - license = with licenses; [ + homepage = "https://github.com/aboutcode-org/scancode-plugins/tree/main/builtins/extractcode_7z-linux"; + license = with lib.licenses; [ asl20 lgpl21 ]; maintainers = [ ]; - platforms = platforms.linux; + platforms = lib.platforms.linux; }; } diff --git a/pkgs/development/python-modules/extractcode/libarchive.nix b/pkgs/development/python-modules/extractcode/libarchive.nix index 2168fc0f3b7a..bf4aed064879 100644 --- a/pkgs/development/python-modules/extractcode/libarchive.nix +++ b/pkgs/development/python-modules/extractcode/libarchive.nix @@ -18,10 +18,10 @@ buildPythonPackage rec { version = "21.5.31"; src = fetchFromGitHub { - owner = "nexB"; + owner = "aboutcode-org"; repo = "scancode-plugins"; - rev = "v${version}"; - sha256 = "02qinla281fc6pmg5xzsrmqnf9js76f2qcbf98zq7m2dkn70as4w"; + tag = "v${version}"; + hash = "sha256-nGgFjp1N1IM/Sm4xLJw5WiZncc369/LqNcwFJBS1EQs="; }; sourceRoot = "${src.name}/builtins/extractcode_libarchive-linux"; @@ -49,14 +49,14 @@ buildPythonPackage rec { pythonImportsCheck = [ "extractcode_libarchive" ]; - meta = with lib; { + meta = { description = "ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations"; - homepage = "https://github.com/nexB/scancode-plugins/tree/main/builtins/extractcode_libarchive-linux"; - license = with licenses; [ + homepage = "https://github.com/aboutcode-org/scancode-plugins/tree/main/builtins/extractcode_libarchive-linux"; + license = with lib.licenses; [ asl20 bsd2 ]; maintainers = [ ]; - platforms = platforms.linux; + platforms = lib.platforms.linux; }; } diff --git a/pkgs/development/python-modules/geeknote/default.nix b/pkgs/development/python-modules/geeknote/default.nix deleted file mode 100644 index 1aeeabd92f29..000000000000 --- a/pkgs/development/python-modules/geeknote/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchFromGitHub, - isPy27, - thrift, - beautifulsoup4, - markdown2, - sqlalchemy, - html2text, - evernote, -}: - -buildPythonPackage { - version = "2015-05-11"; - format = "setuptools"; - pname = "geeknote"; - disabled = !isPy27; - - src = fetchFromGitHub { - owner = "VitaliyRodnenko"; - repo = "geeknote"; - rev = "8489a87d044e164edb321ba9acca8d4631de3dca"; - sha256 = "0l16v4xnyqnsf84b1pma0jmdyxvmfwcv3sm8slrv3zv7zpmcm3lf"; - }; - - /* - build with tests fails with "Can not create application dirictory : - /homeless-shelter/.geeknotebuilder". - */ - doCheck = false; - - propagatedBuildInputs = [ - thrift - beautifulsoup4 - markdown2 - sqlalchemy - html2text - evernote - ]; - - meta = with lib; { - description = "Work with Evernote from command line"; - homepage = "http://www.geeknote.me"; - license = licenses.gpl1Only; - maintainers = with maintainers; [ hbunke ]; - }; -} diff --git a/pkgs/development/python-modules/google-cloud-speech/default.nix b/pkgs/development/python-modules/google-cloud-speech/default.nix index 5f7d42c2d116..9e068f6edc42 100644 --- a/pkgs/development/python-modules/google-cloud-speech/default.nix +++ b/pkgs/development/python-modules/google-cloud-speech/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "google-cloud-speech"; - version = "2.31.0"; + version = "2.31.1"; pyproject = true; disabled = pythonOlder "3.7"; @@ -22,7 +22,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "google_cloud_speech"; inherit version; - hash = "sha256-15mMJqlF9Ykzxg4tOAPtBZPrQWusnUOBwDBZ0QJy7wM="; + hash = "sha256-/fDTUMBke1ZpRUAr2K7vK3r9pnq7UgbrTbTtQfkjtA8="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/h3/default.nix b/pkgs/development/python-modules/h3/default.nix index 078c2ee8c55d..b9208fdd8ed3 100644 --- a/pkgs/development/python-modules/h3/default.nix +++ b/pkgs/development/python-modules/h3/default.nix @@ -16,7 +16,7 @@ buildPythonPackage rec { pname = "h3"; - version = "4.2.1"; + version = "4.2.2"; pyproject = true; # pypi version does not include tests @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "uber"; repo = "h3-py"; tag = "v${version}"; - hash = "sha256-YFGKF/WV0nlmtR7MacOBoor6PQwPPFqdK1C1eIciXwI="; + hash = "sha256-HvJT5SuE7UHhGMlaQG3YSHfGkgsdDAVVGsGRsAeNHGQ="; }; dontConfigure = true; diff --git a/pkgs/development/python-modules/iaqualink/default.nix b/pkgs/development/python-modules/iaqualink/default.nix index c591c3887e28..93619ea1a540 100644 --- a/pkgs/development/python-modules/iaqualink/default.nix +++ b/pkgs/development/python-modules/iaqualink/default.nix @@ -13,16 +13,16 @@ buildPythonPackage rec { pname = "iaqualink"; - version = "0.5.0"; + version = "0.5.3"; pyproject = true; - disabled = pythonOlder "3.8"; + disabled = pythonOlder "3.12"; src = fetchFromGitHub { owner = "flz"; repo = "iaqualink-py"; - rev = "v${version}"; - hash = "sha256-ewPP2Xq+ecZGc5kokvLEsRokGqTWlymrzkwk480tapk="; + tag = "v${version}"; + hash = "sha256-2DqZJlsbDWo9fxIDg5P0CvZs8AuAh8XrhNiwIvuRm80="; }; build-system = [ @@ -43,7 +43,7 @@ buildPythonPackage rec { meta = with lib; { description = "Python library for Jandy iAqualink"; homepage = "https://github.com/flz/iaqualink-py"; - changelog = "https://github.com/flz/iaqualink-py/releases/tag/v${version}"; + changelog = "https://github.com/flz/iaqualink-py/releases/tag/v${src.tag}"; license = licenses.bsd3; maintainers = with maintainers; [ fab ]; }; diff --git a/pkgs/development/python-modules/lacuscore/default.nix b/pkgs/development/python-modules/lacuscore/default.nix index 9cfc926aca8d..8ef451cf0f69 100644 --- a/pkgs/development/python-modules/lacuscore/default.nix +++ b/pkgs/development/python-modules/lacuscore/default.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "lacuscore"; - version = "1.13.5"; + version = "1.13.7"; pyproject = true; disabled = pythonOlder "3.9"; @@ -26,7 +26,7 @@ buildPythonPackage rec { owner = "ail-project"; repo = "LacusCore"; tag = "v${version}"; - hash = "sha256-fMFTGzw7j4VylmKaG8K9FNFnKsyQ9R6g2c//DcUztfc="; + hash = "sha256-80qgV35B863B16L+kdQ+6p6laZo2v5dChyczO5VXvNY="; }; pythonRelaxDeps = [ diff --git a/pkgs/development/python-modules/ldap3-bleeding-edge/default.nix b/pkgs/development/python-modules/ldap3-bleeding-edge/default.nix index 82abd2041a05..82c343070f31 100644 --- a/pkgs/development/python-modules/ldap3-bleeding-edge/default.nix +++ b/pkgs/development/python-modules/ldap3-bleeding-edge/default.nix @@ -24,11 +24,14 @@ buildPythonPackage rec { dependencies = [ cryptography - gssapi pyasn1 pycryptodomex ]; + optional-dependencies = { + kerberos = [ gssapi ]; + }; + pythonImportsCheck = [ "ldap3" ]; # Tests require network access diff --git a/pkgs/development/python-modules/litemapy/default.nix b/pkgs/development/python-modules/litemapy/default.nix index 38a234321e07..02e321182f05 100644 --- a/pkgs/development/python-modules/litemapy/default.nix +++ b/pkgs/development/python-modules/litemapy/default.nix @@ -2,22 +2,30 @@ lib, buildPythonPackage, fetchFromGitHub, + # build-system + setuptools, + # dependencies nbtlib, + typing-extensions, }: buildPythonPackage rec { pname = "litemapy"; - version = "0.7.2b0"; - format = "setuptools"; + version = "0.10.0b0"; + pyproject = true; + build-system = [ setuptools ]; src = fetchFromGitHub { owner = "SmylerMC"; repo = "litemapy"; rev = "v${version}"; - hash = "sha256-VfEo/JLeU17bEkvc8oZYfq19RsHl6QvKv0sGZYQjYhE="; + hash = "sha256-mGRnrFfrg0VD9pXs0WOuiP6QnYyu0Jbv/bqCWtkOie0="; }; - propagatedBuildInputs = [ nbtlib ]; + propagatedBuildInputs = [ + nbtlib + typing-extensions + ]; pythonImportsCheck = [ "litemapy" ]; diff --git a/pkgs/development/python-modules/modestmaps/default.nix b/pkgs/development/python-modules/modestmaps/default.nix deleted file mode 100644 index 24c4ef2b0bcd..000000000000 --- a/pkgs/development/python-modules/modestmaps/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - pillow, - isPy27, -}: - -buildPythonPackage rec { - pname = "modestmaps"; - version = "1.4.7"; - disabled = !isPy27; - - src = fetchPypi { - pname = "ModestMaps"; - inherit version; - sha256 = "698442a170f02923f8ea55f18526b56c17178162e44304f896a8a5fd65ab4457"; - }; - - propagatedBuildInputs = [ pillow ]; - - meta = with lib; { - description = "Library for building interactive maps"; - homepage = "http://modestmaps.com"; - license = licenses.bsd3; - }; -} diff --git a/pkgs/development/python-modules/msgraph-sdk/default.nix b/pkgs/development/python-modules/msgraph-sdk/default.nix index 439b8403190c..600f52fcd14f 100644 --- a/pkgs/development/python-modules/msgraph-sdk/default.nix +++ b/pkgs/development/python-modules/msgraph-sdk/default.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "msgraph-sdk"; - version = "1.25.0"; + version = "1.26.0"; pyproject = true; disabled = pythonOlder "3.8"; @@ -26,7 +26,7 @@ buildPythonPackage rec { owner = "microsoftgraph"; repo = "msgraph-sdk-python"; tag = "v${version}"; - hash = "sha256-CRs9Pqgv8sVhjlMPmC8UR03b4jP1Pm39Yndn2LF51jU="; + hash = "sha256-zCnv+1/rQzo1+Kya8y8M9hljrygT9ZhHstpm14FL9mE="; }; build-system = [ flit-core ]; diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix index a163227a563f..b6410ced2b5b 100644 --- a/pkgs/development/python-modules/mypy-boto3/default.nix +++ b/pkgs/development/python-modules/mypy-boto3/default.nix @@ -78,16 +78,16 @@ rec { "sha256-QDagskTiBtIbR8dIh5E3bdAxaezblNXWNEGGmNUcrWY="; mypy-boto3-apigateway = - buildMypyBoto3Package "apigateway" "1.37.0" - "sha256-VS0iDnBlRPV6KBDC198tkxECMC13W1jjujsmig174BE="; + buildMypyBoto3Package "apigateway" "1.37.23" + "sha256-Ey2/SstD830TRvw6BQll2H9x8qPcvOZgm++mVv8AmlU="; mypy-boto3-apigatewaymanagementapi = buildMypyBoto3Package "apigatewaymanagementapi" "1.37.0" "sha256-Y6BQWnf8h7ec2Rt4bhuyAl1KAIe53rnhTupcNeROQ8I="; mypy-boto3-apigatewayv2 = - buildMypyBoto3Package "apigatewayv2" "1.37.0" - "sha256-vF9qDs4R1LCPpYjdRqSEmTB64rOTKToJjmKwHlwOkyc="; + buildMypyBoto3Package "apigatewayv2" "1.37.23" + "sha256-T4x9ayNwSPKNFIxL3OgoE1lBqv+j25LhvcymikqJmpM="; mypy-boto3-appconfig = buildMypyBoto3Package "appconfig" "1.37.0" @@ -138,8 +138,8 @@ rec { "sha256-4eY2gziQLvX2t39e201UitkV/Cs0E2RSP4yAG6/OdbI="; mypy-boto3-arc-zonal-shift = - buildMypyBoto3Package "arc-zonal-shift" "1.37.0" - "sha256-3s+fYgf1gAy1o5V0uNrUcznLplweWm+2mTgMl4cmMWQ="; + buildMypyBoto3Package "arc-zonal-shift" "1.37.21" + "sha256-m88NXN/OxX65E92CnQoIZ9+Uq/D1idXzq3NvYQqEilM="; mypy-boto3-athena = buildMypyBoto3Package "athena" "1.37.0" @@ -166,8 +166,8 @@ rec { "sha256-SFybjQDlMxvgIFQbv/D6wDexm+s4u26I6Lj2T94vwak="; mypy-boto3-batch = - buildMypyBoto3Package "batch" "1.37.2" - "sha256-cEJJucCt54tLZBZKseJWFzW+baIoySP2igPcgfj7Ri0="; + buildMypyBoto3Package "batch" "1.37.22" + "sha256-D2LSlIcSgCzO55DHMI9/q7zUMmujL6N0v94qiEgPykY="; mypy-boto3-billingconductor = buildMypyBoto3Package "billingconductor" "1.37.0" @@ -226,8 +226,8 @@ rec { "sha256-lIkRuhQHTqlXRkyf9hIIZ0oh3vgdr5GzLApLt9lXvaw="; mypy-boto3-cloudformation = - buildMypyBoto3Package "cloudformation" "1.37.0" - "sha256-v8dLqGFGcUBuEfKEYJZ0FnUz7aIg3WNcL7gky2Ajuu0="; + buildMypyBoto3Package "cloudformation" "1.37.22" + "sha256-v2vtJ9GtgtEVaWStq+sNYntVWrhw1okwWhYMuT4O8lU="; mypy-boto3-cloudfront = buildMypyBoto3Package "cloudfront" "1.37.9" @@ -266,8 +266,8 @@ rec { "sha256-nVAeLXy2hjJZDjNTjFccKClY7DS0oLv9Q9QLlngkX6M="; mypy-boto3-codebuild = - buildMypyBoto3Package "codebuild" "1.37.12" - "sha256-nOZz1Yfl4UsuYBCbwS09QuWgW0ilQHTpzLqOR3HgO2g="; + buildMypyBoto3Package "codebuild" "1.37.23" + "sha256-dnwZL9dcrOJRb82phmusI7DMEKlM0mZ66kMwY34vBls="; mypy-boto3-codecatalyst = buildMypyBoto3Package "codecatalyst" "1.37.0" @@ -402,8 +402,8 @@ rec { "sha256-TqYdke3fLJRHZBmHbFkQYxPJ+Vm6aQyI0XNEsR12FvM="; mypy-boto3-directconnect = - buildMypyBoto3Package "directconnect" "1.37.0" - "sha256-sp2viLLUNRurZbDPlscmuqwo4Mgi5PA0cl68wtff4A8="; + buildMypyBoto3Package "directconnect" "1.37.21" + "sha256-G1oWu51jsk80Y2CHCg+Wj/LrU+BN1Z0urmuHjWi+kp4="; mypy-boto3-discovery = buildMypyBoto3Package "discovery" "1.37.0" @@ -462,16 +462,16 @@ rec { "sha256-7Sz4g1+0B99ZybhrzJOS0K71thybaDPUYmF4+SN1sGc="; mypy-boto3-ecs = - buildMypyBoto3Package "ecs" "1.37.11" - "sha256-lUFZE7dC5C2RZQjt515X7gn/4U2Md8GYrrCDX1E6Edk="; + buildMypyBoto3Package "ecs" "1.37.23" + "sha256-laN5lEqfTiYJmhjt0FxwrH6rS1YHjHTCCaTYNfmuV6s="; mypy-boto3-efs = buildMypyBoto3Package "efs" "1.37.0" "sha256-uKccWDS0zhFrs6CQ9ve6by4rYL43T6iFZ3rjNy7SiyI="; mypy-boto3-eks = - buildMypyBoto3Package "eks" "1.37.20" - "sha256-jFap7gKOZHeBtIKRz7BfEbm2EidERQhU7qohKjnYb9Y="; + buildMypyBoto3Package "eks" "1.37.22" + "sha256-T/dhVpy1eW2kcjNe1jMMSrwyHFwttVNShhId1q2u8VE="; mypy-boto3-elastic-inference = buildMypyBoto3Package "elastic-inference" "1.36.0" @@ -562,8 +562,8 @@ rec { "sha256-wPym6XJ09JuqPS5ee+5iU4jXrtCiSutNE7BiZvP9w2A="; mypy-boto3-gamelift = - buildMypyBoto3Package "gamelift" "1.37.0" - "sha256-p32uq+oF5IVsI2eoBjmjmZO5actsyghuB5R81fuCEYA="; + buildMypyBoto3Package "gamelift" "1.37.22" + "sha256-5wycchIRl8vzVHyYzW5WoNckIIYjyUZHEv7vMmtarU4="; mypy-boto3-glacier = buildMypyBoto3Package "glacier" "1.37.0" @@ -606,8 +606,8 @@ rec { "sha256-cLuH24dACvIWq9+UDtLaeIXe8V7o8lz5oltGD94tTrU="; mypy-boto3-iam = - buildMypyBoto3Package "iam" "1.37.0" - "sha256-FlGDGUvHmvhPlrjXh7141YIOJh2P4q8baWINYQTfxOU="; + buildMypyBoto3Package "iam" "1.37.22" + "sha256-f3FqgcCMJeapoZA+nyZGndRDJ88qLX9km5R9ymLXnsY="; mypy-boto3-identitystore = buildMypyBoto3Package "identitystore" "1.37.0" @@ -862,8 +862,8 @@ rec { "sha256-TfeKy6dyjQJVyhmCjttwBxBQNi3iZdJQQwpY/HRvnf0="; mypy-boto3-mediaconvert = - buildMypyBoto3Package "mediaconvert" "1.37.15" - "sha256-bs9Zvpv3AyT/zhucLMqtdhmocG4+hbHkPjyGsvviFJ8="; + buildMypyBoto3Package "mediaconvert" "1.37.21" + "sha256-Ltzv3h+NATTcKsyd1PfnUdjIhT3V0OS3woGsStyI/qA="; mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.37.11" @@ -890,8 +890,8 @@ rec { "sha256-g/KoroOmWZgWPfC0HMgLGQrGpr9QWEirTL3S9t7iMjs="; mypy-boto3-mediatailor = - buildMypyBoto3Package "mediatailor" "1.37.0" - "sha256-IJJUCcWCds3xb01lV0ghy0Itweeg3vKEUW8Pmp/Er/I="; + buildMypyBoto3Package "mediatailor" "1.37.21" + "sha256-SssQmTozr5f/uwsbwmMZpkXKG4SWG43IkEmehVG53Lw="; mypy-boto3-medical-imaging = buildMypyBoto3Package "medical-imaging" "1.37.0" @@ -902,8 +902,8 @@ rec { "sha256-88OSler+2SJ2zDYtLmM5NeOPafKIf5zaLV8MMLRb5es="; mypy-boto3-meteringmarketplace = - buildMypyBoto3Package "meteringmarketplace" "1.37.20" - "sha256-Bpcsx33TRawi+ZzseMkkYxVbkTo+PYahe8kj7TwcwIs="; + buildMypyBoto3Package "meteringmarketplace" "1.37.23" + "sha256-rVSofDYP53P0MuI8aS8yJAdMfWvmp6u7dCYU15Li6tQ="; mypy-boto3-mgh = buildMypyBoto3Package "mgh" "1.37.0" @@ -954,8 +954,8 @@ rec { "sha256-Lth+Py9qwXU+mnbV21d9H7QoONrwWU1UmMCJWorypxs="; mypy-boto3-networkmanager = - buildMypyBoto3Package "networkmanager" "1.37.0" - "sha256-XQd/4cp7d5DB9g0QU8i5qvUpycPx4P3CxwTx5pijSLQ="; + buildMypyBoto3Package "networkmanager" "1.37.23" + "sha256-wJjK+WP4nS3CItgfxYXbo51y8SsZLRfe9nO5GanFiPg="; mypy-boto3-nimble = buildMypyBoto3Package "nimble" "1.35.0" @@ -1002,8 +1002,8 @@ rec { "sha256-5t43MNckv0+Gxdmp+4dkxMTtl9ToTk0Wfq9W0jr4Qko="; mypy-boto3-payment-cryptography = - buildMypyBoto3Package "payment-cryptography" "1.37.0" - "sha256-2JlRaJI+easfcwj7TqYJ1B/9mGlApbQ0sh9DYK2gE28="; + buildMypyBoto3Package "payment-cryptography" "1.37.23" + "sha256-Uy3TNwYrc0j+a08H0POVX1GTPFdc/8KpVeCnm4rb9Zk="; mypy-boto3-payment-cryptography-data = buildMypyBoto3Package "payment-cryptography-data" "1.37.0" @@ -1050,8 +1050,8 @@ rec { "sha256-/Wr+oP8wfgSoeynyZDJ0fTS0T2oeBXR8DctO25S7qPU="; mypy-boto3-polly = - buildMypyBoto3Package "polly" "1.37.0" - "sha256-xPW1Ogeucuynd6rOGji/ihdWWrEzTXQdqcjiJeFX2bs="; + buildMypyBoto3Package "polly" "1.37.21" + "sha256-G9EVOO0mU8f/tAd/mg0/04lMkvs4+6JLHF3E+ylnyEo="; mypy-boto3-pricing = buildMypyBoto3Package "pricing" "1.37.4" @@ -1074,8 +1074,8 @@ rec { "sha256-WqMrD+uGG7YQIQagu8L5pUOYMNHeneEQCYzkWrIZ+nA="; mypy-boto3-quicksight = - buildMypyBoto3Package "quicksight" "1.37.0" - "sha256-+brjIm6GDK95Ft7bcCRKiEB34ERKqoLKwF18XlNp+fA="; + buildMypyBoto3Package "quicksight" "1.37.23" + "sha256-evmnL/VUlIk3b5tvPLL/QEGS5hJ4XoBUP85B5BNPOd8="; mypy-boto3-ram = buildMypyBoto3Package "ram" "1.37.0" @@ -1086,8 +1086,8 @@ rec { "sha256-csr3DYjsomhq4T+97ZEQdjt0RfsXbo8kBFGrB6cUUmM="; mypy-boto3-rds = - buildMypyBoto3Package "rds" "1.37.6" - "sha256-IoXZZE9YwtHROZYy3A/nmSfhkpCpt6GE+AyF2KTmXlg="; + buildMypyBoto3Package "rds" "1.37.21" + "sha256-j6eNB3ImSJ/vKNGzRJZGiCQl0ln5NSP3sIr9m3Yd/fg="; mypy-boto3-rds-data = buildMypyBoto3Package "rds-data" "1.37.0" @@ -1174,8 +1174,8 @@ rec { "sha256-c0vXkW5sR7JkdzvsS/rMFme9EwY1x5eZAbRWYKew0v4="; mypy-boto3-sagemaker = - buildMypyBoto3Package "sagemaker" "1.37.20" - "sha256-fncIq3N1qd+d0cvnecyn9LKd6ehjqwE8/EVnPhk/t5E="; + buildMypyBoto3Package "sagemaker" "1.37.23" + "sha256-w3zuzIXvQvxRv9unOJjBv2lnXXRA2tycfo3KCz4l9p4="; mypy-boto3-sagemaker-a2i-runtime = buildMypyBoto3Package "sagemaker-a2i-runtime" "1.37.0" @@ -1318,8 +1318,8 @@ rec { "sha256-y4IyBLiayIZObpAK/to12GaqhDqiKnJDta+038BdNSg="; mypy-boto3-sso-oidc = - buildMypyBoto3Package "sso-oidc" "1.37.0" - "sha256-w7E28nqg4N8dz7MpAyRwMOJb+Q1bFb4JkmVQ6Cw629U="; + buildMypyBoto3Package "sso-oidc" "1.37.22" + "sha256-ahiaClNbudP2banQ8+HK8BYkQARVo5dW9W9W7/LmkpY="; mypy-boto3-stepfunctions = buildMypyBoto3Package "stepfunctions" "1.37.0" @@ -1398,8 +1398,8 @@ rec { "sha256-nBigZ8YNNcy6TrQQ+dThN62xZ5IOq92EHbC3/tZbbuE="; mypy-boto3-wafv2 = - buildMypyBoto3Package "wafv2" "1.37.14" - "sha256-wfndS06dDJCEqVLceB+WMTIh1laTi9eVfTzx23K47nk="; + buildMypyBoto3Package "wafv2" "1.37.21" + "sha256-EiksZIqxgX/H/YF7Yo0B2YIQzgIYqcFhol81jDL9gKk="; mypy-boto3-wellarchitected = buildMypyBoto3Package "wellarchitected" "1.37.0" diff --git a/pkgs/development/python-modules/nipype/default.nix b/pkgs/development/python-modules/nipype/default.nix index a41b34aa4b5b..80d0a894a9c8 100644 --- a/pkgs/development/python-modules/nipype/default.nix +++ b/pkgs/development/python-modules/nipype/default.nix @@ -41,13 +41,13 @@ buildPythonPackage rec { pname = "nipype"; - version = "1.9.2"; + version = "1.10.0"; disabled = pythonOlder "3.7"; format = "setuptools"; src = fetchPypi { inherit pname version; - hash = "sha256-pQO9QbZY8ITRBCUv1yjvdfGhmYAm/quYsWOZiWVOA0M="; + hash = "sha256-GeXWzvpwmXGY94vGZe9NPTy1MyW1uYpy5Rrvra9rPg4="; }; postPatch = '' diff --git a/pkgs/development/python-modules/ntc-templates/default.nix b/pkgs/development/python-modules/ntc-templates/default.nix index f7698d0cb53b..5619fc76cbc9 100644 --- a/pkgs/development/python-modules/ntc-templates/default.nix +++ b/pkgs/development/python-modules/ntc-templates/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "ntc-templates"; - version = "7.7.0"; + version = "7.8.0"; pyproject = true; disabled = pythonOlder "3.8"; @@ -23,7 +23,7 @@ buildPythonPackage rec { owner = "networktocode"; repo = "ntc-templates"; tag = "v${version}"; - hash = "sha256-B5gKCvouqxzH5BoMpV9I6aLuUYbfdjABqjtzkXWs0Uw="; + hash = "sha256-v9+d9nZiYneG3vULtQZsa/gD6FCyBrrbGxUJsv1sMYA="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-sqlalchemy/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-sqlalchemy/default.nix new file mode 100644 index 000000000000..6bbcf2bc53c5 --- /dev/null +++ b/pkgs/development/python-modules/opentelemetry-instrumentation-sqlalchemy/default.nix @@ -0,0 +1,52 @@ +{ + buildPythonPackage, + pythonOlder, + + # build-system + hatchling, + + # dependencies + opentelemetry-api, + opentelemetry-instrumentation, + opentelemetry-semantic-conventions, + packaging, + sqlalchemy, + wrapt, + + # tests + opentelemetry-test-utils, + pytestCheckHook, +}: + +buildPythonPackage { + inherit (opentelemetry-instrumentation) version src; + pname = "opentelemetry-instrumentation-sqlalchemy"; + pyproject = true; + + disabled = pythonOlder "3.8"; + + sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-sqlalchemy"; + + build-system = [ hatchling ]; + + dependencies = [ + opentelemetry-api + opentelemetry-instrumentation + opentelemetry-semantic-conventions + packaging + sqlalchemy + wrapt + ]; + + nativeCheckInputs = [ + opentelemetry-test-utils + pytestCheckHook + ]; + + pythonImportsCheck = [ "opentelemetry.instrumentation.sqlalchemy" ]; + + meta = opentelemetry-instrumentation.meta // { + homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-sqlalchemy"; + description = "SQLAlchemy instrumentation for OpenTelemetry"; + }; +} diff --git a/pkgs/development/python-modules/playwrightcapture/default.nix b/pkgs/development/python-modules/playwrightcapture/default.nix index 6f67e8b335d5..21d14e710718 100644 --- a/pkgs/development/python-modules/playwrightcapture/default.nix +++ b/pkgs/development/python-modules/playwrightcapture/default.nix @@ -22,7 +22,7 @@ buildPythonPackage rec { pname = "playwrightcapture"; - version = "1.28.2"; + version = "1.28.3"; pyproject = true; disabled = pythonOlder "3.9"; @@ -31,7 +31,7 @@ buildPythonPackage rec { owner = "Lookyloo"; repo = "PlaywrightCapture"; tag = "v${version}"; - hash = "sha256-zbEpTK1kH2bweQqWHPNtWekwZTdNqqLYnx0VDKyFiUA="; + hash = "sha256-uf1uCXuCgp9Ly7sYdcGiwyjI7QbEqLvQEtJt2DE/06k="; }; pythonRelaxDeps = [ diff --git a/pkgs/development/python-modules/pontos/default.nix b/pkgs/development/python-modules/pontos/default.nix index 52344a8c8e87..189720c5907b 100644 --- a/pkgs/development/python-modules/pontos/default.nix +++ b/pkgs/development/python-modules/pontos/default.nix @@ -19,7 +19,7 @@ buildPythonPackage rec { pname = "pontos"; - version = "25.3.2"; + version = "25.3.3"; pyproject = true; disabled = pythonOlder "3.9"; @@ -28,7 +28,7 @@ buildPythonPackage rec { owner = "greenbone"; repo = "pontos"; tag = "v${version}"; - hash = "sha256-gxmNOrvV007nSwP2TNDCnB0CPspeWMt9ohnT4u8EzPw="; + hash = "sha256-jupd56zLx7tdsiklX0y8WNH0UkPeFtD/TLtzuoRefuI="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/powerapi/default.nix b/pkgs/development/python-modules/powerapi/default.nix index 69aa219c68ae..1ae18ae1e5cd 100644 --- a/pkgs/development/python-modules/powerapi/default.nix +++ b/pkgs/development/python-modules/powerapi/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "powerapi"; - version = "2.9.1"; + version = "2.10.0"; pyproject = true; disabled = pythonOlder "3.10"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "powerapi-ng"; repo = "powerapi"; tag = "v${version}"; - hash = "sha256-iFWCrO9frMK68kefmKQrXra1g5efDCj2ZOlVwxDNvXw="; + hash = "sha256-rn1qe0RwYuUR23CgzOOeiwe1wuFihnhQ9a6ALgSP/cQ="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/primp/default.nix b/pkgs/development/python-modules/primp/default.nix index 57029dae7e3b..7c75393cbd45 100644 --- a/pkgs/development/python-modules/primp/default.nix +++ b/pkgs/development/python-modules/primp/default.nix @@ -9,7 +9,6 @@ boringssl, libiconv, SystemConfiguration, - patchelf, gcc-unwrapped, python, fetchpatch, @@ -87,7 +86,7 @@ buildPythonPackage rec { # TODO: Can we improve this? postInstall = lib.optionalString stdenv.hostPlatform.isLinux '' - ${lib.getExe patchelf} --add-rpath ${lib.getLib gcc-unwrapped.lib} --add-needed libstdc++.so.6 $out/${python.sitePackages}/primp/primp.abi3.so + patchelf --add-rpath ${lib.getLib gcc-unwrapped.lib} --add-needed libstdc++.so.6 $out/${python.sitePackages}/primp/primp.abi3.so ''; buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ @@ -109,7 +108,7 @@ buildPythonPackage rec { meta = { changelog = "https://github.com/deedy5/primp/releases/tag/${version}"; - description = "PRIMP (Python Requests IMPersonate). The fastest python HTTP client that can impersonate web browsers."; + description = "Python Requests IMPersonate, the fastest Python HTTP client that can impersonate web browsers"; homepage = "https://github.com/deedy5/primp"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ drupol ]; diff --git a/pkgs/development/python-modules/publicsuffixlist/default.nix b/pkgs/development/python-modules/publicsuffixlist/default.nix index c863b5010542..677b89f0fe07 100644 --- a/pkgs/development/python-modules/publicsuffixlist/default.nix +++ b/pkgs/development/python-modules/publicsuffixlist/default.nix @@ -11,14 +11,14 @@ buildPythonPackage rec { pname = "publicsuffixlist"; - version = "1.0.2.20250319"; + version = "1.0.2.20250329"; pyproject = true; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-OBBkjnDzMGKiwLb1Mnkcw/0IwaeJyoSSQh3YVuF1aRo="; + hash = "sha256-HinLmgjEHCmoW3tNTQF8vKWSh7IExxaGbdcztQsPuSk="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/pychart/default.nix b/pkgs/development/python-modules/pychart/default.nix deleted file mode 100644 index c6fa67c0912e..000000000000 --- a/pkgs/development/python-modules/pychart/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - isPy27, -}: - -buildPythonPackage rec { - pname = "pychart"; - version = "1.39"; - format = "setuptools"; - - disabled = !isPy27; - - src = fetchPypi { - inherit pname version; - sha256 = "882650928776a7ca72e67054a9e0ac98f78645f279c0cfb5910db28f03f07c2e"; - }; - - meta = with lib; { - description = "Library for creating high quality encapsulated Postscript, PDF, PNG, or SVG charts"; - homepage = "https://pypi.python.org/pypi/PyChart"; - license = licenses.gpl2; - }; -} diff --git a/pkgs/development/python-modules/pygnmi/default.nix b/pkgs/development/python-modules/pygnmi/default.nix index cedae6dd3efb..d47cc165ebd7 100644 --- a/pkgs/development/python-modules/pygnmi/default.nix +++ b/pkgs/development/python-modules/pygnmi/default.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "pygnmi"; - version = "0.8.14"; + version = "0.8.15"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -21,7 +21,7 @@ buildPythonPackage rec { owner = "akarneliuk"; repo = "pygnmi"; tag = "v${version}"; - sha256 = "sha256-ncp/OwELy/QOvGhLUZW2qTQZsckWI4CGrlEAZ20RtQI="; + sha256 = "sha256-2QPUyPGTtXlO6A05mmb/jofRidXfKq0xvH7lv1f9OQk="; }; propagatedBuildInputs = [ @@ -43,7 +43,7 @@ buildPythonPackage rec { description = "Pure Python gNMI client to manage network functions and collect telemetry"; mainProgram = "pygnmicli"; homepage = "https://github.com/akarneliuk/pygnmi"; - changelog = "https://github.com/akarneliuk/pygnmi/releases/tag/v${version}"; + changelog = "https://github.com/akarneliuk/pygnmi/releases/tag/${src.tag}"; license = licenses.bsd3; maintainers = [ ]; }; diff --git a/pkgs/development/python-modules/pyoverkiz/default.nix b/pkgs/development/python-modules/pyoverkiz/default.nix index 6e9f0cf7299c..70ebe0dff7ad 100644 --- a/pkgs/development/python-modules/pyoverkiz/default.nix +++ b/pkgs/development/python-modules/pyoverkiz/default.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "pyoverkiz"; - version = "1.16.4"; + version = "1.16.5"; pyproject = true; disabled = pythonOlder "3.10"; @@ -26,7 +26,7 @@ buildPythonPackage rec { owner = "iMicknl"; repo = "python-overkiz-api"; tag = "v${version}"; - hash = "sha256-J3AjTMLgKDUeCzRLRkUk3bvqBCHqBl+p3EyLmlojYhU="; + hash = "sha256-uqpR3rGXIsdrVD2vjbSXHjFbFmyLSw/3MFcvX3HhQT8="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/pypdfium2/default.nix b/pkgs/development/python-modules/pypdfium2/default.nix index 7ed7461a03d1..933302eb81e3 100644 --- a/pkgs/development/python-modules/pypdfium2/default.nix +++ b/pkgs/development/python-modules/pypdfium2/default.nix @@ -17,8 +17,8 @@ let headers = fetchgit { url = "https://pdfium.googlesource.com/pdfium"; # The latest revision on the chromium/${pdfiumVersion} branch - rev = "9afffebfa895ea6cdcc05516908c50bd7fe72797"; - hash = "sha256-n7Xio1hEZqZX2FFKWqjVXEcOWPpkcVfBKXGPxDUL4cs="; + rev = "9232d7c94a0007377a8034222f47683fe391d474"; + hash = "sha256-dI3jTyVYc0EmMLHTiVjGSf3C2noS9Ru5WijEJFtiSFk="; sparseCheckout = [ "public" ]; diff --git a/pkgs/development/python-modules/python-wifi/default.nix b/pkgs/development/python-modules/python-wifi/default.nix deleted file mode 100644 index 2dfd18079c72..000000000000 --- a/pkgs/development/python-modules/python-wifi/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - isPy27, -}: - -buildPythonPackage rec { - pname = "python-wifi"; - version = "0.6.1"; - format = "setuptools"; - disabled = !isPy27; - - src = fetchPypi { - inherit pname version; - extension = "tar.bz2"; - sha256 = "149c3dznb63d82143cz5hqdim0mqjysz6p3yk0zv271vq3xnmzvv"; - }; - - meta = with lib; { - description = "Read & write wireless card capabilities using the Linux Wireless Extensions"; - homepage = "http://pythonwifi.tuxfamily.org/"; - # From the README: "pythonwifi is licensed under LGPLv2+, however, the - # examples (e.g. iwconfig.py and iwlist.py) are licensed under GPLv2+." - license = with licenses; [ - lgpl2Plus - gpl2Plus - ]; - }; -} diff --git a/pkgs/development/python-modules/pywerview/default.nix b/pkgs/development/python-modules/pywerview/default.nix index b3f28bfa5af7..bf136eec51c1 100644 --- a/pkgs/development/python-modules/pywerview/default.nix +++ b/pkgs/development/python-modules/pywerview/default.nix @@ -3,7 +3,6 @@ beautifulsoup4, buildPythonPackage, fetchFromGitHub, - gssapi, impacket, ldap3-bleeding-edge, lxml, @@ -15,7 +14,7 @@ buildPythonPackage rec { pname = "pywerview"; - version = "0.7.2"; + version = "0.7.3"; pyproject = true; disabled = pythonOlder "3.7"; @@ -24,14 +23,13 @@ buildPythonPackage rec { owner = "the-useless-one"; repo = "pywerview"; tag = "v${version}"; - hash = "sha256-1JDohgEowOlbLsqzX5aAmMSfS6LffXwz1t3361IYq60="; + hash = "sha256-ZIv0IW7oruMBwinXvH/n1YEtbBFyLb8h/Qlh4JxvV4k="; }; build-system = [ setuptools ]; dependencies = [ beautifulsoup4 - gssapi impacket ldap3-bleeding-edge lxml @@ -39,6 +37,10 @@ buildPythonPackage rec { pyasn1 ]; + optional-dependencies = { + kerberos = [ ldap3-bleeding-edge ] ++ ldap3-bleeding-edge.optional-dependencies.kerberos; + }; + # Module has no tests doCheck = false; diff --git a/pkgs/development/python-modules/pywizlight/default.nix b/pkgs/development/python-modules/pywizlight/default.nix index 76841e31d2e3..213d33de2314 100644 --- a/pkgs/development/python-modules/pywizlight/default.nix +++ b/pkgs/development/python-modules/pywizlight/default.nix @@ -10,7 +10,7 @@ buildPythonPackage rec { pname = "pywizlight"; - version = "0.6.0"; + version = "0.6.2"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -19,7 +19,7 @@ buildPythonPackage rec { owner = "sbidy"; repo = pname; rev = "v${version}"; - hash = "sha256-4z1PmVoRs7mql/PhSG9Ek6NRkGXIXAYxaV8nNDoJjeY="; + hash = "sha256-JT0Ud17U9etByaDVu9+hcadymze1rfj+mEK6nqksuWc="; }; propagatedBuildInputs = [ click ]; diff --git a/pkgs/development/python-modules/setupmeta/default.nix b/pkgs/development/python-modules/setupmeta/default.nix index e7381b9dd7e0..5a622073b990 100644 --- a/pkgs/development/python-modules/setupmeta/default.nix +++ b/pkgs/development/python-modules/setupmeta/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "setupmeta"; - version = "3.7.2"; + version = "3.8.0"; pyproject = true; disabled = pythonOlder "3.6"; @@ -23,7 +23,7 @@ buildPythonPackage rec { owner = "codrsquad"; repo = "setupmeta"; tag = "v${version}"; - hash = "sha256-qtnewUmTApPYq7/X82GsduW0VcioW4huRAyDMHUD74Q="; + hash = "sha256-2SKiIkwfmXVOQBKBNUmw4SjiVpyLjIMpSHNA9IQxqwY="; }; preBuild = '' diff --git a/pkgs/development/python-modules/streamlit/default.nix b/pkgs/development/python-modules/streamlit/default.nix index 4a15f13f0ab3..42cf1421611d 100644 --- a/pkgs/development/python-modules/streamlit/default.nix +++ b/pkgs/development/python-modules/streamlit/default.nix @@ -28,14 +28,14 @@ buildPythonPackage rec { pname = "streamlit"; - version = "1.42.2"; + version = "1.43.2"; pyproject = true; disabled = pythonOlder "3.9"; src = fetchPypi { inherit pname version; - hash = "sha256-YgJtvctIJ5CTP2WLCW191Y+nDaicHwb7w2WLkdzU2rI="; + hash = "sha256-86+ir2N9ABVMakxWDS/eJW19yMwfMqU88gVwwJZ4Qbw="; }; build-system = [ diff --git a/pkgs/development/python-modules/superqt/default.nix b/pkgs/development/python-modules/superqt/default.nix index 05a541623d7c..e4a8d0d7d84b 100644 --- a/pkgs/development/python-modules/superqt/default.nix +++ b/pkgs/development/python-modules/superqt/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "superqt"; - version = "0.7.1"; + version = "0.7.2"; pyproject = true; disabled = pythonOlder "3.9"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "pyapp-kit"; repo = "superqt"; tag = "v${version}"; - hash = "sha256-rKm4MUheQOJyaBggiZQ3U9J2kzOXrUcWpJnfPr4HzyU="; + hash = "sha256-G+z1q1hSvF7Of197bycACRqxPc+fjxU93PDxMcMWCME="; }; build-system = [ @@ -60,7 +60,7 @@ buildPythonPackage rec { meta = with lib; { description = "Missing widgets and components for Qt-python (napari/superqt)"; homepage = "https://github.com/napari/superqt"; - changelog = "https://github.com/pyapp-kit/superqt/releases/tag/v${version}"; + changelog = "https://github.com/pyapp-kit/superqt/releases/tag/${src.tag}"; license = licenses.bsd3; maintainers = with maintainers; [ SomeoneSerge ]; }; diff --git a/pkgs/development/python-modules/tilestache/default.nix b/pkgs/development/python-modules/tilestache/default.nix deleted file mode 100644 index 23fe0e26ea7c..000000000000 --- a/pkgs/development/python-modules/tilestache/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - modestmaps, - pillow, - pycairo, - python-mapnik, - simplejson, - werkzeug, - isPy27, -}: - -buildPythonPackage rec { - pname = "tilestache"; - version = "1.51.14"; - format = "setuptools"; - disabled = !isPy27; - - src = fetchPypi { - pname = "TileStache"; - inherit version; - sha256 = "1qjrabl6qr7i6yj6v647ck92abcyklb0vmb6h6kj7x8v2cj5xbvk"; - }; - - propagatedBuildInputs = [ - modestmaps - pillow - pycairo - python-mapnik - simplejson - werkzeug - ]; - - meta = with lib; { - description = "Tile server for rendered geographic data"; - homepage = "http://tilestache.org"; - license = licenses.bsd3; - }; -} diff --git a/pkgs/development/python-modules/transformers/default.nix b/pkgs/development/python-modules/transformers/default.nix index f994251f63d3..c1f45a688f4b 100644 --- a/pkgs/development/python-modules/transformers/default.nix +++ b/pkgs/development/python-modules/transformers/default.nix @@ -58,14 +58,14 @@ buildPythonPackage rec { pname = "transformers"; - version = "4.50.1"; + version = "4.50.3"; pyproject = true; src = fetchFromGitHub { owner = "huggingface"; repo = "transformers"; tag = "v${version}"; - hash = "sha256-PIJB4iW493I3932Yq3tyGom82cMY1uduc53bs1xCPgU="; + hash = "sha256-Qou5q7FZJJXO87lgMC5Qttfi5KJWCwuzG5icCEfgs0M="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/ttkbootstrap/default.nix b/pkgs/development/python-modules/ttkbootstrap/default.nix new file mode 100644 index 000000000000..c1307c09d94c --- /dev/null +++ b/pkgs/development/python-modules/ttkbootstrap/default.nix @@ -0,0 +1,39 @@ +{ + lib, + stdenv, + fetchFromGitHub, + buildPythonPackage, + pillow, + setuptools, +}: + +buildPythonPackage rec { + pname = "ttkbootstrap"; + version = "1.10.1"; + + src = fetchFromGitHub { + owner = "israel-dryer"; + repo = pname; + tag = "v${version}"; + hash = "sha256-aUqr30Tgz3ZLjLbNIt9yi6bqhXj+31heZoOLOZHYUiU="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + pillow + ]; + + # As far as I can tell, all tests require a display and are not normal-ish pytests + # but appear to just be python scripts that run demos of components? + doCheck = false; + + meta = { + description = "Supercharged theme extension for tkinter inspired by Bootstrap"; + homepage = "https://github.com/israel-dryer/ttkbootstrap"; + maintainers = with lib.maintainers; [ e1mo ]; + license = lib.licenses.mit; + }; +} diff --git a/pkgs/development/python-modules/vt-py/default.nix b/pkgs/development/python-modules/vt-py/default.nix index cb1440b51602..31898840acef 100644 --- a/pkgs/development/python-modules/vt-py/default.nix +++ b/pkgs/development/python-modules/vt-py/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "vt-py"; - version = "0.19.0"; + version = "0.20.0"; pyproject = true; disabled = pythonOlder "3.7"; @@ -23,7 +23,7 @@ buildPythonPackage rec { owner = "VirusTotal"; repo = "vt-py"; tag = version; - hash = "sha256-r6pEtq/GQzVY+gRzY2KZfSQEyp4ZoFRLBd8tlXp/aM8="; + hash = "sha256-5go6O5V8mY1Ph3peF6ISJ63/cnhNtDIlgeLztp2zpkY="; }; postPatch = '' diff --git a/pkgs/development/web/nodejs/openssl-3.4-v18.patch b/pkgs/development/web/nodejs/openssl-3.4-v18.patch deleted file mode 100644 index a674a27e64c4..000000000000 --- a/pkgs/development/web/nodejs/openssl-3.4-v18.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/test/parallel/test-tls-psk-circuit.js b/test/parallel/test-tls-psk-circuit.js -index 2b49161df8..8071c6dd18 100644 ---- a/test/parallel/test-tls-psk-circuit.js -+++ b/test/parallel/test-tls-psk-circuit.js -@@ -66,7 +66,8 @@ const expectedHandshakeErr = common.hasOpenSSL32 ? - 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'; - test({ psk: USERS.UserB, identity: 'UserC' }, {}, expectedHandshakeErr); - // Recognized user but incorrect secret should fail handshake --const expectedIllegalParameterErr = common.hasOpenSSL32 ? -- 'ERR_SSL_SSL/TLS_ALERT_ILLEGAL_PARAMETER' : 'ERR_SSL_SSLV3_ALERT_ILLEGAL_PARAMETER'; -+const expectedIllegalParameterErr = common.hasOpenSSL(3, 4) ? 'ERR_SSL_TLSV1_ALERT_DECRYPT_ERROR' : -+ common.hasOpenSSL(3, 2) ? -+ 'ERR_SSL_SSL/TLS_ALERT_ILLEGAL_PARAMETER' : 'ERR_SSL_SSLV3_ALERT_ILLEGAL_PARAMETER'; - test({ psk: USERS.UserA, identity: 'UserB' }, {}, expectedIllegalParameterErr); - test({ psk: USERS.UserB, identity: 'UserB' }); diff --git a/pkgs/development/web/nodejs/v18.nix b/pkgs/development/web/nodejs/v18.nix index 972ba8c5962d..d038bc0ea375 100644 --- a/pkgs/development/web/nodejs/v18.nix +++ b/pkgs/development/web/nodejs/v18.nix @@ -21,8 +21,8 @@ let in buildNodejs { inherit enableNpm; - version = "18.20.7"; - sha256 = "9a89659fad80c1b6da33d29f43f5865483ccb1952ddad434ee22f8193607277f"; + version = "18.20.8"; + sha256 = "36a7bf1a76d62ce4badd881ee5974a323c70e1d8d19165732684e145632460d9"; patches = [ ./configure-emulator-node18.patch ./configure-armv6-vfpv2.patch @@ -77,10 +77,5 @@ buildNodejs { url = "https://github.com/nodejs/node/commit/f270462c09ddfd770291a7c8a2cd204b2c63d730.patch?full_index=1"; hash = "sha256-Err0i5g7WtXcnhykKgrS3ocX7/3oV9UrT0SNeRtMZNU="; }) - - # Fix tests on OpenSSL 3.4 - # Manual backport of https://github.com/nodejs/node/commit/7895b8eae9e4f2919028fe81e38790af07b4cc92 - # FIXME: remove after a minor point release - ./openssl-3.4-v18.patch ] ++ gypPatches; } diff --git a/pkgs/misc/base16-builder/node-packages.nix b/pkgs/misc/base16-builder/node-packages.nix index b4bd9d9d41d2..1d201f032168 100644 --- a/pkgs/misc/base16-builder/node-packages.nix +++ b/pkgs/misc/base16-builder/node-packages.nix @@ -6,7 +6,7 @@ let nodeEnv = import ../../development/node-packages/node-env.nix { - inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript; + inherit (pkgs) stdenv lib runCommand writeTextFile writeShellScript; inherit pkgs nodejs; libtool = if pkgs.stdenv.hostPlatform.isDarwin then pkgs.cctools or pkgs.darwin.cctools else null; }; diff --git a/pkgs/os-specific/linux/kernel/kernels-org.json b/pkgs/os-specific/linux/kernel/kernels-org.json index d73a2578522a..a3115da5be01 100644 --- a/pkgs/os-specific/linux/kernel/kernels-org.json +++ b/pkgs/os-specific/linux/kernel/kernels-org.json @@ -4,8 +4,8 @@ "hash": "sha256:0bw3xip9qg4zr42vx28iai954g5a1wprrrkr81zn7x7vv3ayjvya" }, "6.1": { - "version": "6.1.131", - "hash": "sha256:05jvvv3khadvfgdrv43fcrnm606jk4064a7qivkvnk1vc08gbjj4" + "version": "6.1.132", + "hash": "sha256:1l5vrc8an6h0fcnfmqb6pmal686imxbllcvlkqah19fg7wnv3dyx" }, "5.15": { "version": "5.15.179", @@ -20,16 +20,16 @@ "hash": "sha256:0vpgb3lmhgv5iw9b1z0kqr6vdv44if49marfp5858z3a8yj69bdk" }, "6.6": { - "version": "6.6.84", - "hash": "sha256:19vvq558vs2ivj4l6kmyha30a94fh42wmijsghsdnq8salhhglkz" + "version": "6.6.85", + "hash": "sha256:0abmgc5rg7hx18ykwsl6xl72gzaf3wbn5bkvh4kcsa1lrbscrfjy" }, "6.12": { - "version": "6.12.20", - "hash": "sha256:1ivakcj0gi191687zagl1qfsip0567p1pk3yy1s2xf0agfq8j3i3" + "version": "6.12.21", + "hash": "sha256:1iyn8qif6xfz04z698ib2dvmam54pyxzsign8sbdj9505sdf66lx" }, "6.13": { - "version": "6.13.8", - "hash": "sha256:1fqsfnam0ca2lyqgi9vh7x6xa24yjk6ym6z85bn6nrrxsxczm6i5" + "version": "6.13.9", + "hash": "sha256:1ci78x5dfjm3nlv4m2j02wl7ax82l47xwnr4k6j9n4dn53qa7rsk" }, "6.14": { "version": "6.14", diff --git a/pkgs/os-specific/linux/libsemanage/default.nix b/pkgs/os-specific/linux/libsemanage/default.nix index 105eb5ac43e1..eae78b62785d 100644 --- a/pkgs/os-specific/linux/libsemanage/default.nix +++ b/pkgs/os-specific/linux/libsemanage/default.nix @@ -16,12 +16,12 @@ stdenv.mkDerivation rec { pname = "libsemanage"; - version = "3.8"; + version = "3.8.1"; inherit (libsepol) se_url; src = fetchurl { url = "${se_url}/${version}/libsemanage-${version}.tar.gz"; - sha256 = "sha256-qslZiKVyzIl6GsG+d9NgvhFx/AstfGYZWnRWAbryW+8="; + sha256 = "sha256-ezkSeyGcxwv9k1pK9rDyuoPUs1yRbyU8fpQsI6tJDwc="; }; outputs = [ diff --git a/pkgs/servers/http/couchdb/3.nix b/pkgs/servers/http/couchdb/3.nix index 0b65c8e45d5d..88b9a7b5d5db 100644 --- a/pkgs/servers/http/couchdb/3.nix +++ b/pkgs/servers/http/couchdb/3.nix @@ -11,11 +11,11 @@ stdenv.mkDerivation rec { pname = "couchdb"; - version = "3.4.2"; + version = "3.4.3"; src = fetchurl { url = "mirror://apache/couchdb/source/${version}/apache-${pname}-${version}.tar.gz"; - hash = "sha256-0n/yoTNWAAKWqYq4hMrz0XWSfPIXJ5Y/+Q+rOnR1RM8="; + hash = "sha256-A1dRG2/tcOPmT051ql18wgAMsPJk7zAXArGBZCf3LyA="; }; postPatch = '' diff --git a/pkgs/servers/http/nginx/modules.nix b/pkgs/servers/http/nginx/modules.nix index a5c2bb76037c..2f8e7ba21470 100644 --- a/pkgs/servers/http/nginx/modules.nix +++ b/pkgs/servers/http/nginx/modules.nix @@ -1,5 +1,6 @@ { lib , config +, nixosTests , fetchFromGitHub , fetchFromGitLab , fetchhg @@ -509,8 +510,8 @@ let self = { src = fetchFromGitHub { owner = "nginx"; repo = "njs"; - rev = "0.8.7"; - hash = "sha256-VEXzP+cN5hnDeniccwY7GIi4x460rnWO/o7ja3DyRCc="; + rev = "0.8.9"; + hash = "sha256-TalS9EJP+vB1o3BKaTvXXnudjKhNOcob3kDAyeKej3c="; }; # njs module sources have to be writable during nginx build, so we copy them @@ -520,17 +521,19 @@ let self = { mkdir -p "$(dirname "$NJS_SOURCE_DIR")" cp --recursive "${src}" "$NJS_SOURCE_DIR" chmod -R u+rwX,go+rX "$NJS_SOURCE_DIR" - export configureFlags="''${configureFlags/"${src}"/"$NJS_SOURCE_DIR/nginx"}" + export configureFlags="''${configureFlags/"${src}"/"$NJS_SOURCE_DIR/nginx"} --with-ld-opt='-lz'" unset NJS_SOURCE_DIR ''; - inputs = [ which ]; + inputs = [ which zlib ]; + + passthru.tests = nixosTests.nginx-njs; meta = with lib; { description = "Subset of the JavaScript language that allows extending nginx functionality"; homepage = "https://nginx.org/en/docs/njs/"; license = with licenses; [ bsd2 ]; - maintainers = [ ]; + maintainers = with maintainers; [ jvanbruegge ]; }; }; diff --git a/pkgs/servers/icingaweb2/default.nix b/pkgs/servers/icingaweb2/default.nix index 8a948d00c94c..d36faa6e523e 100644 --- a/pkgs/servers/icingaweb2/default.nix +++ b/pkgs/servers/icingaweb2/default.nix @@ -3,7 +3,7 @@ lib, fetchFromGitHub, makeWrapper, - php, + php83, nixosTests, }: @@ -25,7 +25,7 @@ stdenvNoCC.mkDerivation rec { cp -ra application bin etc library modules public $out cp -ra doc $out/share - wrapProgram $out/bin/icingacli --prefix PATH : "${lib.makeBinPath [ php ]}" + wrapProgram $out/bin/icingacli --prefix PATH : "${lib.makeBinPath [ php83 ]}" ''; passthru.tests = { inherit (nixosTests) icingaweb2; }; diff --git a/pkgs/servers/monitoring/prometheus/pihole-exporter.nix b/pkgs/servers/monitoring/prometheus/pihole-exporter.nix index 58f8d21f5824..60dea11316c7 100644 --- a/pkgs/servers/monitoring/prometheus/pihole-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/pihole-exporter.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "pihole-exporter"; - version = "1.0.0"; + version = "1.0.1"; src = fetchFromGitHub { owner = "eko"; repo = pname; rev = "v${version}"; - sha256 = "sha256-Sum27hjs0Jvi1UWGeQcR8z9zmZ/I40uBFpKeHgHfFrA="; + sha256 = "sha256-7gomafTMK8rk+QFw3Vm8KUgNFqiUDILeTwNFa7vdgAw="; }; - vendorHash = "sha256-7f/upTF3/w40wWGdcw0h3kOPlo8ZeyRna6FapnF2X0s="; + vendorHash = "sha256-GB/wVB97aV+CV9Xtv0EofQQR+qOmtwrBFBogU+2S+Po="; meta = with lib; { description = "Prometheus exporter for PI-Hole's Raspberry PI ad blocker"; diff --git a/pkgs/servers/monitoring/zabbix/agent.nix b/pkgs/servers/monitoring/zabbix/agent.nix index 02b6fb71734b..ae6e5618167d 100644 --- a/pkgs/servers/monitoring/zabbix/agent.nix +++ b/pkgs/servers/monitoring/zabbix/agent.nix @@ -48,6 +48,7 @@ import ./versions.nix ( license = if (lib.versions.major version >= "7") then lib.licenses.agpl3Only else lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ + bstanderline mmahut psyanticy ]; diff --git a/pkgs/servers/monitoring/zabbix/agent2.nix b/pkgs/servers/monitoring/zabbix/agent2.nix index 0d9fda84b234..b1bf7cd6f22f 100644 --- a/pkgs/servers/monitoring/zabbix/agent2.nix +++ b/pkgs/servers/monitoring/zabbix/agent2.nix @@ -83,7 +83,10 @@ import ./versions.nix ( homepage = "https://www.zabbix.com/"; license = if (lib.versions.major version >= "7") then lib.licenses.agpl3Only else lib.licenses.gpl2Plus; - maintainers = with lib.maintainers; [ aanderse ]; + maintainers = with lib.maintainers; [ + aanderse + bstanderline + ]; platforms = lib.platforms.unix; }; } diff --git a/pkgs/servers/monitoring/zabbix/proxy.nix b/pkgs/servers/monitoring/zabbix/proxy.nix index 7b60782669d5..93e6244808d8 100644 --- a/pkgs/servers/monitoring/zabbix/proxy.nix +++ b/pkgs/servers/monitoring/zabbix/proxy.nix @@ -126,7 +126,10 @@ import ./versions.nix ( homepage = "https://www.zabbix.com/"; license = if (lib.versions.major version >= "7") then lib.licenses.agpl3Only else lib.licenses.gpl2Plus; - maintainers = with lib.maintainers; [ mmahut ]; + maintainers = with lib.maintainers; [ + bstanderline + mmahut + ]; platforms = lib.platforms.linux; }; } diff --git a/pkgs/servers/monitoring/zabbix/server.nix b/pkgs/servers/monitoring/zabbix/server.nix index c68e1bb44a0e..39065ed6756c 100644 --- a/pkgs/servers/monitoring/zabbix/server.nix +++ b/pkgs/servers/monitoring/zabbix/server.nix @@ -126,6 +126,7 @@ import ./versions.nix ( license = if (lib.versions.major version >= "7") then lib.licenses.agpl3Only else lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ + bstanderline mmahut psyanticy ]; diff --git a/pkgs/servers/monitoring/zabbix/versions.nix b/pkgs/servers/monitoring/zabbix/versions.nix index 36c8ff67ad31..46b1bc0323f4 100644 --- a/pkgs/servers/monitoring/zabbix/versions.nix +++ b/pkgs/servers/monitoring/zabbix/versions.nix @@ -1,7 +1,7 @@ generic: { v70 = generic { - version = "7.0.10"; - hash = "sha256-7tY+06QNva7EgTnBVu1SbbYLUIXbSlzJWpG08ISyGUg="; + version = "7.0.11"; + hash = "sha256-r9VNy3bRuFvJAL+ZQEbKjCAS3+AvetnWAwFjLxFVuGU="; vendorHash = null; }; v64 = generic { diff --git a/pkgs/servers/monitoring/zabbix/web.nix b/pkgs/servers/monitoring/zabbix/web.nix index a77cfe3b7dd6..7cbefe782637 100644 --- a/pkgs/servers/monitoring/zabbix/web.nix +++ b/pkgs/servers/monitoring/zabbix/web.nix @@ -33,7 +33,10 @@ import ./versions.nix ( homepage = "https://www.zabbix.com/"; license = if (lib.versions.major version >= "7") then lib.licenses.agpl3Only else lib.licenses.gpl2Plus; - maintainers = with lib.maintainers; [ mmahut ]; + maintainers = with lib.maintainers; [ + bstanderline + mmahut + ]; platforms = lib.platforms.linux; }; } diff --git a/pkgs/servers/mpd/default.nix b/pkgs/servers/mpd/default.nix index 808b04d6687e..158d0cc142e4 100644 --- a/pkgs/servers/mpd/default.nix +++ b/pkgs/servers/mpd/default.nix @@ -2,13 +2,11 @@ lib, stdenv, fetchFromGitHub, - fetchpatch2, meson, ninja, pkg-config, glib, systemd, - boost, fmt, buildPackages, # Darwin inputs @@ -202,30 +200,18 @@ let in stdenv.mkDerivation rec { pname = "mpd"; - version = "0.23.17"; + version = "0.24.2"; src = fetchFromGitHub { owner = "MusicPlayerDaemon"; repo = "MPD"; rev = "v${version}"; - sha256 = "sha256-1+eVLvwMp6mR38y39wV73rhPA998ip7clyyKcJ008z0="; + sha256 = "sha256-6wEFgiMsEoWvmfH609d+UZY7jzqDoNmXalpHBipqTN0="; }; - patches = [ - # Revert of https://github.com/MusicPlayerDaemon/MPD/commit/0aeda01ba6d22a8d9fc583faa67ffc6473869a43 - # We use a yajl fork that fixed this issue in the pkg-config manifest - (fetchpatch2 { - name = "revert-yajl-include-fix.patch"; - url = "https://github.com/MusicPlayerDaemon/MPD/commit/0aeda01ba6d22a8d9fc583faa67ffc6473869a43.diff"; - hash = "sha256-p/sYvWpr0GTw8gjt+W9FQysadOK/QOUp81ykTI50UYg="; - revert = true; - }) - ]; - buildInputs = [ glib - boost fmt # According to the configurePhase of meson, gtest is considered a # runtime dependency. Quoting: @@ -248,13 +234,25 @@ let depsBuildBuild = [ buildPackages.stdenv.cc ]; postPatch = - lib.optionalString - (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinSdkVersion "12.0") - '' - substituteInPlace src/output/plugins/OSXOutputPlugin.cxx \ - --replace kAudioObjectPropertyElement{Main,Master} \ - --replace kAudioHardwareServiceDeviceProperty_Virtual{Main,Master}Volume - ''; + '' + # Basically a revert of https://github.com/MusicPlayerDaemon/MPD/commit/0aeda01ba6d22a8d9fc583faa67ffc6473869a43 + # We use a yajl fork that fixed this issue in the pkg-config manifest + substituteInPlace \ + src/lib/yajl/Callbacks.hxx \ + src/lib/yajl/Handle.hxx \ + --replace-fail "" "" + substituteInPlace \ + src/lib/yajl/Gen.hxx \ + --replace-fail "" "" + '' + + + lib.optionalString + (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinSdkVersion "12.0") + '' + substituteInPlace src/output/plugins/OSXOutputPlugin.cxx \ + --replace kAudioObjectPropertyElement{Main,Master} \ + --replace kAudioHardwareServiceDeviceProperty_Virtual{Main,Master}Volume + ''; # Otherwise, the meson log says: # diff --git a/pkgs/servers/mx-puppet-discord/node-composition.nix b/pkgs/servers/mx-puppet-discord/node-composition.nix index 12460bea17a1..e7922d509acb 100644 --- a/pkgs/servers/mx-puppet-discord/node-composition.nix +++ b/pkgs/servers/mx-puppet-discord/node-composition.nix @@ -13,7 +13,6 @@ let inherit (pkgs) stdenv lib - python2 runCommand writeTextFile writeShellScript diff --git a/pkgs/servers/sql/mssql/jdbc/default.nix b/pkgs/servers/sql/mssql/jdbc/default.nix index d822ddc7f315..47a71b9206ad 100644 --- a/pkgs/servers/sql/mssql/jdbc/default.nix +++ b/pkgs/servers/sql/mssql/jdbc/default.nix @@ -6,11 +6,11 @@ stdenv.mkDerivation rec { pname = "mssql-jdbc"; - version = "12.8.1"; + version = "12.10.0"; src = fetchurl { url = "https://github.com/Microsoft/mssql-jdbc/releases/download/v${version}/mssql-jdbc-${version}.jre8.jar"; - sha256 = "sha256-RPIXsdZ9IkQgAu4tHEq46GNYYGp4e5XutTAfI1SCoqs="; + sha256 = "sha256-riYa0wDnfocbyqCSrMhm9efMvp3JtoQTNk3EOCy02AQ="; }; dontUnpack = true; diff --git a/pkgs/servers/varnish/default.nix b/pkgs/servers/varnish/default.nix index 4c0a7afb0986..976147d8ab33 100644 --- a/pkgs/servers/varnish/default.nix +++ b/pkgs/servers/varnish/default.nix @@ -101,7 +101,7 @@ in }; # EOL 2025-09-15 varnish76 = common { - version = "7.6.1"; - hash = "sha256-Wpu1oUn/J4Z7VKZs4W0qS5Pt/6VHPLh8nHH3aZz4Rbo="; + version = "7.6.2"; + hash = "sha256-OFxhDsxj3P61PXb0fMRl6J6+J9osCSJvmGHE+o6dLJo="; }; } diff --git a/pkgs/servers/web-apps/ethercalc/node-packages.nix b/pkgs/servers/web-apps/ethercalc/node-packages.nix index 1042cdba2cb6..0d1f60098bb6 100644 --- a/pkgs/servers/web-apps/ethercalc/node-packages.nix +++ b/pkgs/servers/web-apps/ethercalc/node-packages.nix @@ -13,7 +13,6 @@ let inherit (pkgs) stdenv lib - python2 runCommand writeTextFile writeShellScript diff --git a/pkgs/tools/misc/opentelemetry-collector/builder.nix b/pkgs/tools/misc/opentelemetry-collector/builder.nix index 07321936cc77..d74d17f335e5 100644 --- a/pkgs/tools/misc/opentelemetry-collector/builder.nix +++ b/pkgs/tools/misc/opentelemetry-collector/builder.nix @@ -7,17 +7,17 @@ buildGoModule rec { pname = "ocb"; # Also update `pkgs/tools/misc/opentelemetry-collector/releases.nix` # whenever that version changes. - version = "0.121.0"; + version = "0.122.1"; src = fetchFromGitHub { owner = "open-telemetry"; repo = "opentelemetry-collector"; rev = "cmd/builder/v${version}"; - hash = "sha256-rsKkq70vAes99h9HbAiWJhlIC8rbeNHYdlBNO34fO34="; + hash = "sha256-nkle8jY8y/+/4H7pFvVTqX+iFxjvVKsYqm6Rx6nvdPQ="; }; sourceRoot = "${src.name}/cmd/builder"; - vendorHash = "sha256-vyCp/XR92RNNkoPh5tTDsdWcI2DDiLKy8Kj09ZmFCY4="; + vendorHash = "sha256-1wgS9AIoFHlSUoELEQVvx+bCnTApEvwKRhTKGrcUGM8="; env.CGO_ENABLED = 0; ldflags = [ diff --git a/pkgs/tools/security/gotrue/supabase.nix b/pkgs/tools/security/gotrue/supabase.nix index 0509becadd54..e028e085d02d 100644 --- a/pkgs/tools/security/gotrue/supabase.nix +++ b/pkgs/tools/security/gotrue/supabase.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "auth"; - version = "2.169.0"; + version = "2.170.0"; src = fetchFromGitHub { owner = "supabase"; repo = "auth"; rev = "v${version}"; - hash = "sha256-SPX4cdzz72Vd0d4fukxgZYQvESiXBzTKGEkDI5+tj04="; + hash = "sha256-dm6JBBHFX61acQ4tnkklZqAM4hiOqtvea0oy7/bSovQ="; }; - vendorHash = "sha256-em1dBnNHsVPI7owd2gjERcJnrQbiVtZGtIqnFyker6M="; + vendorHash = "sha256-D5wVbgxs5Hq+vmHNi/6t7rZVKez1DqAiTZCP5uJKRtA="; ldflags = [ "-s" diff --git a/pkgs/tools/security/onlykey/onlykey.nix b/pkgs/tools/security/onlykey/onlykey.nix index 05d8f84ddebb..1814e4887f8c 100644 --- a/pkgs/tools/security/onlykey/onlykey.nix +++ b/pkgs/tools/security/onlykey/onlykey.nix @@ -13,7 +13,6 @@ let inherit (pkgs) stdenv lib - python2 runCommand writeTextFile writeShellScript diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix index 04dd656e1f08..76aec1462571 100644 --- a/pkgs/tools/security/tor/default.nix +++ b/pkgs/tools/security/tor/default.nix @@ -50,11 +50,11 @@ let in stdenv.mkDerivation rec { pname = "tor"; - version = "0.4.8.14"; + version = "0.4.8.16"; src = fetchurl { url = "https://dist.torproject.org/${pname}-${version}.tar.gz"; - sha256 = "sha256-UEfh3tEtmqxOuFj3Y0pidxTdWM6ZBT1RdpGkswSmbRA="; + sha256 = "sha256-ZUDdN3oSD7jn0nUwqjt/9yoPpbT2cP4dZMmHwc/TkMs="; }; outputs = [ diff --git a/pkgs/tools/security/trufflehog/default.nix b/pkgs/tools/security/trufflehog/default.nix index 38c5a3ac1d11..b82459d22d84 100644 --- a/pkgs/tools/security/trufflehog/default.nix +++ b/pkgs/tools/security/trufflehog/default.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "trufflehog"; - version = "3.88.18"; + version = "3.88.20"; src = fetchFromGitHub { owner = "trufflesecurity"; repo = "trufflehog"; tag = "v${version}"; - hash = "sha256-0STZXG7abx5viXhU2Zks1uiabNtL1ckoSH7foSn6WNw="; + hash = "sha256-JLBHg1hCTOOBRTJbjXJitILD/HSmH1WDuzm0t3/OJaA="; }; - vendorHash = "sha256-mxmPvuOznYN3sjuCzuircQNtot9ntApS9ygKywLIVv4="; + vendorHash = "sha256-vJl2gIS14NA9nV9j+81xKv3NnsDce4V7XoeipOZV+wI="; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 98b0a17bea2c..7a43235e1309 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -471,6 +471,7 @@ mapAliases { fastnlo = throw "'fastnlo' has been renamed to/replaced by 'fastnlo-toolkit'"; # Converted to throw 2024-10-17 fastnlo_toolkit = fastnlo-toolkit; # Added 2024-01-03 fcitx5-catppuccin = catppuccin-fcitx5; # Added 2024-06-19 + fdr = throw "fdr has been removed, as it cannot be built from source and depends on Python 2.x"; # Added 2025-03-19 inherit (luaPackages) fennel; # Added 2022-09-24 ferdi = throw "'ferdi' has been removed, upstream does not exist anymore and the package is insecure"; # Added 2024-08-22 fetchFromGithub = throw "You meant fetchFromGitHub, with a capital H"; # preserve @@ -1577,6 +1578,7 @@ mapAliases { libtransmission = lib.warnOnInstantiate (transmission3Warning {prefix = "lib";}) libtransmission_3; # Added 2024-06-10 tracker = lib.warnOnInstantiate "tracker has been renamed to tinysparql" tinysparql; # Added 2024-09-30 tracker-miners = lib.warnOnInstantiate "tracker-miners has been renamed to localsearch" localsearch; # Added 2024-09-30 + transcode = throw "transcode has been removed as it is unmaintained"; # Added 2024-12-11 transfig = fig2dev; # Added 2022-02-15 transifex-client = transifex-cli; # Added 2023-12-29 trfl = throw "trfl has been removed, because it has not received an update for 3 years and was broken"; # Added 2024-07-25 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d38c96c5f687..8e6deed22a68 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10030,7 +10030,7 @@ with pkgs; }); libsForQt5 = (recurseIntoAttrs (import ./qt5-packages.nix { - inherit lib __splicedPackages makeScopeWithSplicing' generateSplicesForMkScope pkgsHostTarget; + inherit lib config __splicedPackages makeScopeWithSplicing' generateSplicesForMkScope pkgsHostTarget; })) // { __recurseIntoDerivationForReleaseJobs = true; }; # plasma5Packages maps to the Qt5 packages set that is used to build the plasma5 desktop @@ -12910,8 +12910,6 @@ with pkgs; evolution = callPackage ../applications/networking/mailreaders/evolution/evolution { }; evolutionWithPlugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { plugins = [ evolution evolution-ews ]; }; - fdr = libsForQt5.callPackage ../applications/science/programming/fdr { }; - fetchmail = callPackage ../applications/misc/fetchmail { }; fetchmail_7 = callPackage ../applications/misc/fetchmail/v7.nix { }; diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 316da20d8088..f9ea9b9d9d02 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -210,6 +210,7 @@ mapAliases ({ et_xmlfile = et-xmlfile; # added 2023-10-16 etebase-server = throw "pkgs.python3.etebase-server has been removed, use pkgs.etebase-server"; # added 2024-07-16 ev3dev2 = python-ev3dev2; # added 2023-06-19 + evernote = throw "evernote is intended for use with Python 2.X"; eyeD3 = eyed3; # added 2024-01-03 Fabric = fabric; # addedd 2023-02-19 face_recognition = face-recognition; # added 2022-10-15 @@ -264,6 +265,7 @@ mapAliases ({ gbulb = throw "gbulb has been removed as it is unmaintained and no longer compatible with PyGObject 3.50."; # added 2024-10-14 gcs-oauth2-boto-plugin = throw "gcs-oauth2-boto-plugin was removed as it depends on the removed boto package"; # Added 2024-09-22 gdtoolkit = throw "gdtoolkit has been promoted to a top-level attribute name: `pkgs.gdtoolkit`"; # added 2023-02-15 + geeknote = throw "geeknote depends on the Python2-only library evernote"; # Added 2025-03-22 GeoIP = geoip; # added 2023-02-19 gigalixir = throw "gigalixir has been promoted to a top-level attribute name: `pkgs.gigalixir`"; # Added 2022-10-02 gitdb2 = throw "gitdb2 has been deprecated, use gitdb instead."; # added 2020-03-14 @@ -390,6 +392,7 @@ mapAliases ({ mitmproxy-wireguard = throw "mitmproxy-wireguard has been removed because it was replaced by upstream with mitmproxy-rs"; # added 2023-11-06 mkdocs-awesome-pages-plugin = mkdocs-awesome-nav; # added 2025-03-10 mkdocs-minify = mkdocs-minify-plugin; # added 2023-11-28 + modestmaps = throw "modestmaps is unmaintained and was never enabled for anything except Python27"; # Added 2025-03-23 mox = throw "mox was removed because it is unmaintained"; # added 2023-02-21 mox3 = throw "mox3 was removed because it is unmaintained"; # added 2024-08-30 mrkd = throw "mrkd has been promoted to a top-level attribute name: `pkgs.mrkd`"; # added 2023-08-01 @@ -491,6 +494,7 @@ mapAliases ({ pyalmond = throw "pyalmond has been removed, since its API endpoints have been shutdown"; # added 2023-02-02 pyblake2 = throw "pyblake2 is deprecated in favor of hashlib"; # added 2023-04-23 pyblock = throw "pyblock has been removed, since it is abandoned and broken"; # added 2023-06-20 + pychart = throw "pychart does not support Python3"; # added 2025-03-23 pycontracts = throw "pycontracts has been removed, since upstream is no longer active and it is broken on modern Python versions."; # added 2024-08-09 pydns = py3dns; # added 2024-10-25 pydrive = throw "pydrive is broken and deprecated and has been replaced with pydrive2."; # added 2022-06-01 @@ -594,6 +598,7 @@ mapAliases ({ python-Levenshtein = levenshtein; python-pushover = throw "python-pushover has been removed, since it is unmaintained and is broken"; # added 2023-07-03 python-subunit = subunit; # added 2021-09-10 + python-wifi = throw "python-wifi does not support Python3"; pytest_xdist = pytest-xdist; # added 2021-01-04 python_simple_hipchat = python-simple-hipchat; # added 2021-07-21 pytoml = throw "pytoml has been removed because it is unmaintained and is superseded by toml"; # Added 2023-04-11 @@ -711,6 +716,7 @@ mapAliases ({ tensorflow-estimator_2 = tensorflow-estimator; # added 2021-11-25 tensorflow-tensorboard = tensorboard; # added 2022-03-06 tensorflow-tensorboard_2 = tensorflow-tensorboard; # added 2021-11-25 + tilestache = throw "tilestache is unmaintained and Python3 compatibility is unknown"; # Added 2025-03-23 Theano = theano; # added 2023-02-19 TheanoWithCuda = theanoWithCuda; # added 2023-02-19 TheanoWithoutCuda = theanoWithoutCuda; # added 2023-02-19 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 181acab6fa03..7aaf06856b21 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4530,8 +4530,6 @@ self: super: with self; { events = callPackage ../development/python-modules/events { }; - evernote = callPackage ../development/python-modules/evernote { }; - evohome-async = callPackage ../development/python-modules/evohome-async { }; evolutionhttp = callPackage ../development/python-modules/evolutionhttp { }; @@ -5345,8 +5343,6 @@ self: super: with self; { } ); - geeknote = callPackage ../development/python-modules/geeknote { }; - gehomesdk = callPackage ../development/python-modules/gehomesdk { }; gekitchen = callPackage ../development/python-modules/gekitchen { }; @@ -8895,8 +8891,6 @@ self: super: with self; { moderngl-window = callPackage ../development/python-modules/moderngl-window { }; - modestmaps = callPackage ../development/python-modules/modestmaps { }; - mohawk = callPackage ../development/python-modules/mohawk { }; molbar = callPackage ../development/python-modules/molbar { }; @@ -10311,6 +10305,10 @@ self: super: with self; { callPackage ../development/python-modules/opentelemetry-instrumentation-requests { }; + opentelemetry-instrumentation-sqlalchemy = + callPackage ../development/python-modules/opentelemetry-instrumentation-sqlalchemy + { }; + opentelemetry-instrumentation-wsgi = callPackage ../development/python-modules/opentelemetry-instrumentation-wsgi { }; @@ -11839,8 +11837,6 @@ self: super: with self; { pychannels = callPackage ../development/python-modules/pychannels { }; - pychart = callPackage ../development/python-modules/pychart { }; - pychm = callPackage ../development/python-modules/pychm { }; pychromecast = callPackage ../development/python-modules/pychromecast { }; @@ -14112,8 +14108,6 @@ self: super: with self; { python-whois = callPackage ../development/python-modules/python-whois { }; - python-wifi = callPackage ../development/python-modules/python-wifi { }; - python-wink = callPackage ../development/python-modules/python-wink { }; python-xapp = callPackage ../development/python-modules/python-xapp { @@ -17109,8 +17103,6 @@ self: super: with self; { tiler = callPackage ../development/python-modules/tiler { }; - tilestache = callPackage ../development/python-modules/tilestache { }; - tilt-ble = callPackage ../development/python-modules/tilt-ble { }; time-machine = callPackage ../development/python-modules/time-machine { }; @@ -17476,6 +17468,8 @@ self: super: with self; { ttfautohint-py = callPackage ../development/python-modules/ttfautohint-py { }; + ttkbootstrap = callPackage ../development/python-modules/ttkbootstrap { }; + ttls = callPackage ../development/python-modules/ttls { }; ttn-client = callPackage ../development/python-modules/ttn-client { }; diff --git a/pkgs/top-level/qt5-packages.nix b/pkgs/top-level/qt5-packages.nix index a307fb5b072d..8d0f06d0f091 100644 --- a/pkgs/top-level/qt5-packages.nix +++ b/pkgs/top-level/qt5-packages.nix @@ -7,6 +7,7 @@ { lib +, config , __splicedPackages , makeScopeWithSplicing' , generateSplicesForMkScope @@ -47,7 +48,7 @@ makeScopeWithSplicing' { kdeGear = let mkGear = import ../applications/kde; attrs = { - inherit libsForQt5; + inherit config libsForQt5; inherit (pkgs) lib fetchurl; }; in (lib.makeOverridable mkGear attrs);