Repository navigation
installer: build ORFS tools on all supported platforms without the OpenROAD CMake set - #4700
Conversation
The installer always asks the OpenROAD installer for the Bazel set. Users who build OpenROAD with CMake (build_openroad.sh --openroad-args -cmake-build) need the OpenROAD CMake set instead. -cmake passes -cmake to the OpenROAD installer. -bazel is the default. If both are given, the last one wins. On macOS, install cmake with brew. The OpenROAD installer no longer installs it for a Bazel build, and ORFS builds Yosys and kepler-formal with CMake. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
build_openroad.sh always compiles kepler-formal with -march=x86-64-v3, which Arm compilers reject, so the build fails on aarch64 hosts. Use -march=armv8-a there, the Armv8-A baseline, and keep x86-64-v3 on other hosts. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
On EL8 and EL9, ORFS relied on the OpenROAD CMake set for EPEL, pip, the compiler and the Yosys and kepler-formal build tools. The OpenROAD installer now installs that set only with -cmake, so the EL install fails: tcl-tclreadline is not found without EPEL, and pip is missing. Install EPEL and the build tools from the ORFS installer, and run the Kitware CMake step on EL too. Install Python 3.12 on EL8 and EL9, because kepler-formal and the pip lock files need Python 3.10 or newer. On EL8, install gcc-toolset-13 and enable it in build_openroad.sh, because GCC 8 is too old for kepler-formal. gtest is not installed: Yosys builds its unit tests only when gtest is found. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
EL8 registers its Python 3.6 as the python3 alternative with a higher priority, so the install alone leaves python3 at 3.6 and the pip lock fails. Select Python 3.12 explicitly. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
Yosys needs Bison 3.6 or newer. EL8 ships 3.0.4, which the OpenROAD CMake set used to replace. When the Bison on PATH is older than 3.6, build the release that the OpenROAD installer uses, with the same checksum, in the -common prefix. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
EL9 ships TBB 2020, where concurrent_map.h is a preview feature and stops the kepler-formal build unless TBB_PREVIEW_CONCURRENT_ORDERED_CONTAINERS is set. Define it for the kepler-formal compile. oneTBB ignores the macro. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
kepler-formal finds TBB with its CMake package. EL8 ships TBB 2018, which has no CMake package and no oneTBB API, so build oneTBB 2021.13.0 on EL8, static because the kepler-formal RPATH does not include the prefix. Install tbb-devel only on EL9. Also install findutils, which dev_env.sh uses, and readline-devel on EL8 for the Yosys readline support. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
On EL, CMake installs libraries in lib64 for a prefix outside /usr, but the kepler-formal install RPATH points to lib, so the installed binary cannot find its libnaja libraries. Set CMAKE_INSTALL_LIBDIR to lib for kepler-formal. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
There was a problem hiding this comment.
Code Review
This pull request updates the build and dependency installation scripts to support compiling kepler-formal and Yosys on Enterprise Linux 8 (EL8) and EL9, including platform-specific compiler flags, installing newer versions of Python, Bison, and oneTBB, and introducing options to select between Bazel and CMake dependencies. The review feedback suggests ensuring that the newly installed CMake binary is in the PATH when building oneTBB with a custom prefix, and using the absolute path /usr/bin/python3.12 instead of command -v for robustness when configuring update-alternatives.
🔍 QoR checkMetrics reflect the PR merge build — i.e. what will land on the target branch. Commit 62 design(s) checked — 0 with regression(s), 0 without a comparable baseline. |
_installCmake can install CMake in a prefix that is not on PATH, for example with -prefix or -local. The oneTBB build then fails with "cmake: command not found" when the system has no CMake. Put the prefix bin directory first on PATH for the oneTBB build. Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com>
Follow-up to #4687. After
etc/DependencyInstaller.sh -allalone,./build_openroad.sh --local --skip_openroadnow builds Yosys and kepler-formal on every supported Linux platform.OpenROAD's installer installs its CMake set only with
-cmakenow, and EL relied on that set for EPEL, pip, the compiler and the build tools.Changes
-cmake, which asks the OpenROAD installer for its CMake set, for CMake builds of OpenROAD.-bazelstays the default.cmakewith brew.gcc-toolset-13; build Bison 3.8.2 when the system Bison is older than 3.6; build oneTBB 2021.13.0 (static), because EL8 ships TBB 2018 without a CMake package.build_openroad.sh: use-march=armv8-afor kepler-formal on aarch64, because-march=x86-64-v3fails there.build_openroad.sh: enablegcc-toolset-13when present (EL8).build_openroad.sh: defineTBB_PREVIEW_CONCURRENT_ORDERED_CONTAINERSfor kepler-formal, for the TBB 2020 on EL9. oneTBB ignores it.build_openroad.sh: install the kepler-formal libraries inlib. On EL they went tolib64, outside the RPATH, so the binary could not load them.Validation
Each platform started from a clean container image. The test ran only
./etc/DependencyInstaller.sh -allas root, then./build_openroad.sh --local --skip_openroad. It then checked thatyosysandkepler-formalare installed and thatlddfinds all their libraries.Not covered: macOS, Debian 11 (the installer has no Debian 11 case), and EL7.