2017-11-03 03:26:49 +00:00
|
|
|
{ lib
|
|
|
|
, stdenv
|
2018-08-08 00:26:06 +01:00
|
|
|
, fetchPypi
|
2017-11-03 03:26:49 +00:00
|
|
|
, fetchFromGitHub
|
|
|
|
, buildPythonPackage
|
|
|
|
, geckodriver
|
2018-10-25 16:00:21 +01:00
|
|
|
, urllib3
|
2017-11-03 03:26:49 +00:00
|
|
|
, xorg
|
|
|
|
}:
|
|
|
|
|
2018-03-14 19:58:56 +00:00
|
|
|
|
|
|
|
let
|
|
|
|
# Recompiling x_ignore_nofocus.so as the original one dlopen's libX11.so.6 by some
|
|
|
|
# absolute paths. Replaced by relative path so it is found when used in nix.
|
|
|
|
x_ignore_nofocus =
|
|
|
|
fetchFromGitHub {
|
|
|
|
owner = "SeleniumHQ";
|
|
|
|
repo = "selenium";
|
|
|
|
rev = "selenium-3.6.0";
|
|
|
|
sha256 = "13wf4hx4i7nhl4s8xkziwxl0km1j873syrj4amragj6mpip2wn8v";
|
|
|
|
};
|
|
|
|
in
|
|
|
|
|
2017-11-03 03:26:49 +00:00
|
|
|
buildPythonPackage rec {
|
2017-11-09 11:26:09 +00:00
|
|
|
pname = "selenium";
|
2018-11-08 23:30:23 +00:00
|
|
|
version = "3.141.0";
|
2017-11-09 11:26:09 +00:00
|
|
|
|
2018-08-08 00:26:06 +01:00
|
|
|
src = fetchPypi {
|
|
|
|
inherit pname version;
|
2018-11-08 23:30:23 +00:00
|
|
|
sha256 = "039hf9knvl4s3hp21bzwsp1g5ri9gxsh504dp48lc6nr1av35byy";
|
2017-11-03 03:26:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
buildInputs = [xorg.libX11];
|
|
|
|
|
|
|
|
propagatedBuildInputs = [
|
2018-10-25 16:00:21 +01:00
|
|
|
geckodriver urllib3
|
2017-11-03 03:26:49 +00:00
|
|
|
];
|
|
|
|
|
2018-03-14 19:58:56 +00:00
|
|
|
patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
|
2017-11-03 03:26:49 +00:00
|
|
|
cp "${x_ignore_nofocus}/cpp/linux-specific/"* .
|
|
|
|
substituteInPlace x_ignore_nofocus.c --replace "/usr/lib/libX11.so.6" "${xorg.libX11.out}/lib/libX11.so.6"
|
2018-03-14 19:58:56 +00:00
|
|
|
cc -c -fPIC x_ignore_nofocus.c -o x_ignore_nofocus.o
|
|
|
|
cc -shared \
|
2017-11-03 03:26:49 +00:00
|
|
|
-Wl,${if stdenv.isDarwin then "-install_name" else "-soname"},x_ignore_nofocus.so \
|
|
|
|
-o x_ignore_nofocus.so \
|
|
|
|
x_ignore_nofocus.o
|
|
|
|
cp -v x_ignore_nofocus.so selenium/webdriver/firefox/${if stdenv.is64bit then "amd64" else "x86"}/
|
|
|
|
'';
|
|
|
|
|
|
|
|
meta = with lib; {
|
|
|
|
description = "The selenium package is used to automate web browser interaction from Python";
|
|
|
|
homepage = http://www.seleniumhq.org;
|
|
|
|
license = licenses.asl20;
|
|
|
|
maintainers = with maintainers; [ jraygauthier ];
|
|
|
|
};
|
2017-11-09 11:26:09 +00:00
|
|
|
}
|