conda-forge / ctng-compiler-activation-feedstock

A conda-smithy repository for ctng-compiler-activation.
BSD 3-Clause "New" or "Revised" License
13 stars 22 forks source link

FC_FOR_BUILD not set when cross-compiling for Linux/{ppc64le,aarch64} #64

Closed awvwgk closed 2 years ago

awvwgk commented 2 years ago

Issue:

When compiling native binaries in a cross-compilation the CC_FOR_BUILD and CXX_FOR_BUILD variables point to the correct native compilers, however the FC_FOR_BUILD is not available.

Environment variables (packages listed below in details)

INFO: activate-binutils_linux-aarch64.sh made the following environmental changes:
+ADDR2LINE=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-addr2line
+AR=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-ar
+AS=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-as
+CXXFILT=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-c++filt
+ELFEDIT=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-elfedit
+GPROF=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gprof
+LD_GOLD=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-ld.gold
+LD=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-ld
+NM=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-nm
+OBJCOPY=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-objcopy
+OBJDUMP=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-objdump
+RANLIB=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-ranlib
+READELF=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-readelf
+SIZE=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-size
+STRINGS=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-strings
+STRIP=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-strip
INFO: activate-gcc_linux-aarch64.sh made the following environmental changes:
-BUILD=aarch64-conda_cos7-linux-gnu
+build_alias=x86_64-conda-linux-gnu
+BUILD=x86_64-conda-linux-gnu
+CC_FOR_BUILD=$BUILD_PREFIX/bin/x86_64-conda-linux-gnu-cc
+CC=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-cc
+CFLAGS=-ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+CMAKE_ARGS=-DCMAKE_AR=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-ar -DCMAKE_CXX_COMPILER_AR=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc-ar -DCMAKE_C_COMPILER_AR=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc-ar -DCMAKE_RANLIB=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-ranlib -DCMAKE_CXX_COMPILER_RANLIB=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc-ranlib -DCMAKE_C_COMPILER_RANLIB=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc-ranlib -DCMAKE_LINKER=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-ld -DCMAKE_STRIP=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-strip -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_FIND_ROOT_PATH=$PREFIX;$BUILD_PREFIX/aarch64-conda-linux-gnu/sysroot -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_PROGRAM_PATH=$BUILD_PREFIX/bin;$PREFIX/bin -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64
+CMAKE_PREFIX_PATH=$PREFIX:$BUILD_PREFIX/aarch64-conda-linux-gnu/sysroot/usr
+CONDA_BUILD_SYSROOT=$BUILD_PREFIX/aarch64-conda-linux-gnu/sysroot
+_CONDA_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_aarch64_conda_cos7_linux_gnu
+CONDA_TOOLCHAIN_BUILD=x86_64-conda-linux-gnu
+CONDA_TOOLCHAIN_HOST=aarch64-conda-linux-gnu
+CPPFLAGS=-DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include
+CPP=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-cpp
+DEBUG_CFLAGS=-ftree-vectorize -fPIC -fstack-protector-all -fno-plt -Og -g -Wall -Wextra -fvar-tracking-assignments -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+DEBUG_CPPFLAGS=-D_DEBUG -D_FORTIFY_SOURCE=2 -Og -isystem $PREFIX/include
+GCC_AR=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc-ar
+GCC=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc
+GCC_NM=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc-nm
+GCC_RANLIB=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gcc-ranlib
+HOST=aarch64-conda-linux-gnu
+host_alias=aarch64-conda-linux-gnu
+LDFLAGS=-Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--allow-shlib-undefined -Wl,-rpath,$PREFIX/lib -Wl,-rpath-link,$PREFIX/lib -L$PREFIX/lib
INFO: activate-gfortran_linux-aarch64.sh made the following environmental changes:
+DEBUG_FFLAGS=-ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -ftree-vectorize -fPIC -fstack-protector-strong -pipe -Og -g -Wall -Wextra -fcheck=all -fbacktrace -fvar-tracking-assignments -pipe
+DEBUG_FORTRANFLAGS=-ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -ftree-vectorize -fPIC -fstack-protector-strong -pipe -Og -g -Wall -Wextra -fcheck=all -fbacktrace -fvar-tracking-assignments -pipe
+F77=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gfortran
+F90=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gfortran
+F95=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-f95
+FC=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gfortran
+FFLAGS=-ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+FORTRANFLAGS=-ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+GFORTRAN=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-gfortran
INFO: activate-gxx_linux-aarch64.sh made the following environmental changes:
+CXXFLAGS=-fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+CXX_FOR_BUILD=$BUILD_PREFIX/bin/x86_64-conda-linux-gnu-c++
+CXX=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-c++
+DEBUG_CXXFLAGS=-fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -ftree-vectorize -fPIC -fstack-protector-all -fno-plt -Og -g -Wall -Wextra -fvar-tracking-assignments -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/plplot-5.15.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+GXX=$BUILD_PREFIX/bin/aarch64-conda-linux-gnu-g++


Environment (conda list):

``` ## Package Plan ## environment location: /home/conda/feedstock_root/build_artifacts/plplot_1645567675583/_build_env The following NEW packages will be INSTALLED: _libgcc_mutex: 0.1-conda_forge conda-forge _openmp_mutex: 4.5-1_gnu conda-forge binutils_impl_linux-64: 2.36.1-h193b22a_2 conda-forge binutils_impl_linux-aarch64: 2.36.1-he24a65f_2 conda-forge binutils_linux-aarch64: 2.36-h38357a0_5 conda-forge bzip2: 1.0.8-h7f98852_4 conda-forge c-ares: 1.18.1-h7f98852_0 conda-forge ca-certificates: 2021.10.8-ha878542_0 conda-forge cmake: 3.22.2-h1021d11_0 conda-forge expat: 2.4.6-h27087fc_0 conda-forge gcc_impl_linux-64: 10.3.0-hf2f2afa_12 conda-forge gcc_impl_linux-aarch64: 10.3.0-h3721c86_12 conda-forge gcc_linux-aarch64: 10.3.0-hd47fc70_5 conda-forge gfortran_impl_linux-aarch64: 10.3.0-hc152c84_12 conda-forge gfortran_linux-aarch64: 10.3.0-hb3f9097_5 conda-forge gxx_impl_linux-64: 10.3.0-hf2f2afa_12 conda-forge gxx_impl_linux-aarch64: 10.3.0-h3721c86_12 conda-forge gxx_linux-aarch64: 10.3.0-hab23ad4_5 conda-forge kernel-headers_linux-64: 2.6.32-he073ed8_15 conda-forge kernel-headers_linux-aarch64: 4.18.0-h5b4a56d_13 conda-forge krb5: 1.19.2-h48eae69_3 conda-forge ld_impl_linux-64: 2.36.1-hea4e1c9_2 conda-forge ld_impl_linux-aarch64: 2.36.1-h4e2ea54_2 conda-forge libcurl: 7.81.0-h494985f_0 conda-forge libedit: 3.1.20191231-he28a2e2_2 conda-forge libev: 4.33-h516909a_1 conda-forge libgcc-devel_linux-64: 10.3.0-he6cfe16_12 conda-forge libgcc-devel_linux-aarch64: 10.3.0-hfaf2395_12 conda-forge libgcc-ng: 11.2.0-h1d223b6_12 conda-forge libgomp: 11.2.0-h1d223b6_12 conda-forge libnghttp2: 1.46.0-ha19adfc_0 conda-forge libsanitizer: 10.3.0-h26c7422_12 conda-forge libssh2: 1.10.0-ha35d2d1_2 conda-forge libstdcxx-devel_linux-64: 10.3.0-he6cfe16_12 conda-forge libstdcxx-devel_linux-aarch64: 10.3.0-hfaf2395_12 conda-forge libstdcxx-ng: 11.2.0-he4da1e4_12 conda-forge libuv: 1.43.0-h7f98852_0 conda-forge libzlib: 1.2.11-h36c2ea0_1013 conda-forge lz4-c: 1.9.3-h9c3ff4c_1 conda-forge ncurses: 6.3-h9c3ff4c_0 conda-forge ninja: 1.10.2-h4bd325d_1 conda-forge openssl: 3.0.0-h7f98852_2 conda-forge pkg-config: 0.29.2-h36c2ea0_1008 conda-forge rhash: 1.4.1-h7f98852_0 conda-forge sysroot_linux-64: 2.12-he073ed8_15 conda-forge sysroot_linux-aarch64: 2.17-h43d7e78_13 conda-forge tk: 8.6.12-h27826a3_0 conda-forge xz: 5.2.5-h516909a_1 conda-forge zlib: 1.2.11-h36c2ea0_1013 conda-forge zstd: 1.5.2-ha95c52a_0 conda-forge ```


Details about conda and system ( conda info ):

``` ++ conda info active environment : base active env location : /opt/conda shell level : 1 user config file : /home/conda/.condarc populated config files : /opt/conda/.condarc /home/conda/.condarc conda version : 4.11.0 conda-build version : 3.21.8 python version : 3.9.10.final.0 virtual packages : __linux=5.11.0=0 __glibc=2.17=0 __unix=0=0 __archspec=1=x86_64 base environment : /opt/conda (writable) conda av data dir : /opt/conda/etc/conda conda av metadata url : None channel URLs : https://conda.anaconda.org/conda-forge/linux-64 https://conda.anaconda.org/conda-forge/noarch package cache : /opt/conda/pkgs /home/conda/.conda/pkgs envs directories : /opt/conda/envs /home/conda/.conda/envs platform : linux-64 user-agent : conda/4.11.0 requests/2.27.1 CPython/3.9.10 Linux/5.11.0-1028-azure centos/7.9.2009 glibc/2.17 UID:GID : 1001:1001 netrc file : None offline mode : False ```
isuruf commented 2 years ago

Should be easy to add. I've never seen a package needing FC_FOR_BUILD and that's why I didn't add it.

awvwgk commented 2 years ago

I think it is set for OSX/Arm64, but for Linux cross-compilation I had to infer it myself for a couple of packages.

export FC_FOR_BUILD=${CC_FOR_BUILD//cc/gfortran}

Somewhat ugly, but worked so far.