diff --git a/lib/licenses.nix b/lib/licenses.nix index f54ab464357b..52956e52afa6 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -842,6 +842,12 @@ in mkLicense lset) ({ fullName = "SGI Free Software License B v2.0"; }; + # Gentoo seems to treat it as a license: + # https://gitweb.gentoo.org/repo/gentoo.git/tree/licenses/SGMLUG?id=7d999af4a47bf55e53e54713d98d145f935935c1 + sgmlug = { + fullName = "SGML UG SGML Parser Materials license"; + }; + sleepycat = { spdxId = "Sleepycat"; fullName = "Sleepycat License"; diff --git a/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml index 2b4fb6fc92f2..2d68e7f5426f 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml @@ -76,6 +76,14 @@ services.v2raya. + + + ulogd, + a userspace logging daemon for netfilter/iptables related + logging. Available as + services.ulogd. + +
@@ -399,6 +407,21 @@ here. + + + Garage + version is based on + system.stateVersion, + existing installations will keep using version 0.7. New + installations will use version 0.8. In order to upgrade a + Garage cluster, please follow + upstream + instructions and force + services.garage.package + or upgrade accordingly + system.stateVersion. + + Resilio sync secret keys can now be provided using a secrets diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md index 1328f317dbfa..d960ab03faae 100644 --- a/nixos/doc/manual/release-notes/rl-2305.section.md +++ b/nixos/doc/manual/release-notes/rl-2305.section.md @@ -28,6 +28,8 @@ In addition to numerous new and upgraded packages, this release has the followin - [v2rayA](https://v2raya.org), a Linux web GUI client of Project V which supports V2Ray, Xray, SS, SSR, Trojan and Pingtunnel. Available as [services.v2raya](options.html#opt-services.v2raya.enable). +- [ulogd](https://www.netfilter.org/projects/ulogd/index.html), a userspace logging daemon for netfilter/iptables related logging. Available as [services.ulogd](options.html#opt-services.ulogd.enable). + ## Backward Incompatibilities {#sec-release-23.05-incompatibilities} @@ -109,6 +111,8 @@ In addition to numerous new and upgraded packages, this release has the followin - A new option `recommendedBrotliSettings` has been added to `services.nginx`. Learn more about compression in Brotli format [here](https://github.com/google/ngx_brotli/blob/master/README.md). +- [Garage](https://garagehq.deuxfleurs.fr/) version is based on [system.stateVersion](options.html#opt-system.stateVersion), existing installations will keep using version 0.7. New installations will use version 0.8. In order to upgrade a Garage cluster, please follow [upstream instructions](https://garagehq.deuxfleurs.fr/documentation/cookbook/upgrading/) and force [services.garage.package](options.html#opt-services.garage.package) or upgrade accordingly [system.stateVersion](options.html#opt-system.stateVersion). + - Resilio sync secret keys can now be provided using a secrets file at runtime, preventing these secrets from ending up in the Nix store. - The `firewall` and `nat` module now has a nftables based implementation. Enable `networking.nftables` to use it. diff --git a/nixos/lib/test-driver/test_driver/__init__.py b/nixos/lib/test-driver/test_driver/__init__.py index 61d91c9ed654..db7e0ed33a89 100755 --- a/nixos/lib/test-driver/test_driver/__init__.py +++ b/nixos/lib/test-driver/test_driver/__init__.py @@ -41,11 +41,9 @@ def writeable_dir(arg: str) -> Path: """ path = Path(arg) if not path.is_dir(): - raise argparse.ArgumentTypeError("{0} is not a directory".format(path)) + raise argparse.ArgumentTypeError(f"{path} is not a directory") if not os.access(path, os.W_OK): - raise argparse.ArgumentTypeError( - "{0} is not a writeable directory".format(path) - ) + raise argparse.ArgumentTypeError(f"{path} is not a writeable directory") return path diff --git a/nixos/lib/test-driver/test_driver/driver.py b/nixos/lib/test-driver/test_driver/driver.py index 6542a2e2f693..de6abbb4679e 100644 --- a/nixos/lib/test-driver/test_driver/driver.py +++ b/nixos/lib/test-driver/test_driver/driver.py @@ -19,15 +19,11 @@ def get_tmp_dir() -> Path: tmp_dir.mkdir(mode=0o700, exist_ok=True) if not tmp_dir.is_dir(): raise NotADirectoryError( - "The directory defined by TMPDIR, TEMP, TMP or CWD: {0} is not a directory".format( - tmp_dir - ) + f"The directory defined by TMPDIR, TEMP, TMP or CWD: {tmp_dir} is not a directory" ) if not os.access(tmp_dir, os.W_OK): raise PermissionError( - "The directory defined by TMPDIR, TEMP, TMP, or CWD: {0} is not writeable".format( - tmp_dir - ) + f"The directory defined by TMPDIR, TEMP, TMP, or CWD: {tmp_dir} is not writeable" ) return tmp_dir diff --git a/nixos/lib/test-driver/test_driver/logger.py b/nixos/lib/test-driver/test_driver/logger.py index 59ed29547231..e6182ff7c761 100644 --- a/nixos/lib/test-driver/test_driver/logger.py +++ b/nixos/lib/test-driver/test_driver/logger.py @@ -36,7 +36,7 @@ class Logger: def maybe_prefix(self, message: str, attributes: Dict[str, str]) -> str: if "machine" in attributes: - return "{}: {}".format(attributes["machine"], message) + return f"{attributes['machine']}: {message}" return message def log_line(self, message: str, attributes: Dict[str, str]) -> None: @@ -62,9 +62,7 @@ class Logger: def log_serial(self, message: str, machine: str) -> None: self.enqueue({"msg": message, "machine": machine, "type": "serial"}) if self._print_serial_logs: - self._eprint( - Style.DIM + "{} # {}".format(machine, message) + Style.RESET_ALL - ) + self._eprint(Style.DIM + f"{machine} # {message}" + Style.RESET_ALL) def enqueue(self, item: Dict[str, str]) -> None: self.queue.put(item) @@ -97,7 +95,7 @@ class Logger: yield self.drain_log_queue() toc = time.time() - self.log("(finished: {}, in {:.2f} seconds)".format(message, toc - tic)) + self.log(f"(finished: {message}, in {toc - tic:.2f} seconds)") self.xml.endElement("nest") diff --git a/nixos/lib/test-driver/test_driver/machine.py b/nixos/lib/test-driver/test_driver/machine.py index c59ef3b17262..322b71157787 100644 --- a/nixos/lib/test-driver/test_driver/machine.py +++ b/nixos/lib/test-driver/test_driver/machine.py @@ -420,8 +420,8 @@ class Machine: def send_monitor_command(self, command: str) -> str: self.run_callbacks() - with self.nested("sending monitor command: {}".format(command)): - message = ("{}\n".format(command)).encode() + with self.nested(f"sending monitor command: {command}"): + message = f"{command}\n".encode() assert self.monitor is not None self.monitor.send(message) return self.wait_for_monitor_prompt() @@ -438,7 +438,7 @@ class Machine: info = self.get_unit_info(unit, user) state = info["ActiveState"] if state == "failed": - raise Exception('unit "{}" reached state "{}"'.format(unit, state)) + raise Exception(f'unit "{unit}" reached state "{state}"') if state == "inactive": status, jobs = self.systemctl("list-jobs --full 2>&1", user) @@ -446,27 +446,24 @@ class Machine: info = self.get_unit_info(unit, user) if info["ActiveState"] == state: raise Exception( - ( - 'unit "{}" is inactive and there ' "are no pending jobs" - ).format(unit) + f'unit "{unit}" is inactive and there are no pending jobs' ) return state == "active" with self.nested( - "waiting for unit {}{}".format( - unit, f" with user {user}" if user is not None else "" - ) + f"waiting for unit {unit}" + + (f" with user {user}" if user is not None else "") ): retry(check_active, timeout) def get_unit_info(self, unit: str, user: Optional[str] = None) -> Dict[str, str]: - status, lines = self.systemctl('--no-pager show "{}"'.format(unit), user) + status, lines = self.systemctl(f'--no-pager show "{unit}"', user) if status != 0: raise Exception( - 'retrieving systemctl info for unit "{}" {} failed with exit code {}'.format( - unit, "" if user is None else 'under user "{}"'.format(user), status - ) + f'retrieving systemctl info for unit "{unit}"' + + ("" if user is None else f' under user "{user}"') + + f" failed with exit code {status}" ) line_pattern = re.compile(r"^([^=]+)=(.*)$") @@ -486,24 +483,22 @@ class Machine: if user is not None: q = q.replace("'", "\\'") return self.execute( - ( - "su -l {} --shell /bin/sh -c " - "$'XDG_RUNTIME_DIR=/run/user/`id -u` " - "systemctl --user {}'" - ).format(user, q) + f"su -l {user} --shell /bin/sh -c " + "$'XDG_RUNTIME_DIR=/run/user/`id -u` " + f"systemctl --user {q}'" ) - return self.execute("systemctl {}".format(q)) + return self.execute(f"systemctl {q}") def require_unit_state(self, unit: str, require_state: str = "active") -> None: with self.nested( - "checking if unit ‘{}’ has reached state '{}'".format(unit, require_state) + f"checking if unit '{unit}' has reached state '{require_state}'" ): info = self.get_unit_info(unit) state = info["ActiveState"] if state != require_state: raise Exception( - "Expected unit ‘{}’ to to be in state ".format(unit) - + "'{}' but it is in state ‘{}’".format(require_state, state) + f"Expected unit '{unit}' to to be in state " + f"'{require_state}' but it is in state '{state}'" ) def _next_newline_closed_block_from_shell(self) -> str: @@ -593,13 +588,11 @@ class Machine: """Execute each command and check that it succeeds.""" output = "" for command in commands: - with self.nested("must succeed: {}".format(command)): + with self.nested(f"must succeed: {command}"): (status, out) = self.execute(command, timeout=timeout) if status != 0: - self.log("output: {}".format(out)) - raise Exception( - "command `{}` failed (exit code {})".format(command, status) - ) + self.log(f"output: {out}") + raise Exception(f"command `{command}` failed (exit code {status})") output += out return output @@ -607,12 +600,10 @@ class Machine: """Execute each command and check that it fails.""" output = "" for command in commands: - with self.nested("must fail: {}".format(command)): + with self.nested(f"must fail: {command}"): (status, out) = self.execute(command, timeout=timeout) if status == 0: - raise Exception( - "command `{}` unexpectedly succeeded".format(command) - ) + raise Exception(f"command `{command}` unexpectedly succeeded") output += out return output @@ -627,7 +618,7 @@ class Machine: status, output = self.execute(command, timeout=timeout) return status == 0 - with self.nested("waiting for success: {}".format(command)): + with self.nested(f"waiting for success: {command}"): retry(check_success, timeout) return output @@ -642,7 +633,7 @@ class Machine: status, output = self.execute(command, timeout=timeout) return status != 0 - with self.nested("waiting for failure: {}".format(command)): + with self.nested(f"waiting for failure: {command}"): retry(check_failure) return output @@ -661,8 +652,8 @@ class Machine: def get_tty_text(self, tty: str) -> str: status, output = self.execute( - "fold -w$(stty -F /dev/tty{0} size | " - "awk '{{print $2}}') /dev/vcs{0}".format(tty) + f"fold -w$(stty -F /dev/tty{tty} size | " + f"awk '{{print $2}}') /dev/vcs{tty}" ) return output @@ -681,11 +672,11 @@ class Machine: ) return len(matcher.findall(text)) > 0 - with self.nested("waiting for {} to appear on tty {}".format(regexp, tty)): + with self.nested(f"waiting for {regexp} to appear on tty {tty}"): retry(tty_matches) def send_chars(self, chars: str, delay: Optional[float] = 0.01) -> None: - with self.nested("sending keys ‘{}‘".format(chars)): + with self.nested(f"sending keys '{chars}'"): for char in chars: self.send_key(char, delay) @@ -693,35 +684,33 @@ class Machine: """Waits until the file exists in machine's file system.""" def check_file(_: Any) -> bool: - status, _ = self.execute("test -e {}".format(filename)) + status, _ = self.execute(f"test -e {filename}") return status == 0 - with self.nested("waiting for file ‘{}‘".format(filename)): + with self.nested(f"waiting for file '{filename}'"): retry(check_file) def wait_for_open_port(self, port: int, addr: str = "localhost") -> None: def port_is_open(_: Any) -> bool: - status, _ = self.execute("nc -z {} {}".format(addr, port)) + status, _ = self.execute(f"nc -z {addr} {port}") return status == 0 - with self.nested("waiting for TCP port {} on {}".format(port, addr)): + with self.nested(f"waiting for TCP port {port} on {addr}"): retry(port_is_open) def wait_for_closed_port(self, port: int, addr: str = "localhost") -> None: def port_is_closed(_: Any) -> bool: - status, _ = self.execute("nc -z {} {}".format(addr, port)) + status, _ = self.execute(f"nc -z {addr} {port}") return status != 0 - with self.nested( - "waiting for TCP port {} on {} to be closed".format(port, addr) - ): + with self.nested(f"waiting for TCP port {port} on {addr} to be closed"): retry(port_is_closed) def start_job(self, jobname: str, user: Optional[str] = None) -> Tuple[int, str]: - return self.systemctl("start {}".format(jobname), user) + return self.systemctl(f"start {jobname}", user) def stop_job(self, jobname: str, user: Optional[str] = None) -> Tuple[int, str]: - return self.systemctl("stop {}".format(jobname), user) + return self.systemctl(f"stop {jobname}", user) def wait_for_job(self, jobname: str) -> None: self.wait_for_unit(jobname) @@ -741,21 +730,21 @@ class Machine: toc = time.time() self.log("connected to guest root shell") - self.log("(connecting took {:.2f} seconds)".format(toc - tic)) + self.log(f"(connecting took {toc - tic:.2f} seconds)") self.connected = True def screenshot(self, filename: str) -> None: word_pattern = re.compile(r"^\w+$") if word_pattern.match(filename): - filename = os.path.join(self.out_dir, "{}.png".format(filename)) - tmp = "{}.ppm".format(filename) + filename = os.path.join(self.out_dir, f"{filename}.png") + tmp = f"{filename}.ppm" with self.nested( - "making screenshot {}".format(filename), + f"making screenshot {filename}", {"image": os.path.basename(filename)}, ): - self.send_monitor_command("screendump {}".format(tmp)) - ret = subprocess.run("pnmtopng {} > {}".format(tmp, filename), shell=True) + self.send_monitor_command(f"screendump {tmp}") + ret = subprocess.run(f"pnmtopng {tmp} > {filename}", shell=True) os.unlink(tmp) if ret.returncode != 0: raise Exception("Cannot convert screenshot") @@ -817,7 +806,7 @@ class Machine: def dump_tty_contents(self, tty: str) -> None: """Debugging: Dump the contents of the TTY""" - self.execute("fold -w 80 /dev/vcs{} | systemd-cat".format(tty)) + self.execute(f"fold -w 80 /dev/vcs{tty} | systemd-cat") def _get_screen_text_variants(self, model_ids: Iterable[int]) -> List[str]: with tempfile.TemporaryDirectory() as tmpdir: @@ -839,15 +828,15 @@ class Machine: return True if last: - self.log("Last OCR attempt failed. Text was: {}".format(variants)) + self.log(f"Last OCR attempt failed. Text was: {variants}") return False - with self.nested("waiting for {} to appear on screen".format(regex)): + with self.nested(f"waiting for {regex} to appear on screen"): retry(screen_matches) def wait_for_console_text(self, regex: str) -> None: - with self.nested("waiting for {} to appear on console".format(regex)): + with self.nested(f"waiting for {regex} to appear on console"): # Buffer the console output, this is needed # to match multiline regexes. console = io.StringIO() @@ -864,7 +853,7 @@ class Machine: def send_key(self, key: str, delay: Optional[float] = 0.01) -> None: key = CHAR_TO_KEY.get(key, key) - self.send_monitor_command("sendkey {}".format(key)) + self.send_monitor_command(f"sendkey {key}") if delay is not None: time.sleep(delay) @@ -923,7 +912,7 @@ class Machine: self.pid = self.process.pid self.booted = True - self.log("QEMU running (pid {})".format(self.pid)) + self.log(f"QEMU running (pid {self.pid})") def cleanup_statedir(self) -> None: shutil.rmtree(self.state_dir) @@ -977,7 +966,7 @@ class Machine: names = self.get_window_names() if last_try: self.log( - "Last chance to match {} on the window list,".format(regexp) + f"Last chance to match {regexp} on the window list," + " which currently contains: " + ", ".join(names) ) @@ -994,9 +983,7 @@ class Machine: """Forward a TCP port on the host to a TCP port on the guest. Useful during interactive testing. """ - self.send_monitor_command( - "hostfwd_add tcp::{}-:{}".format(host_port, guest_port) - ) + self.send_monitor_command(f"hostfwd_add tcp::{host_port}-:{guest_port}") def block(self) -> None: """Make the machine unreachable by shutting down eth1 (the multicast diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index 81aca8617389..659df7851b08 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -77,6 +77,14 @@ let else config.boot.loader.timeout * 10; + # Timeout in grub is in seconds. + # null means max timeout (infinity) + # 0 means disable timeout + grubEfiTimeout = if config.boot.loader.timeout == null then + -1 + else + config.boot.loader.timeout; + # The configuration file for syslinux. # Notes on syslinux configuration and UNetbootin compatibility: @@ -284,7 +292,7 @@ let if serial; then set with_serial=yes ;fi export with_serial clear - set timeout=10 + set timeout=${toString grubEfiTimeout} # This message will only be viewable when "gfxterm" is not used. echo "" diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index dd0921243a7c..49b6736888dc 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -520,6 +520,7 @@ ./services/logging/syslog-ng.nix ./services/logging/syslogd.nix ./services/logging/vector.nix + ./services/logging/ulogd.nix ./services/mail/clamsmtp.nix ./services/mail/davmail.nix ./services/mail/dkimproxy-out.nix diff --git a/nixos/modules/services/logging/ulogd.nix b/nixos/modules/services/logging/ulogd.nix new file mode 100644 index 000000000000..065032b531c6 --- /dev/null +++ b/nixos/modules/services/logging/ulogd.nix @@ -0,0 +1,48 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.ulogd; + settingsFormat = pkgs.formats.ini { }; + settingsFile = settingsFormat.generate "ulogd.conf" cfg.settings; +in { + options = { + services.ulogd = { + enable = mkEnableOption (lib.mdDoc "ulogd"); + + settings = mkOption { + example = { + global.stack = "stack=log1:NFLOG,base1:BASE,pcap1:PCAP"; + log1.group = 2; + pcap1 = { + file = "/var/log/ulogd.pcap"; + sync = 1; + }; + }; + type = settingsFormat.type; + default = { }; + description = lib.mdDoc "Configuration for ulogd. See {file}`/share/doc/ulogd/` in `pkgs.ulogd.doc`."; + }; + + logLevel = mkOption { + type = types.enum [ 1 3 5 7 8 ]; + default = 5; + description = lib.mdDoc "Log level (1 = debug, 3 = info, 5 = notice, 7 = error, 8 = fatal)"; + }; + }; + }; + + config = mkIf cfg.enable { + systemd.services.ulogd = { + description = "Ulogd Daemon"; + wantedBy = [ "multi-user.target" ]; + wants = [ "network-pre.target" ]; + before = [ "network-pre.target" ]; + + serviceConfig = { + ExecStart = "${pkgs.ulogd}/bin/ulogd -c ${settingsFile} --verbose --loglevel ${toString cfg.logLevel}"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/cloudflared.nix b/nixos/modules/services/networking/cloudflared.nix index c8fc9fafee6d..3ee43072ba86 100644 --- a/nixos/modules/services/networking/cloudflared.nix +++ b/nixos/modules/services/networking/cloudflared.nix @@ -168,8 +168,7 @@ in inherit originRequest; credentialsFile = mkOption { - type = with types; nullOr str; - default = null; + type = types.str; description = lib.mdDoc '' Credential file. @@ -190,8 +189,7 @@ in }; default = mkOption { - type = with types; nullOr str; - default = null; + type = types.str; description = lib.mdDoc '' Catch-all service if no ingress matches. @@ -262,12 +260,12 @@ in systemd.targets = mapAttrs' (name: tunnel: - nameValuePair "cloudflared-tunnel-${name}" ({ - description = lib.mdDoc "Cloudflare tunnel '${name}' target"; + nameValuePair "cloudflared-tunnel-${name}" { + description = "Cloudflare tunnel '${name}' target"; requires = [ "cloudflared-tunnel-${name}.service" ]; after = [ "cloudflared-tunnel-${name}.service" ]; unitConfig.StopWhenUnneeded = true; - }) + } ) config.services.cloudflared.tunnels; diff --git a/nixos/modules/services/networking/openconnect.nix b/nixos/modules/services/networking/openconnect.nix index 469f0a3bc3bb..4676b1733af6 100644 --- a/nixos/modules/services/networking/openconnect.nix +++ b/nixos/modules/services/networking/openconnect.nix @@ -32,6 +32,7 @@ let description = lib.mdDoc "Username to authenticate with."; example = "example-user"; type = types.nullOr types.str; + default = null; }; # Note: It does not make sense to provide a way to declaratively @@ -108,7 +109,7 @@ let ExecStart = "${openconnect}/bin/openconnect --config=${ generateConfig name icfg } ${icfg.gateway}"; - StandardInput = "file:${icfg.passwordFile}"; + StandardInput = lib.mkIf (icfg.passwordFile != null) "file:${icfg.passwordFile}"; ProtectHome = true; }; diff --git a/nixos/modules/services/web-servers/garage-doc.xml b/nixos/modules/services/web-servers/garage-doc.xml new file mode 100644 index 000000000000..16f6fde94b5a --- /dev/null +++ b/nixos/modules/services/web-servers/garage-doc.xml @@ -0,0 +1,139 @@ + + Garage + + Garage + is an open-source, self-hostable S3 store, simpler than MinIO, for geodistributed stores. + The server setup can be automated using + services.garage. A + client configured to your local Garage instance is available in + the global environment as garage-manage. + + + The current default by NixOS is garage_0_8 which is also the latest + major version available. + +
+ General considerations on upgrades + + + Garage provides a cookbook documentation on how to upgrade: + https://garagehq.deuxfleurs.fr/documentation/cookbook/upgrading/ + + + + Garage has two types of upgrades: patch-level upgrades and minor/major version upgrades. + + In all cases, you should read the changelog and ideally test the upgrade on a staging cluster. + + Checking the health of your cluster can be achieved using garage-manage repair. + + + + + Until 1.0 is released, patch-level upgrades are considered as minor version upgrades. + Minor version upgrades are considered as major version upgrades. + i.e. 0.6 to 0.7 is a major version upgrade. + + + + + + Straightforward upgrades (patch-level upgrades) + + Upgrades must be performed one by one, i.e. for each node, stop it, upgrade it : change stateVersion or services.garage.package, restart it if it was not already by switching. + + + + + + + Multiple version upgrades + + Garage do not provide any guarantee on moving more than one major-version forward. + E.g., if you're on 0.7, you cannot upgrade to 0.9. + You need to upgrade to 0.8 first. + + As long as stateVersion is declared properly, + this is enforced automatically. The module will issue a warning to remind the user to upgrade to latest + Garage after that deploy. + + + + +
+ +
+ Advanced upgrades (minor/major version upgrades) + Here are some baseline instructions to handle advanced upgrades in Garage, when in doubt, please refer to upstream instructions. + + + Disable API and web access to Garage. + Perform garage-manage repair --all-nodes --yes tables and garage-manage repair --all-nodes --yes blocks. + Verify the resulting logs and check that data is synced properly between all nodes. + If you have time, do additional checks (scrub, block_refs, etc.). + Check if queues are empty by garage-manage stats or through monitoring tools. + Run systemctl stop garage to stop the actual Garage version. + Backup the metadata folder of ALL your nodes, e.g. for a metadata directory (the default one) in /var/lib/garage/meta, + you can run pushd /var/lib/garage; tar -acf meta-v0.7.tar.zst meta/; popd. + Run the offline migration: nix-shell -p garage_0_8 --run "garage offline-repair --yes", this can take some time depending on how many objects are stored in your cluster. + Bump Garage version in your NixOS configuration, either by changing stateVersion or bumping services.garage.package, this should restart Garage automatically. + Perform garage-manage repair --all-nodes --yes tables and garage-manage repair --all-nodes --yes blocks. + Wait for a full table sync to run. + + + + Your upgraded cluster should be in a working state, re-enable API and web access. + +
+ +
+ Maintainer information + + + As stated in the previous paragraph, we must provide a clean upgrade-path for Garage + since it cannot move more than one major version forward on a single upgrade. This chapter + adds some notes how Garage updates should be rolled out in the future. + + This is inspired from how Nextcloud does it. + + + + While patch-level updates are no problem and can be done directly in the + package-expression (and should be backported to supported stable branches after that), + major-releases should be added in a new attribute (e.g. Garage v0.8.0 + should be available in nixpkgs as pkgs.garage_0_8_0). + To provide simple upgrade paths it's generally useful to backport those as well to stable + branches. As long as the package-default isn't altered, this won't break existing setups. + After that, the versioning-warning in the garage-module should be + updated to make sure that the + package-option selects the latest version + on fresh setups. + + + + If major-releases will be abandoned by upstream, we should check first if those are needed + in NixOS for a safe upgrade-path before removing those. In that case we shold keep those + packages, but mark them as insecure in an expression like this (in + <nixpkgs/pkgs/tools/filesystem/garage/default.nix>): +/* ... */ +{ + garage_0_7_3 = generic { + version = "0.7.3"; + sha256 = "0000000000000000000000000000000000000000000000000000"; + eol = true; + }; +} + + + + Ideally we should make sure that it's possible to jump two NixOS versions forward: + i.e. the warnings and the logic in the module should guard a user to upgrade from a + Garage on e.g. 22.11 to a Garage on 23.11. + +
+ +
diff --git a/nixos/modules/services/web-servers/garage.nix b/nixos/modules/services/web-servers/garage.nix index 76ab273483eb..d66bcd731508 100644 --- a/nixos/modules/services/web-servers/garage.nix +++ b/nixos/modules/services/web-servers/garage.nix @@ -8,7 +8,10 @@ let configFile = toml.generate "garage.toml" cfg.settings; in { - meta.maintainers = [ maintainers.raitobezarius ]; + meta = { + doc = ./garage-doc.xml; + maintainers = with pkgs.lib.maintainers; [ raitobezarius ]; + }; options.services.garage = { enable = mkEnableOption (lib.mdDoc "Garage Object Storage (S3 compatible)"); @@ -56,10 +59,12 @@ in }; package = mkOption { - default = pkgs.garage; - defaultText = literalExpression "pkgs.garage"; + # TODO: when 23.05 is released and if Garage 0.9 is the default, put a stateVersion check. + default = if versionAtLeast stateVersion "23.05" then pkgs.garage_0_8_0 + else pkgs.garage_0_7; + defaultText = literalExpression "pkgs.garage_0_7"; type = types.package; - description = lib.mdDoc "Garage package to use."; + description = lib.mdDoc "Garage package to use, if you are upgrading from a major version, please read NixOS and Garage release notes for upgrade instructions."; }; }; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 36a5c9843c2f..9fe1bd9e38f5 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -229,7 +229,7 @@ in { fsck = handleTest ./fsck.nix {}; ft2-clone = handleTest ./ft2-clone.nix {}; mimir = handleTest ./mimir.nix {}; - garage = handleTest ./garage.nix {}; + garage = handleTest ./garage {}; gerrit = handleTest ./gerrit.nix {}; geth = handleTest ./geth.nix {}; ghostunnel = handleTest ./ghostunnel.nix {}; @@ -240,6 +240,7 @@ in { gitolite-fcgiwrap = handleTest ./gitolite-fcgiwrap.nix {}; glusterfs = handleTest ./glusterfs.nix {}; gnome = handleTest ./gnome.nix {}; + gnome-flashback = handleTest ./gnome-flashback.nix {}; gnome-xorg = handleTest ./gnome-xorg.nix {}; go-neb = handleTest ./go-neb.nix {}; gobgpd = handleTest ./gobgpd.nix {}; @@ -683,6 +684,7 @@ in { tuxguitar = handleTest ./tuxguitar.nix {}; ucarp = handleTest ./ucarp.nix {}; udisks2 = handleTest ./udisks2.nix {}; + ulogd = handleTest ./ulogd.nix {}; unbound = handleTest ./unbound.nix {}; unifi = handleTest ./unifi.nix {}; unit-php = handleTest ./web-servers/unit-php.nix {}; diff --git a/nixos/tests/garage/basic.nix b/nixos/tests/garage/basic.nix new file mode 100644 index 000000000000..b6df1e72af98 --- /dev/null +++ b/nixos/tests/garage/basic.nix @@ -0,0 +1,98 @@ +args@{ mkNode, ... }: +(import ../make-test-python.nix ({ pkgs, ...} : { + name = "garage-basic"; + meta = { + maintainers = with pkgs.lib.maintainers; [ raitobezarius ]; + }; + + nodes = { + single_node = mkNode { replicationMode = "none"; }; + }; + + testScript = '' + from typing import List + from dataclasses import dataclass + import re + + start_all() + + cur_version_regex = re.compile('Current cluster layout version: (?P\d*)') + key_creation_regex = re.compile('Key name: (?P.*)\nKey ID: (?P.*)\nSecret key: (?P.*)') + + @dataclass + class S3Key: + key_name: str + key_id: str + secret_key: str + + @dataclass + class GarageNode: + node_id: str + host: str + + def get_node_fqn(machine: Machine) -> GarageNode: + node_id, host = machine.succeed("garage node id").split('@') + return GarageNode(node_id=node_id, host=host) + + def get_node_id(machine: Machine) -> str: + return get_node_fqn(machine).node_id + + def get_layout_version(machine: Machine) -> int: + version_data = machine.succeed("garage layout show") + m = cur_version_regex.search(version_data) + if m and m.group('ver') is not None: + return int(m.group('ver')) + 1 + else: + raise ValueError('Cannot find current layout version') + + def apply_garage_layout(machine: Machine, layouts: List[str]): + for layout in layouts: + machine.succeed(f"garage layout assign {layout}") + version = get_layout_version(machine) + machine.succeed(f"garage layout apply --version {version}") + + def create_api_key(machine: Machine, key_name: str) -> S3Key: + output = machine.succeed(f"garage key new --name {key_name}") + m = key_creation_regex.match(output) + if not m or not m.group('key_id') or not m.group('secret_key'): + raise ValueError('Cannot parse API key data') + return S3Key(key_name=key_name, key_id=m.group('key_id'), secret_key=m.group('secret_key')) + + def get_api_key(machine: Machine, key_pattern: str) -> S3Key: + output = machine.succeed(f"garage key info {key_pattern}") + m = key_creation_regex.match(output) + if not m or not m.group('key_name') or not m.group('key_id') or not m.group('secret_key'): + raise ValueError('Cannot parse API key data') + return S3Key(key_name=m.group('key_name'), key_id=m.group('key_id'), secret_key=m.group('secret_key')) + + def test_bucket_writes(node): + node.succeed("garage bucket create test-bucket") + s3_key = create_api_key(node, "test-api-key") + node.succeed("garage bucket allow --read --write test-bucket --key test-api-key") + other_s3_key = get_api_key(node, 'test-api-key') + assert other_s3_key.secret_key == other_s3_key.secret_key + node.succeed( + f"mc alias set test-garage http://[::1]:3900 {s3_key.key_id} {s3_key.secret_key} --api S3v4" + ) + node.succeed("echo test | mc pipe test-garage/test-bucket/test.txt") + assert node.succeed("mc cat test-garage/test-bucket/test.txt").strip() == "test" + + def test_bucket_over_http(node, bucket='test-bucket', url=None): + if url is None: + url = f"{bucket}.web.garage" + + node.succeed(f'garage bucket website --allow {bucket}') + node.succeed(f'echo hello world | mc pipe test-garage/{bucket}/index.html') + assert (node.succeed(f"curl -H 'Host: {url}' http://localhost:3902")).strip() == 'hello world' + + with subtest("Garage works as a single-node S3 storage"): + single_node.wait_for_unit("garage.service") + single_node.wait_for_open_port(3900) + # Now Garage is initialized. + single_node_id = get_node_id(single_node) + apply_garage_layout(single_node, [f'-z qemutest -c 1 "{single_node_id}"']) + # Now Garage is operational. + test_bucket_writes(single_node) + test_bucket_over_http(single_node) + ''; +})) args diff --git a/nixos/tests/garage/default.nix b/nixos/tests/garage/default.nix new file mode 100644 index 000000000000..4c38ea1bc898 --- /dev/null +++ b/nixos/tests/garage/default.nix @@ -0,0 +1,53 @@ +{ system ? builtins.currentSystem +, config ? { } +, pkgs ? import ../../.. { inherit system config; } +}: +with pkgs.lib; + +let + mkNode = package: { replicationMode, publicV6Address ? "::1" }: { pkgs, ... }: { + networking.interfaces.eth1.ipv6.addresses = [{ + address = publicV6Address; + prefixLength = 64; + }]; + + networking.firewall.allowedTCPPorts = [ 3901 3902 ]; + + services.garage = { + enable = true; + inherit package; + settings = { + replication_mode = replicationMode; + + rpc_bind_addr = "[::]:3901"; + rpc_public_addr = "[${publicV6Address}]:3901"; + rpc_secret = "5c1915fa04d0b6739675c61bf5907eb0fe3d9c69850c83820f51b4d25d13868c"; + + s3_api = { + s3_region = "garage"; + api_bind_addr = "[::]:3900"; + root_domain = ".s3.garage"; + }; + + s3_web = { + bind_addr = "[::]:3902"; + root_domain = ".web.garage"; + index = "index.html"; + }; + }; + }; + environment.systemPackages = [ pkgs.minio-client ]; + + # Garage requires at least 1GiB of free disk space to run. + virtualisation.diskSize = 2 * 1024; + }; +in + foldl + (matrix: ver: matrix // { + "basic${toString ver}" = import ./basic.nix { inherit system pkgs; mkNode = mkNode pkgs."garage_${ver}"; }; + "with-3node-replication${toString ver}" = import ./with-3node-replication.nix { inherit system pkgs; mkNode = mkNode pkgs."garage_${ver}"; }; + }) + {} + [ + "0_8_0" + ] diff --git a/nixos/tests/garage.nix b/nixos/tests/garage/with-3node-replication.nix similarity index 74% rename from nixos/tests/garage.nix rename to nixos/tests/garage/with-3node-replication.nix index dc1f83e7f8f3..d372ad1aa000 100644 --- a/nixos/tests/garage.nix +++ b/nixos/tests/garage/with-3node-replication.nix @@ -1,50 +1,12 @@ -import ./make-test-python.nix ({ pkgs, ...} : -let - mkNode = { replicationMode, publicV6Address ? "::1" }: { pkgs, ... }: { - networking.interfaces.eth1.ipv6.addresses = [{ - address = publicV6Address; - prefixLength = 64; - }]; - - networking.firewall.allowedTCPPorts = [ 3901 3902 ]; - - services.garage = { - enable = true; - settings = { - replication_mode = replicationMode; - - rpc_bind_addr = "[::]:3901"; - rpc_public_addr = "[${publicV6Address}]:3901"; - rpc_secret = "5c1915fa04d0b6739675c61bf5907eb0fe3d9c69850c83820f51b4d25d13868c"; - - s3_api = { - s3_region = "garage"; - api_bind_addr = "[::]:3900"; - root_domain = ".s3.garage"; - }; - - s3_web = { - bind_addr = "[::]:3902"; - root_domain = ".web.garage"; - index = "index.html"; - }; - }; - }; - environment.systemPackages = [ pkgs.minio-client ]; - - # Garage requires at least 1GiB of free disk space to run. - virtualisation.diskSize = 2 * 1024; - }; - - -in { - name = "garage"; +args@{ mkNode, ... }: +(import ../make-test-python.nix ({ pkgs, ...} : +{ + name = "garage-3node-replication"; meta = { maintainers = with pkgs.lib.maintainers; [ raitobezarius ]; }; nodes = { - single_node = mkNode { replicationMode = "none"; }; node1 = mkNode { replicationMode = 3; publicV6Address = "fc00:1::1"; }; node2 = mkNode { replicationMode = 3; publicV6Address = "fc00:1::2"; }; node3 = mkNode { replicationMode = 3; publicV6Address = "fc00:1::3"; }; @@ -126,16 +88,6 @@ in { node.succeed(f'echo hello world | mc pipe test-garage/{bucket}/index.html') assert (node.succeed(f"curl -H 'Host: {url}' http://localhost:3902")).strip() == 'hello world' - with subtest("Garage works as a single-node S3 storage"): - single_node.wait_for_unit("garage.service") - single_node.wait_for_open_port(3900) - # Now Garage is initialized. - single_node_id = get_node_id(single_node) - apply_garage_layout(single_node, [f'-z qemutest -c 1 "{single_node_id}"']) - # Now Garage is operational. - test_bucket_writes(single_node) - test_bucket_over_http(single_node) - with subtest("Garage works as a multi-node S3 storage"): nodes = ('node1', 'node2', 'node3', 'node4') rev_machines = {m.name: m for m in machines} @@ -166,4 +118,4 @@ in { for node in nodes: test_bucket_over_http(get_machine(node)) ''; -}) +})) args diff --git a/nixos/tests/gnome-flashback.nix b/nixos/tests/gnome-flashback.nix new file mode 100644 index 000000000000..c97264e6928a --- /dev/null +++ b/nixos/tests/gnome-flashback.nix @@ -0,0 +1,51 @@ +import ./make-test-python.nix ({ pkgs, lib, ...} : { + name = "gnome-flashback"; + meta = with lib; { + maintainers = teams.gnome.members ++ [ maintainers.chpatrick ]; + }; + + nodes.machine = { nodes, ... }: let + user = nodes.machine.config.users.users.alice; + in + + { imports = [ ./common/user-account.nix ]; + + services.xserver.enable = true; + + services.xserver.displayManager = { + gdm.enable = true; + gdm.debug = true; + autoLogin = { + enable = true; + user = user.name; + }; + }; + + services.xserver.desktopManager.gnome.enable = true; + services.xserver.desktopManager.gnome.debug = true; + services.xserver.desktopManager.gnome.flashback.enableMetacity = true; + services.xserver.displayManager.defaultSession = "gnome-flashback-metacity"; + }; + + testScript = { nodes, ... }: let + user = nodes.machine.config.users.users.alice; + uid = toString user.uid; + xauthority = "/run/user/${uid}/gdm/Xauthority"; + in '' + with subtest("Login to GNOME Flashback with GDM"): + machine.wait_for_x() + # Wait for alice to be logged in" + machine.wait_for_unit("default.target", "${user.name}") + machine.wait_for_file("${xauthority}") + machine.succeed("xauth merge ${xauthority}") + # Check that logging in has given the user ownership of devices + assert "alice" in machine.succeed("getfacl -p /dev/snd/timer") + + with subtest("Wait for Metacity"): + machine.wait_until_succeeds( + "pgrep metacity" + ) + machine.sleep(20) + machine.screenshot("screen") + ''; +}) diff --git a/nixos/tests/ulogd.nix b/nixos/tests/ulogd.nix new file mode 100644 index 000000000000..ce52d855ffc2 --- /dev/null +++ b/nixos/tests/ulogd.nix @@ -0,0 +1,84 @@ +import ./make-test-python.nix ({ pkgs, lib, ... }: { + name = "ulogd"; + + meta = with lib; { + maintainers = with maintainers; [ p-h ]; + }; + + nodes.machine = { ... }: { + networking.firewall.enable = false; + networking.nftables.enable = true; + networking.nftables.ruleset = '' + table inet filter { + chain input { + type filter hook input priority 0; + log group 2 accept + } + + chain output { + type filter hook output priority 0; policy accept; + log group 2 accept + } + + chain forward { + type filter hook forward priority 0; policy drop; + log group 2 accept + } + + } + ''; + services.ulogd = { + enable = true; + settings = { + global = { + logfile = "/var/log/ulogd.log"; + stack = "log1:NFLOG,base1:BASE,pcap1:PCAP"; + }; + + log1.group = 2; + + pcap1 = { + file = "/var/log/ulogd.pcap"; + sync = 1; + }; + }; + }; + + environment.systemPackages = with pkgs; [ + tcpdump + ]; + }; + + testScript = '' + start_all() + machine.wait_for_unit("ulogd.service") + machine.wait_for_unit("network-online.target") + + with subtest("Ulogd is running"): + machine.succeed("pgrep ulogd >&2") + + # All packets show up twice in the logs + with subtest("Logs are collected"): + machine.succeed("ping -f 127.0.0.1 -c 5 >&2") + machine.succeed("sleep 2") + machine.wait_until_succeeds("du /var/log/ulogd.pcap >&2") + _, echo_request_packets = machine.execute("tcpdump -r /var/log/ulogd.pcap icmp[0] == 8 and host 127.0.0.1") + expected, actual = 5*2, len(echo_request_packets.splitlines()) + assert expected == actual, f"Expected {expected} packets, got: {actual}" + _, echo_reply_packets = machine.execute("tcpdump -r /var/log/ulogd.pcap icmp[0] == 0 and host 127.0.0.1") + expected, actual = 5*2, len(echo_reply_packets.splitlines()) + assert expected == actual, f"Expected {expected} packets, got: {actual}" + + with subtest("Reloading service reopens log file"): + machine.succeed("mv /var/log/ulogd.pcap /var/log/old_ulogd.pcap") + machine.succeed("systemctl reload ulogd.service") + machine.succeed("ping -f 127.0.0.1 -c 5 >&2") + machine.succeed("sleep 2") + _, echo_request_packets = machine.execute("tcpdump -r /var/log/ulogd.pcap icmp[0] == 8 and host 127.0.0.1") + expected, actual = 5*2, len(echo_request_packets.splitlines()) + assert expected == actual, f"Expected {expected} packets, got: {actual}" + _, echo_reply_packets = machine.execute("tcpdump -r /var/log/ulogd.pcap icmp[0] == 0 and host 127.0.0.1") + expected, actual = 5*2, len(echo_reply_packets.splitlines()) + assert expected == actual, f"Expected {expected} packets, got: {actual}" + ''; +}) diff --git a/pkgs/applications/audio/mopidy/musicbox-webclient.nix b/pkgs/applications/audio/mopidy/musicbox-webclient.nix index 65a228b8fd0a..2352a65dcc95 100644 --- a/pkgs/applications/audio/mopidy/musicbox-webclient.nix +++ b/pkgs/applications/audio/mopidy/musicbox-webclient.nix @@ -1,4 +1,8 @@ -{ lib, stdenv, fetchFromGitHub, pythonPackages, mopidy }: +{ lib +, fetchFromGitHub +, pythonPackages +, mopidy +}: pythonPackages.buildPythonApplication rec { pname = "mopidy-musicbox-webclient"; @@ -6,18 +10,22 @@ pythonPackages.buildPythonApplication rec { src = fetchFromGitHub { owner = "pimusicbox"; - repo = "mopidy-musicbox-webclient"; + repo = pname; rev = "v${version}"; sha256 = "1lzarazq67gciyn6r8cdms0f7j0ayyfwhpf28z93ydb280mfrrb9"; }; - propagatedBuildInputs = [ mopidy ]; + propagatedBuildInputs = [ + mopidy + ]; doCheck = false; meta = with lib; { - description = "Mopidy extension for playing music from SoundCloud"; - license = licenses.mit; - maintainers = [ maintainers.spwhitt ]; + description = "A Mopidy frontend extension and web client with additional features for Pi MusicBox"; + homepage = "https://github.com/pimusicbox/mopidy-musicbox-webclient"; + changelog = "https://github.com/pimusicbox/mopidy-musicbox-webclient/blob/v${version}/CHANGELOG.rst"; + license = licenses.asl20; + maintainers = with maintainers; [ spwhitt ]; }; } diff --git a/pkgs/applications/editors/neovim/default.nix b/pkgs/applications/editors/neovim/default.nix index 98859ec2ef3b..8b59e5038762 100644 --- a/pkgs/applications/editors/neovim/default.nix +++ b/pkgs/applications/editors/neovim/default.nix @@ -24,13 +24,13 @@ let in stdenv.mkDerivation rec { pname = "neovim-unwrapped"; - version = "0.8.1"; + version = "0.8.2"; src = fetchFromGitHub { owner = "neovim"; repo = "neovim"; rev = "v${version}"; - sha256 = "sha256-B2ZpwhdmdvPOnxVyJDfNzUT5rTVuBhJXyMwwzCl9Fac="; + sha256 = "sha256-eqiH/K8w0FZNHLBBMjiTSQjNQyONqcx3X+d85gPnFJg="; }; patches = [ diff --git a/pkgs/applications/misc/keystore-explorer/default.nix b/pkgs/applications/misc/keystore-explorer/default.nix index 2274aa00cb44..c2162b6f0c46 100644 --- a/pkgs/applications/misc/keystore-explorer/default.nix +++ b/pkgs/applications/misc/keystore-explorer/default.nix @@ -1,13 +1,17 @@ -{ fetchzip, lib, stdenv, jdk, runtimeShell }: +{ fetchzip, lib, stdenv, jdk, runtimeShell, glib, wrapGAppsHook }: stdenv.mkDerivation rec { - version = "5.4.4"; + version = "5.5.1"; pname = "keystore-explorer"; src = fetchzip { - url = "https://github.com/kaikramer/keystore-explorer/releases/download/v${version}/kse-544.zip"; - sha256 = "01kpa8g6p6vcqq9y70w5bm8jbw4kp55pbywj2zrhgjibrhgjqi0b"; + url = "https://github.com/kaikramer/keystore-explorer/releases/download/v${version}/kse-${lib.replaceStrings ["."] [""] version}.zip"; + sha256 = "2C/LkUUuef30PkN7HL0CtcNOjR5uNo9XaCiTatv5hgA="; }; + # glib is necessary so file dialogs don't hang. + buildInputs = [ glib ]; + nativeBuildInputs = [ wrapGAppsHook ]; + installPhase = '' runHook preInstall diff --git a/pkgs/applications/misc/logseq/default.nix b/pkgs/applications/misc/logseq/default.nix index 54e3e98d48b8..505dd6002680 100644 --- a/pkgs/applications/misc/logseq/default.nix +++ b/pkgs/applications/misc/logseq/default.nix @@ -1,12 +1,19 @@ -{ lib, stdenv, fetchurl, appimageTools, makeWrapper, electron, git }: +{ lib +, stdenv +, fetchurl +, appimageTools +, makeWrapper +, electron +, git +}: stdenv.mkDerivation rec { pname = "logseq"; - version = "0.8.12"; + version = "0.8.15"; src = fetchurl { url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage"; - sha256 = "sha256-I1jGPNGlZ53N3ZlN9nN/GSgQIfdoUeclyuMl+PpNVY4="; + sha256 = "sha256-lE/bO/zpqChvdf8vfNqbC5iIpXAZDb36/N7Tpsj7PWY="; name = "${pname}-${version}.AppImage"; }; @@ -52,6 +59,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base"; homepage = "https://github.com/logseq/logseq"; + changelog = "https://github.com/logseq/logseq/releases/tag/${version}"; license = licenses.agpl3Plus; maintainers = with maintainers; [ weihua ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/misc/mkgmap/splitter/default.nix b/pkgs/applications/misc/mkgmap/splitter/default.nix index 13158d7f7257..d9b886cbe2b3 100644 --- a/pkgs/applications/misc/mkgmap/splitter/default.nix +++ b/pkgs/applications/misc/mkgmap/splitter/default.nix @@ -14,12 +14,12 @@ let in stdenv.mkDerivation rec { pname = "splitter"; - version = "652"; + version = "653"; src = fetchsvn { url = "https://svn.mkgmap.org.uk/mkgmap/splitter/trunk"; rev = version; - sha256 = "sha256-yCdVOT8if3AImD4Q63gKfMep7WZsrCgV+IXfP4ZL3Qw="; + sha256 = "sha256-iw414ecnOfeG3FdlIaoVOPv9BXZ95uUHuPzCQGH4G+A="; }; patches = [ diff --git a/pkgs/applications/networking/cluster/linkerd/edge.nix b/pkgs/applications/networking/cluster/linkerd/edge.nix index 1ad1a56896b8..1cf47d909c3d 100644 --- a/pkgs/applications/networking/cluster/linkerd/edge.nix +++ b/pkgs/applications/networking/cluster/linkerd/edge.nix @@ -2,7 +2,7 @@ (callPackage ./generic.nix { }) { channel = "edge"; - version = "22.8.2"; - sha256 = "114lfq5d5b09zg14iwnmaf0vmm183xr37q7b4bj3m8zbzhpbk7xx"; - vendorSha256 = "sha256-hKdokt5QW50oc2z8UFMq78DRWpwPlL5tSf2F0rQNEQ8="; + version = "22.12.1"; + sha256 = "1ss6rhh71nq89ya8312fgy30pdw9vvnvnc8a7zs8a8yqg6p4x9lp"; + vendorSha256 = "sha256-V4BQ+7J1T+g5I7SrCexkfe3ngl7Qy3cf0SF+u28QKWE="; } diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index c7665ecdca6a..5abc909ef232 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -149,13 +149,13 @@ }, "baiducloud": { "deleteVendor": true, - "hash": "sha256-4v9FuM69U+4V2Iy85vc4RP9KgzeME/R8rXxNSMBABdM=", + "hash": "sha256-13vbO5EJsdVvR456uBCDbFBWlOaAZb9XhNJ7fE8fjto=", "homepage": "https://registry.terraform.io/providers/baidubce/baiducloud", "owner": "baidubce", "repo": "terraform-provider-baiducloud", - "rev": "v1.18.4", + "rev": "v1.19.0", "spdx": "MPL-2.0", - "vendorHash": "sha256-ya2FpsLQMIu8zWYObpyPgBHVkHoNKzHgdMxukbtsje4=" + "vendorHash": "sha256-3PLBs8LSE5JPtrhmdx+jQsnCrfZQQEUGA7wnf9M72yY=" }, "bigip": { "hash": "sha256-VntKiBTQxe8lKV8Bb3A0moA/EUzyQQ7CInPjKJL4iBQ=", @@ -415,13 +415,13 @@ "vendorHash": "sha256-ZgVA2+2tu17dnAc51Aw3k6v8k7QosNTmFjFhmeknxa8=" }, "gandi": { - "hash": "sha256-dF3YCX3ghjg/OGLQT3Vzs/VLRoiuDXrTo5xP1Y8Jhgw=", + "hash": "sha256-mQ4L2XCudyPGDw21jihF7nkSct7/KWAe/txnbtuJ8Lk=", "homepage": "https://registry.terraform.io/providers/go-gandi/gandi", "owner": "go-gandi", "repo": "terraform-provider-gandi", - "rev": "v2.2.1", + "rev": "v2.2.2", "spdx": "MPL-2.0", - "vendorHash": "sha256-cStVmI58V46I3MYYYrbCY3llnOx2pyuM2Ku+rhe5DVQ=" + "vendorHash": "sha256-uWTY8cFztXFrQQ7GW6/R+x9M6vHmsb934ldq+oeW5vk=" }, "github": { "hash": "sha256-o7Sge0rCfP6Yueq+DP7siBsEinawgGe+nEu0/Olu8uQ=", @@ -1095,11 +1095,11 @@ "vendorHash": "sha256-2wPmLpjhG6QgG+BUCO0oIzHjBOWIOYuptgdtSIm9TZw=" }, "tencentcloud": { - "hash": "sha256-mN52iD0HdsfzPxo9hLFlKxiwIm7641cnjUYk8XyRP0s=", + "hash": "sha256-vXd0yZ57bEdZ0OcIANMWdDN8PzOKnXJKw7HgjcOhSeE=", "homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud", "owner": "tencentcloudstack", "repo": "terraform-provider-tencentcloud", - "rev": "v1.79.2", + "rev": "v1.79.3", "spdx": "MPL-2.0", "vendorHash": null }, diff --git a/pkgs/applications/office/portfolio/default.nix b/pkgs/applications/office/portfolio/default.nix index 64dc3f400ec1..ec3f4d7574b9 100644 --- a/pkgs/applications/office/portfolio/default.nix +++ b/pkgs/applications/office/portfolio/default.nix @@ -27,11 +27,11 @@ let in stdenv.mkDerivation rec { pname = "PortfolioPerformance"; - version = "0.60.0"; + version = "0.60.1"; src = fetchurl { url = "https://github.com/buchen/portfolio/releases/download/${version}/PortfolioPerformance-${version}-linux.gtk.x86_64.tar.gz"; - sha256 = "sha256-L4ZLlxHsnJrvrrrX56Z+agjnaMl472Izm4Un1uaNqZA="; + sha256 = "sha256-Lyo/T8df7tIc+h8MFh6yL+I+2W6On/C5PguNZfQAu9s="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/science/logic/workcraft/default.nix b/pkgs/applications/science/logic/workcraft/default.nix index 5671317e30ef..173d1d5a2130 100644 --- a/pkgs/applications/science/logic/workcraft/default.nix +++ b/pkgs/applications/science/logic/workcraft/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "workcraft"; - version = "3.3.8"; + version = "3.3.9"; src = fetchurl { url = "https://github.com/workcraft/workcraft/releases/download/v${version}/workcraft-v${version}-linux.tar.gz"; - sha256 = "sha256-T2rUEZsO8g/nk10LZvC+mXEC6IzutbjncERlmqg814g="; + sha256 = "sha256-Z3QtOGyOjmiM+qfB0FO4UDg8O99Ru/Qy2WNoBpXd1So="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/virtualization/seabios/default.nix b/pkgs/applications/virtualization/seabios/default.nix index c870abc30282..502a04c260fc 100644 --- a/pkgs/applications/virtualization/seabios/default.nix +++ b/pkgs/applications/virtualization/seabios/default.nix @@ -3,12 +3,12 @@ stdenv.mkDerivation rec { pname = "seabios"; - version = "1.16.0"; + version = "1.16.1"; src = fetchgit { url = "https://git.seabios.org/seabios.git"; rev = "rel-${version}"; - sha256 = "0acal1rr7sya86wlhw2mgimabwhjnr0y1pl5zxwb79j8k1w1r8sh"; + sha256 = "sha256-oIl2ZbhgSiVJPMBGbVt6N074vOifAoZL6VdKcBwM8D4="; }; nativeBuildInputs = [ python3 ]; diff --git a/pkgs/build-support/make-pkgconfigitem/default.nix b/pkgs/build-support/make-pkgconfigitem/default.nix index 288ca3810eb8..d3bcabbb940f 100644 --- a/pkgs/build-support/make-pkgconfigitem/default.nix +++ b/pkgs/build-support/make-pkgconfigitem/default.nix @@ -65,5 +65,5 @@ writeTextFile { name = "${name}.pc"; destination = "/lib/pkgconfig/${name}.pc"; text = builtins.concatStringsSep "\n" content; - checkPhase = ''${buildPackages.pkg-config}/bin/pkg-config --validate "$target"''; + checkPhase = ''${buildPackages.pkg-config}/bin/${buildPackages.pkg-config.targetPrefix}pkg-config --validate "$target"''; } diff --git a/pkgs/data/fonts/hackgen/default.nix b/pkgs/data/fonts/hackgen/default.nix index 5d87131c1028..b60ccb87fbb7 100644 --- a/pkgs/data/fonts/hackgen/default.nix +++ b/pkgs/data/fonts/hackgen/default.nix @@ -4,10 +4,10 @@ fetchzip rec { pname = "hackgen-font"; - version = "2.7.1"; + version = "2.8.0"; url = "https://github.com/yuru7/HackGen/releases/download/v${version}/HackGen_v${version}.zip"; - sha256 = "sha256-UL6U/q2u1UUP31lp0tEnFjzkn6dn8AY6hk5hJhPsOAE="; + sha256 = "sha256-TLqns6ulovHRKoLHxxwKpj6SqfCq5UDVBf7gUASCGK4="; postFetch = '' install -Dm644 $out/*.ttf -t $out/share/fonts/hackgen shopt -s extglob dotglob diff --git a/pkgs/desktops/cinnamon/muffin/default.nix b/pkgs/desktops/cinnamon/muffin/default.nix index 83e4f5b858bd..7b9957f2392c 100644 --- a/pkgs/desktops/cinnamon/muffin/default.nix +++ b/pkgs/desktops/cinnamon/muffin/default.nix @@ -1,6 +1,7 @@ { stdenv , lib , fetchFromGitHub +, fetchpatch , substituteAll , cairo , cinnamon-desktop @@ -39,13 +40,6 @@ stdenv.mkDerivation rec { outputs = [ "out" "dev" "man" ]; - patches = [ - (substituteAll { - src = ./fix-paths.patch; - zenity = gnome.zenity; - }) - ]; - src = fetchFromGitHub { owner = "linuxmint"; repo = pname; @@ -53,6 +47,20 @@ stdenv.mkDerivation rec { hash = "sha256-bHEBzl0aBXsHOhSWJUz428pG5M6L0s/Q6acKO+2oMXo="; }; + patches = [ + (substituteAll { + src = ./fix-paths.patch; + zenity = gnome.zenity; + }) + + # compositor: Fix crash when restarting Cinnamon + # https://github.com/linuxmint/muffin/pull/655 + (fetchpatch { + url = "https://github.com/linuxmint/muffin/commit/1a941ec603a1565dbd2f943f7da6e877d1541bcb.patch"; + sha256 = "sha256-6x64rWQ20ZjM9z79Pg6QMDPeFN5VNdDHBueRvy2kA6c="; + }) + ]; + nativeBuildInputs = [ desktop-file-utils mesa # needed for gbm diff --git a/pkgs/desktops/gnome/misc/gnome-flashback/default.nix b/pkgs/desktops/gnome/misc/gnome-flashback/default.nix index cdebb3628bac..6bb3484ed24a 100644 --- a/pkgs/desktops/gnome/misc/gnome-flashback/default.nix +++ b/pkgs/desktops/gnome/misc/gnome-flashback/default.nix @@ -180,9 +180,11 @@ let dontWrapGApps = true; # We want to do the wrapping ourselves. # gnome-flashback and gnome-panel need to be added to XDG_DATA_DIRS so that their .desktop files can be found by gnome-session. + # We need to pass the --builtin flag so that gnome-session invokes gnome-session-binary instead of systemd. + # If systemd is used, it doesn't use the environment we set up here and so it can't find the .desktop files. preFixup = '' makeWrapper ${gnome-session}/bin/gnome-session $out \ - --add-flags "--session=gnome-flashback-${wmName}" \ + --add-flags "--session=gnome-flashback-${wmName} --builtin" \ --set-default XDG_CURRENT_DESKTOP 'GNOME-Flashback:GNOME' \ --prefix XDG_DATA_DIRS : '${lib.makeSearchPath "share" ([ wmApplication gnomeSession gnome-flashback ] ++ lib.optional enableGnomePanel gnome-panel)}' \ "''${gappsWrapperArgs[@]}" \ diff --git a/pkgs/development/interpreters/lua-5/default.nix b/pkgs/development/interpreters/lua-5/default.nix index 3cf436419f34..dd471c9de40c 100644 --- a/pkgs/development/interpreters/lua-5/default.nix +++ b/pkgs/development/interpreters/lua-5/default.nix @@ -163,4 +163,8 @@ rec { inherit callPackage fetchFromGitHub passthruFun; }; + luajit_openresty = import ../luajit/openresty.nix { + self = luajit_openresty; + inherit callPackage fetchFromGitHub passthruFun; + }; } diff --git a/pkgs/development/interpreters/luajit/2.0.nix b/pkgs/development/interpreters/luajit/2.0.nix index daa298761762..78abb742c407 100644 --- a/pkgs/development/interpreters/luajit/2.0.nix +++ b/pkgs/development/interpreters/luajit/2.0.nix @@ -2,7 +2,7 @@ callPackage ./default.nix { version = "2.0.5-2022-09-13"; - isStable = true; + src = fetchFromGitHub { owner = "LuaJIT"; repo = "LuaJIT"; diff --git a/pkgs/development/interpreters/luajit/2.1.nix b/pkgs/development/interpreters/luajit/2.1.nix index 8362aab55e0f..8efb86ab0174 100644 --- a/pkgs/development/interpreters/luajit/2.1.nix +++ b/pkgs/development/interpreters/luajit/2.1.nix @@ -1,7 +1,8 @@ { self, callPackage, fetchFromGitHub, passthruFun }: + callPackage ./default.nix { version = "2.1.0-2022-10-04"; - isStable = false; + src = fetchFromGitHub { owner = "LuaJIT"; repo = "LuaJIT"; diff --git a/pkgs/development/interpreters/luajit/default.nix b/pkgs/development/interpreters/luajit/default.nix index 64aa0345e80b..d1211ce0a928 100644 --- a/pkgs/development/interpreters/luajit/default.nix +++ b/pkgs/development/interpreters/luajit/default.nix @@ -2,7 +2,6 @@ , stdenv , fetchFromGitHub , buildPackages -, isStable , version , src , extraMeta ? { } @@ -71,7 +70,7 @@ stdenv.mkDerivation rec { } >> src/luaconf.h ''; - configurePhase = false; + dontConfigure = true; buildInputs = lib.optional enableValgrindSupport valgrind; @@ -91,8 +90,9 @@ stdenv.mkDerivation rec { postInstall = '' ( cd "$out/include"; ln -s luajit-*/* . ) ln -s "$out"/bin/luajit-* "$out"/bin/lua - '' + lib.optionalString (!isStable) '' - ln -s "$out"/bin/luajit-* "$out"/bin/luajit + if [[ ! -e "$out"/bin/luajit ]]; then + ln -s "$out"/bin/luajit* "$out"/bin/luajit + fi ''; LuaPathSearchPaths = luaPackages.luaLib.luaPathList; @@ -117,7 +117,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "High-performance JIT compiler for Lua 5.1"; - homepage = "http://luajit.org"; + homepage = "https://luajit.org/"; license = licenses.mit; platforms = platforms.linux ++ platforms.darwin; # See https://github.com/LuaJIT/LuaJIT/issues/628 diff --git a/pkgs/development/interpreters/luajit/openresty.nix b/pkgs/development/interpreters/luajit/openresty.nix new file mode 100644 index 000000000000..372d9233bf1f --- /dev/null +++ b/pkgs/development/interpreters/luajit/openresty.nix @@ -0,0 +1,14 @@ +{ self, callPackage, fetchFromGitHub, passthruFun }: + +callPackage ./default.nix rec { + version = "2.1-20220915"; + + src = fetchFromGitHub { + owner = "openresty"; + repo = "luajit2"; + rev = "v${version}"; + hash = "sha256-kMHE4iQtm2CujK9TVut1jNhY2QxYP514jfBsxOCyd4s="; + }; + + inherit self passthruFun; +} diff --git a/pkgs/development/libraries/gf2x/default.nix b/pkgs/development/libraries/gf2x/default.nix index c37dcf4242d2..5060f1b65c69 100644 --- a/pkgs/development/libraries/gf2x/default.nix +++ b/pkgs/development/libraries/gf2x/default.nix @@ -2,6 +2,7 @@ , lib , fetchgit , autoreconfHook +, buildPackages , optimize ? false # impure hardware optimizations }: stdenv.mkDerivation rec { @@ -16,6 +17,8 @@ stdenv.mkDerivation rec { sha256 = "04g5jg0i4vz46b4w2dvbmahwzi3k6b8g515mfw7im1inc78s14id"; }; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ autoreconfHook ]; diff --git a/pkgs/development/libraries/mpir/default.nix b/pkgs/development/libraries/mpir/default.nix index b7d31066de1a..8ccad867ea89 100644 --- a/pkgs/development/libraries/mpir/default.nix +++ b/pkgs/development/libraries/mpir/default.nix @@ -1,9 +1,11 @@ -{ lib, stdenv, fetchurl, m4, which, yasm }: +{ lib, stdenv, fetchurl, m4, which, yasm, buildPackages }: stdenv.mkDerivation rec { pname = "mpir"; version = "3.0.0"; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ m4 which yasm ]; src = fetchurl { diff --git a/pkgs/development/libraries/qt-6/modules/qtbase.nix b/pkgs/development/libraries/qt-6/modules/qtbase.nix index d396e18aad24..5bbed5cb51e5 100644 --- a/pkgs/development/libraries/qt-6/modules/qtbase.nix +++ b/pkgs/development/libraries/qt-6/modules/qtbase.nix @@ -266,7 +266,6 @@ stdenv.mkDerivation rec { # Move development tools to $dev moveQtDevTools - moveToOutput bin "$dev" moveToOutput libexec "$dev" # fixup .pc file (where to find 'moc' etc.) diff --git a/pkgs/development/libraries/qt-6/modules/qttools.nix b/pkgs/development/libraries/qt-6/modules/qttools.nix index df4b043eb78a..16a7fc0c89d3 100644 --- a/pkgs/development/libraries/qt-6/modules/qttools.nix +++ b/pkgs/development/libraries/qt-6/modules/qttools.nix @@ -17,4 +17,28 @@ qtModule { NIX_CFLAGS_COMPILE = [ "-DNIX_OUTPUT_DEV=\"${placeholder "dev"}\"" ]; + + devTools = [ + "bin/qcollectiongenerator" + "bin/linguist" + "bin/assistant" + "bin/qdoc" + "bin/lconvert" + "bin/designer" + "bin/qtattributionsscanner" + "bin/lrelease" + "bin/lrelease-pro" + "bin/pixeltool" + "bin/lupdate" + "bin/lupdate-pro" + "bin/qtdiag" + "bin/qhelpgenerator" + "bin/qtplugininfo" + "bin/qthelpconverter" + "bin/lprodump" + "bin/qdistancefieldgenerator" + ] ++ lib.optionals stdenv.isDarwin [ + "bin/macdeployqt" + ]; + } diff --git a/pkgs/development/libraries/qt-6/patches/cmake.patch b/pkgs/development/libraries/qt-6/patches/cmake.patch index 1fb2ea26c35d..84192f669696 100644 --- a/pkgs/development/libraries/qt-6/patches/cmake.patch +++ b/pkgs/development/libraries/qt-6/patches/cmake.patch @@ -1,4 +1,4 @@ -commit 4f497c358e0386b65df1c1d636aadf72f8647134 +commit bd8f6ecea0663bdd150aa48941cbd47d25874396 Author: Nick Cao Date: Tue Apr 19 13:49:59 2022 +0800 @@ -13,10 +13,10 @@ Date: Tue Apr 19 13:49:59 2022 +0800 generated cmake files to point to the corrected pathes. diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx -index 8b0f64e23b..03291e2ee2 100644 +index 5a33349b19..677a6084d6 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx -@@ -6,6 +6,7 @@ +@@ -7,6 +7,7 @@ #include #include #include @@ -24,7 +24,7 @@ index 8b0f64e23b..03291e2ee2 100644 #include -@@ -325,9 +326,23 @@ static void prefixItems(std::string& exportDirs) +@@ -330,9 +331,21 @@ static void prefixItems(std::string& exportDirs) for (std::string const& e : entries) { exportDirs += sep; sep = ";"; @@ -35,8 +35,6 @@ index 8b0f64e23b..03291e2ee2 100644 + if (std::getenv("dev")) { + if (cmHasLiteralPrefix(e, "include") || cmHasLiteralPrefix(e, "./include")) { + exportDirs += std::getenv("dev"); -+ } else if (cmHasLiteralPrefix(e, "bin") || cmHasLiteralPrefix(e, "./bin")) { -+ exportDirs += std::getenv("dev"); + } else if (cmHasLiteralPrefix(e, "mkspecs") || cmHasLiteralPrefix(e, "./mkspecs")) { + exportDirs += std::getenv("dev"); + } else if (cmHasLiteralPrefix(e, "libexec") || cmHasLiteralPrefix(e, "./libexec")) { @@ -52,18 +50,18 @@ index 8b0f64e23b..03291e2ee2 100644 exportDirs += e; } diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx -index 4a3c565bce..5afa9e5e50 100644 +index adccdfeece..ba248305bd 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx -@@ -5,6 +5,7 @@ +@@ -6,6 +6,7 @@ #include #include #include +#include #include "cmExportSet.h" - #include "cmGeneratedFileStream.h" -@@ -263,7 +264,7 @@ void cmExportInstallFileGenerator::LoadConfigFiles(std::ostream& os) + #include "cmFileSet.h" +@@ -266,7 +267,7 @@ void cmExportInstallFileGenerator::LoadConfigFiles(std::ostream& os) void cmExportInstallFileGenerator::ReplaceInstallPrefix(std::string& input) { @@ -72,7 +70,7 @@ index 4a3c565bce..5afa9e5e50 100644 } bool cmExportInstallFileGenerator::GenerateImportFileConfig( -@@ -381,9 +382,24 @@ void cmExportInstallFileGenerator::SetImportLocationProperty( +@@ -382,9 +383,22 @@ void cmExportInstallFileGenerator::SetImportLocationProperty( // Construct the installed location of the target. std::string dest = itgen->GetDestination(config); std::string value; @@ -83,8 +81,6 @@ index 4a3c565bce..5afa9e5e50 100644 + if (std::getenv("dev")) { + if (cmHasLiteralPrefix(dest, "include") || cmHasLiteralPrefix(dest, "./include")) { + value = std::getenv("dev"); -+ } else if (cmHasLiteralPrefix(dest, "bin") || cmHasLiteralPrefix(dest, "./bin")) { -+ value = std::getenv("dev"); + } else if (cmHasLiteralPrefix(dest, "mkspecs") || cmHasLiteralPrefix(dest, "./mkspecs")) { + value = std::getenv("dev"); + } else if (cmHasLiteralPrefix(dest, "libexec") || cmHasLiteralPrefix(dest, "./libexec")) { @@ -100,10 +96,10 @@ index 4a3c565bce..5afa9e5e50 100644 value += dest; value += "/"; diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx -index 840f5112d6..7bb4ab41aa 100644 +index f988e54a19..cc5c7ac9fd 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx -@@ -197,7 +197,22 @@ static void prefixItems(const std::string& content, std::string& result, +@@ -192,7 +192,20 @@ static void prefixItems(const std::string& content, std::string& result, sep = ";"; if (!cmSystemTools::FileIsFullPath(e) && cmGeneratorExpression::Find(e) != 0) { @@ -111,8 +107,6 @@ index 840f5112d6..7bb4ab41aa 100644 + if (std::getenv("dev")) { + if (cmHasLiteralPrefix(e, "include") || cmHasLiteralPrefix(e, "./include")) { + result += std::getenv("dev"); -+ } else if (cmHasLiteralPrefix(e, "bin") || cmHasLiteralPrefix(e, "./bin")) { -+ result += std::getenv("dev"); + } else if (cmHasLiteralPrefix(e, "mkspecs") || cmHasLiteralPrefix(e, "./mkspecs")) { + result += std::getenv("dev"); + } else if (cmHasLiteralPrefix(e, "libexec") || cmHasLiteralPrefix(e, "./libexec")) { diff --git a/pkgs/development/libraries/qt-6/qtModule.nix b/pkgs/development/libraries/qt-6/qtModule.nix index 06e1f4d179b2..28180d3b0ca3 100644 --- a/pkgs/development/libraries/qt-6/qtModule.nix +++ b/pkgs/development/libraries/qt-6/qtModule.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation (args // { postInstall = '' if [ ! -z "$dev" ]; then mkdir "$dev" - for dir in bin libexec mkspecs + for dir in libexec mkspecs do moveToOutput "$dir" "$dev" done diff --git a/pkgs/development/lua-modules/generic/default.nix b/pkgs/development/lua-modules/generic/default.nix index 183a958b4e1f..7f07c6602dac 100644 --- a/pkgs/development/lua-modules/generic/default.nix +++ b/pkgs/development/lua-modules/generic/default.nix @@ -2,6 +2,7 @@ { disabled ? false , propagatedBuildInputs ? [ ] +, makeFlags ? [ ] , ... } @ attrs: @@ -9,18 +10,16 @@ if disabled then throw "${attrs.name} not supported by interpreter lua-${lua.luaversion}" else toLuaModule (lua.stdenv.mkDerivation ( - { + attrs // { + name = "lua${lua.luaversion}-" + attrs.pname + "-" + attrs.version; + makeFlags = [ "PREFIX=$(out)" - "LUA_LIBDIR=$(out)/lib/lua/${lua.luaversion}" "LUA_INC=-I${lua}/include" - ]; - } - // - attrs - // - { - name = "lua${lua.luaversion}-" + attrs.pname + "-" + attrs.version; + "LUA_LIBDIR=$(out)/lib/lua/${lua.luaversion}" + "LUA_VERSION=${lua.luaversion}" + ] ++ makeFlags; + propagatedBuildInputs = propagatedBuildInputs ++ [ lua # propagate it for its setup-hook ]; diff --git a/pkgs/development/mobile/androidenv/compose-android-packages.nix b/pkgs/development/mobile/androidenv/compose-android-packages.nix index fb59b1ec88d8..78635dce7f8f 100644 --- a/pkgs/development/mobile/androidenv/compose-android-packages.nix +++ b/pkgs/development/mobile/androidenv/compose-android-packages.nix @@ -3,10 +3,10 @@ }: { toolsVersion ? "26.1.1" -, platformToolsVersion ? "33.0.2" -, buildToolsVersions ? [ "32.0.0" ] +, platformToolsVersion ? "33.0.3" +, buildToolsVersions ? [ "33.0.1" ] , includeEmulator ? false -, emulatorVersion ? "31.3.9" +, emulatorVersion ? "31.3.14" , platformVersions ? [] , includeSources ? false , includeSystemImages ? false @@ -14,7 +14,7 @@ , abiVersions ? [ "armeabi-v7a" "arm64-v8a" ] , cmakeVersions ? [ ] , includeNDK ? false -, ndkVersion ? "24.0.8215888" +, ndkVersion ? "25.1.8937393" , ndkVersions ? [ndkVersion] , useGoogleAPIs ? false , useGoogleTVAddOns ? false diff --git a/pkgs/development/mobile/androidenv/examples/shell.nix b/pkgs/development/mobile/androidenv/examples/shell.nix index 15021ce4eeeb..44db11375ff8 100644 --- a/pkgs/development/mobile/androidenv/examples/shell.nix +++ b/pkgs/development/mobile/androidenv/examples/shell.nix @@ -6,12 +6,15 @@ url = "https://github.com/NixOS/nixpkgs/archive/20.09.tar.gz"; sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy"; }), - pkgs ? import nixpkgsSource {}, - pkgsi686Linux ? import nixpkgsSource { system = "i686-linux"; },*/ + pkgs ? import nixpkgsSource { + config.allowUnfree = true; + }, + */ # If you want to use the in-tree version of nixpkgs: - pkgs ? import ../../../../.. {}, - pkgsi686Linux ? import ../../../../.. { system = "i686-linux"; }, + pkgs ? import ../../../../.. { + config.allowUnfree = true; + }, config ? pkgs.config }: @@ -23,17 +26,17 @@ let android = { versions = { tools = "26.1.1"; - platformTools = "31.0.2"; + platformTools = "33.0.3"; buildTools = "30.0.3"; ndk = [ - "22.1.7171670" - "21.3.6528147" # LTS NDK + "25.1.8937393" # LTS NDK + "24.0.8215888" ]; - cmake = "3.18.1"; - emulator = "30.6.3"; + cmake = "3.22.1"; + emulator = "31.3.14"; }; - platforms = ["23" "24" "25" "26" "27" "28" "29" "30"]; + platforms = ["23" "24" "25" "26" "27" "28" "29" "30" "31" "32" "33"]; abis = ["armeabi-v7a" "arm64-v8a"]; extras = ["extras;google;gcm"]; }; @@ -46,13 +49,13 @@ let }; androidEnv = pkgs.callPackage "${androidEnvNixpkgs}/pkgs/development/mobile/androidenv" { - inherit config pkgs pkgsi686Linux; + inherit config pkgs; licenseAccepted = true; };*/ # Otherwise, just use the in-tree androidenv: androidEnv = pkgs.callPackage ./.. { - inherit config pkgs pkgsi686Linux; + inherit config pkgs; licenseAccepted = true; }; diff --git a/pkgs/development/mobile/androidenv/mkrepo.rb b/pkgs/development/mobile/androidenv/mkrepo.rb index 208a544c90f6..06ed081dc724 100644 --- a/pkgs/development/mobile/androidenv/mkrepo.rb +++ b/pkgs/development/mobile/androidenv/mkrepo.rb @@ -17,6 +17,9 @@ end # Returns a system image URL for a given system image name. def image_url value, dir + if dir == "default" + dir = "android" + end if value && value.start_with?('http') value elsif value @@ -154,6 +157,7 @@ def normalize_license license license = license.dup license.gsub!(/([^\n])\n([^\n])/m, '\1 \2') license.gsub!(/ +/, ' ') + license.strip! license end @@ -281,8 +285,18 @@ def parse_addon_xml doc [licenses, addons, extras] end +def merge_recursively a, b + a.merge!(b) {|key, a_item, b_item| + if a_item.is_a?(Hash) && b_item.is_a?(Hash) + merge_recursively(a_item, b_item) + else + a[key] = b_item + end + } +end + def merge dest, src - dest.merge! src + merge_recursively dest, src end opts = Slop.parse do |o| @@ -300,19 +314,19 @@ result = { } opts[:packages].each do |filename| - licenses, packages = parse_package_xml(Nokogiri::XML(File.open(filename))) + licenses, packages = parse_package_xml(Nokogiri::XML(File.open(filename)) { |conf| conf.noblanks }) merge result[:licenses], licenses merge result[:packages], packages end opts[:images].each do |filename| - licenses, images = parse_image_xml(Nokogiri::XML(File.open(filename))) + licenses, images = parse_image_xml(Nokogiri::XML(File.open(filename)) { |conf| conf.noblanks }) merge result[:licenses], licenses merge result[:images], images end opts[:addons].each do |filename| - licenses, addons, extras = parse_addon_xml(Nokogiri::XML(File.open(filename))) + licenses, addons, extras = parse_addon_xml(Nokogiri::XML(File.open(filename)) { |conf| conf.noblanks }) merge result[:licenses], licenses merge result[:addons], addons merge result[:extras], extras diff --git a/pkgs/development/mobile/androidenv/repo.json b/pkgs/development/mobile/androidenv/repo.json index bf69c67820b0..e27ec0bc3042 100644 --- a/pkgs/development/mobile/androidenv/repo.json +++ b/pkgs/development/mobile/androidenv/repo.json @@ -919,6 +919,38 @@ }, "images": { "10": { + "default": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "8537616a7add47cce24c60f18bc2429e3dc90ae3", + "size": 67927049, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-10_r05.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-10-default-armeabi-v7a", + "path": "system-images/android-10/default/armeabi-v7a", + "revision": "10-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "a166d5ccbb165e1dd5464fbfeec30a61f77790d8", + "size": 75386095, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-10_r05.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-10-default-x86", + "path": "system-images/android-10/default/x86", + "revision": "10-default-x86" + } + }, "google_apis": { "armeabi-v7a": { "archives": [ @@ -972,6 +1004,38 @@ } }, "15": { + "default": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "03d7ed95a9d3b107e3f2e5b166d017ea12529e70", + "size": 102452069, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-15_r05.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-15-default-armeabi-v7a", + "path": "system-images/android-15/default/armeabi-v7a", + "revision": "15-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "61381aef3fd0cdc8255cb3298072a920c80186ca", + "size": 116030933, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-15_r07.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-15-default-x86", + "path": "system-images/android-15/default/x86", + "revision": "15-default-x86" + } + }, "google_apis": { "armeabi-v7a": { "archives": [ @@ -1006,6 +1070,53 @@ } }, "16": { + "default": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "69b944b0d5a18c8563fa80d7d229af64890f724e", + "size": 118646340, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-16_r06.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-16-default-armeabi-v7a", + "path": "system-images/android-16/default/armeabi-v7a", + "revision": "16-default-armeabi-v7a" + }, + "mips": { + "archives": [ + { + "os": "all", + "sha1": "67943c54fb3943943ffeb05fdd39c0b753681f6e", + "size": 122482530, + "url": "https://dl.google.com/android/repository/sys-img/default/sysimg_mips-16_r04.zip" + } + ], + "displayName": "MIPS System Image", + "license": "mips-android-sysimage-license", + "name": "system-image-16-default-mips", + "path": "system-images/android-16/default/mips", + "revision": "16-default-mips" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "ee6718e7556c8f8bd8d3f470b34f2c5dbf9bcff4", + "size": 135305313, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-16_r07.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-16-default-x86", + "path": "system-images/android-16/default/x86", + "revision": "16-default-x86" + } + }, "google_apis": { "armeabi-v7a": { "archives": [ @@ -1040,6 +1151,53 @@ } }, "17": { + "default": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "a18a3fd0958ec4ef52507f58e414fc5c7dfd59d6", + "size": 124437041, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-17_r06.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-17-default-armeabi-v7a", + "path": "system-images/android-17/default/armeabi-v7a", + "revision": "17-default-armeabi-v7a" + }, + "mips": { + "archives": [ + { + "os": "all", + "sha1": "f0c6e153bd584c29e51b5c9723cfbf30f996a05d", + "size": 131781761, + "url": "https://dl.google.com/android/repository/sys-img/default/sysimg_mips-17_r01.zip" + } + ], + "displayName": "MIPS System Image", + "license": "mips-android-sysimage-license", + "name": "system-image-17-default-mips", + "path": "system-images/android-17/default/mips", + "revision": "17-default-mips" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "1ad5ffb51e31f5fe9fa47411fed2c2ade9a33865", + "size": 194811128, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-17_r07.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-17-default-x86", + "path": "system-images/android-17/default/x86", + "revision": "17-default-x86" + } + }, "google_apis": { "armeabi-v7a": { "archives": [ @@ -1074,6 +1232,38 @@ } }, "18": { + "default": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "580b583720f7de671040d5917c8c9db0c7aa03fd", + "size": 130590545, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-18_r05.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-18-default-armeabi-v7a", + "path": "system-images/android-18/default/armeabi-v7a", + "revision": "18-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "7a4ced4d9b0ab48047825491b4072dc2eb9b610e", + "size": 150097655, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-18_r04.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-18-default-x86", + "path": "system-images/android-18/default/x86", + "revision": "18-default-x86" + } + }, "google_apis": { "armeabi-v7a": { "archives": [ @@ -1108,6 +1298,38 @@ } }, "19": { + "default": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "d1a5fd4f2e1c013c3d3d9bfe7e9db908c3ed56fa", + "size": 159871567, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-19_r05.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-19-default-armeabi-v7a", + "path": "system-images/android-19/default/armeabi-v7a", + "revision": "19-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "2ac82153aae97f7eae4c5a0761224fe04321d03d", + "size": 185886274, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-19_r06.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-19-default-x86", + "path": "system-images/android-19/default/x86", + "revision": "19-default-x86" + } + }, "google_apis": { "armeabi-v7a": { "archives": [ @@ -1142,7 +1364,116 @@ } }, "21": { + "android-tv": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "b63e28a47f11b639dd94981a458b7abfa89ac331", + "size": 249428246, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/armeabi-v7a-21_r03.zip" + } + ], + "displayName": "Android TV ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-21-android-tv-armeabi-v7a", + "path": "system-images/android-21/android-tv/armeabi-v7a", + "revision": "21-android-tv-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "2f8a1988188d6abfd6c6395baeb4471a034dc1e8", + "size": 268946785, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-21_r03.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-21-android-tv-x86", + "path": "system-images/android-21/android-tv/x86", + "revision": "21-android-tv-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "c4375f1b4b4cd21a8617660e25f621cedcbd8332", + "size": 211426314, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-21_r04.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-21-default-arm64-v8a", + "path": "system-images/android-21/default/arm64-v8a", + "revision": "21-default-arm64-v8a" + }, + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "8c606f81306564b65e41303d2603e4c42ded0d10", + "size": 187163871, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-21_r04.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-21-default-armeabi-v7a", + "path": "system-images/android-21/default/armeabi-v7a", + "revision": "21-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "00f0eb0a1003efe3316347f762e20a85d8749cff", + "size": 208212529, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-21_r05.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-21-default-x86", + "path": "system-images/android-21/default/x86", + "revision": "21-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "9078a095825a69e5e215713f0866c83cef65a342", + "size": 292623982, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-21_r05.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-21-default-x86_64", + "path": "system-images/android-21/default/x86_64", + "revision": "21-default-x86_64" + } + }, "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "bad07917816ba029ddb09ce0836e4aac4a460d4d", + "size": 297671829, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-21_r32.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-21-google_apis-arm64-v8a", + "path": "system-images/android-21/google_apis/arm64-v8a", + "revision": "21-google_apis-arm64-v8a" + }, "armeabi-v7a": { "archives": [ { @@ -1191,7 +1522,101 @@ } }, "22": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "c78efd5a155622eb490be9d326f5783993375c35", + "size": 293118949, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-22_r03.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-22-android-tv-x86", + "path": "system-images/android-22/android-tv/x86", + "revision": "22-android-tv-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "703e27a9a4fb7a6e763cb7d713b89e5249a8fc99", + "size": 219124634, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-22_r02.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-22-default-arm64-v8a", + "path": "system-images/android-22/default/arm64-v8a", + "revision": "22-default-arm64-v8a" + }, + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "2114ec015dbf3a16cbcb4f63e8a84a1b206a07a1", + "size": 194596267, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-22_r02.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-22-default-armeabi-v7a", + "path": "system-images/android-22/default/armeabi-v7a", + "revision": "22-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "e33e2a6cc3f1cc56b2019dbef3917d2eeb26f54e", + "size": 214268954, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-22_r06.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-22-default-x86", + "path": "system-images/android-22/default/x86", + "revision": "22-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "5db3b27f78cd9c4c5092b1cad5a5dd479fb5b2e4", + "size": 299976630, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-22_r06.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-22-default-x86_64", + "path": "system-images/android-22/default/x86_64", + "revision": "22-default-x86_64" + } + }, "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "fd62e99e278f337fd58cadd37bf4f4c1998c8297", + "size": 382307460, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-22_r26.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-22-google_apis-arm64-v8a", + "path": "system-images/android-22/google_apis/arm64-v8a", + "revision": "22-google_apis-arm64-v8a" + }, "armeabi-v7a": { "archives": [ { @@ -1240,6 +1665,100 @@ } }, "23": { + "android-tv": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "bd84678ae8caf71d584f5210e866b2807e7b4b52", + "size": 304269268, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/armeabi-v7a-23_r12.zip" + } + ], + "displayName": "Android TV ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-23-android-tv-armeabi-v7a", + "path": "system-images/android-23/android-tv/armeabi-v7a", + "revision": "23-android-tv-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "094575ec634a662115a7a4c2b63d1743dfbca43c", + "size": 340921232, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-23_r21.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-23-android-tv-x86", + "path": "system-images/android-23/android-tv/x86", + "revision": "23-android-tv-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "ac18f3bd717e02804eee585e029f5dbc1a2616bf", + "size": 253807785, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-23_r07.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-23-default-arm64-v8a", + "path": "system-images/android-23/default/arm64-v8a", + "revision": "23-default-arm64-v8a" + }, + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "7cf2ad756e54a3acfd81064b63cb0cb9dff2798d", + "size": 238333358, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-23_r06.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-23-default-armeabi-v7a", + "path": "system-images/android-23/default/armeabi-v7a", + "revision": "23-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "f6c3e3dd7bd951454795aa75c3a145fd05ac25bb", + "size": 260804863, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-23_r10.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-23-default-x86", + "path": "system-images/android-23/default/x86", + "revision": "23-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "7cbc291483ca07dc67b71268c5f08a5755f50f51", + "size": 365009313, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-23_r10.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-23-default-x86_64", + "path": "system-images/android-23/default/x86_64", + "revision": "23-default-x86_64" + } + }, "google_apis": { "arm64-v8a": { "archives": [ @@ -1304,6 +1823,132 @@ } }, "24": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "ef7890e565f4e3544fd23613b437d4418fb10f99", + "size": 398227164, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-24_r22.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-24-android-tv-x86", + "path": "system-images/android-24/android-tv/x86", + "revision": "24-android-tv-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "e88ebdf4533efa0370603ee4ab0e7834e0cc364f", + "size": 305854153, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-24_r09.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-24-default-arm64-v8a", + "path": "system-images/android-24/default/arm64-v8a", + "revision": "24-default-arm64-v8a" + }, + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "e22c47afd06398b35f2705ca2e7fa85323351568", + "size": 782997866, + "url": "https://dl.google.com/android/repository/sys-img/default/armeabi-v7a-24_r07.zip" + } + ], + "displayName": "ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-24-default-armeabi-v7a", + "path": "system-images/android-24/default/armeabi-v7a", + "revision": "24-default-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "c1cae7634b0216c0b5990f2c144eb8ca948e3511", + "size": 313489224, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-24_r08.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-24-default-x86", + "path": "system-images/android-24/default/x86", + "revision": "24-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "f6559e1949a5879f31a9662f4f0e50ad60181684", + "size": 419261998, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-24_r08.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-24-default-x86_64", + "path": "system-images/android-24/default/x86_64", + "revision": "24-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "d264adca13330b5e50665ab44726e4fecc1ddd1f", + "size": 709604485, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-24_r29.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-24-google_apis-arm64-v8a", + "path": "system-images/android-24/google_apis/arm64-v8a", + "revision": "24-google_apis-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "74505c33546fb9f6722fb7aa8fc1472777b924ff", + "size": 889204295, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-24_r27.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-24-google_apis-x86", + "path": "system-images/android-24/google_apis/x86", + "revision": "24-google_apis-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "46d09c0723b77ddba00f2281099a2c44a88ac971", + "size": 1119800108, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-24_r27.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-24-google_apis-x86_64", + "path": "system-images/android-24/google_apis/x86_64", + "revision": "24-google_apis-x86_64" + } + }, "google_apis_playstore": { "x86": { "archives": [ @@ -1323,6 +1968,164 @@ } }, "25": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "faae592bc991001b1880a8198d729b25855cc34b", + "size": 438201093, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-25_r16.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-25-android-tv-x86", + "path": "system-images/android-25/android-tv/x86", + "revision": "25-android-tv-x86" + } + }, + "android-wear": { + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "76d3568a4e08023047af7d13025a35c9bf1d7e5c", + "size": 377841195, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/armeabi-v7a-25_r03.zip" + } + ], + "displayName": "Android Wear ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-25-android-wear-armeabi-v7a", + "path": "system-images/android-25/android-wear/armeabi-v7a", + "revision": "25-android-wear-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "693fce7b487a65491a4e88e9f740959688c9dbe6", + "size": 397826706, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/x86-25_r03.zip" + } + ], + "displayName": "Android Wear Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-25-android-wear-x86", + "path": "system-images/android-25/android-wear/x86", + "revision": "25-android-wear-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "b39d359623323a1b4906c071dec396040016ea73", + "size": 308416103, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-25_r02.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-25-default-arm64-v8a", + "path": "system-images/android-25/default/arm64-v8a", + "revision": "25-default-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "78ce7eb1387d598685633b9f7cbb300c3d3aeb5f", + "size": 316695942, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-25_r01.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-25-default-x86", + "path": "system-images/android-25/default/x86", + "revision": "25-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "7093d7b39216020226ff430a3b7b81c94d31ad37", + "size": 422702097, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-25_r01.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-25-default-x86_64", + "path": "system-images/android-25/default/x86_64", + "revision": "25-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "23162a2123e9e5cd5a7e930f8ca867676e83c0df", + "size": 740445031, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-25_r20.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-25-google_apis-arm64-v8a", + "path": "system-images/android-25/google_apis/arm64-v8a", + "revision": "25-google_apis-arm64-v8a" + }, + "armeabi-v7a": { + "archives": [ + { + "os": "all", + "sha1": "a6f7c491e3bb937523dddfa287e07d785934e8a1", + "size": 952973150, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-25_r18.zip" + } + ], + "displayName": "Google APIs ARM EABI v7a System Image", + "license": "android-sdk-license", + "name": "system-image-25-google_apis-armeabi-v7a", + "path": "system-images/android-25/google_apis/armeabi-v7a", + "revision": "25-google_apis-armeabi-v7a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "93872600c58521c8a67dc44c8e17cff4def009f3", + "size": 1013657090, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-25_r18.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-25-google_apis-x86", + "path": "system-images/android-25/google_apis/x86", + "revision": "25-google_apis-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "0da7b5bca8ff5deff45b942f61f081e038271ba6", + "size": 1298264628, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-25_r18.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-25-google_apis-x86_64", + "path": "system-images/android-25/google_apis/x86_64", + "revision": "25-google_apis-x86_64" + } + }, "google_apis_playstore": { "x86": { "archives": [ @@ -1342,6 +2145,134 @@ } }, "26": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "f908b3c81a03513a756c17a197faecfc91e437df", + "size": 401675862, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-26_r14.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-preview-license", + "name": "system-image-26-android-tv-x86", + "path": "system-images/android-26/android-tv/x86", + "revision": "26-android-tv-x86" + } + }, + "android-wear": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "fbffa91b936ca18fcc1e0bab2b52a8b0835cbb1c", + "size": 370311037, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/x86-26_r04.zip" + } + ], + "displayName": "Android Wear Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-26-android-wear-x86", + "path": "system-images/android-26/android-wear/x86", + "revision": "26-android-wear-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "c3199baf49790fc65f90f7ce734435d5778f6a30", + "size": 328910124, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-26_r01.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-26-default-arm64-v8a", + "path": "system-images/android-26/default/arm64-v8a", + "revision": "26-default-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "e613d6e0da668e30daf547f3c6627a6352846f90", + "size": 350195807, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-26_r01.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-26-default-x86", + "path": "system-images/android-26/default/x86", + "revision": "26-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "432f149c048bffce7f9de526ec65b336daf7a0a3", + "size": 474178332, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-26_r01.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-26-default-x86_64", + "path": "system-images/android-26/default/x86_64", + "revision": "26-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "75fe6f36cf0854270876543641da53887961a63b", + "size": 732225522, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-26_r01.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-26-google_apis-arm64-v8a", + "path": "system-images/android-26/google_apis/arm64-v8a", + "revision": "26-google_apis-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "edac36ae459ebc974aac4b51b67b7356fa099f5b", + "size": 805108564, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-26_r16.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-26-google_apis-x86", + "path": "system-images/android-26/google_apis/x86", + "revision": "26-google_apis-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "0eb13cc91cf164b617eaf85e4030289cb18189de", + "size": 980740438, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-26_r16.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-26-google_apis-x86_64", + "path": "system-images/android-26/google_apis/x86_64", + "revision": "26-google_apis-x86_64" + } + }, "google_apis_playstore": { "x86": { "archives": [ @@ -1361,6 +2292,102 @@ } }, "27": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "b7d2a9349cdb1da9dafbd42de7378f6f1933d193", + "size": 410757280, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-27_r09.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-preview-license", + "name": "system-image-27-android-tv-x86", + "path": "system-images/android-27/android-tv/x86", + "revision": "27-android-tv-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "cb01199edae33ce375c6d8e08aea08911ff0d583", + "size": 331796092, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-27_r01.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-27-default-arm64-v8a", + "path": "system-images/android-27/default/arm64-v8a", + "revision": "27-default-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "4ec990fac7b62958decd12e18a4cd389dfe7c582", + "size": 360984187, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-27_r01.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-27-default-x86", + "path": "system-images/android-27/default/x86", + "revision": "27-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "2878261011a59ca3de29dc5b457a495fdb268d60", + "size": 491675204, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-27_r01.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-27-default-x86_64", + "path": "system-images/android-27/default/x86_64", + "revision": "27-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "a7ae177097205090fee9801349575cea0dd9f606", + "size": 730343967, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-27_r01.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-27-google_apis-arm64-v8a", + "path": "system-images/android-27/google_apis/arm64-v8a", + "revision": "27-google_apis-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "0a130cad4f6d42c305a61265dc6c738e9e2b45c4", + "size": 807298593, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-27_r11.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-27-google_apis-x86", + "path": "system-images/android-27/google_apis/x86", + "revision": "27-google_apis-x86" + } + }, "google_apis_playstore": { "x86": { "archives": [ @@ -1380,6 +2407,134 @@ } }, "28": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "4c13edca32c1abb899a0702fe6972087712bcb78", + "size": 475216948, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-28_r10.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-preview-license", + "name": "system-image-28-android-tv-x86", + "path": "system-images/android-28/android-tv/x86", + "revision": "28-android-tv-x86" + } + }, + "android-wear": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "3dd75066e95327baf8991915a043e53e06a2cfb5", + "size": 682327945, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/x86-28_r09.zip" + } + ], + "displayName": "Wear OS Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-28-android-wear-x86", + "path": "system-images/android-28/android-wear/x86", + "revision": "28-android-wear-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "4de0491612ca12097be7deb76af835ebabadefca", + "size": 425671679, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-28_r01.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-28-default-arm64-v8a", + "path": "system-images/android-28/default/arm64-v8a", + "revision": "28-default-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "ce03c42d80c0fc6dc47f6455dbee7aa275d02780", + "size": 437320152, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-28_r04.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-preview-license", + "name": "system-image-28-default-x86", + "path": "system-images/android-28/default/x86", + "revision": "28-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "d47a85c8f4e9fd57df97814ad8884eeb0f3a0ef0", + "size": 564792723, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-28_r04.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-preview-license", + "name": "system-image-28-default-x86_64", + "path": "system-images/android-28/default/x86_64", + "revision": "28-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "3360092d11284a9f2d7146847932a426c438b372", + "size": 856031756, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-28_r01.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-arm-dbt-license", + "name": "system-image-28-google_apis-arm64-v8a", + "path": "system-images/android-28/google_apis/arm64-v8a", + "revision": "28-google_apis-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "e0541ac9b783ab91a00054e133bda340a2b9c757", + "size": 994434707, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-28_r12.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom System Image", + "license": "android-sdk-arm-dbt-license", + "name": "system-image-28-google_apis-x86", + "path": "system-images/android-28/google_apis/x86", + "revision": "28-google_apis-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "1d93bd994e29c4e9bbe71fd9c278addc5418cbee", + "size": 1102721597, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-28_r11.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-28-google_apis-x86_64", + "path": "system-images/android-28/google_apis/x86_64", + "revision": "28-google_apis-x86_64" + } + }, "google_apis_playstore": { "arm64-v8a": { "archives": [ @@ -1429,6 +2584,141 @@ } }, "29": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "736c2f6c79493b5ee4ca0d2531a25c9eb7f9c7ab", + "size": 590809630, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-29_r03.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-preview-license", + "name": "system-image-29-android-tv-x86", + "path": "system-images/android-29/android-tv/x86", + "revision": "29-android-tv-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "fa0d67d7430fcc84b2fe2508ea81e92ac644e264", + "size": 498049256, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-29_r08.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-29-default-arm64-v8a", + "path": "system-images/android-29/default/arm64-v8a", + "revision": "29-default-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "windows", + "sha1": "cc4fa13e49cb2e93770d4f2e90ea1dd2a81e315b", + "size": 516543600, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-29_r08-windows.zip" + }, + { + "os": "macosx", + "sha1": "cc4fa13e49cb2e93770d4f2e90ea1dd2a81e315b", + "size": 516543600, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-29_r08-darwin.zip" + }, + { + "os": "linux", + "sha1": "cc4fa13e49cb2e93770d4f2e90ea1dd2a81e315b", + "size": 516543600, + "url": "https://dl.google.com/android/repository/sys-img/default/x86-29_r08-linux.zip" + } + ], + "displayName": "Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-29-default-x86", + "path": "system-images/android-29/default/x86", + "revision": "29-default-x86" + }, + "x86_64": { + "archives": [ + { + "os": "windows", + "sha1": "e4b798d6fcddff90d528d74ef22ce3dd4a2ca798", + "size": 689676765, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-29_r08-windows.zip" + }, + { + "os": "macosx", + "sha1": "e4b798d6fcddff90d528d74ef22ce3dd4a2ca798", + "size": 689676765, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-29_r08-darwin.zip" + }, + { + "os": "linux", + "sha1": "e4b798d6fcddff90d528d74ef22ce3dd4a2ca798", + "size": 689676765, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-29_r08-linux.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-29-default-x86_64", + "path": "system-images/android-29/default/x86_64", + "revision": "29-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "e5938d570019150135c3bdf39442d103ea8aca86", + "size": 1169015927, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-29_r12.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-arm-dbt-license", + "name": "system-image-29-google_apis-arm64-v8a", + "path": "system-images/android-29/google_apis/arm64-v8a", + "revision": "29-google_apis-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "8dc45a7406b922116f2121f6826868c2e7087389", + "size": 1133056400, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-29_r12.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-29-google_apis-x86", + "path": "system-images/android-29/google_apis/x86", + "revision": "29-google_apis-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "8392b93dc05c380bb0e6b2375ba318c14b263b37", + "size": 1313280930, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-29_r12.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "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" + } + }, "google_apis_playstore": { "arm64-v8a": { "archives": [ @@ -1508,6 +2798,134 @@ } }, "30": { + "android-tv": { + "x86": { + "archives": [ + { + "os": "all", + "sha1": "f4151d2390fc015ddb2a7715bea9bc69a5ee0b4e", + "size": 699304963, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-30_r04.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-preview-license", + "name": "system-image-30-android-tv-x86", + "path": "system-images/android-30/android-tv/x86", + "revision": "30-android-tv-x86" + } + }, + "android-wear": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "4096b210414f609e5f83bd846b6f77700ef23ac4", + "size": 768213685, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/arm64-v8a-30_r11.zip" + } + ], + "displayName": "Wear OS 3 ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-30-android-wear-arm64-v8a", + "path": "system-images/android-30/android-wear/arm64-v8a", + "revision": "30-android-wear-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "e528d54306411a56ea2391557c95d4654d949d3c", + "size": 856620801, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/x86-30_r11.zip" + } + ], + "displayName": "Wear OS 3 Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-30-android-wear-x86", + "path": "system-images/android-30/android-wear/x86", + "revision": "30-android-wear-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "2462af138023fbbd1114421818890884d4ebceab", + "size": 548363604, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-30_r01.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-30-default-arm64-v8a", + "path": "system-images/android-30/default/arm64-v8a", + "revision": "30-default-arm64-v8a" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "e08119b65d2c188ef69f127028eb4c8cc632cd8f", + "size": 676379913, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-30_r10.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-30-default-x86_64", + "path": "system-images/android-30/default/x86_64", + "revision": "30-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "14393e29f2b1021d4bfece3a1cb29af745e95dac", + "size": 1244095258, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-30_r11.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-arm-dbt-license", + "name": "system-image-30-google_apis-arm64-v8a", + "path": "system-images/android-30/google_apis/arm64-v8a", + "revision": "30-google_apis-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "a23869f790fd42dddc83c47be1d1827fbebb7869", + "size": 650472769, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86-30_r10.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-30-google_apis-x86", + "path": "system-images/android-30/google_apis/x86", + "revision": "30-google_apis-x86" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "8ec579d5fe31804dd80132f1678655bfc015609b", + "size": 1438274971, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-30_r11.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-30-google_apis-x86_64", + "path": "system-images/android-30/google_apis/x86_64", + "revision": "30-google_apis-x86_64" + } + }, "google_apis_playstore": { "arm64-v8a": { "archives": [ @@ -1587,6 +3005,102 @@ } }, "31": { + "android-tv": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "e8cec4080464d516e3f863d943c24055155f29bf", + "size": 763104604, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/arm64-v8a-31_r04.zip" + } + ], + "displayName": "Android TV ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-31-android-tv-arm64-v8a", + "path": "system-images/android-31/android-tv/arm64-v8a", + "revision": "31-android-tv-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "8c0b848019afade7f2a8ddb5c361178f63ec86ca", + "size": 772250386, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-31_r04.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-31-android-tv-x86", + "path": "system-images/android-31/android-tv/x86", + "revision": "31-android-tv-x86" + } + }, + "default": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "1052df2d0afc8fe57138db19d5ebd82d10c607da", + "size": 635481190, + "url": "https://dl.google.com/android/repository/sys-img/default/arm64-v8a-31_r03.zip" + } + ], + "displayName": "ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-31-default-arm64-v8a", + "path": "system-images/android-31/default/arm64-v8a", + "revision": "31-default-arm64-v8a" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "1200d6983af477fd6439f11cc5cabf9866bc4a16", + "size": 657244568, + "url": "https://dl.google.com/android/repository/sys-img/default/x86_64-31_r03.zip" + } + ], + "displayName": "Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-31-default-x86_64", + "path": "system-images/android-31/default/x86_64", + "revision": "31-default-x86_64" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "afdec4698b61bfbcf8471eff418951d7183c7b55", + "size": 1415899601, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-31_r10.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-arm-dbt-license", + "name": "system-image-31-google_apis-arm64-v8a", + "path": "system-images/android-31/google_apis/arm64-v8a", + "revision": "31-google_apis-arm64-v8a" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "05a74ff8509fb76cbfd14b2e3307addad5c4d0df", + "size": 1458104208, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-31_r11.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-preview-license", + "name": "system-image-31-google_apis-x86_64", + "path": "system-images/android-31/google_apis/x86_64", + "revision": "31-google_apis-x86_64" + } + }, "google_apis_playstore": { "arm64-v8a": { "archives": [ @@ -1627,6 +3141,23 @@ } }, "32": { + "google_apis": { + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "9727f570164b062e820d6e62edabc96d125027f6", + "size": 1471221547, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-32_r03.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-preview-license", + "name": "system-image-32-google_apis-x86_64", + "path": "system-images/android-32/google_apis/x86_64", + "revision": "32-google_apis-x86_64" + } + }, "google_apis_playstore": { "arm64-v8a": { "archives": [ @@ -1679,20 +3210,84 @@ } }, "33": { + "android-tv": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "41b75155961eb506b492e60e8fba590ad7baa02c", + "size": 828027584, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/arm64-v8a-33_r05.zip" + } + ], + "displayName": "Android TV ARM 64 v8a System Image", + "license": "android-sdk-license", + "name": "system-image-33-android-tv-arm64-v8a", + "path": "system-images/android-33/android-tv/arm64-v8a", + "revision": "33-android-tv-arm64-v8a" + }, + "x86": { + "archives": [ + { + "os": "all", + "sha1": "ec3fe6a450ed6aa5fec2703fca68648e7813094f", + "size": 817908695, + "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-33_r05.zip" + } + ], + "displayName": "Android TV Intel x86 Atom System Image", + "license": "android-sdk-license", + "name": "system-image-33-android-tv-x86", + "path": "system-images/android-33/android-tv/x86", + "revision": "33-android-tv-x86" + } + }, + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "os": "all", + "sha1": "8e7733de150ad1a912d63f90a11a1de705b5ddcf", + "size": 1619645676, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-33_r08.zip" + } + ], + "displayName": "Google APIs ARM 64 v8a System Image", + "license": "android-sdk-arm-dbt-license", + "name": "system-image-33-google_apis-arm64-v8a", + "path": "system-images/android-33/google_apis/arm64-v8a", + "revision": "33-google_apis-arm64-v8a" + }, + "x86_64": { + "archives": [ + { + "os": "all", + "sha1": "6f5210b87ca249aa6ea2a25bb6d5598c19fa9372", + "size": 1510438727, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-33_r08.zip" + } + ], + "displayName": "Google APIs Intel x86 Atom_64 System Image", + "license": "android-sdk-license", + "name": "system-image-33-google_apis-x86_64", + "path": "system-images/android-33/google_apis/x86_64", + "revision": "33-google_apis-x86_64" + } + }, "google_apis_playstore": { "arm64-v8a": { "archives": [ { "os": "macosx", - "sha1": "0b850a4f317d7a6abe854a6845705c9ca4437764", - "size": 1492105537, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-33_r05-darwin.zip" + "sha1": "831cfe87d12eb5dd9d107ca2dfb203d52ca7b217", + "size": 1582091204, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-33_r07-darwin.zip" }, { "os": "linux", - "sha1": "0b850a4f317d7a6abe854a6845705c9ca4437764", - "size": 1492105537, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-33_r05-linux.zip" + "sha1": "831cfe87d12eb5dd9d107ca2dfb203d52ca7b217", + "size": 1582091204, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-33_r07-linux.zip" } ], "displayName": "Google Play ARM 64 v8a System Image", @@ -1705,68 +3300,34 @@ "archives": [ { "os": "all", - "sha1": "ed2931ebef4f7bedff8610254748d6496ce5d3c4", - "size": 1496628942, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-33_r05.zip" + "sha1": "b7491eecf45556bd96f7b7a80c020b18a8a7df0d", + "size": 1481773028, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-33_r07.zip" } ], "displayName": "Google Play Intel x86 Atom_64 System Image", - "license": "android-sdk-preview-license", + "license": "android-sdk-license", "name": "system-image-33-google_apis_playstore-x86_64", "path": "system-images/android-33/google_apis_playstore/x86_64", "revision": "33-google_apis_playstore-x86_64" } } }, - "Tiramisu": { - "android-tv": { - "arm64-v8a": { - "archives": [ - { - "os": "all", - "sha1": "4b70bed5ffb28162cdde7852e0597d957910270d", - "size": 840304267, - "url": "https://dl.google.com/android/repository/sys-img/android-tv/arm64-v8a-Tiramisu_r03.zip" - } - ], - "displayName": "Android TV ARM 64 v8a System Image", - "license": "android-sdk-license", - "name": "system-image-Tiramisu-android-tv-arm64-v8a", - "path": "system-images/android-Tiramisu/android-tv/arm64-v8a", - "revision": "Tiramisu-android-tv-arm64-v8a" - }, - "x86": { - "archives": [ - { - "os": "all", - "sha1": "547a24d9dec83e11486ef4ea45848d9fa99f35c2", - "size": 832895525, - "url": "https://dl.google.com/android/repository/sys-img/android-tv/x86-Tiramisu_r03.zip" - } - ], - "displayName": "Android TV Intel x86 Atom System Image", - "license": "android-sdk-license", - "name": "system-image-Tiramisu-android-tv-x86", - "path": "system-images/android-Tiramisu/android-tv/x86", - "revision": "Tiramisu-android-tv-x86" - } - } - }, "TiramisuPrivacySandbox": { "google_apis_playstore": { "arm64-v8a": { "archives": [ { "os": "macosx", - "sha1": "4653d7aa2dbd2629c3afc1c700284de0f7791bb2", - "size": 1514681298, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-TiramisuPrivacySandbox_r05-darwin.zip" + "sha1": "069cdb5926cef729c8f14897cdc70e47acfe6736", + "size": 1489462208, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-TiramisuPrivacySandbox_r08-darwin.zip" }, { "os": "linux", - "sha1": "4653d7aa2dbd2629c3afc1c700284de0f7791bb2", - "size": 1514681298, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-TiramisuPrivacySandbox_r05-linux.zip" + "sha1": "069cdb5926cef729c8f14897cdc70e47acfe6736", + "size": 1489462208, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-TiramisuPrivacySandbox_r08-linux.zip" } ], "displayName": "Google Play ARM 64 v8a System Image", @@ -1779,9 +3340,9 @@ "archives": [ { "os": "all", - "sha1": "2a4ea6ce714155ea8ddfea26cf61ad219f32c02a", - "size": 1519169526, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-TiramisuPrivacySandbox_r05.zip" + "sha1": "7ae1658d066353e9f079afe694bdc17c446c0c88", + "size": 1493513570, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-TiramisuPrivacySandbox_r08.zip" } ], "displayName": "Google Play Intel x86 Atom_64 System Image", @@ -1816,7 +3377,7 @@ "Intel Corporation Internal Evaluation License Agreement for x86 Android* System Images for Android Software Development Kit (SDK) This Internal Evaluation License Agreement (this \"Agreement\") is entered into by and between Intel and you (as an individual developer or a legal entity -- identified below as Recipient). Intel shall provide the Evaluation Software to Recipient as described in accordance with the Internal Evaluation License Terms and Conditions.\n\nDefinitions. These terms shall have the following meanings:\n\n\"Intel\" or \"INTEL\" Intel Corporation With an Address of: 2200 Mission College Blvd. Santa Clara, CA 95052 Office of the General Counsel Mail Stop: RNB-4-51 Attn: Software and Services Group Legal\n\n\"Evaluation Software\" The x86 Android* emulator system images for Android Software Development Kit (SDK), as provided by Intel.\n\nINTERNAL EVALUATION LICENSE TERMS AND CONDITIONS\n\n1. DEFINITIONS.\n\n1.1 Additional Defined Terms. \"Agreement\", \"Evaluation Software\", \"Intel\", \"Non-disclosure Agreement\", \"Recipient\", and \"Effective Date\" shall have the meanings ascribed to them on the signature page(s) of this Agreement.\n\n1.2 Evaluation Materials means, collectively, the Evaluation Software (in source and/or object code form) and documentation (including, without limitation, any design documents, specifications and other related materials) related to the Evaluation Software.\n\n1.3 \"Open Source Software\" means any software that requires as a condition of use, modification and/or distribution of such software that such software or other software incorporated into, derived from or distributed with such software (a) be disclosed or distributed in source code form; or (b) be licensed by the user to third parties for the purpose of making and/or distributing derivative works; or (c) be redistributable at no charge. Open Source Software includes, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models substantially similar to any of the following: (a) GNU’s General Public License (GPL) or Lesser/Library GPL (LGPL), (b) the Artistic License (e.g., PERL), (c) the Mozilla Public License, (d) the Netscape Public License, (e) the Sun Community Source License (SCSL), (f) the Sun Industry Source License (SISL), (g) the Apache Software license and (h) the Common Public License (CPL).\n\n1.4 \"Pre-Release Materials\" means \"alpha\" or \"beta\" designated pre-release features, which may not be fully functional, which Intel may substantially modify in producing any production version of the Evaluation Materials and/or is still under development by Intel and/or Intel’s suppliers.\n\n2. PURPOSE. Intel desires to provide the Evaluation Materials to Recipient solely for Recipient's internal evaluation of the Evaluation Software and other Intel products, to evaluate the desirability of cooperating with Intel in developing products based on the Evaluation Software and/or to advise Intel as to possible modifications to the Evaluation Software. Recipient may not disclose, distribute or make commercial use of the Evaluation Materials or any modifications to the Evaluation Materials. THE EVALUATION MATERIALS ARE PROVIDED FOR EVALUATION PURPOSES ONLY AND MAY NOT BE DISTRIBUTED BY RECIPIENT OR INCORPORATED INTO RECIPIENT’S PRODUCTS OR SOFTWARE. PLEASE CONTACT AN INTEL SALES REPRESENTATIVE TO LEARN ABOUT THE AVAILABILITY AND COST OF A COMMERICAL VERSION OF THE EVALUATION SOFTWARE.\n\n3. TITLE. Title to the Evaluation Materials remains with Intel or its suppliers. Recipient shall not mortgage, pledge or encumber the Evaluation Materials in any way. Recipient shall return all Evaluation Materials, keeping no copies, upon termination or expiration of this Agreement.\n\n4. LICENSE. Intel grants Recipient a royalty-free, personal, nontransferable, nonexclusive license under its copyrights to use the Evaluation Software only for the purposes described in paragraph 2 above. Unless otherwise communicated in writing by Intel to Recipient, to the extent the Evaluation Software is provided in more than one delivery or release (each, a \"Release\") the license grant in this Section 4 and the Evaluation Period shall apply to each Release. Recipient may not make modifications to the Evaluation Software. Recipient shall not disassemble, reverse-engineer, or decompile any software not provided to Recipient in source code form. EXCEPT AS PROVIDED HEREIN, NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY OTHER INTELLECTUAL PROPERTY RIGHTS IS GRANTED TO THE RECIPIENT.\n\n5. NO OBLIGATION. Recipient shall have no duty to purchase or license any product from Intel. Intel and its suppliers shall have no obligation to provide support for, or develop a non-evaluation version of, the Evaluation Software or to license any version of it.\n\n6. MODIFICATIONS. This Agreement does NOT obligate Recipient to provide Intel with comments or suggestions regarding Evaluation Materials. However, should Recipient provide Intel with comments or suggestions for the modification, correction, improvement or enhancement of (a) the Evaluation Materials or (b) Intel products or processes which may embody the Evaluation Materials, Recipient grants to Intel a non-exclusive, irrevocable, worldwide, royalty-free license, with the right to sublicense Intel’s licensees and customers, under Recipient intellectual property rights, the rights to use and disclose such comments and suggestions in any manner Intel chooses and to display, perform, copy, make, have made, use, sell, offer to sell, import, and otherwise dispose of Intel’s and its sublicensee’s products embodying such comments and suggestions in any manner and via any media Intel chooses, without reference to the source.\n\n7. WARRANTY DISCLAIMER. INTEL AND ITS SUPPLIERS MAKE NO WARRANTIES WITH RESPECT TO EVALUATION MATERIALS, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY IMPLIED WARRANTY OF NONINFRINGEMENT. THE EVALUATION MATERIALS ARE PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND.\n\n8. LIMITATION OF LIABILITY. INTEL AND ITS SUPPLIERS SHALL NOT BE LIABLE FOR ANY PROPERTY DAMAGE, PERSONAL INJURY, LOSS OF PROFITS, INTERRUPTION OF BUSINESS OR ANY SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, HOWEVER CAUSED, WHETHER FOR BREACH OF WARRANTY, CONTRACT, STRICT LIABILITY OR OTHERWISE. INTEL AND ITS SUPPLIERS DISCLAIM ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS RELATING TO THE EVALUATION MATERIALS.\n\n9. EXPIRATION. Intel may terminate this Agreement immediately after a breach by Recipient.\n\n10. GENERAL.\n\n10.1 Controlling Law. Any claims arising under or relating to this Agreement shall be governed by the internal substantive laws of the State of Delaware or federal courts located in Delaware, without regard to principles of conflict of laws. Each party hereby agrees to jurisdiction and venue in the courts of the State of Delaware for all disputes and litigation arising under or relating to this Agreement. The parties agree that the United Nations Convention on Contracts for the International Sale of Goods is specifically excluded from application to this Agreement. The parties consent to the personal jurisdiction of the above courts.\n\n10.2 Remedies. Recipient acknowledges that any disclosure, commercialization, or public use of the Evaluation Materials would cause irreparable injury to Intel and consents to the grant of an injunction by any court of competent jurisdiction in the event of a threatened breach.\n\n10.3 Assignment. Recipient may not delegate, assign or transfer this Agreement, the license granted or any of Recipient’s rights or duties hereunder, expressly, by implication, by operation of law, by way of merger (regardless of whether Recipient is the surviving entity) or acquisition, or otherwise and any attempt to do so, without Intel’s express prior written consent, shall be null and void. Intel may assign this Agreement, and its rights and obligations hereunder, in its sole discretion.\n\n10.4 Entire Agreement. This Agreement constitutes the entire agreement between Recipient and Intel and supersedes in their entirety any and all oral or written agreements previously existing between Recipient and Intel with respect to the subject matter hereof. This Agreement supersedes any and all \"click-to-accept\" or shrink-wrapped licenses, in hard-copy or electronic form, embedded in or included with the Evaluation Materials. This Agreement may only be amended or supplemented by a writing that refers explicitly to this Agreement and that is signed by duly authorized representatives of Recipient and Intel. Without limiting the foregoing, terms and conditions on any purchase orders or similar materials submitted by Recipient to Intel, and any terms contained in Intel’s standard acknowledgment form that are in conflict with these terms, shall be of no force or effect.\n\n10.5 Severability. In the event that any provision of this Agreement shall be unenforceable or invalid under any applicable law or be so held by applicable court decision, such unenforceability or invalidity shall not render this Agreement unenforceable or invalid as a whole, and, in such event, such provision shall be changed and interpreted so as to best accomplish the objectives of such unenforceable or invalid provision within the limits of applicable law or applicable court decisions.\n\n10.6 Export Regulations / Export Control. Recipient shall not export, either directly or indirectly, any product, service or technical data or system incorporating the Evaluation Materials without first obtaining any required license or other approval from the U.S. Department of Commerce or any other agency or department of the United States Government. In the event any product is exported from the United States or re-exported from a foreign destination by Recipient, Recipient shall ensure that the distribution and export/re-export or import of the product is in compliance with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government. Recipient agrees that neither it nor any of its subsidiaries will export/re-export any technical data, process, product, or service, directly or indirectly, to any country for which the United States government or any agency thereof or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining such license or approval. Recipient also agrees to implement measures to ensure that foreign national employees are authorized to receive any information controlled by U.S. export control laws. An export is \"deemed\" to take place when information is released to a foreign national wherever located.\n\n10.7 Special Terms for Pre-Release Materials. If so indicated in the description of the Evaluation Software, the Evaluation Software may contain Pre-Release Materials. Recipient hereby understands, acknowledges and agrees that: (i) Pre-Release Materials may not be fully tested and may contain bugs or errors; (ii) Pre-Release materials are not suitable for commercial release in their current state; (iii) regulatory approvals for Pre-Release Materials (such as UL or FCC) have not been obtained, and Pre-Release Materials may therefore not be certified for use in certain countries or environments and (iv) Intel can provide no assurance that it will ever produce or make generally available a production version of the Pre-Release Materials . Intel is not under any obligation to develop and/or release or offer for sale or license a final product based upon the Pre-Release Materials and may unilaterally elect to abandon the Pre-Release Materials or any such development platform at any time and without any obligation or liability whatsoever to Recipient or any other person.\n\n10.8 Open Source Software. In the event Open Source software is included with Evaluation Software, such Open Source software is licensed pursuant to the applicable Open Source software license agreement identified in the Open Source software comments in the applicable source code file(s) and/or file header provided with Evaluation Software. Additional detail may be provided (where applicable) in the accompanying on-line documentation. With respect to the Open Source software, nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable Open Source software license agreement. ANY PRE-RELEASE MATERIALS ARE NON-QUALIFIED AND, AS SUCH, ARE PROVIDED POSSIBLY WITH FAULTS" ], "mips-android-sysimage-license": [ - "MIPS Technologies, Inc. (“MIPS”) Internal Evaluation License Agreement for MIPS Android™ System Images for Android Software Development Kit (SDK): This Internal Evaluation License Agreement (this \"Agreement\") is entered into by and between MIPS and you (as an individual developer or a legal entity -- identified below as “Recipient”). MIPS shall make the Evaluation Software available to Recipient as described in accordance with the terms and conditions set forth below.\n\nBy clicking on the “Accept” button, downloading, installing, or otherwise using the Evaluation Materials (defined below), you agree to be bound by the terms of this Agreement effective as of the date you click “Accept” (the “Effective Date”), and if doing so on behalf of an entity, you represent that you are authorized to bind the entity to the terms and conditions of this Agreement. If you do not agree to be bound by the terms and conditions of this Agreement, do not download, install, or use the Evaluation Materials.\n\n1. DEFINITIONS. These terms shall have the following meanings:\n\n1.1 “MIPS” shall mean MIPS Technologies, Inc., a Delaware corporation having a principal place of business at: 955 East Arques Ave., Sunnyvale, CA 94085\n\n1.2 “Evaluation Software” shall mean MIPS Android™ emulator system images for Android Software Development Kit (SDK), as made available to Recipient.\n\n1.3 “Evaluation Materials\" means, collectively, the Evaluation Software (in source and/or object code form) and documentation (including, without limitation, any design documents, specifications, reference manuals, and other related materials) related to the Evaluation Software as made available to Recipient.\n\n1.4 “Open Source Software” means any software that requires (as a condition of use, modification and/or distribution of such software) that such software or other software incorporated into, derived from or distributed with such software (a) be disclosed or distributed in source code form; or (b) be licensed by the user to third parties for the purpose of making and/or distributing derivative works; or (c) be redistributable at no charge. Open Source Software includes, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models substantially similar to any of the following: (a) GNU’s General Public License (GPL) or Lesser/Library GPL (LGPL), (b) the Artistic License (e.g., PERL), (c) the Mozilla Public License, (d) the Netscape Public License, (e) the Sun Community Source License (SCSL), (f) the Sun Industry Source License (SISL), (g) the Apache Software license and (h) the Common Public License (CPL).\n\n1.5 “Pre-Release Materials” means “alpha” or “beta” designated pre-release features, which may not be fully functional, which MIPS may substantially modify in producing any production version of the Evaluation Materials, and/or which is still under development by MIPS and/or MIPS’ suppliers.\n\n2. PURPOSE. MIPS desires to make the Evaluation Materials available to Recipient solely for Recipient's internal evaluation of the Evaluation Software to evaluate the desirability of cooperating with MIPS in developing products that are compatible with the Evaluation Software and/or to advise MIPS as to possible modifications to the Evaluation Software. Recipient may not disclose, distribute, modify (except to facilitate the above-mentioned internal evaluation), or make commercial use of the Evaluation Materials or any modifications of the Evaluation Materials.\n\nTHE EVALUATION MATERIALS ARE PROVIDED FOR EVALUATION PURPOSES ONLY AND MAY NOT BE MODIFIED (EXCEPT TO FACILITATE THE INTERNAL EVALUATION) OR DISTRIBUTED BY RECIPIENT OR INCORPORATED INTO RECIPIENT’S PRODUCTS OR SOFTWARE. PLEASE CONTACT A MIPS SALES REPRESENTATIVE TO LEARN ABOUT THE AVAILABILITY AND COST OF A COMMERCIAL VERSION OF THE EVALUATION SOFTWARE.\n\n3. TITLE. Title to the Evaluation Materials remains with MIPS or its suppliers. Recipient shall not mortgage, pledge or encumber the Evaluation Materials in any way. Recipient shall return all Evaluation Materials, keeping no copies, upon termination or expiration of this Agreement.\n\n4. LICENSE. MIPS grants Recipient a royalty-free, personal, nontransferable, nonexclusive license under its copyrights to use the Evaluation Software only for the purposes described in paragraph 2 above and only for a period beginning on the Effective Date and extending to the first anniversary of the Effective Date (the “Evaluation Period”). Unless otherwise communicated in writing by MIPS to Recipient, to the extent the Evaluation Software is provided in more than one delivery or release (each, a “Release”) the license grant in this Section 4 and the Evaluation Period shall apply to each Release, in which case the Evaluation Period shall begin on the date that the Release is made generally available and continue to the first anniversary of such date. Recipient may not make modifications to the Evaluation Software. Recipient shall not disassemble, reverse-engineer, or decompile any software that is not provided to Recipient in source code form.\n\n\nEXCEPT AS PROVIDED HEREIN, NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY OTHER MIPS INTELLECTUAL PROPERTY RIGHTS IS GRANTED TO THE RECIPIENT. OTHER THAN AS EXPLICITLY SET FORTH IN PARAGRAPH 2 ABOVE, NO RIGHT TO COPY, TO REPRODUCE, TO MODIFY, OR TO CREATE DERIVATIVE WORKS OF, THE EVALUATION MATERIALS IS GRANTED HEREIN.\n\n5. NO OBLIGATION. Recipient shall have no duty to purchase or license any product from MIPS. MIPS and its suppliers shall have no obligation to provide support for, or develop a non-evaluation version of, the Evaluation Software or to license any version of it.\n\n6. MODIFICATIONS. This Agreement does not obligate Recipient to provide MIPS with comments or suggestions regarding Evaluation Materials. However, should Recipient provide MIPS with comments or suggestions for the modification, correction, improvement or enhancement of (a) the Evaluation Materials or (b) MIPS products or processes which may embody the Evaluation Materials, then Recipient agrees to grant and hereby grants to MIPS a non-exclusive, irrevocable, worldwide, fully paid-up, royalty-free license, with the right to sublicense MIPS’ licensees and customers, under Recipient’s Intellectual property rights, to use and disclose such comments and suggestions in any manner MIPS chooses and to display, perform, copy, make, have made, use, sell, offer to sell, import, and otherwise dispose of MIPS’ and its sublicensee’s products embodying such comments and suggestions in any manner and via any media MIPS chooses, without reference to the source.\n\n7. WARRANTY DISCLAIMER. MIPS AND ITS SUPPLIERS MAKE NO WARRANTIES WITH RESPECT TO EVALUATION MATERIALS, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY IMPLIED WARRANTY OF NONINFRINGEMENT WITH RESPECT TO THIRD PARTY INTELLECTUAL PROPERTY. RECIPIENT ACKNOWLEDGES AND AGREES THAT THE EVALUATION MATERIALS ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND.\n\n8. LIMITATION OF LIABILITY. MIPS AND ITS SUPPLIERS SHALL NOT BE LIABLE FOR ANY PROPERTY DAMAGE, PERSONAL INJURY, LOSS OF PROFITS, INTERRUPTION OF BUSINESS OR FOR ANY DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, HOWEVER CAUSED OR ALLEGED, WHETHER FOR BREACH OF WARRANTY, CONTRACT, STRICT LIABILITY OR OTHERWISE, INCLUDING WITHOUT LIMITATION, UNDER TORT OR OTHER LEGAL THEORY. MIPS AND ITS SUPPLIERS DISCLAIM ANY AND ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS OF ANY KIND RELATING TO THE EVALUATION MATERIALS.\n\n9. EXPIRATION. MIPS may terminate this Agreement immediately after a breach by Recipient or otherwise at MIPS’ reasonable discretion and upon five (5) business days’ notice to Recipient.\n\n10. GENERAL.\n\n10.1 Controlling Law. This Agreement shall be governed by California law excluding its choice of law rules. With the exception of MIPS’ rights to enforce its intellectual property rights and any confidentiality obligations under this Agreement or any licenses distributed with the Evaluation Materials, all disputes and any claims arising under or relating to this Agreement shall be subject to the exclusive jurisdiction and venue of the state and federal courts located in Santa Clara County, California. Each party hereby agrees to jurisdiction and venue in the courts set forth in the preceding sentence. The parties agree that the United Nations Convention on Contracts for the International Sale of Goods is specifically excluded from application to this Agreement. The parties consent to the personal jurisdiction of the above courts.\n\n10.2 Remedies. Recipient acknowledges and agrees that any breach of confidentiality obligations under this Agreement or any licenses distributed with the Evaluation Materials, as well as any disclosure, commercialization, or public use of the Evaluation Materials, would cause irreparable injury to MIPS, and therefore Recipient agrees to consent to, and hereby consents to, the grant of an injunction by any court of competent jurisdiction in the event of an actual or threatened breach.\n\n10.3 Assignment. Recipient may not delegate, assign or transfer this Agreement, the license granted or any of Recipient’s rights, obligations, or duties hereunder, expressly, by implication, by operation of law, by way of merger (regardless of whether Recipient is the surviving entity) or acquisition, or otherwise and any attempt to do so, without MIPS’ express prior written consent, shall be ineffective, null and void. MIPS may freely assign this Agreement, and its rights and obligations hereunder, in its sole discretion.\n\n10.4 Entire Agreement. This Agreement constitutes the entire agreement between Recipient and MIPS and supersedes in their entirety any and all oral or written agreements previously existing between Recipient and MIPS with respect to the subject matter hereof. This Agreement may only be amended or supplemented by a writing that refers explicitly to this Agreement and that is signed or otherwise accepted by duly authorized representatives of Recipient and MIPS.\n\n10.5 Severability. In the event that any provision of this Agreement is finally adjudicated to be unenforceable or invalid under any applicable law, such unenforceability or invalidity shall not render this Agreement unenforceable or invalid as a whole, and, in such event, such unenforceable or invalid provision shall be interpreted so as to best accomplish the objectives of such provision within the limits of applicable law or applicable court decisions.\n\n10.6 Export Regulations / Export Control. Recipient shall not export, either directly or indirectly, any product, service or technical data or system incorporating the Evaluation Materials without first obtaining any required license or other necessary approval from the U.S. Department of Commerce or any other governing agency or department of the United States Government. In the event any product is exported from the United States or re-exported from a foreign destination by Recipient, Recipient shall ensure that the distribution and export/re-export or import of the product is in compliance with all applicable laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government. Recipient agrees that neither it nor any of its subsidiaries will export/re-export any technical data, process, product, or service, directly or indirectly, to any country for which the United States government or any agency thereof or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining such license or approval. Recipient also agrees to implement measures to ensure that foreign national employees are authorized to receive any information controlled by U.S. export control laws. An export is \"deemed\" to take place when information is released to a foreign national wherever located.\n\n10.7 Special Terms for Pre-Release Materials. If so indicated in the description of the Evaluation Software, the Evaluation Software may contain Pre-Release Materials. Recipient hereby understands, acknowledges and agrees that: (i) Pre-Release Materials may not be fully tested and may contain bugs or errors; (ii) Pre-Release materials are not suitable for commercial release in their current state; (iii) regulatory approvals for Pre-Release Materials (such as UL or FCC) have not been obtained, and Pre-Release Materials may therefore not be certified for use in certain countries or environments or may not be suitable for certain applications and (iv) MIPS can provide no assurance that it will ever produce or make generally available a production version of the Pre-Release Materials . MIPS is not under any obligation to develop and/or release or offer for sale or license a final product based upon the Pre-Release Materials and may unilaterally elect to abandon the Pre-Release Materials or any such development platform at any time and without any obligation or liability whatsoever to Recipient or any other person.\n\nANY PRE-RELEASE MATERIALS ARE NON-QUALIFIED AND, AS SUCH, ARE PROVIDED “AS IS” AND “AS AVAILABLE”, POSSIBLY WITH FAULTS, AND WITHOUT REPRESENTATION OR WARRANTY OF ANY KIND.\n\n10.8 Open Source Software. In the event Open Source software is included with Evaluation Software, such Open Source software is licensed pursuant to the applicable Open Source software license agreement identified in the Open Source software comments in the applicable source code file(s) and/or file header as indicated in the Evaluation Software. Additional detail may be available (where applicable) in the accompanying on-line documentation. With respect to the Open Source software, nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable Open Source software license agreement.\n" + "MIPS Technologies, Inc. (“MIPS”) Internal Evaluation License Agreement for MIPS Android™ System Images for Android Software Development Kit (SDK): This Internal Evaluation License Agreement (this \"Agreement\") is entered into by and between MIPS and you (as an individual developer or a legal entity -- identified below as “Recipient”). MIPS shall make the Evaluation Software available to Recipient as described in accordance with the terms and conditions set forth below.\n\nBy clicking on the “Accept” button, downloading, installing, or otherwise using the Evaluation Materials (defined below), you agree to be bound by the terms of this Agreement effective as of the date you click “Accept” (the “Effective Date”), and if doing so on behalf of an entity, you represent that you are authorized to bind the entity to the terms and conditions of this Agreement. If you do not agree to be bound by the terms and conditions of this Agreement, do not download, install, or use the Evaluation Materials.\n\n1. DEFINITIONS. These terms shall have the following meanings:\n\n1.1 “MIPS” shall mean MIPS Technologies, Inc., a Delaware corporation having a principal place of business at: 955 East Arques Ave., Sunnyvale, CA 94085\n\n1.2 “Evaluation Software” shall mean MIPS Android™ emulator system images for Android Software Development Kit (SDK), as made available to Recipient.\n\n1.3 “Evaluation Materials\" means, collectively, the Evaluation Software (in source and/or object code form) and documentation (including, without limitation, any design documents, specifications, reference manuals, and other related materials) related to the Evaluation Software as made available to Recipient.\n\n1.4 “Open Source Software” means any software that requires (as a condition of use, modification and/or distribution of such software) that such software or other software incorporated into, derived from or distributed with such software (a) be disclosed or distributed in source code form; or (b) be licensed by the user to third parties for the purpose of making and/or distributing derivative works; or (c) be redistributable at no charge. Open Source Software includes, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models substantially similar to any of the following: (a) GNU’s General Public License (GPL) or Lesser/Library GPL (LGPL), (b) the Artistic License (e.g., PERL), (c) the Mozilla Public License, (d) the Netscape Public License, (e) the Sun Community Source License (SCSL), (f) the Sun Industry Source License (SISL), (g) the Apache Software license and (h) the Common Public License (CPL).\n\n1.5 “Pre-Release Materials” means “alpha” or “beta” designated pre-release features, which may not be fully functional, which MIPS may substantially modify in producing any production version of the Evaluation Materials, and/or which is still under development by MIPS and/or MIPS’ suppliers.\n\n2. PURPOSE. MIPS desires to make the Evaluation Materials available to Recipient solely for Recipient's internal evaluation of the Evaluation Software to evaluate the desirability of cooperating with MIPS in developing products that are compatible with the Evaluation Software and/or to advise MIPS as to possible modifications to the Evaluation Software. Recipient may not disclose, distribute, modify (except to facilitate the above-mentioned internal evaluation), or make commercial use of the Evaluation Materials or any modifications of the Evaluation Materials.\n\nTHE EVALUATION MATERIALS ARE PROVIDED FOR EVALUATION PURPOSES ONLY AND MAY NOT BE MODIFIED (EXCEPT TO FACILITATE THE INTERNAL EVALUATION) OR DISTRIBUTED BY RECIPIENT OR INCORPORATED INTO RECIPIENT’S PRODUCTS OR SOFTWARE. PLEASE CONTACT A MIPS SALES REPRESENTATIVE TO LEARN ABOUT THE AVAILABILITY AND COST OF A COMMERCIAL VERSION OF THE EVALUATION SOFTWARE.\n\n3. TITLE. Title to the Evaluation Materials remains with MIPS or its suppliers. Recipient shall not mortgage, pledge or encumber the Evaluation Materials in any way. Recipient shall return all Evaluation Materials, keeping no copies, upon termination or expiration of this Agreement.\n\n4. LICENSE. MIPS grants Recipient a royalty-free, personal, nontransferable, nonexclusive license under its copyrights to use the Evaluation Software only for the purposes described in paragraph 2 above and only for a period beginning on the Effective Date and extending to the first anniversary of the Effective Date (the “Evaluation Period”). Unless otherwise communicated in writing by MIPS to Recipient, to the extent the Evaluation Software is provided in more than one delivery or release (each, a “Release”) the license grant in this Section 4 and the Evaluation Period shall apply to each Release, in which case the Evaluation Period shall begin on the date that the Release is made generally available and continue to the first anniversary of such date. Recipient may not make modifications to the Evaluation Software. Recipient shall not disassemble, reverse-engineer, or decompile any software that is not provided to Recipient in source code form.\n\n\nEXCEPT AS PROVIDED HEREIN, NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY OTHER MIPS INTELLECTUAL PROPERTY RIGHTS IS GRANTED TO THE RECIPIENT. OTHER THAN AS EXPLICITLY SET FORTH IN PARAGRAPH 2 ABOVE, NO RIGHT TO COPY, TO REPRODUCE, TO MODIFY, OR TO CREATE DERIVATIVE WORKS OF, THE EVALUATION MATERIALS IS GRANTED HEREIN.\n\n5. NO OBLIGATION. Recipient shall have no duty to purchase or license any product from MIPS. MIPS and its suppliers shall have no obligation to provide support for, or develop a non-evaluation version of, the Evaluation Software or to license any version of it.\n\n6. MODIFICATIONS. This Agreement does not obligate Recipient to provide MIPS with comments or suggestions regarding Evaluation Materials. However, should Recipient provide MIPS with comments or suggestions for the modification, correction, improvement or enhancement of (a) the Evaluation Materials or (b) MIPS products or processes which may embody the Evaluation Materials, then Recipient agrees to grant and hereby grants to MIPS a non-exclusive, irrevocable, worldwide, fully paid-up, royalty-free license, with the right to sublicense MIPS’ licensees and customers, under Recipient’s Intellectual property rights, to use and disclose such comments and suggestions in any manner MIPS chooses and to display, perform, copy, make, have made, use, sell, offer to sell, import, and otherwise dispose of MIPS’ and its sublicensee’s products embodying such comments and suggestions in any manner and via any media MIPS chooses, without reference to the source.\n\n7. WARRANTY DISCLAIMER. MIPS AND ITS SUPPLIERS MAKE NO WARRANTIES WITH RESPECT TO EVALUATION MATERIALS, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY IMPLIED WARRANTY OF NONINFRINGEMENT WITH RESPECT TO THIRD PARTY INTELLECTUAL PROPERTY. RECIPIENT ACKNOWLEDGES AND AGREES THAT THE EVALUATION MATERIALS ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND.\n\n8. LIMITATION OF LIABILITY. MIPS AND ITS SUPPLIERS SHALL NOT BE LIABLE FOR ANY PROPERTY DAMAGE, PERSONAL INJURY, LOSS OF PROFITS, INTERRUPTION OF BUSINESS OR FOR ANY DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, HOWEVER CAUSED OR ALLEGED, WHETHER FOR BREACH OF WARRANTY, CONTRACT, STRICT LIABILITY OR OTHERWISE, INCLUDING WITHOUT LIMITATION, UNDER TORT OR OTHER LEGAL THEORY. MIPS AND ITS SUPPLIERS DISCLAIM ANY AND ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS OF ANY KIND RELATING TO THE EVALUATION MATERIALS.\n\n9. EXPIRATION. MIPS may terminate this Agreement immediately after a breach by Recipient or otherwise at MIPS’ reasonable discretion and upon five (5) business days’ notice to Recipient.\n\n10. GENERAL.\n\n10.1 Controlling Law. This Agreement shall be governed by California law excluding its choice of law rules. With the exception of MIPS’ rights to enforce its intellectual property rights and any confidentiality obligations under this Agreement or any licenses distributed with the Evaluation Materials, all disputes and any claims arising under or relating to this Agreement shall be subject to the exclusive jurisdiction and venue of the state and federal courts located in Santa Clara County, California. Each party hereby agrees to jurisdiction and venue in the courts set forth in the preceding sentence. The parties agree that the United Nations Convention on Contracts for the International Sale of Goods is specifically excluded from application to this Agreement. The parties consent to the personal jurisdiction of the above courts.\n\n10.2 Remedies. Recipient acknowledges and agrees that any breach of confidentiality obligations under this Agreement or any licenses distributed with the Evaluation Materials, as well as any disclosure, commercialization, or public use of the Evaluation Materials, would cause irreparable injury to MIPS, and therefore Recipient agrees to consent to, and hereby consents to, the grant of an injunction by any court of competent jurisdiction in the event of an actual or threatened breach.\n\n10.3 Assignment. Recipient may not delegate, assign or transfer this Agreement, the license granted or any of Recipient’s rights, obligations, or duties hereunder, expressly, by implication, by operation of law, by way of merger (regardless of whether Recipient is the surviving entity) or acquisition, or otherwise and any attempt to do so, without MIPS’ express prior written consent, shall be ineffective, null and void. MIPS may freely assign this Agreement, and its rights and obligations hereunder, in its sole discretion.\n\n10.4 Entire Agreement. This Agreement constitutes the entire agreement between Recipient and MIPS and supersedes in their entirety any and all oral or written agreements previously existing between Recipient and MIPS with respect to the subject matter hereof. This Agreement may only be amended or supplemented by a writing that refers explicitly to this Agreement and that is signed or otherwise accepted by duly authorized representatives of Recipient and MIPS.\n\n10.5 Severability. In the event that any provision of this Agreement is finally adjudicated to be unenforceable or invalid under any applicable law, such unenforceability or invalidity shall not render this Agreement unenforceable or invalid as a whole, and, in such event, such unenforceable or invalid provision shall be interpreted so as to best accomplish the objectives of such provision within the limits of applicable law or applicable court decisions.\n\n10.6 Export Regulations / Export Control. Recipient shall not export, either directly or indirectly, any product, service or technical data or system incorporating the Evaluation Materials without first obtaining any required license or other necessary approval from the U.S. Department of Commerce or any other governing agency or department of the United States Government. In the event any product is exported from the United States or re-exported from a foreign destination by Recipient, Recipient shall ensure that the distribution and export/re-export or import of the product is in compliance with all applicable laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government. Recipient agrees that neither it nor any of its subsidiaries will export/re-export any technical data, process, product, or service, directly or indirectly, to any country for which the United States government or any agency thereof or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining such license or approval. Recipient also agrees to implement measures to ensure that foreign national employees are authorized to receive any information controlled by U.S. export control laws. An export is \"deemed\" to take place when information is released to a foreign national wherever located.\n\n10.7 Special Terms for Pre-Release Materials. If so indicated in the description of the Evaluation Software, the Evaluation Software may contain Pre-Release Materials. Recipient hereby understands, acknowledges and agrees that: (i) Pre-Release Materials may not be fully tested and may contain bugs or errors; (ii) Pre-Release materials are not suitable for commercial release in their current state; (iii) regulatory approvals for Pre-Release Materials (such as UL or FCC) have not been obtained, and Pre-Release Materials may therefore not be certified for use in certain countries or environments or may not be suitable for certain applications and (iv) MIPS can provide no assurance that it will ever produce or make generally available a production version of the Pre-Release Materials . MIPS is not under any obligation to develop and/or release or offer for sale or license a final product based upon the Pre-Release Materials and may unilaterally elect to abandon the Pre-Release Materials or any such development platform at any time and without any obligation or liability whatsoever to Recipient or any other person.\n\nANY PRE-RELEASE MATERIALS ARE NON-QUALIFIED AND, AS SUCH, ARE PROVIDED “AS IS” AND “AS AVAILABLE”, POSSIBLY WITH FAULTS, AND WITHOUT REPRESENTATION OR WARRANTY OF ANY KIND.\n\n10.8 Open Source Software. In the event Open Source software is included with Evaluation Software, such Open Source software is licensed pursuant to the applicable Open Source software license agreement identified in the Open Source software comments in the applicable source code file(s) and/or file header as indicated in the Evaluation Software. Additional detail may be available (where applicable) in the accompanying on-line documentation. With respect to the Open Source software, nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable Open Source software license agreement." ] }, "packages": { @@ -3413,6 +4974,33 @@ "name": "build-tools", "path": "build-tools/33.0.0", "revision": "33.0.0" + }, + "33.0.1": { + "archives": [ + { + "os": "linux", + "sha1": "fefb393b82814feb94f88147827cbc918cf992b0", + "size": 56003178, + "url": "https://dl.google.com/android/repository/build-tools_r33.0.1-linux.zip" + }, + { + "os": "macosx", + "sha1": "d091bee94295480891ca679e7b2004fe6198d05f", + "size": 60027237, + "url": "https://dl.google.com/android/repository/build-tools_r33.0.1-macosx.zip" + }, + { + "os": "windows", + "sha1": "710918f38f8fa7595320f4d29db5910770993f63", + "size": 55631116, + "url": "https://dl.google.com/android/repository/build-tools_r33.0.1-windows.zip" + } + ], + "displayName": "Android SDK Build-Tools 33.0.1", + "license": "android-sdk-license", + "name": "build-tools", + "path": "build-tools/33.0.1", + "revision": "33.0.1" } }, "cmake": { @@ -3492,7 +5080,7 @@ } ], "displayName": "CMake 3.22.1", - "license": "android-sdk-preview-license", + "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.22.1", "revision": "3.22.1" @@ -3741,119 +5329,119 @@ "name": "cmdline-tools", "path": "cmdline-tools/7.0", "revision": "7.0" - } - }, - "emulator": { - "31.2.10": { + }, + "8.0": { "archives": [ { "os": "linux", - "sha1": "1f2c3ddeb2c9ac4feef5946098a0a710d08e9c6d", - "size": 276337904, - "url": "https://dl.google.com/android/repository/emulator-linux_x64-8420304.zip" - }, - { - "os": "windows", - "sha1": "206491b5c4e531b2c66dc80402702b9fa1a64c2a", - "size": 345300871, - "url": "https://dl.google.com/android/repository/emulator-windows_x64-8420304.zip" + "sha1": "09b65ebc5aa9c5011fec9416d22711ce7ffc2260", + "size": 120916547, + "url": "https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip" }, { "os": "macosx", - "sha1": "677b6a00c145eb8bf4306daeb2231c8efd507177", - "size": 313876814, - "url": "https://dl.google.com/android/repository/emulator-darwin_x64-8420304.zip" + "sha1": "089eedfc62371040f9e027835d5114178fc0e658", + "size": 120916533, + "url": "https://dl.google.com/android/repository/commandlinetools-mac-9123335_latest.zip" + }, + { + "os": "windows", + "sha1": "d1511ce5b61e5988b3de4b83062f0a570671074f", + "size": 120895407, + "url": "https://dl.google.com/android/repository/commandlinetools-win-9123335_latest.zip" + } + ], + "displayName": "Android SDK Command-line Tools", + "license": "android-sdk-license", + "name": "cmdline-tools", + "path": "cmdline-tools/8.0", + "revision": "8.0" + } + }, + "emulator": { + "31.3.10": { + "archives": [ + { + "os": "macosx", + "sha1": "4a35a2702f9138653cd1b67d04e01ffa65fb37bc", + "size": 347308456, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-8807927.zip" + }, + { + "os": "linux", + "sha1": "43df6ed553b89e1553d588251526aae8f79da214", + "size": 293822881, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-8807927.zip" + }, + { + "os": "windows", + "sha1": "52f8bfa4a09074e607d393302fe8a627846a18e9", + "size": 380246403, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-8807927.zip" } ], "displayName": "Android Emulator", "license": "android-sdk-license", "name": "emulator", "path": "emulator", - "revision": "31.2.10" + "revision": "31.3.10" }, - "31.3.8": { + "31.3.14": { "archives": [ - { - "os": "macosx", - "sha1": "7214e8384c97a7c9875142149d3bf9c940e9b5a0", - "size": 347222379, - "url": "https://dl.google.com/android/repository/emulator-darwin_x64-8598121.zip" - }, { "os": "linux", - "sha1": "0f781977a6cc5377b64444121ff75a513841a4fa", - "size": 293782881, - "url": "https://dl.google.com/android/repository/emulator-linux_x64-8598121.zip" + "sha1": "b5ab96ebffc6ea6816a5b0e9474859463b21ab78", + "size": 293826836, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-9322596.zip" }, { "os": "windows", - "sha1": "b4f30bad4e68da41cc9bd44965259b2111a011a1", - "size": 380151866, - "url": "https://dl.google.com/android/repository/emulator-windows_x64-8598121.zip" + "sha1": "632eba430f67abeddcf15ceb0a872b25fdbb7e62", + "size": 381130167, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-9322596.zip" + }, + { + "os": "macosx", + "sha1": "00e8685beffbe19f803cd5d698fbe6406b5ee6f3", + "size": 347313356, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-9322596.zip" + } + ], + "displayName": "Android Emulator", + "license": "android-sdk-license", + "name": "emulator", + "path": "emulator", + "revision": "31.3.14" + }, + "32.1.8": { + "archives": [ + { + "os": "macosx", + "sha1": "13cadd038b401fdfa04e4af153a7f696ccd422cc", + "size": 309314692, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-9310560.zip" + }, + { + "os": "linux", + "sha1": "7d82689a73aacdd56684d7134dc88cc3537fb911", + "size": 270158359, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-9310560.zip" + }, + { + "os": "windows", + "sha1": "8324aeb3bd74a214978252c51574b40cdb56b4ba", + "size": 333001267, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-9310560.zip" } ], "displayName": "Android Emulator", "license": "android-sdk-preview-license", "name": "emulator", "path": "emulator", - "revision": "31.3.8" - }, - "31.3.9": { - "archives": [ - { - "os": "macosx", - "sha1": "6e7b549113252728cfe0992d58e8cb1790dce9d6", - "size": 347241742, - "url": "https://dl.google.com/android/repository/emulator-darwin_x64-8700579.zip" - }, - { - "os": "linux", - "sha1": "1c1a7ef65476d3de34f19455a0093cb68e8e90f7", - "size": 293801439, - "url": "https://dl.google.com/android/repository/emulator-linux_x64-8700579.zip" - }, - { - "os": "windows", - "sha1": "ea834211b199a7fcf6b6758a53c4594d01b44ab9", - "size": 380168712, - "url": "https://dl.google.com/android/repository/emulator-windows_x64-8700579.zip" - } - ], - "displayName": "Android Emulator", - "license": "android-sdk-license", - "name": "emulator", - "path": "emulator", - "revision": "31.3.9" + "revision": "32.1.8" } }, "extras": { - "1.1": { - "archives": [ - { - "os": "linux", - "sha1": "18632007ecb843b4fc69babd521a9b061868534b", - "size": 1307393, - "url": "https://dl.google.com/android/repository/desktop-head-unit-linux_r01.1.zip" - }, - { - "os": "macosx", - "sha1": "ccb64105888ba61ab06f20ad1ba97c71d440a421", - "size": 2299061, - "url": "https://dl.google.com/android/repository/desktop-head-unit-macosx_r01.1.zip" - }, - { - "os": "windows", - "sha1": "f26d80a84020b40e24f8a99873dea6a9c7978f10", - "size": 2615480, - "url": "https://dl.google.com/android/repository/desktop-head-unit-windows_r01.1.zip" - } - ], - "displayName": "Android Auto Desktop Head Unit Emulator", - "license": "android-sdk-license", - "name": "extras", - "path": "extras/google/auto", - "revision": "1.1" - }, "2.0": { "archives": [ { @@ -3880,6 +5468,33 @@ "name": "extras", "path": "extras/google/auto", "revision": "2.0" + }, + "2.1": { + "archives": [ + { + "os": "macosx", + "sha1": "4f8a3d3e32b27de1fc190d149039842e76a55bdd", + "size": 7797329, + "url": "https://dl.google.com/android/repository/desktop-head-unit-darwin-x64_r02.1.zip" + }, + { + "os": "linux", + "sha1": "5d87eb87a1421e59d528eac1f5cdd406c0b39f51", + "size": 6927985, + "url": "https://dl.google.com/android/repository/desktop-head-unit-linux-x64_r02.1.zip" + }, + { + "os": "windows", + "sha1": "c27bf84e59dda7b79315b6ca2a314063feffd6ac", + "size": 7012059, + "url": "https://dl.google.com/android/repository/desktop-head-unit-windows-x64_r02.1.zip" + } + ], + "displayName": "Android Auto Desktop Head Unit Emulator", + "license": "android-sdk-license", + "name": "extras", + "path": "extras/google/auto", + "revision": "2.1" } }, "ndk": { @@ -4908,6 +6523,60 @@ "name": "ndk", "path": "ndk/25.0.8528842", "revision": "25.0.8528842-rc4" + }, + "25.0.8775105": { + "archives": [ + { + "os": "macosx", + "sha1": "8c54514c62f635dbbc161e30e21f16bcd22526df", + "size": 716557039, + "url": "https://dl.google.com/android/repository/android-ndk-r25-darwin.zip" + }, + { + "os": "linux", + "sha1": "9fce956edb6abd5aca42acf6bbfb21a90a67f75b", + "size": 530938532, + "url": "https://dl.google.com/android/repository/android-ndk-r25-linux.zip" + }, + { + "os": "windows", + "sha1": "1da93e7da5803dd8ef47e9283ec2c7b98d34b8da", + "size": 467387858, + "url": "https://dl.google.com/android/repository/android-ndk-r25-windows.zip" + } + ], + "displayName": "NDK (Side by side) 25.0.8775105", + "license": "android-sdk-license", + "name": "ndk", + "path": "ndk/25.0.8775105", + "revision": "25.0.8775105" + }, + "25.1.8937393": { + "archives": [ + { + "os": "macosx", + "sha1": "248f96de6713cbec8707ee2262d3cf08d14d9fde", + "size": 716592117, + "url": "https://dl.google.com/android/repository/android-ndk-r25b-darwin.zip" + }, + { + "os": "linux", + "sha1": "e27dcb9c8bcaa77b78ff68c3f23abcf6867959eb", + "size": 530975885, + "url": "https://dl.google.com/android/repository/android-ndk-r25b-linux.zip" + }, + { + "os": "windows", + "sha1": "b2e9b5ab2e1434a65ffd85780891878cf5c6fd92", + "size": 467422601, + "url": "https://dl.google.com/android/repository/android-ndk-r25b-windows.zip" + } + ], + "displayName": "NDK (Side by side) 25.1.8937393", + "license": "android-sdk-license", + "name": "ndk", + "path": "ndk/25.1.8937393", + "revision": "25.1.8937393" } }, "ndk-bundle": { @@ -5605,32 +7274,32 @@ } }, "platform-tools": { - "33.0.2": { + "33.0.3": { "archives": [ { "os": "macosx", - "sha1": "9b5661e0c18a2e5b6935e2b96bcc7be580cd6dcd", - "size": 13038676, - "url": "https://dl.google.com/android/repository/platform-tools_r33.0.2-darwin.zip" + "sha1": "250da3216e4c93ccd2612dcec0b64c2668354b09", + "size": 12767128, + "url": "https://dl.google.com/android/repository/platform-tools_r33.0.3-darwin.zip" }, { "os": "linux", - "sha1": "6bf4f747ad929b02378b44ce083b4502d26109c7", - "size": 7406632, - "url": "https://dl.google.com/android/repository/platform-tools_r33.0.2-linux.zip" + "sha1": "deb43a0f9eaccd16a47937367ef3b53db3db8d10", + "size": 7505569, + "url": "https://dl.google.com/android/repository/platform-tools_r33.0.3-linux.zip" }, { "os": "windows", - "sha1": "2d7599f59b54f02c4ecd33d656091a3c1e55ad9c", - "size": 6304111, - "url": "https://dl.google.com/android/repository/platform-tools_r33.0.2-windows.zip" + "sha1": "6028a80149c0ccde2db22d69e7fe84a352d852a2", + "size": 5642796, + "url": "https://dl.google.com/android/repository/platform-tools_r33.0.3-windows.zip" } ], "displayName": "Android SDK Platform-Tools", "license": "android-sdk-license", "name": "platform-tools", "path": "platform-tools", - "revision": "33.0.2" + "revision": "33.0.3" } }, "platforms": { @@ -6037,9 +7706,9 @@ "archives": [ { "os": "all", - "sha1": "298f5800e37f3c089ab0eb58d4f6aef4058b689b", - "size": 67324871, - "url": "https://dl.google.com/android/repository/platform-33_r01.zip" + "sha1": "eef99bd4617e80da85187a183eba356d787100d9", + "size": 67334130, + "url": "https://dl.google.com/android/repository/platform-33_r02.zip" } ], "displayName": "Android SDK Platform 33", @@ -6178,9 +7847,9 @@ "archives": [ { "os": "all", - "sha1": "8dd74a564f71c8381f5230682c5da291d230cc81", - "size": 67918949, - "url": "https://dl.google.com/android/repository/platform-TiramisuPrivacySandbox_r03.zip" + "sha1": "07f3eb84b8f237e61744967d7aee1225efba25e6", + "size": 67975400, + "url": "https://dl.google.com/android/repository/platform-TiramisuPrivacySandbox_r08.zip" } ], "displayName": "Android SDK Platform TiramisuPrivacySandbox", @@ -6558,6 +8227,21 @@ "name": "sources", "path": "sources/android-32", "revision": "32" + }, + "33": { + "archives": [ + { + "os": "all", + "sha1": "dd9819363bb213e378bb9d84b4c5fe8d8091c219", + "size": 49205616, + "url": "https://dl.google.com/android/repository/sources-33_r01.zip" + } + ], + "displayName": "Sources for Android 33", + "license": "android-sdk-license", + "name": "sources", + "path": "sources/android-33", + "revision": "33" } }, "tools": { diff --git a/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix b/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix index 77db6ebc714f..726984df9803 100644 --- a/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix +++ b/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "azure-mgmt-containerservice"; - version = "21.0.0"; + version = "21.1.0"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -19,7 +19,7 @@ buildPythonPackage rec { src = fetchPypi { inherit pname version; extension = "zip"; - hash = "sha256-9Jhhd/qmphNnmWphXtFr6V52WA7KtKA8lI6cKsdGsOE="; + hash = "sha256-5EOythXO7spLzzlqDWrwcdkkJAMH9W8OBv96rYaWxAY="; }; propagatedBuildInputs = [ @@ -39,6 +39,7 @@ buildPythonPackage rec { meta = with lib; { description = "This is the Microsoft Azure Container Service Management Client Library"; homepage = "https://github.com/Azure/azure-sdk-for-python"; + changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-containerservice_${version}/sdk/containerservice/azure-mgmt-containerservice/CHANGELOG.md"; license = licenses.mit; maintainers = with maintainers; [ maxwilson ]; }; diff --git a/pkgs/development/python-modules/labelbox/default.nix b/pkgs/development/python-modules/labelbox/default.nix index 15c533c91fce..3e5efd48e9c7 100644 --- a/pkgs/development/python-modules/labelbox/default.nix +++ b/pkgs/development/python-modules/labelbox/default.nix @@ -28,7 +28,7 @@ buildPythonPackage rec { pname = "labelbox"; - version = "3.33.1"; + version = "3.34.0"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -37,7 +37,7 @@ buildPythonPackage rec { owner = "Labelbox"; repo = "labelbox-python"; rev = "refs/tags/v.${version}"; - hash = "sha256-lYhgBELeVtNUp6ZvcSTIeKp2YkaGt6MH8BbzSERGHXw="; + hash = "sha256-x/XvcGiFS//f/le3JAd2n/tuUy9MBrCsISpkIkCCNis="; }; postPatch = '' diff --git a/pkgs/development/python-modules/nbsphinx/default.nix b/pkgs/development/python-modules/nbsphinx/default.nix index 060184fa2a7a..ac562279a1e0 100644 --- a/pkgs/development/python-modules/nbsphinx/default.nix +++ b/pkgs/development/python-modules/nbsphinx/default.nix @@ -7,17 +7,19 @@ , nbformat , sphinx , traitlets -, isPy3k +, pythonOlder }: buildPythonPackage rec { pname = "nbsphinx"; - version = "0.8.10"; + version = "0.8.11"; format = "setuptools"; + disabled = pythonOlder "3.7"; + src = fetchPypi { inherit pname version; - sha256 = "sha256-qNaARviquRbilAubOBm9PvndzoaKo4hF6jZmRcq7YlQ="; + hash = "sha256-q+GMBLM9m837PWbxGV9rDVHuykY+ywf2Bh3kl+QzFuQ="; }; propagatedBuildInputs = [ @@ -33,16 +35,16 @@ buildPythonPackage rec { doCheck = false; JUPYTER_PATH = "${nbconvert}/share/jupyter"; + pythonImportsCheck = [ "nbsphinx" ]; - disabled = !isPy3k; - meta = with lib; { description = "Jupyter Notebook Tools for Sphinx"; homepage = "https://nbsphinx.readthedocs.io/"; + changelog = "https://github.com/spatialaudio/nbsphinx/blob/${version}/NEWS.rst"; license = licenses.mit; - maintainers = [ maintainers.costrouc ]; + maintainers = with maintainers; [ costrouc ]; }; } diff --git a/pkgs/development/python-modules/proxy-py/default.nix b/pkgs/development/python-modules/proxy-py/default.nix index bea708129872..c454e74ab3d9 100644 --- a/pkgs/development/python-modules/proxy-py/default.nix +++ b/pkgs/development/python-modules/proxy-py/default.nix @@ -1,7 +1,10 @@ -{ stdenv -, lib +{ lib +, stdenv +, bash , buildPythonPackage , fetchFromGitHub +, gnumake +, httpx , openssl , paramiko , pytest-asyncio @@ -15,7 +18,7 @@ buildPythonPackage rec { pname = "proxy-py"; version = "2.4.3"; - format = "setuptools"; + format = "pyproject"; disabled = pythonOlder "3.7"; @@ -23,9 +26,18 @@ buildPythonPackage rec { owner = "abhinavsingh"; repo = "proxy.py"; rev = "refs/tags/v${version}"; - sha256 = "sha256-dA7a9RicBFCSf6IoGX/CdvI8x/xMOFfNtyuvFn9YmHI="; + hash = "sha256-dA7a9RicBFCSf6IoGX/CdvI8x/xMOFfNtyuvFn9YmHI="; }; + postPatch = '' + substituteInPlace Makefile \ + --replace "SHELL := /bin/bash" "SHELL := ${bash}/bin/bash" + substituteInPlace pytest.ini \ + --replace "-p pytest_cov" "" \ + --replace "--no-cov-on-fail" "" + sed -i "/--cov/d" pytest.ini + ''; + nativeBuildInputs = [ setuptools-scm ]; @@ -36,7 +48,9 @@ buildPythonPackage rec { ]; checkInputs = [ + httpx openssl + gnumake pytest-asyncio pytest-mock pytestCheckHook @@ -46,20 +60,23 @@ buildPythonPackage rec { export HOME=$(mktemp -d); ''; - postPatch = '' - substituteInPlace requirements.txt \ - --replace "typing-extensions==3.7.4.3" "typing-extensions" - ''; + disabledTests = [ + # Test requires network access + "test_http2_via_proxy" + # Tests run into a timeout + "integration" + ]; pythonImportsCheck = [ "proxy" ]; meta = with lib; { - broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin; description = "Python proxy framework"; homepage = "https://github.com/abhinavsingh/proxy.py"; + changelog = "https://github.com/abhinavsingh/proxy.py/releases/tag/v${version}"; license = with licenses; [ bsd3 ]; maintainers = with maintainers; [ fab ]; + broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin; }; } diff --git a/pkgs/development/python-modules/pybravia/default.nix b/pkgs/development/python-modules/pybravia/default.nix index 89aedb3de0bf..6ec4cab91c51 100644 --- a/pkgs/development/python-modules/pybravia/default.nix +++ b/pkgs/development/python-modules/pybravia/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "pybravia"; - version = "0.2.3"; + version = "0.2.5"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "Drafteed"; repo = pname; rev = "v${version}"; - hash = "sha256-ZM1XJnEYMNcbVOkpcI1ml7Cck2CXA2QXEpJMx3RwtSQ="; + hash = "sha256-QWn5VdZlbxm2/ZvsQWlKuVPPBcqFkyt75Odh9Mf9Bqk="; }; nativeBuildInputs = [ @@ -38,6 +38,7 @@ buildPythonPackage rec { meta = with lib; { description = "Library for remote control of Sony Bravia TVs 2013 and newer"; homepage = "https://github.com/Drafteed/pybravia"; + changelog = "https://github.com/Drafteed/pybravia/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ fab ]; }; diff --git a/pkgs/development/python-modules/pytest-freezer/default.nix b/pkgs/development/python-modules/pytest-freezer/default.nix new file mode 100644 index 000000000000..16eb2420f0e7 --- /dev/null +++ b/pkgs/development/python-modules/pytest-freezer/default.nix @@ -0,0 +1,52 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, freezegun +, hatchling +, pytest +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "pytest-freezer"; + version = "0.4.6"; + format = "pyproject"; + + disabled = pythonOlder "3.6"; + + src = fetchFromGitHub { + owner = "pytest-dev"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-0JZv6MavRceAV+ZOetCVxJEyttd5W3PCts6Fz2KQsh0="; + }; + + nativeBuildInputs = [ + hatchling + ]; + + buildInputs = [ + pytest + ]; + + propagatedBuildInputs = [ + freezegun + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ + "pytest_freezer" + ]; + + meta = with lib; { + description = "Pytest plugin providing a fixture interface for spulec/freezegun"; + homepage = "https://github.com/pytest-dev/pytest-freezer"; + changelog = "https://github.com/pytest-dev/pytest-freezer/releases/tag/${version}"; + license = licenses.mit; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/python3-saml/default.nix b/pkgs/development/python-modules/python3-saml/default.nix index dca35089f45f..18850603810a 100644 --- a/pkgs/development/python-modules/python3-saml/default.nix +++ b/pkgs/development/python-modules/python3-saml/default.nix @@ -1,33 +1,45 @@ -{ lib, fetchFromGitHub, buildPythonPackage, isPy3k, -isodate, lxml, xmlsec, freezegun }: +{ lib +, buildPythonPackage +, fetchFromGitHub +, freezegun +, isodate +, lxml +, pythonOlder +, xmlsec +}: buildPythonPackage rec { pname = "python3-saml"; - version = "1.14.0"; - disabled = !isPy3k; + version = "1.15.0"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "onelogin"; repo = "python3-saml"; - rev = "v${version}"; - sha256 = "sha256-TAfVXh1fSKhNn/lsi7elq4wFyKCxCtCYUTrnH3ytBTw="; + rev = "refs/tags/v${version}"; + hash = "sha256-xPPR2z3h8RpoAROpKpu9ZoDxGq5Stm9wQVt4Stj/6fg="; }; - postPatch = '' - substituteInPlace setup.py \ - --replace "lxml<4.7.1" "lxml<5" - ''; - propagatedBuildInputs = [ - isodate lxml xmlsec + isodate + lxml + xmlsec ]; - checkInputs = [ freezegun ]; - pythonImportsCheck = [ "onelogin.saml2" ]; + checkInputs = [ + freezegun + ]; + + pythonImportsCheck = [ + "onelogin.saml2" + ]; meta = with lib; { - description = "OneLogin's SAML Python Toolkit for Python 3"; + description = "OneLogin's SAML Python Toolkit"; homepage = "https://github.com/onelogin/python3-saml"; + changelog = "https://github.com/SAML-Toolkits/python3-saml/blob/v${version}/changelog.md"; license = licenses.mit; maintainers = with maintainers; [ zhaofengli ]; }; diff --git a/pkgs/development/python-modules/tenacity/default.nix b/pkgs/development/python-modules/tenacity/default.nix index 8de4c87b6fdc..1cd8e4091321 100644 --- a/pkgs/development/python-modules/tenacity/default.nix +++ b/pkgs/development/python-modules/tenacity/default.nix @@ -1,28 +1,42 @@ -{ lib, buildPythonPackage, fetchPypi, isPy27, isPy3k -, pbr, six, futures ? null, monotonic ? null, typing ? null, setuptools-scm -, pytest, sphinx, tornado, typeguard +{ lib +, buildPythonPackage +, fetchPypi +, pbr +, pytest-asyncio +, pytestCheckHook +, pythonOlder +, setuptools-scm +, tornado +, typeguard }: buildPythonPackage rec { pname = "tenacity"; - version = "8.0.1"; + version = "8.1.0"; + format = "pyproject"; + + disabled = pythonOlder "3.6"; src = fetchPypi { inherit pname version; - sha256 = "43242a20e3e73291a28bcbcacfd6e000b02d3857a9a9fff56b297a27afdc932f"; + sha256 = "sha256-5IxDf9+TQPVma5LNeZDpa8X8lV4SmLr0qQfjlyBnpEU="; }; - nativeBuildInputs = [ pbr setuptools-scm ]; - propagatedBuildInputs = [ six ] - ++ lib.optionals isPy27 [ futures monotonic typing ]; + nativeBuildInputs = [ + pbr + setuptools-scm + ]; - checkInputs = [ pytest sphinx tornado ] - ++ lib.optionals isPy3k [ typeguard ]; - checkPhase = if isPy27 then '' - pytest --ignore='tenacity/tests/test_asyncio.py' - '' else '' - pytest - ''; + checkInputs = [ + pytest-asyncio + pytestCheckHook + tornado + typeguard + ]; + + pythonImportsCheck = [ + "tenacity" + ]; meta = with lib; { homepage = "https://github.com/jd/tenacity"; diff --git a/pkgs/development/python-modules/teslajsonpy/default.nix b/pkgs/development/python-modules/teslajsonpy/default.nix index c1ec12b33f27..96f8de75b8ad 100644 --- a/pkgs/development/python-modules/teslajsonpy/default.nix +++ b/pkgs/development/python-modules/teslajsonpy/default.nix @@ -10,12 +10,13 @@ , pytest-asyncio , pytestCheckHook , pythonOlder +, tenacity , wrapt }: buildPythonPackage rec { pname = "teslajsonpy"; - version = "3.6.0"; + version = "3.7.0"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -24,7 +25,7 @@ buildPythonPackage rec { owner = "zabuldon"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-qxC1nhvisYMfWRTyrkNSpqCKofAmqui23cMRaup8llU="; + hash = "sha256-H2PXn2RwEteLpbbQftlSXM7vD59IJCFJhYdnHHGXfo8="; }; nativeBuildInputs = [ @@ -37,6 +38,7 @@ buildPythonPackage rec { backoff beautifulsoup4 httpx + tenacity wrapt ]; diff --git a/pkgs/development/python-modules/types-dateutil/default.nix b/pkgs/development/python-modules/types-dateutil/default.nix index c0637e7b389e..275fdbaab886 100644 --- a/pkgs/development/python-modules/types-dateutil/default.nix +++ b/pkgs/development/python-modules/types-dateutil/default.nix @@ -5,13 +5,13 @@ buildPythonPackage rec { pname = "types-dateutil"; - version = "2.8.19.2"; + version = "2.8.19.5"; format = "setuptools"; src = fetchPypi { pname = "types-python-dateutil"; inherit version; - hash = "sha256-5uMs4Y83dlsIxGYiKHvI2BNtwMVi2a1bj9FYxZlj16c="; + hash = "sha256-q5H8X3FffXbZpQ09100MaN/jilTwI5z6BQZXWuTYep0="; }; pythonImportsCheck = [ diff --git a/pkgs/development/tools/castxml/default.nix b/pkgs/development/tools/castxml/default.nix index d26ef76bb8cb..69e48a28a2e3 100644 --- a/pkgs/development/tools/castxml/default.nix +++ b/pkgs/development/tools/castxml/default.nix @@ -1,17 +1,20 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, libclang -, libffi -, libxml2 -, llvm -, sphinx -, zlib -, withManual ? true -, withHTML ? true +{ lib, + stdenv, + fetchFromGitHub, + cmake, + libffi, + libxml2, + zlib, + withManual ? true, + withHTML ? true, + llvmPackages, + python3, }: +let + inherit (llvmPackages) libclang llvm; + inherit (python3.pkgs) sphinx; +in stdenv.mkDerivation (finalAttrs: { pname = "castxml"; version = "0.5.1"; diff --git a/pkgs/development/tools/language-servers/ansible-language-server/default.nix b/pkgs/development/tools/language-servers/ansible-language-server/default.nix index ca656cf25bbc..084e2e023d92 100644 --- a/pkgs/development/tools/language-servers/ansible-language-server/default.nix +++ b/pkgs/development/tools/language-servers/ansible-language-server/default.nix @@ -6,16 +6,16 @@ buildNpmPackage rec { pname = "ansible-language-server"; - version = "1.0.3"; + version = "1.0.4"; src = fetchFromGitHub { owner = "ansible"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-+42fZ4ILUHg/KcnllUaFYYPBKHxauagbsVdIY1MgwSI="; + hash = "sha256-IBySScjfF2bIbiOv09uLMt9QH07zegm/W1vmGhdWxGY="; }; - npmDepsHash = "sha256-DRXIbIogMeiJvZOB44hKkkfc3dg8mscnV6k2rUvYCNs="; + npmDepsHash = "sha256-rJ1O2OsrJhTIfywK9/MRubwwcCmMbu61T4zyayg+mAU="; npmBuildScript = "compile"; # We remove the prepare and prepack scripts because they run the diff --git a/pkgs/development/tools/misc/uncrustify/default.nix b/pkgs/development/tools/misc/uncrustify/default.nix index 422fe28787fe..32b7ffe784b2 100644 --- a/pkgs/development/tools/misc/uncrustify/default.nix +++ b/pkgs/development/tools/misc/uncrustify/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "uncrustify"; - version = "0.75.1"; + version = "0.76.0"; src = fetchFromGitHub { owner = "uncrustify"; repo = "uncrustify"; rev = "uncrustify-${version}"; - sha256 = "sha256-wLzj/KcqXlcTsOJo7T166jLcWi1KNLmgblIqqkj7/9c="; + sha256 = "sha256-th3lp4WqqruHx2/ym3I041y2wLbYM1b+V6yXNOWuUvM="; }; nativeBuildInputs = [ cmake python3 ]; diff --git a/pkgs/development/tools/pip-audit/default.nix b/pkgs/development/tools/pip-audit/default.nix index 8adc26686d0d..2baaf4f6a529 100644 --- a/pkgs/development/tools/pip-audit/default.nix +++ b/pkgs/development/tools/pip-audit/default.nix @@ -25,14 +25,14 @@ with py.pkgs; buildPythonApplication rec { pname = "pip-audit"; - version = "2.4.11"; + version = "2.4.12"; format = "pyproject"; src = fetchFromGitHub { owner = "trailofbits"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-gfqxrEp+8Jmh32wjmBh0laQvEqja7kZqkqf2l2ztVyk="; + hash = "sha256-bpAs7xXWvBVGzbX6Fij71BnEMpqYjSSCtWjuA/EFms8="; }; nativeBuildInputs = [ diff --git a/pkgs/development/tools/ruff/default.nix b/pkgs/development/tools/ruff/default.nix index bdb4322e553f..bf7ea832eabc 100644 --- a/pkgs/development/tools/ruff/default.nix +++ b/pkgs/development/tools/ruff/default.nix @@ -7,16 +7,16 @@ rustPlatform.buildRustPackage rec { pname = "ruff"; - version = "0.0.199"; + version = "0.0.201"; src = fetchFromGitHub { owner = "charliermarsh"; repo = pname; rev = "v${version}"; - sha256 = "sha256-cA3MTk7jlcPKHqW+8Xf508v9v42WmdhCU2r4eIiG5ic="; + sha256 = "sha256-+Jt7uvwzA1AtSaQOqsZBm9k0OBSvOaAoNBpsiZ/G+wI="; }; - cargoSha256 = "sha256-cXjQWMnMSypHn0fynzJQYj+bqszuvRmIOPX4IrSuQbo="; + cargoSha256 = "sha256-8wxS1ViA5F+y8gkKfSENYga/YSZ7QE8cl2lQlVL382Y="; buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.CoreServices diff --git a/pkgs/development/tools/skaffold/default.nix b/pkgs/development/tools/skaffold/default.nix index c4c8fc0c4bdc..f512e48e9109 100644 --- a/pkgs/development/tools/skaffold/default.nix +++ b/pkgs/development/tools/skaffold/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "skaffold"; - version = "2.0.3"; + version = "2.0.4"; src = fetchFromGitHub { owner = "GoogleContainerTools"; repo = "skaffold"; rev = "v${version}"; - sha256 = "sha256-wt1BEa8ir8i4VWW03opfy7cSNqCPzQoHgtJz+i8iaLw="; + sha256 = "sha256-TFI715knhQ3QyWF1EwIxZfZQW16uDWAqa6LVNfqC8Ws="; }; - vendorSha256 = "sha256-2i7NKf/VJduBec4rEBJqFt1cb6ODqOviSY+flGekN4w="; + vendorSha256 = "sha256-yy1BVorjLEcZR6PqupBiZx2plwPJ6xlxripbyB6RLek="; subPackages = ["cmd/skaffold"]; diff --git a/pkgs/os-specific/linux/ulogd/default.nix b/pkgs/os-specific/linux/ulogd/default.nix new file mode 100644 index 000000000000..cb48d20043fd --- /dev/null +++ b/pkgs/os-specific/linux/ulogd/default.nix @@ -0,0 +1,74 @@ +{ stdenv, lib, fetchurl, gnumake, libnetfilter_acct, libnetfilter_conntrack +, libnetfilter_log, libmnl, libnfnetlink, automake, autoconf, autogen, libtool +, pkg-config, libpcap, linuxdoc-tools, autoreconfHook, nixosTests }: + +stdenv.mkDerivation rec { + version = "2.0.8"; + pname = "ulogd"; + + src = fetchurl { + url = "https://netfilter.org/projects/${pname}/files/${pname}-${version}.tar.bz2"; + hash = "sha256-Tq1sOXDD9X+h6J/i18xIO6b+K9GwhwFSHgs6/WZ98pE="; + }; + + outputs = [ "out" "doc" "man" ]; + + postPatch = '' + substituteInPlace ulogd.8 --replace "/usr/share/doc" "$doc/share/doc" + ''; + + postBuild = '' + pushd doc/ + linuxdoc --backend=txt --filter ulogd.sgml + linuxdoc --backend=html --split=0 ulogd.sgml + popd + ''; + + postInstall = '' + install -Dm444 -t $out/share/doc/${pname} ulogd.conf doc/ulogd.txt doc/ulogd.html README doc/*table + install -Dm444 -t $out/share/doc/${pname}-mysql doc/mysql*.sql + install -Dm444 -t $out/share/doc/${pname}-pgsql doc/pgsql*.sql + ''; + + buildInputs = [ + libnetfilter_acct + libnetfilter_conntrack + libnetfilter_log + libmnl + libnfnetlink + libpcap + ]; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + automake + autoconf + autogen + libtool + linuxdoc-tools + ]; + + passthru.tests = { inherit (nixosTests) ulogd; }; + + meta = with lib; { + description = "Userspace logging daemon for netfilter/iptables"; + + longDescription = '' + Logging daemon that reads event messages coming from the Netfilter + connection tracking, the Netfilter packet logging subsystem and from the + Netfilter accounting subsystem. You have to enable support for connection + tracking event delivery; ctnetlink and the NFLOG target in your Linux + kernel 2.6.x or load their respective modules. The deprecated ULOG target + (which has been superseded by NFLOG) is also supported. + + The received messages can be logged into files or into a MySQL, SQLite3 + or PostgreSQL database. IPFIX and Graphite output are also supported. + ''; + + homepage = "https://www.netfilter.org/projects/ulogd/index.html"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ p-h ]; + }; +} diff --git a/pkgs/servers/allmark/default.nix b/pkgs/servers/allmark/default.nix index 439e064b2aff..1e5b58dc6b19 100644 --- a/pkgs/servers/allmark/default.nix +++ b/pkgs/servers/allmark/default.nix @@ -19,7 +19,7 @@ buildGoPackage rec { meta = with lib; { description = "A cross-platform markdown web server"; - homepage = "https://allmark.io"; + homepage = "https://github.com/andreaskoch/allmark"; changelog = "https://github.com/andreaskoch/allmark/-/releases/v${version}"; license = licenses.bsd3; maintainers = with maintainers; [ urandom ]; diff --git a/pkgs/servers/nats-server/default.nix b/pkgs/servers/nats-server/default.nix index 056e4a728470..08e77aaf1527 100644 --- a/pkgs/servers/nats-server/default.nix +++ b/pkgs/servers/nats-server/default.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "nats-server"; - version = "2.9.9"; + version = "2.9.10"; src = fetchFromGitHub { owner = "nats-io"; repo = pname; rev = "v${version}"; - hash = "sha256-GIekoIhXhsWl0od/tkUO8h+9WPICds4iPVARTn4P0tE="; + hash = "sha256-r/hz80XFEOQN7bzQQTIMAeZI8H09WyiUqQl3glJz+RM="; }; vendorHash = "sha256-ASLy0rPuCSYGyy5Pw9fj559nxO4vPPagDKAe8wM29lo="; diff --git a/pkgs/shells/zsh/spaceship-prompt/default.nix b/pkgs/shells/zsh/spaceship-prompt/default.nix index e5187658eeb9..1328020d96d4 100644 --- a/pkgs/shells/zsh/spaceship-prompt/default.nix +++ b/pkgs/shells/zsh/spaceship-prompt/default.nix @@ -2,13 +2,13 @@ stdenvNoCC.mkDerivation rec { pname = "spaceship-prompt"; - version = "3.16.7"; + version = "4.12.0"; src = fetchFromGitHub { owner = "denysdovhan"; repo = pname; rev = "v${version}"; - sha256 = "sha256-dMP7mDzb0xLCP2l9j4SOP47bcpuBNSoXsDecVOvZaL8="; + sha256 = "sha256-ZL6z5pj2xbnUZl4SK7wxiJjheUY79hwDNVYm9+biKZU="; }; strictDeps = true; @@ -22,6 +22,7 @@ stdenvNoCC.mkDerivation rec { find scripts -type f -exec install -Dm644 {} "$out/lib/spaceship-prompt/{}" \; find sections -type f -exec install -Dm644 {} "$out/lib/spaceship-prompt/{}" \; install -Dm644 spaceship.zsh "$out/lib/spaceship-prompt/spaceship.zsh" + install -Dm644 async.zsh "$out/lib/spaceship-prompt/async.zsh" install -d "$out/share/zsh/themes/" ln -s "$out/lib/spaceship-prompt/spaceship.zsh" "$out/share/zsh/themes/spaceship.zsh-theme" install -d "$out/share/zsh/site-functions/" @@ -34,6 +35,6 @@ stdenvNoCC.mkDerivation rec { changelog = "https://github.com/spaceship-prompt/spaceship-prompt/releases/tag/v${version}"; license = licenses.mit; platforms = platforms.unix; - maintainers = with maintainers; [ nyanloutre fortuneteller2k ]; + maintainers = with maintainers; [ nyanloutre fortuneteller2k kyleondy ]; }; } diff --git a/pkgs/tools/filesystems/garage/default.nix b/pkgs/tools/filesystems/garage/default.nix index bdb04e36a633..18c2b96de807 100644 --- a/pkgs/tools/filesystems/garage/default.nix +++ b/pkgs/tools/filesystems/garage/default.nix @@ -1,50 +1,94 @@ { lib, stdenv, rustPlatform, fetchFromGitea, openssl, pkg-config, protobuf -, testers, Security, garage }: +, testers, Security, garage, nixosTests }: +let + generic = { version, sha256, cargoSha256, eol ? false, broken ? false }: rustPlatform.buildRustPackage { + pname = "garage"; + inherit version; -rustPlatform.buildRustPackage rec { - pname = "garage"; - version = "0.7.3"; + src = fetchFromGitea { + domain = "git.deuxfleurs.fr"; + owner = "Deuxfleurs"; + repo = "garage"; + rev = "v${version}"; + inherit sha256; + }; - src = fetchFromGitea { - domain = "git.deuxfleurs.fr"; - owner = "Deuxfleurs"; - repo = "garage"; - rev = "v${version}"; - sha256 = "sha256-WDhe2L+NalMoIy2rhfmv8KCNDMkcqBC9ezEKKocihJg="; + inherit cargoSha256; + + nativeBuildInputs = [ protobuf pkg-config ]; + + buildInputs = [ + openssl + ] ++ lib.optional stdenv.isDarwin Security; + + OPENSSL_NO_VENDOR = true; + + # See https://git.deuxfleurs.fr/Deuxfleurs/garage/src/tag/v0.7.2/default.nix#L84-L98 + # on version changes for checking if changes are required here + buildFeatures = [ + "kubernetes-discovery" + ] ++ + (lib.optional (lib.versionAtLeast version "0.8") [ + "bundled-libs" + "sled" + "metrics" + "k2v" + "telemetry-otlp" + "lmdb" + "sqlite" + ]); + + # To make integration tests pass, we include the optional k2v feature here, + # but not in buildFeatures. See: + # https://garagehq.deuxfleurs.fr/documentation/reference-manual/k2v/ + checkFeatures = [ + "k2v" + "kubernetes-discovery" + ] ++ + (lib.optional (lib.versionAtLeast version "0.8") [ + "bundled-libs" + "sled" + "metrics" + "telemetry-otlp" + "lmdb" + "sqlite" + ]); + + passthru = nixosTests.garage; + + meta = { + description = "S3-compatible object store for small self-hosted geo-distributed deployments"; + homepage = "https://garagehq.deuxfleurs.fr"; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ nickcao _0x4A6F teutat3s raitobezarius ]; + knownVulnerabilities = (lib.optional eol "Garage version ${version} is EOL"); + inherit broken; + }; }; +in + rec { + # Until Garage hits 1.0, 0.7.3 is equivalent to 7.3.0 for now, therefore + # we have to keep all the numbers in the version to handle major/minor/patch level. + # for <1.0. - cargoSha256 = "sha256-5m4c8/upBYN8nuysDhGKEnNVJjEGC+yLrraicrAQOfI="; + garage_0_7_3 = generic { + version = "0.7.3"; + sha256 = "sha256-WDhe2L+NalMoIy2rhfmv8KCNDMkcqBC9ezEKKocihJg="; + cargoSha256 = "sha256-5m4c8/upBYN8nuysDhGKEnNVJjEGC+yLrraicrAQOfI="; + eol = true; # Confirmed with upstream maintainers over Matrix. + }; - nativeBuildInputs = [ protobuf pkg-config ]; + garage_0_7 = garage_0_7_3; - buildInputs = [ - openssl - ] ++ lib.optional stdenv.isDarwin Security; + garage_0_8_0 = generic { + version = "0.8.0"; + sha256 = "sha256-c2RhHfg0+YV2E9Ckl1YSc+0nfzbHPIt0JgtT0DND9lA="; + cargoSha256 = "sha256-vITXckNOiJbMuQW6/8p7dsZThkjxg/zUy3AZBbn33no="; + # On Darwin, tests are failing. + broken = stdenv.isDarwin; + }; - OPENSSL_NO_VENDOR = true; + garage_0_8 = garage_0_8_0; - # See https://git.deuxfleurs.fr/Deuxfleurs/garage/src/tag/v0.7.2/default.nix#L84-L98 - # on version changes for checking if changes are required here - buildFeatures = [ - "kubernetes-discovery" - ]; - - # To make integration tests pass, we include the optional k2v feature here, - # but not in buildFeatures. See: - # https://garagehq.deuxfleurs.fr/documentation/reference-manual/k2v/ - checkFeatures = [ - "k2v" - "kubernetes-discovery" - ]; - - passthru = { - tests.version = testers.testVersion { package = garage; }; - }; - - meta = { - description = "S3-compatible object store for small self-hosted geo-distributed deployments"; - homepage = "https://garagehq.deuxfleurs.fr"; - license = lib.licenses.agpl3Only; - maintainers = with lib.maintainers; [ nickcao _0x4A6F teutat3s ]; - }; -} + garage = garage_0_8; + } diff --git a/pkgs/tools/filesystems/mtdutils/default.nix b/pkgs/tools/filesystems/mtdutils/default.nix index 1a6ca5f87000..86ca59c8fce9 100644 --- a/pkgs/tools/filesystems/mtdutils/default.nix +++ b/pkgs/tools/filesystems/mtdutils/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { pname = "mtd-utils"; - version = "2.1.4"; + version = "2.1.5"; src = fetchgit { url = "git://git.infradead.org/mtd-utils.git"; rev = "v${version}"; - sha256 = "sha256-lnvG2aJiihOyScmWZu0i8OYowmIMRBkgC3j67sdLkT4="; + sha256 = "sha256-Ph9Xjb2Nyo7l3T1pDgW2gnSJxn0pOC6uvCGUfCh0MXU="; }; nativeBuildInputs = [ autoreconfHook pkg-config ] ++ lib.optional doCheck cmocka; diff --git a/pkgs/tools/misc/fzf/default.nix b/pkgs/tools/misc/fzf/default.nix index bf1884d311ee..16d9aab423aa 100644 --- a/pkgs/tools/misc/fzf/default.nix +++ b/pkgs/tools/misc/fzf/default.nix @@ -1,9 +1,9 @@ { stdenv , lib -, pkgs , buildGoModule , fetchFromGitHub , writeText +, writeShellScriptBin , runtimeShell , installShellFiles , ncurses @@ -16,8 +16,7 @@ let # so that using the shell completion (ctrl+r, etc) doesn't result in ugly # warnings on non-nixos machines ourPerl = if stdenv.isDarwin then perl else ( - pkgs.writers.writeBashBin "perl" '' - #!${pkgs.runtimeShell} + writeShellScriptBin "perl" '' export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive" exec ${perl}/bin/perl "$@" ''); diff --git a/pkgs/tools/misc/txr/default.nix b/pkgs/tools/misc/txr/default.nix deleted file mode 100644 index 41b30f5f4a21..000000000000 --- a/pkgs/tools/misc/txr/default.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ lib, stdenv, fetchurl, libffi, coreutils }: - -stdenv.mkDerivation rec { - pname = "txr"; - version = "280"; - - src = fetchurl { - url = "http://www.kylheku.com/cgit/txr/snapshot/${pname}-${version}.tar.bz2"; - sha256 = "sha256-1iqWerUehLFPM63ZjJYY6xo9oHoNK7ne/a6M3+4L4so="; - }; - - buildInputs = [ libffi ]; - - enableParallelBuilding = true; - - doCheck = true; - checkTarget = "tests"; - - postPatch = '' - # Fixup references to /usr/bin in tests - substituteInPlace tests/017/realpath.tl --replace /usr/bin /bin - substituteInPlace tests/017/realpath.expected --replace /usr/bin /bin - - substituteInPlace tests/018/process.tl --replace /usr/bin/env ${lib.getBin coreutils}/bin/env - ''; - - # Remove failing tests -- 018/chmod tries setting sticky bit - preCheck = "rm -rf tests/018/chmod*"; - - postInstall = '' - d=$out/share/vim-plugins/txr - mkdir -p $d/{syntax,ftdetect} - - cp {tl,txr}.vim $d/syntax/ - - cat > $d/ftdetect/txr.vim < $out/share/vim-plugins/txr/ftdetect/txr.vim <