mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-16 09:54:52 +00:00
8dd2f1add9
This builds upon Yureka's work to build electron from source. A lot of the newly introduced changes to the chromium derivation and update script are 1-to-1 copies or slight derivates of that work. Especially the newly added depot_tools.py to resolve the DEPS files does most of the heavy lifting and is an ever so slightly modified version of that section Yureka implemented in electron's update.py. Some coordination between the chromium and electron maintainers should allow us to deduplicate a lot of the duplicated code fairly easily in the future. That just wasn't a goal with this commit, due to time constraints and the urgency to switch away from the release tarballs. Instead of taking just a few hours for a tarball to be available for download after a release, it now takes multiple days at least. At the time of writing, roughly a week after M131 was released, the tarball is still not available. It's unclear if it will ever be. Reason for this are CI issues on Google's side. Note that virtually every release contains some security critical fixes. Also note that this commit is written with a lot of conditionals so the electron derivation doesn't change (just yet). The new update.mjs update script is still very much work-in-progress but gets the job done. Co-Authored-By: Yureka <yuka@yuka.dev>
68 lines
1.8 KiB
Nix
68 lines
1.8 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchzip,
|
|
unzip,
|
|
testers,
|
|
chromedriver,
|
|
}:
|
|
|
|
let
|
|
upstream-info =
|
|
(lib.importJSON ../../../../applications/networking/browsers/chromium/info.json).chromium;
|
|
|
|
# See ./source.nix for Linux
|
|
allSpecs = {
|
|
x86_64-darwin = {
|
|
system = "mac-x64";
|
|
hash = upstream-info.chromedriver.hash_darwin;
|
|
};
|
|
|
|
aarch64-darwin = {
|
|
system = "mac-arm64";
|
|
hash = upstream-info.chromedriver.hash_darwin_aarch64;
|
|
};
|
|
};
|
|
|
|
spec =
|
|
allSpecs.${stdenv.hostPlatform.system}
|
|
or (throw "missing chromedriver binary for ${stdenv.hostPlatform.system}");
|
|
|
|
inherit (upstream-info) version;
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "chromedriver";
|
|
inherit version;
|
|
|
|
src = fetchzip {
|
|
url = "https://storage.googleapis.com/chrome-for-testing-public/${version}/${spec.system}/chromedriver-${spec.system}.zip";
|
|
inherit (spec) hash;
|
|
};
|
|
|
|
nativeBuildInputs = [ unzip ];
|
|
|
|
installPhase = ''
|
|
install -m555 -D "chromedriver" $out/bin/chromedriver
|
|
'';
|
|
|
|
passthru.tests.version = testers.testVersion { package = chromedriver; };
|
|
|
|
meta = with lib; {
|
|
homepage = "https://chromedriver.chromium.org/";
|
|
description = "WebDriver server for running Selenium tests on Chrome";
|
|
longDescription = ''
|
|
WebDriver is an open source tool for automated testing of webapps across
|
|
many browsers. It provides capabilities for navigating to web pages, user
|
|
input, JavaScript execution, and more. ChromeDriver is a standalone
|
|
server that implements the W3C WebDriver standard.
|
|
'';
|
|
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
|
license = licenses.bsd3;
|
|
maintainers = with maintainers; [ primeos ];
|
|
# Note from primeos: By updating Chromium I also update Google Chrome and
|
|
# ChromeDriver.
|
|
platforms = platforms.darwin;
|
|
mainProgram = "chromedriver";
|
|
};
|
|
}
|