kumquat-buildroot/support/scripts
Robin Jarry c566f5206a support/scripts/pycompile: fix .pyc original source file paths
When generating a .pyc file, the original .py source file path is
encoded in it. It is used for various purposes: traceback generation,
.pyc file comparison with its .py source, and code inspection.

By default, the source path used when invoking compileall is encoded in
the .pyc file. Since we use paths relative to TARGET_DIR, we end up with
paths that are only valid when relative to '/' encoded in the installed
.pyc files on the target.

This breaks code inspection at runtime since the original source path
will be invalid unless the code is executed from '/'.

Unfortunately, compileall cannot be forced to use the proper path. It
was not written with cross-compilation usage in mind.

Rework the script to call py_compile.compile() directly with pertinent
options:

- The script now has a new --strip-root argument. This argument is
  optional but will always be specified when compiling py files in
  buildroot.
- All other (non-optional) arguments are folders in which all
  "importable" .py files will be compiled to .pyc.
- Using --strip-root=$(TARGET_DIR), the future runtime path of each .py
  file is computed and encoded into the compiled .pyc.

No need to change directory before running the script anymore.

The trickery used to handle error reporting was only applicable with
compileall. Since we implement our own "compileall", error reporting
becomes trivial.

Previously, we had a --force option to tell compileall.compiledir() to
forcibly recompile files if they had changed. Now, we would have to
handle it ourselves. It turns out to not be easy and would need us to
delve into the format of bytecompiled files to extract metadata and
compare it with the expected values, that being even dependent on the
python version being used (fortunately, only two for us: python 2.7 and
the latext 3.x).

Still, this is deemed too complex, and byte-compiling is pretty fast, so
much so that it should be eclipsed by the build duration anyway.

So we just drop support for --force, and instead we always byte-compile.

Signed-off-by: Julien Floret <julien.floret@6wind.com>
Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
[yann.morin.1998@free.fr:
  - always byte-compile
  - drop --force
  - expand commit log to state so and explain why
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-09-13 10:19:13 +02:00
..
apply-patches.sh
boot-qemu-image.py support/scripts/boot-qemu-image.py: wait before using expect 2020-04-22 22:04:47 +02:00
br2-external core/br2-external: report better error messages 2020-06-15 11:01:54 +02:00
brpkgutil.py support/scripts: use show-info to extract dependency graph 2019-05-07 23:03:41 +02:00
check-bin-arch package/guile: bump to version 3.0.4 2020-08-08 18:59:19 +02:00
check-dotconfig.py support/scripts: add check-dotconfig.py 2020-07-27 18:13:19 +02:00
check-host-rpath core: implement per-package SDK and target 2019-11-29 14:24:05 +01:00
check-kernel-headers.sh support/scripts/check-kernel-headers.sh: do not print error for loose checks 2020-03-21 15:47:03 +01:00
check-merged-usr.sh skeleton-custom: use a script to check merged usr structure 2019-02-06 17:03:30 +01:00
cve-checker support/scripts: fix flake8 errors in cve-checker and pkg-stats 2020-09-03 20:48:12 +02:00
cve.py support/scripts: make CVE class independent of the Packaage class 2020-08-28 11:00:40 +02:00
eclipse-register-toolchain
expunge-gconv-modules
fix-configure-powerpc64.sh
fix-rpath package/pkg-generic.mk, support/scripts/fix-rpath: fix per-package regexp 2019-12-12 08:27:54 +01:00
gen-bootlin-toolchains support/scripts/gen-bootlin-toolchains: be less verbose 2020-08-29 16:10:02 +02:00
generate-gitlab-ci-yml gitlab-ci: only check defconfigs for known branches 2020-09-09 09:26:00 +02:00
genimage.sh support/scripts/genimage.sh: pass an empty rootpath to genimage 2019-10-27 12:19:32 +01:00
graph-build-time support/scripts/graph-build-time: replace confusing colors 2019-02-04 15:23:27 +01:00
graph-depends support/scripts/graph-depends: cut on host-ccache 2019-10-02 21:07:14 +02:00
hardlink-or-copy
mkmakefile support/scripts/mkmakefile: make wrapper silent by default 2018-11-02 21:23:02 +01:00
mkusers
pkg-stats support/scripts: fix flake8 errors in cve-checker and pkg-stats 2020-09-03 20:48:12 +02:00
pycompile.py support/scripts/pycompile: fix .pyc original source file paths 2020-09-13 10:19:13 +02:00
setlocalversion Makefile: properly account for custom tags in BR2_VERSION_FULL 2020-07-27 18:46:31 +02:00
size-stats support/graph-size: reorder colours assigned to sizes 2019-08-26 22:51:47 +02:00