Details
-
Bug
-
Status: Resolved (View Workflow)
-
Minor
-
Resolution: Fixed
-
None
-
Jenkins ver. 2.107.2
Description
CMake plugin commands do not seem to pass environment to cmake command.
withEnv(['CC=clang', 'CXX=clang++' {
cmakeBuild(
buildDir: 'build/debug',
buildType: 'Debug',
generator: 'Ninja',
installation: 'InSearchPath',
)
}
[debug] $ docker exec --workdir /var/lib/jenkins/workspace/job/build/debug 67363250bd775405c7cdf92b70a6d7a70dc136a48c93e350fea9cd12ba50d432 cmake -G Ninja -D CMAKE_BUILD_TYPE=Debug /var/lib/jenkins/workspace/job
-- The C compiler identification is GNU 7.2.0
-- The CXX compiler identification is GNU 7.2.0
-- Check for working C compiler: /usr/sbin/cc
-- Check for working C compiler: /usr/sbin/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/sbin/c++
-- Check for working CXX compiler: /usr/sbin/c++ – works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Also, if CMake is installed in /usr/local/bin (and it works in sh step) the CMake builder plugin apparently does not find cmake binary:
[debug] $ cmake -G Ninja -D CMAKE_BUILD_TYPE=Debug /Users/jenkins/workspace/job
Cannot run program "cmake" (in directory "/Users/jenkins/workspace/job/build/debug"): error=2, No such file or directory
In sh step which cmake prints /usr/local/bin/cmake and you can run cmake succesfully
The plugin directly invokes cmake, without any shell. So it will see only the environment variables of the jenkins master process or agent process.
My guess is that your sh step adds /usr/local/bin to $PATH.
On linux, processes started as a system process during boot inherit fewer environment variables than the processes started by a user`s login shell.
AFAIK, a recent SUSE or RHEL does not have /usr/local/bin in $PATH by default.
Could you check the Jenkins System Information page for the PATH variable?