Skip to content

Build scripts#

The build.sh file is the build script for Linux and macOS and build.bat is the build script for Windows. These scripts contain the logic that carries out your build steps. Anything that your build script copies into the $PREFIX or %PREFIX% folder will be included in your output package.

For example, this build.sh:

mkdir -p $PREFIX/bin
cp $RECIPE_DIR/my_script_with_recipe.sh $PREFIX/bin/super-cool-script.sh

There are many environment variables defined for you to use in build.sh and build.bat. Please see environment variables for more information.

build.sh and build.bat are optional. You can instead use the build/script key in your recipe.yaml, with each value being either a string command or a list of string commands. Any commands you put there must be able to run on every platform for which you build. For example, you can't use the cp command because cmd.exe won't understand it on Windows.

build.sh is run with bash and build.bat is run with cmd.exe.

Environment variables#

Environment variables set during the build process#

During the build process, the following environment variables are set, on Windows with build.bat and on macOS and Linux with build.sh. By default, these are the only variables available to your build script. Unless otherwise noted, no variables are inherited from the shell environment in which you invoke conda-build. To override this behavior, see :ref:inherited-env-vars.

ARCH
Either 32 or 64, to specify whether the build is 32-bit or 64-bit. The value depends on the ARCH environment variable and defaults to the architecture the interpreter running conda was compiled with.
CMAKE_GENERATOR
The CMake generator string for the current build environment. On Linux systems, this is always Unix Makefiles. On Windows, it is generated according to the Visual Studio version activated at build time, for example, Visual Studio 9 2008 Win64.
CONDA_BUILD=1
Always set to indicate that the conda-build process is running.
CPU_COUNT
Represents the number of CPUs on the system.
SHLIB_EXT
Denotes the shared library extension specific to the operating system (e.g. .so for Linux, .dylib for macOS, and .dll for Windows).
HTTP_PROXY
Inherited from the user's shell environment, specifying the HTTP proxy settings.
HTTPS_PROXY
Similar to HTTP_PROXY, this is inherited from the user's shell environment and specifies the HTTPS proxy settings.
LANG
Inherited from the user's shell environment, defining the system language and locale settings.
MAKEFLAGS
Inherited from the user's shell environment. This can be used to set additional arguments for the make command, such as -j2 to utilize 2 CPU cores for building the recipe.
PY_VER
Specifies the Python version against which the build is occurring. This can be modified with a variant_config.yaml file.
PATH
Inherited from the user's shell environment and augmented with the activated host and build prefixes.
PREFIX
The build prefix to which the build script should install the software.
PKG_BUILDNUM
Indicates the build number of the package currently being built.
PKG_NAME
The name of the package that is being built.
PKG_VERSION
The version of the package currently under construction.
PKG_BUILD_STRING
The complete build string of the package being built, including the hash (e.g. py311h21422ab_0).
PKG_HASH
Represents the hash of the package being built, excluding the leading 'h' (e.g. 21422ab). This is applicable from conda-build 3.0 onwards.
PYTHON
The path to the Python executable in the host prefix. Python is installed in the host prefix only when it is listed as a host requirement.
R
The path to the R executable in the build prefix. R is installed in the build prefix only when it is listed as a build requirement.
RECIPE_DIR
The directory where the recipe is located.
SP_DIR
The location of Python's site-packages, where Python libraries are installed.
SRC_DIR
The path to where the source code is unpacked or cloned. If the source file is not a recognized archive format, this directory contains a copy of the source file.
STDLIB_DIR
The location of Python's standard library.
build_platform
Represents the native subdirectory of the conda executable, indicating the platform for which the build is occurring.

Removed from conda-build are: - NPY_VER - PY3K

Windows#

Unix-style packages on Windows are built in a special Library directory under the build prefix. The environment variables listed in the following table are defined only on Windows.

Variable Description
LIBRARY_BIN <build prefix>\Library\bin.
LIBRARY_INC <build prefix>\Library\include.
LIBRARY_LIB <build prefix>\Library\lib.
LIBRARY_PREFIX <build prefix>\Library.
SCRIPTS <build prefix>\Scripts.

Not yet supported in rattler-build:

  • CYGWIN_PREFIX
  • VS_MAJOR
  • VS_VERSION
  • VS_YEAR

Additionally, the following variables are forwarded from the environment:

  • ALLUSERSPROFILE
  • APPDATA
  • CommonProgramFiles
  • CommonProgramFiles(x86)
  • CommonProgramW6432
  • COMPUTERNAME
  • ComSpec
  • HOMEDRIVE
  • HOMEPATH
  • LOCALAPPDATA
  • LOGONSERVER
  • NUMBER_OF_PROCESSORS
  • PATHEXT
  • ProgramData
  • ProgramFiles
  • ProgramFiles(x86)
  • ProgramW6432
  • PROMPT
  • PSModulePath
  • PUBLIC
  • SystemDrive
  • SystemRoot
  • TEMP
  • TMP
  • USERDOMAIN
  • USERNAME
  • USERPROFILE
  • windir
  • PROCESSOR_ARCHITEW6432
  • PROCESSOR_ARCHITECTURE
  • PROCESSOR_IDENTIFIER

Unix#

The environment variables listed in the following table are defined only on macOS and Linux.

Variable Description
HOME Standard $HOME environment variable.
PKG_CONFIG_PATH Path to pkgconfig directory, defaults to `$PREFIX/lib/pkgconfig
SSL_CERT_FILE Path to SSL_CERT_FILE file.
CFLAGS Empty, can be forwarded from env to set additional arguments to C compiler.
CXXFLAGS Same as CFLAGS for C++ compiler.
LDFLAGS Empty, additional flags to be passed to the linker when linking object files into an executable or shared object.

macOS#

The environment variables listed in the following table are defined only on macOS.

Variable Description
MACOSX_DEPLOYMENT_TARGET Same as the Anaconda Python macOS deployment target. Currently 10.9 for intel 32- and 64bit macOS, and 11.0 for arm64.
OSX_ARCH i386 or x86_64 or arm64, depending on the target platform

Linux#

The environment variable listed in the following table is defined only on Linux.

Variable Description
LD_RUN_PATH Defaults to <build prefix>/lib.
QEMU_LD_PREFIX The prefix used by QEMU's user mode emulation for library paths.
QEMU_UNAME Set qemu uname release string to 'uname'.
DEJAGNU The path to the dejagnu testing framework used by the GCC test suite.
DISPLAY The X11 display to use for graphical applications.
BUILD Target triple ({build_arch}-conda_{build_distro}-linux-gnu) where build_distro is one of cos6 or cos7, for Centos 6 or 7