[OE-core] [PATCH V2 00/18] fix buildpaths QA issue

Hongxu Jia hongxu.jia at windriver.com
Thu Mar 10 07:23:05 UTC 2016


Changed in V2:
- As Ross suggested, improve waf.bbclass and use it for python-pycairo,
  and use ${bindir}/python rather than \`which python\` for python-pygobject.

- As Richard suggested, drop 'buildpaths QA ignore pattern', always try
  to fix them rather than ignore them.

- For openssl fix, remove build path rather than use TOPDIR to replace.

- Add new build path fixes

//Hongxu


Introduce buildpaths QA issue

1. Exist in ELF files DWARF (debugging information)
   gcc compiled with '-g' option.

   Solutions:
   Add option '-fdebug-prefix-map' to translate build path to target path.
   Make sure use option ${DEBUG_FLAGS} to compile

2. Exist in ELF files section .rodata (Read-only data)
   '__FILE__' is used in C/C++ source/header files.

   1) If '__FILE__' exists in source file, use relative path to compile.
      gcc /absolute_dir/test.c -o test --> gcc ../relative_dir/test.c -o test

      Solutions:
      - Use relative path to run configure.

      - Improve python distutils module to use relative path to compile
        C/C++ source file

      - Improve cmake-native which generate Makefile to use relative path
        to compile C/C++ source file

   2) TODO: If '__FILE__' exists in header file. No way?(Need to improve gcc?)

   3) If $CFLAGS, $CC which has build paths exists in source file, fix them
      before compiling

3. Exist in ANSII Text files (Makefile/Configure)
   Solution:
   - Process the text files to translate build path to target path

   - Directly remove build path without side effect.
     Such as removing --sysroot and -fdebug-prefix-map in Makefile is no harm.

4. Exist in python compiled file (Python bytecode, .pyc/.pyo)
   Invoke python with absolute dir.
   python -m py_compile  /absolute_dir/test.py

   Solution:
   - Improve distutils, get the "--root" directory supplied to the "install"
     command, and use it as a prefix to strip off the purported filename
     encoded in bytecode files.

   - Manually update specific bytecode file by invoking py_compile module.
     py_compile.compile(file, cfile=None, dfile=None, doraise=False), use
     target path for 'dfile'

Apply these patches and build a world, there are still 56 recipes in oe-core
that has buildpaths QA issue. And most of them could be fixed by above solutions.

//Hongxu

The following changes since commit d53413d3a8444c38a83ea37867c8af7754d8e702:

  bitbake: server/process: Try connecting 4 times before giving up (2016-03-09 22:47:29 +0000)

are available in the git repository at:

  git://git.openembedded.org/openembedded-core-contrib hongxu/fix-buildpath
  http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=hongxu/fix-buildpath

Hongxu Jia (18):
  fix_buildpaths.bbclass: add bbclass to fix build path
  python2/3: fix buildpath QA issue
  bbclass distutils/distutils3: fix .pyc/.pyo buildpath
  bbclass distutils/distutils3/setuptools/setuptools3: clean up
    DISTUTILS_INSTALL_ARGS
  python-setuptools/python3-setuptools: use old-style install
  python3-pip: use old-style install
  python-pygobject: fix buildpath QA issue
  python-numpy: fix buildpaths QA issue
  waf.bbclass: support do patch on extracted files
  python-pycairo: fix buildpath QA issue
  valgrind: fix buildpath QA issue
  dtc.inc: fix buildpaths QA issue
  epiphany: fix buildpaths QA issue
  gconf: fix buildpaths QA issue
  icu: fix buildpaths QA issue
  tcl: fix buildpath QA issue
  openssl: fix buildpath QA issue
  cmake-native:convert source file to relative path

 meta/classes/distutils.bbclass                     |   8 +-
 meta/classes/distutils3.bbclass                    |   8 +-
 meta/classes/fix_buildpaths.bbclass                |  44 +++++++
 meta/classes/setuptools.bbclass                    |   5 -
 meta/classes/setuptools3.bbclass                   |   5 -
 meta/classes/waf.bbclass                           |  11 +-
 .../openssl/remove-build-path-in-source-code.patch |  44 +++++++
 .../recipes-connectivity/openssl/openssl_1.0.2g.bb |   7 ++
 meta/recipes-devtools/cmake/cmake-native_3.4.3.bb  |   1 +
 .../convert-source-file-to-relative-path.patch     | 128 +++++++++++++++++++++
 .../remove-build-path-in-comments.patch            |  30 +++++
 .../recipes-devtools/python/python-numpy_1.10.4.bb |   1 +
 ...trip-off-build-path-in-purported-filename.patch |  62 ++++++++++
 .../python/python-pycairo_1.10.0.bb                |  25 +---
 .../python/python-pygobject_2.28.3.bb              |   5 +
 .../python/python-setuptools_19.4.bb               |   2 -
 .../use-relative-path-to-compile-source-file.patch |  31 +++++
 meta/recipes-devtools/python/python3-pip_8.0.0.bb  |  12 --
 .../python/python3-setuptools_19.4.bb              |   8 +-
 .../use-relative-path-to-compile-source-file.patch |  31 +++++
 meta/recipes-devtools/python/python3_3.5.1.bb      |  21 +++-
 meta/recipes-devtools/python/python_2.7.11.bb      |  28 ++++-
 .../tcltk/tcl/use-relative-path-to-compile.patch   |  52 +++++++++
 meta/recipes-devtools/tcltk/tcl_8.6.4.bb           |  10 +-
 meta/recipes-devtools/valgrind/valgrind_3.11.0.bb  |   5 +-
 meta/recipes-gnome/epiphany/epiphany_3.18.4.bb     |   8 +-
 .../files/use-relative-path-for-build-dir.patch    |  57 +++++++++
 meta/recipes-gnome/gnome/gconf/gconf.path          |   6 +
 .../gnome/gconf/use-target-path-for-debug.patch    |  31 +++++
 meta/recipes-gnome/gnome/gconf_3.2.6.bb            |  12 ++
 meta/recipes-kernel/dtc/dtc.inc                    |   3 +-
 .../dtc/dtc/pass-DEBUG_FLAGS-to-CFLAGS.patch       |  30 +++++
 .../icu/icu/add-variable-U_CC-and-U_CXX.patch      |  61 ++++++++++
 meta/recipes-support/icu/icu_56.1.bb               |  12 ++
 34 files changed, 732 insertions(+), 72 deletions(-)
 create mode 100644 meta/classes/fix_buildpaths.bbclass
 create mode 100644 meta/recipes-connectivity/openssl/openssl/remove-build-path-in-source-code.patch
 create mode 100644 meta/recipes-devtools/cmake/cmake/convert-source-file-to-relative-path.patch
 create mode 100644 meta/recipes-devtools/python/python-numpy/remove-build-path-in-comments.patch
 create mode 100644 meta/recipes-devtools/python/python-pycairo/strip-off-build-path-in-purported-filename.patch
 create mode 100644 meta/recipes-devtools/python/python/use-relative-path-to-compile-source-file.patch
 create mode 100644 meta/recipes-devtools/python/python3/use-relative-path-to-compile-source-file.patch
 create mode 100644 meta/recipes-devtools/tcltk/tcl/use-relative-path-to-compile.patch
 create mode 100644 meta/recipes-gnome/epiphany/files/use-relative-path-for-build-dir.patch
 create mode 100644 meta/recipes-gnome/gnome/gconf/gconf.path
 create mode 100644 meta/recipes-gnome/gnome/gconf/use-target-path-for-debug.patch
 create mode 100644 meta/recipes-kernel/dtc/dtc/pass-DEBUG_FLAGS-to-CFLAGS.patch
 create mode 100644 meta/recipes-support/icu/icu/add-variable-U_CC-and-U_CXX.patch

-- 
1.9.1




More information about the Openembedded-core mailing list