Use a (mostly) hermetic Python interpreter
It still requires python to be installed on the host to run the wrapper
scripts, but it's close to being fully hermetic.
This also requires/enables the following changes, unfortunately all at
the same time:
* Use a downloaded f2py
* Use a downloaded scipy/numpy/matplotlib
* Fix a few things that don't run with the python version in their #!
* Stop using bazel-generated __init__.py files, because those interfere
with importing matplotlib nicely
Change-Id: Ife280464613d67cece9587b7d947f0b1d5466d7e
diff --git a/debian/python.BUILD b/debian/python.BUILD
index 084f198..666f2d8 100644
--- a/debian/python.BUILD
+++ b/debian/python.BUILD
@@ -1,66 +1,97 @@
-package(default_visibility = ['@//debian:__pkg__'])
+package(default_visibility = ["@//debian:__pkg__"])
cc_library(
- name = 'python3.4_lib',
- hdrs = glob(['usr/include/python3.4m/**/*.h']),
- includes = [
- 'usr/include/python3.4m/',
- ],
- visibility = ['//visibility:public'],
+ name = "python3.4_lib",
+ hdrs = glob(["usr/include/python3.4m/**/*.h"]),
+ includes = [
+ "usr/include/python3.4m/",
+ ],
+ visibility = ["//visibility:public"],
)
cc_library(
- name = 'python3.4_f2py',
- srcs = [
- 'usr/lib/python3/dist-packages/numpy/f2py/src/fortranobject.c',
- ],
- hdrs = [
- 'usr/lib/python3/dist-packages/numpy/f2py/src/fortranobject.h',
- ],
- copts = [
- '-Wno-error',
- '-Wno-parentheses-equality',
- ],
- includes = [
- 'usr/lib/python3/dist-packages/numpy/f2py/src/',
- ],
- deps = [
- ':python3.4_lib',
- ],
- visibility = ['//visibility:public'],
+ name = "python3.4_f2py",
+ srcs = [
+ "usr/lib/python3/dist-packages/numpy/f2py/src/fortranobject.c",
+ ],
+ hdrs = [
+ "usr/lib/python3/dist-packages/numpy/f2py/src/fortranobject.h",
+ ],
+ copts = [
+ "-Wno-error",
+ "-Wno-parentheses-equality",
+ ],
+ includes = [
+ "usr/lib/python3/dist-packages/numpy/f2py/src/",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":python3.4_lib",
+ ],
)
cc_library(
- name = 'python2.7_lib',
- hdrs = glob([
- 'usr/include/**/*.h',
- ]),
- srcs = [
- 'usr/lib/x86_64-linux-gnu/libpython2.7.so',
- ],
- includes = [
- 'usr/include/',
- 'usr/include/python2.7/',
- ],
- visibility = ['//visibility:public'],
+ name = "python2.7_lib",
+ srcs = [
+ "usr/lib/x86_64-linux-gnu/libpython2.7.so",
+ ],
+ hdrs = glob([
+ "usr/include/**/*.h",
+ ]),
+ includes = [
+ "usr/include/",
+ "usr/include/python2.7/",
+ ],
+ visibility = ["//visibility:public"],
)
cc_library(
- name = 'python2.7_f2py',
- srcs = [
- 'usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.c',
- ],
- hdrs = [
- 'usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.h',
- ],
- copts = [
- '-Wno-error',
- ],
- includes = [
- 'usr/lib/python2.7/dist-packages/numpy/f2py/src/',
- ],
- deps = [
- ':python2.7_lib',
- ],
- visibility = ['//visibility:public'],
+ name = "python2.7_f2py",
+ srcs = [
+ "usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.c",
+ ],
+ hdrs = [
+ "usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.h",
+ ],
+ copts = [
+ "-Wno-error",
+ ],
+ includes = [
+ "usr/lib/python2.7/dist-packages/numpy/f2py/src/",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":python2.7_lib",
+ ],
+)
+
+filegroup(
+ name = "all_files",
+ srcs = glob(["**"]),
+ visibility = ["//visibility:public"],
+)
+
+genrule(
+ name = "copy_f2py",
+ srcs = ["usr/bin/f2py"],
+ outs = ["f2py.py"],
+ cmd = "cp $< $@",
+ executable = True,
+)
+
+py_binary(
+ name = "f2py",
+ srcs = ["f2py.py"],
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "scipy",
+ srcs = glob([
+ "usr/lib/python3/dist-packages/numpy",
+ "usr/lib/python3/dist-packages/scipy",
+ "usr/lib/python2.7/dist-packages/numpy",
+ "usr/lib/python2.7/dist-packages/scipy",
+ ]),
+ visibility = ["//visibility:public"],
)