2021-09-16 02:58:49 +02:00
|
|
|
{ lib
|
|
|
|
, stdenv
|
2022-12-02 00:10:14 +01:00
|
|
|
, python27
|
2021-09-16 02:58:49 +02:00
|
|
|
, callPackage
|
|
|
|
, fetchFromGitHub
|
|
|
|
, makeWrapper
|
|
|
|
, # re2c deps
|
|
|
|
autoreconfHook
|
|
|
|
, # py-yajl deps
|
|
|
|
git
|
|
|
|
, # oil deps
|
2023-09-22 05:33:38 +02:00
|
|
|
file
|
2021-09-16 02:58:49 +02:00
|
|
|
, glibcLocales
|
2022-12-10 00:11:59 +01:00
|
|
|
, six
|
|
|
|
, typing
|
2021-09-16 02:58:49 +02:00
|
|
|
}:
|
|
|
|
|
|
|
|
rec {
|
|
|
|
re2c = stdenv.mkDerivation rec {
|
|
|
|
pname = "re2c";
|
|
|
|
version = "1.0.3";
|
|
|
|
sourceRoot = "${src.name}/re2c";
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "skvadrik";
|
|
|
|
repo = "re2c";
|
|
|
|
rev = version;
|
|
|
|
sha256 = "0grx7nl9fwcn880v5ssjljhcb9c5p2a6xpwil7zxpmv0rwnr3yqi";
|
|
|
|
};
|
|
|
|
nativeBuildInputs = [ autoreconfHook ];
|
|
|
|
preCheck = ''
|
|
|
|
patchShebangs run_tests.sh
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2022-12-02 00:10:14 +01:00
|
|
|
py-yajl = python27.pkgs.buildPythonPackage rec {
|
2021-09-16 02:58:49 +02:00
|
|
|
pname = "oil-pyyajl-unstable";
|
2023-01-29 03:49:29 +01:00
|
|
|
version = "2022-09-01";
|
2021-09-16 02:58:49 +02:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "oilshell";
|
|
|
|
repo = "py-yajl";
|
2023-01-29 03:49:29 +01:00
|
|
|
rev = "72686b0e2e9d13d3ce5fefe47ecd607c540c90a3";
|
|
|
|
hash = "sha256-H3GKN0Pq1VFD5+SWxm8CXUVO7zAyj/ngKVmDaG/aRT4=";
|
2021-09-16 02:58:49 +02:00
|
|
|
fetchSubmodules = true;
|
|
|
|
};
|
|
|
|
# just for submodule IIRC
|
|
|
|
nativeBuildInputs = [ git ];
|
|
|
|
};
|
|
|
|
|
2021-09-24 00:52:17 +02:00
|
|
|
/*
|
|
|
|
Upstream isn't interested in packaging this as a library
|
|
|
|
(or accepting all of the patches we need to do so).
|
|
|
|
This creates one without disturbing upstream too much.
|
|
|
|
*/
|
2022-12-02 00:10:14 +01:00
|
|
|
oildev = python27.pkgs.buildPythonPackage rec {
|
2021-09-16 02:58:49 +02:00
|
|
|
pname = "oildev-unstable";
|
|
|
|
version = "2021-07-14";
|
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "oilshell";
|
|
|
|
repo = "oil";
|
2023-01-29 03:49:29 +01:00
|
|
|
# rev == present HEAD of release/0.14.0
|
|
|
|
rev = "3d0427e222f7e42ae7be90c706d7fde555efca2e";
|
|
|
|
hash = "sha256-XMoNkBEEmD6AwNSu1uSh3OcWLfy4/ADtRckn/Pj2cP4=";
|
2021-09-16 02:58:49 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
It's not critical to drop most of these; the primary target is
|
|
|
|
the vendored fork of Python-2.7.13, which is ~ 55M and over 3200
|
|
|
|
files, dozens of which get interpreter script patches in fixup.
|
2021-09-24 00:52:17 +02:00
|
|
|
|
|
|
|
Note: -f is necessary to keep it from being a pain to update
|
|
|
|
hash on rev updates. Command will fail w/o and not print hash.
|
2021-09-16 02:58:49 +02:00
|
|
|
*/
|
2022-05-17 21:10:33 +02:00
|
|
|
postFetch = ''
|
2023-01-29 03:49:29 +01:00
|
|
|
rm -rf $out/{Python-2.7.13,metrics,py-yajl,rfc,gold,web,testdata,services,demo,devtools}
|
2021-09-16 02:58:49 +02:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2023-01-29 03:49:29 +01:00
|
|
|
# patch to support a python package, pass tests on macOS, drop deps, etc.
|
2021-09-16 02:58:49 +02:00
|
|
|
patchSrc = fetchFromGitHub {
|
|
|
|
owner = "abathur";
|
|
|
|
repo = "nix-py-dev-oil";
|
2023-09-22 05:33:38 +02:00
|
|
|
rev = "v0.14.0.1";
|
|
|
|
hash = "sha256-47+986+SohdtoNzTYAgF2vPPWgakyg0VCmR+MgxMzTk=";
|
2021-09-16 02:58:49 +02:00
|
|
|
};
|
|
|
|
patches = [
|
|
|
|
"${patchSrc}/0001-add_setup_py.patch"
|
|
|
|
"${patchSrc}/0002-add_MANIFEST_in.patch"
|
|
|
|
"${patchSrc}/0004-disable-internal-py-yajl-for-nix-built.patch"
|
|
|
|
"${patchSrc}/0006-disable_failing_libc_tests.patch"
|
|
|
|
"${patchSrc}/0007-namespace_via_init.patch"
|
2022-01-27 02:37:34 +01:00
|
|
|
"${patchSrc}/0009-avoid_nix_arch64_darwin_toolchain_bug.patch"
|
2023-01-29 03:49:29 +01:00
|
|
|
"${patchSrc}/0010-disable-line-input.patch"
|
|
|
|
"${patchSrc}/0011-disable-fanos.patch"
|
|
|
|
"${patchSrc}/0012-disable-doc-cmark.patch"
|
2023-09-22 05:33:38 +02:00
|
|
|
"${patchSrc}/0013-fix-pyverify.patch"
|
2021-09-16 02:58:49 +02:00
|
|
|
];
|
|
|
|
|
2023-01-29 03:49:29 +01:00
|
|
|
configureFlags = [
|
|
|
|
"--without-readline"
|
|
|
|
];
|
2021-09-16 02:58:49 +02:00
|
|
|
|
|
|
|
nativeBuildInputs = [ re2c file makeWrapper ];
|
|
|
|
|
2023-01-29 03:49:29 +01:00
|
|
|
propagatedBuildInputs = [ six typing py-yajl ];
|
2021-09-16 02:58:49 +02:00
|
|
|
|
|
|
|
doCheck = true;
|
|
|
|
|
|
|
|
preBuild = ''
|
|
|
|
build/dev.sh all
|
|
|
|
'';
|
|
|
|
|
|
|
|
postPatch = ''
|
2023-01-29 03:49:29 +01:00
|
|
|
patchShebangs asdl build core doctools frontend pyext oil_lang
|
|
|
|
substituteInPlace pyext/fastlex.c --replace '_gen/frontend' '../_gen/frontend'
|
|
|
|
substituteInPlace core/main_loop.py --replace 'import fanos' '# import fanos'
|
|
|
|
rm cpp/stdlib.h # keep modules from finding the wrong stdlib?
|
|
|
|
# work around hard parse failure documented in oilshell/oil#1468
|
|
|
|
substituteInPlace osh/cmd_parse.py --replace 'elif self.c_id == Id.Op_LParen' 'elif False'
|
2021-09-16 02:58:49 +02:00
|
|
|
'';
|
|
|
|
|
|
|
|
# See earlier note on glibcLocales TODO: verify needed?
|
|
|
|
LOCALE_ARCHIVE = lib.optionalString (stdenv.buildPlatform.libc == "glibc") "${glibcLocales}/lib/locale/locale-archive";
|
|
|
|
|
2023-01-29 03:49:29 +01:00
|
|
|
# not exhaustive; sample what resholve uses as a sanity check
|
|
|
|
pythonImportsCheck = [
|
|
|
|
"oil"
|
|
|
|
"oil.asdl"
|
|
|
|
"oil.core"
|
|
|
|
"oil.frontend"
|
|
|
|
"oil._devbuild"
|
|
|
|
"oil._devbuild.gen.id_kind_asdl"
|
|
|
|
"oil._devbuild.gen.syntax_asdl"
|
|
|
|
"oil.tools.osh2oil"
|
|
|
|
];
|
2021-09-16 02:58:49 +02:00
|
|
|
|
|
|
|
meta = {
|
|
|
|
license = with lib.licenses; [
|
|
|
|
psfl # Includes a portion of the python interpreter and standard library
|
|
|
|
asl20 # Licence for Oil itself
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|