Skip to content

install-packages-from-source cannot detect CMake installed by pipx. #1360

@Bill-hbrhbr

Description

@Bill-hbrhbr

Bug

Reported by @junhaoliao

junhao@ASUS-X870E:~/workspace/clp/components/core/tools/scripts/lib_install/ubuntu-jammy$ sudo ./install-all.sh
Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:2 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
build-essential is already the newest version (12.9ubuntu3).
liblzma-dev is already the newest version (5.2.5-2ubuntu1).
pkg-config is already the newest version (0.29.2-1ubuntu3).
checkinstall is already the newest version (1.6.2+git20170426.d24a630-2ubuntu2).
pipx is already the newest version (1.0.0-1).
ca-certificates is already the newest version (20240203~22.04.1).
curl is already the newest version (7.81.0-1ubuntu1.21).
git is already the newest version (1:2.34.1-1ubuntu1.15).
jq is already the newest version (1.6-2.1ubuntu3.1).
libcurl4 is already the newest version (7.81.0-1ubuntu1.21).
libcurl4-openssl-dev is already the newest version (7.81.0-1ubuntu1.21).
libssl-dev is already the newest version (3.0.2-0ubuntu1.19).
openjdk-11-jdk is already the newest version (11.0.28+6-1ubuntu1~22.04.1).
python3 is already the newest version (3.10.6-1~22.04.1).
python3-dev is already the newest version (3.10.6-1~22.04.1).
rsync is already the newest version (3.2.7-0ubuntu0.22.04.4).
software-properties-common is already the newest version (0.99.22.9).
unzip is already the newest version (6.0-26ubuntu3.2).
libmariadb-dev is already the newest version (1:10.6.22-0ubuntu0.22.04.1).
python3-pip is already the newest version (22.0.2+dfsg-1ubuntu0.7).
python3-venv is already the newest version (3.10.6-1~22.04.1).
0 upgraded, 0 newly installed, 0 to remove and 179 not upgraded.
Installing pipx packages to the user environment (sudo lifted).
Installing to existing venv 'cmake'
  installed package cmake 3.31.6, installed using Python 3.10.12
  These apps are now globally available
    - ccmake
    - cmake
    - cpack
    - ctest
⚠️  Note: '/home/junhao/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is updated. Run
    `pipx ensurepath` to automatically add it, or manually modify your PATH in your shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨
/home/junhao/.local/bin has been been added to PATH, but you need to open a new terminal or re-login for this PATH change to take effect.

You will need to open a new terminal or re-login for the PATH changes to take effect.

Otherwise pipx is ready to go! ✨ 🌟 ✨
Pipx CMake installed at: /home/junhao/.local/pipx/venvs/cmake/bin/cmake
CMake version 3.31.6 installed at /home/junhao/.local/pipx/venvs/cmake/bin/cmake satisfies version requirements.
Installing to existing venv 'go-task-bin'
  installed package go-task-bin 3.44.0, installed using Python 3.10.12
  These apps are now globally available
    - task
⚠️  Note: '/home/junhao/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is updated. Run
    `pipx ensurepath` to automatically add it, or manually modify your PATH in your shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨
/home/junhao/.local/bin has been been added to PATH, but you need to open a new terminal or re-login for this PATH change to take effect.

You will need to open a new terminal or re-login for the PATH changes to take effect.

Otherwise pipx is ready to go! ✨ 🌟 ✨
Pipx Task installed at: /home/junhao/.local/pipx/venvs/go-task-bin/bin/task
Task version 3.44.0 installed at /home/junhao/.local/pipx/venvs/go-task-bin/bin/task satisfies version requirements.
Installing to existing venv 'uv'
  installed package uv 0.8.22, installed using Python 3.10.12
  These apps are now globally available
    - uv
    - uvx
⚠️  Note: '/home/junhao/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is updated. Run
    `pipx ensurepath` to automatically add it, or manually modify your PATH in your shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨
/home/junhao/.local/bin has been been added to PATH, but you need to open a new terminal or re-login for this PATH change to take effect.

You will need to open a new terminal or re-login for the PATH changes to take effect.

Otherwise pipx is ready to go! ✨ 🌟 ✨
Pipx uv installed at: /home/junhao/.local/pipx/venvs/uv/bin/uv
uv version 0.8.22 installed at /home/junhao/.local/pipx/venvs/uv/bin/uv satisfies version requirements.
dpkg-query: no packages found matching libarchive
Checking for elevated privileges...
/home/junhao/workspace/clp/components/core/tools/scripts/lib_install/ubuntu-jammy/../libarchive.sh: line 67: cmake: command not found
junhao@ASUS-X870E:~/workspace/clp/components/core/tools/scripts/lib_install/ubuntu-jammy$ which cmake
/home/junhao/.local/bin/cmake
junhao@ASUS-X870E:~/workspace/clp/components/core/tools/scripts/lib_install/ubuntu-jammy$ sudo which cmake
junhao@ASUS-X870E:~/workspace/clp/components/core/tools/scripts/lib_install/ubuntu-jammy$ sudo -E bash --login which cmake
/home/junhao/.local/bin/cmake

The failure happens because pipx-installed binaries aren’t immediately searchable on PATH—
even after running pipx ensurepath and adding the install dirs to .bashrc. Scripts running in the current shell may not see those changes yet, so CMake isn’t found even though it exists.

At the moment (#1320), we use full paths to pipx-installed binaries for version checks. We haven’t
done the same for the CMake tarball installers, so they still assume cmake is on PATH. In #1122
we’ll remove the last CMake-based source install (libarchive) and switch to Task-based installs,
which resolves this.

CLP version

0.5.1

Environment

WSL Ubuntu Jammy

Reproduction steps

Run ./clp/components/core/tools/scripts/lib_install/ubuntu-jammy/install-all.sh with or without sudo on a Ubuntu image without CMake.

Can also be reproduced on centos9, manylinux and musllinux.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions