Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calamares failed to build with boost-1.70 #1242

Closed
jmrcpn opened this issue Sep 4, 2019 · 9 comments
Closed

Calamares failed to build with boost-1.70 #1242

jmrcpn opened this issue Sep 4, 2019 · 9 comments
Milestone

Comments

@jmrcpn
Copy link

@jmrcpn jmrcpn commented Sep 4, 2019

Building calamares with boost-1.70 is failing to find a big set of modules.
Methodology:
Within a given context, using boost-1.69.0, build is successful.
context use:
gcc-9.1.0, python3-3.7.3, boost-1.69.0, cmake-3.13.2
(logs reported in the "good" file)

updating boost-1.70.0, using RPM
rpm -Uhv boost-1.70.0-1.56.1.ok_9.0.x86_64.rpm libzypp-17.14.0-1.56.1.ok_9.0.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:boost-1.70.0-1.56.1.ok_9.0 ################################# [ 25%]
2:libzypp-17.14.0-1.56.1.ok_9.0 ################################# [ 50%]
Cleaning up / removing...
3:libzypp-17.12.0-1.52.14.ok_8.5 ################################# [ 75%]
4:boost-1.69.0-1.52.14.ok_8.5 ################################# [100%]

Within this "adjusted context", build is NOT successful. see the "bad" file

good file:
;-------------------------------------------------------------------------------------------------------
/rpmbuild/BUILD/calamares-3.2.11/bld ~/rpmbuild/BUILD/calamares-3.2.11

  • cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DINSTALL_CONFIG:BOOL=ON -DBUILD_TESTING:BOOL=OFF -DWITH_PYTHON:BOOL=ON -DWITH_PYTHONQT:BOOL=OFF -DWEBVIEW_FORCE_WEBKIT:BOOL=OFF ..
    -- The C compiler identification is GNU 9.1.0
    -- The CXX compiler identification is GNU 9.1.0
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found GNU g++ 9.1.0, enabling colorized error messages.
    -- Found YAMLCPP: /usr/include (Required is at least version "0.5.1")
    -- Installing in the same prefix as Qt, adopting their path scheme.
    CMake Warning at /usr/share/ECM/kde-modules/KDEInstallDirs.cmake:662 (message):
    KDE_INSTALL_BINDIR, KDE_INSTALL_LIBDIR and KDE_INSTALL_INCLUDEDIR should
    either all be absolute paths or all be relative paths.
    Call Stack (most recent call first):
    CMakeLists.txt:276 (include)

-- Found KF5CoreAddons: /usr/lib/cmake/KF5CoreAddons/KF5CoreAddonsConfig.cmake (found version "5.55.0")
-- Found KF5Crash: /usr/lib/cmake/KF5Crash/KF5CrashConfig.cmake (found version "5.55.0")
-- Found KF5: success (found version "5.55.0") found components: CoreAddons Crash
-- Found PythonLibs: /usr/lib/libpython3.7m.so (found suitable version "3.7.3", minimum required is "3.3")
CMake Warning at /usr/share/cmake/Modules/FindBoost.cmake:1775 (message):
No header defined for python-py37; skipping header check
Call Stack (most recent call first):
CMakeModules/BoostPython3.cmake:37 (find_package)
CMakeModules/BoostPython3.cmake:52 (_find_boost_python3_int)
CMakeLists.txt:298 (find_boost_python3)

CMake Warning at /usr/share/cmake/Modules/FindBoost.cmake:1775 (message):
No header defined for PYTHON37; skipping header check
Call Stack (most recent call first):
CMakeModules/BoostPython3.cmake:69 (find_package)
CMakeLists.txt:298 (find_boost_python3)

-- Boost version: 1.69.0
-- Found the following Boost libraries:
-- PYTHON37
-- Found PythonLibs: /usr/lib/libpython3.7m.so (found version "3.7.3")
-- Searching for PythonQt (PythonLibs 3.7) ..
-- PythonQt not found, missing components includes;library;qtall
-- Disabling PythonQt modules

[.....]

-- Skipped modules:
-- Skipped dummypythonqt (No PythonQt support).
-- Skipped plasmalnf (missing requirements).

-- Configuring done
;-------------------------------------------------------------------------------------------------------
Bad file:
;-------------------------------------------------------------------------------------------------------
~/rpmbuild/BUILD/calamares-3.2.11/bld ~/rpmbuild/BUILD/calamares-3.2.11

  • cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DINSTALL_CONFIG:BOOL=ON -DBUILD_TESTING:BOOL=OFF -DWITH_PYTHON:BOOL=ON -DWITH_PYTHONQT:BOOL=OFF -DWEBVIEW_FORCE_WEBKIT:BOOL=OFF ..
    -- The C compiler identification is GNU 9.1.0
    -- The CXX compiler identification is GNU 9.1.0
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found GNU g++ 9.1.0, enabling colorized error messages.
    -- Found YAMLCPP: /usr/include (Required is at least version "0.5.1")
    -- Installing in the same prefix as Qt, adopting their path scheme.
    CMake Warning at /usr/share/ECM/kde-modules/KDEInstallDirs.cmake:662 (message):
    KDE_INSTALL_BINDIR, KDE_INSTALL_LIBDIR and KDE_INSTALL_INCLUDEDIR should
    either all be absolute paths or all be relative paths.
    Call Stack (most recent call first):
    CMakeLists.txt:276 (include)

-- Found KF5CoreAddons: /usr/lib/cmake/KF5CoreAddons/KF5CoreAddonsConfig.cmake (found version "5.55.0")
-- Found KF5Crash: /usr/lib/cmake/KF5Crash/KF5CrashConfig.cmake (found version "5.55.0")
-- Found KF5: success (found version "5.55.0") found components: CoreAddons Crash
-- Found PythonLibs: /usr/lib/libpython3.7m.so (found suitable version "3.7.3", minimum required is "3.3")
-- Found Boost 1.70.0 at /usr/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET COMPONENTS python3
-- Found boost_headers 1.70.0 at /usr/lib/cmake/boost_headers-1.70.0
-- Boost 1.55.0 found.
-- Found Boost components:
python3
-- Found Boost 1.70.0 at /usr/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET COMPONENTS python-py37
-- Boost 1.55.0 found.
-- Found Boost components:
python-py37
-- Found Boost 1.70.0 at /usr/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET COMPONENTS python3
-- Boost 1.55.0 found.
-- Found Boost components:
python3
-- Found Boost 1.70.0 at /usr/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET COMPONENTS python37
-- Boost 1.55.0 found.
-- Found Boost components:
python37
-- Found Boost 1.70.0 at /usr/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET COMPONENTS python3
-- Boost 1.55.0 found.
-- Found Boost components:
python3
-- Found Boost 1.70.0 at /usr/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET COMPONENTS python-3.7
-- Boost 1.55.0 found.
-- Found Boost components:
python-3.7
-- Found Boost 1.70.0 at /usr/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET COMPONENTS Python
-- Found boost_python at
-- No suitable boost_python variant has been identified!
-- libboost_python37.so.1.70.0 (shared, BUILD_SHARED_LIBS not ON, set Boost_USE_STATIC_LIBS=OFF to override)
-- Boost 1.55.0 found.
-- Found Boost components:
Python
-- Found PythonLibs: /usr/lib/libpython3.7m.so (found version "3.7.3")
-- Searching for PythonQt (PythonLibs 3.7) ..
-- PythonQt not found, missing components includes;library;qtall
-- Disabling Boost::Python modules
-- Disabling PythonQt modules

[......]

-- Skipped modules:
-- Skipped bootloader (No Python support).
-- Skipped displaymanager (No Python support).
-- Skipped dracut (No Python support).
-- Skipped dummypython (No Python support).
-- Skipped dummypythonqt (No PythonQt support).
-- Skipped fstab (No Python support).
-- Skipped grubcfg (No Python support).
-- Skipped hwclock (No Python support).
-- Skipped initcpiocfg (No Python support).
-- Skipped initramfscfg (No Python support).
-- Skipped localecfg (No Python support).
-- Skipped luksopenswaphookcfg (No Python support).
-- Skipped machineid (No Python support).
-- Skipped mount (No Python support).
-- Skipped networkcfg (No Python support).
-- Skipped openrcdmcryptcfg (No Python support).
-- Skipped packages (No Python support).
-- Skipped plasmalnf (missing requirements).
-- Skipped plymouthcfg (No Python support).
-- Skipped rawfs (No Python support).
-- Skipped removeuser (No Python support).
-- Skipped services-openrc (No Python support).
-- Skipped services-systemd (No Python support).
-- Skipped umount (No Python support).
-- Skipped unpackfs (No Python support).

-- Configuring done
;-------------------------------------------------------------------------------------------------------
problem is present too with calamares 3.2.13.
Problem was detected in build context using
gcc-9.2.0, python-3.7.4, boost-1.70.0, cmake-3.15.1

If that could help, I can provide your own personal access to a dedicated server with the
boost-1.70.0 context.

I can provide more data if needed.

@jmrcpn

This comment has been minimized.

Copy link
Author

@jmrcpn jmrcpn commented Sep 4, 2019

Adding
-DBoost_NO_BOOST_CMAKE=ON
to cmake build option make, the build successful again

@adriaandegroot

This comment has been minimized.

Copy link
Contributor

@adriaandegroot adriaandegroot commented Sep 4, 2019

I don't have any Linuxes with Boost 1.70 or later, so it's kind of hard for me to test. Basically, the Find modules for Boost::Python are a mess of handling-weird-incompatible-packaging, and now Boost has CMake support as well, .. the CMake module needs to be made smarter to handle the case that CMake / Boost's own FindBoost does the whole job, and only if that doesn't work, fall back to all the existing hacks.

@adriaandegroot

This comment has been minimized.

Copy link
Contributor

@adriaandegroot adriaandegroot commented Sep 4, 2019

(Leaving open as a TODO and also for documentation of the workaround)

@jmrcpn

This comment has been minimized.

Copy link
Author

@jmrcpn jmrcpn commented Sep 4, 2019

Adrian, As stated at the end of issue explanation, I can provide an access to your own
linux+boost-1.70 context (I know it difficult to test something not within context), if interested
let me know... (I do not know how to open a private channel via github)

@abucodonosor

This comment has been minimized.

Copy link
Contributor

@abucodonosor abucodonosor commented Sep 9, 2019

@embar-

This comment has been minimized.

Copy link
Contributor

@embar- embar- commented Oct 1, 2019

Camalares fails to build with boost 1.71 too (not only 1.70).
log.txt

Since 2019 September 19, builds for openSUSE tumbleweed fails with various undefined reference to `boost::python:: errors:

undefined reference to `boost::python::detail::dict_base::dict_base()'
undefined reference to `boost::python::detail::list_base::list_base()'
undefined reference to `boost::python::throw_error_already_set()'

libboost_python-py3-1_71_0-1.71.0-2.1, libboost_python-py3-1_71_0-devel-1.71.0-2.1, libboost_python3-devel-1.71.0-1.1 are installed.

Seems to be related to updating boost-defaults (1.69.0 -> 1.71.0) in Tumbleweed snapshot 20190918.

Build for openSUSE Leap success.

See more information in attached log and here:

https://build.opensuse.org/packages/calamares/job_history/home:embar-:calamares/openSUSE_Tumbleweed/x86_64

Update:
Adding option
-DBoost_NO_BOOST_CMAKE=ON
(as suggested by jmrcpn in #1242 (comment) )
helped and Calamares builds again.

@adriaandegroot

This comment has been minimized.

Copy link
Contributor

@adriaandegroot adriaandegroot commented Oct 7, 2019

Can't reproduce in general with Boost 1.71: on FreeBSD, with boost-python 1.71 and Python 3.6, it builds and Python modules run just fine. It sounds more like an openSUSE packaging issue than anything else to me -- thanks to @embar- for providing some links in other issues for specific testing ISOs, I'll take a look on tuesday.

@PureTryOut

This comment has been minimized.

Copy link

@PureTryOut PureTryOut commented Dec 4, 2019

This issue also seems to happen on Parabola and I can reproduce it locally as well on Alpine Linux.

@adriaandegroot

This comment has been minimized.

Copy link
Contributor

@adriaandegroot adriaandegroot commented Jan 7, 2020

Fixed in c482990 (I now have a Tumbleweed install and hit exactly this problem, and followed @jmrcpn suggestion to use the Boost_NO_BOOST_CMAKE knob to turn off Boost-cmake support).

Once 3.2 finally hits LTS state and 3.3 starts, then in 3.3 we can bump a bunch of dependencies to modern versions and update the Boost-finding code entirely.

@adriaandegroot adriaandegroot added this to the v3.2.18 milestone Jan 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.