diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml
index 875d996..58f5301 100755
--- a/.azure-pipelines/azure-pipelines-linux.yml
+++ b/.azure-pipelines/azure-pipelines-linux.yml
@@ -11,7 +11,11 @@ jobs:
linux_64_:
CONFIG: linux_64_
UPLOAD_PACKAGES: 'True'
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
+ linux_aarch64_:
+ CONFIG: linux_aarch64_
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9
timeoutInMinutes: 360
variables: {}
diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
index 7708e23..ac0bf38 100755
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ b/.azure-pipelines/azure-pipelines-osx.yml
@@ -5,7 +5,7 @@
jobs:
- job: osx
pool:
- vmImage: macOS-12
+ vmImage: macOS-13
strategy:
matrix:
osx_64_:
diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml
index d609fcd..13022dd 100755
--- a/.azure-pipelines/azure-pipelines-win.yml
+++ b/.azure-pipelines/azure-pipelines-win.yml
@@ -14,31 +14,17 @@ jobs:
timeoutInMinutes: 360
variables:
CONDA_BLD_PATH: D:\\bld\\
+ MINIFORGE_HOME: D:\Miniforge
UPLOAD_TEMP: D:\\tmp
steps:
- - task: PythonScript@0
- displayName: 'Download Miniforge'
- inputs:
- scriptSource: inline
- script: |
- import urllib.request
- url = 'https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Windows-x86_64.exe'
- path = r"$(Build.ArtifactStagingDirectory)/Miniforge.exe"
- urllib.request.urlretrieve(url, path)
-
- - script: |
- start /wait "" %BUILD_ARTIFACTSTAGINGDIRECTORY%\Miniforge.exe /InstallationType=JustMe /RegisterPython=0 /S /D=C:\Miniforge
- displayName: Install Miniforge
-
- - powershell: Write-Host "##vso[task.prependpath]C:\Miniforge\Scripts"
- displayName: Add conda to PATH
-
- script: |
call ".scripts\run_win_build.bat"
displayName: Run Windows build
env:
+ MINIFORGE_HOME: $(MINIFORGE_HOME)
+ CONDA_BLD_PATH: $(CONDA_BLD_PATH)
PYTHONUNBUFFERED: 1
CONFIG: $(CONFIG)
CI: azure
diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml
index 51d8853..f1ac79a 100644
--- a/.ci_support/linux_64_.yaml
+++ b/.ci_support/linux_64_.yaml
@@ -3,7 +3,7 @@ c_stdlib:
c_stdlib_version:
- '2.17'
cdt_name:
-- cos7
+- conda
channel_sources:
- conda-forge
channel_targets:
@@ -11,11 +11,8 @@ channel_targets:
cxx_compiler:
- gxx
cxx_compiler_version:
-- '12'
+- '13'
docker_image:
-- quay.io/condaforge/linux-anvil-cos7-x86_64
+- quay.io/condaforge/linux-anvil-x86_64:alma9
target_platform:
- linux-64
-zip_keys:
-- - c_stdlib_version
- - cdt_name
diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml
index 5c85b3a..df21f78 100644
--- a/.ci_support/linux_aarch64_.yaml
+++ b/.ci_support/linux_aarch64_.yaml
@@ -1,13 +1,9 @@
-BUILD:
-- aarch64-conda_cos7-linux-gnu
c_stdlib:
- sysroot
c_stdlib_version:
- '2.17'
-cdt_arch:
-- aarch64
cdt_name:
-- cos7
+- conda
channel_sources:
- conda-forge
channel_targets:
@@ -15,11 +11,8 @@ channel_targets:
cxx_compiler:
- gxx
cxx_compiler_version:
-- '12'
+- '13'
docker_image:
-- quay.io/condaforge/linux-anvil-aarch64
+- quay.io/condaforge/linux-anvil-aarch64:alma9
target_platform:
- linux-aarch64
-zip_keys:
-- - c_stdlib_version
- - cdt_name
diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml
index 9b919a9..8beeaa0 100644
--- a/.ci_support/osx_64_.yaml
+++ b/.ci_support/osx_64_.yaml
@@ -13,7 +13,7 @@ channel_targets:
cxx_compiler:
- clangxx
cxx_compiler_version:
-- '16'
+- '18'
macos_machine:
- x86_64-apple-darwin13.4.0
target_platform:
diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml
index e136e67..d402228 100644
--- a/.ci_support/osx_arm64_.yaml
+++ b/.ci_support/osx_arm64_.yaml
@@ -13,7 +13,7 @@ channel_targets:
cxx_compiler:
- clangxx
cxx_compiler_version:
-- '16'
+- '18'
macos_machine:
- arm64-apple-darwin20.0.0
target_platform:
diff --git a/.gitignore b/.gitignore
index 179afe5..bb38536 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,6 @@
/build_artifacts
*.pyc
+
+# Rattler-build's artifacts are in `output` when not specifying anything.
+/output
diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh
index ba4b251..827a29f 100755
--- a/.scripts/build_steps.sh
+++ b/.scripts/build_steps.sh
@@ -31,18 +31,20 @@ pkgs_dirs:
solver: libmamba
CONDARC
+mv /opt/conda/conda-meta/history /opt/conda/conda-meta/history.$(date +%Y-%m-%d-%H-%M-%S)
+echo > /opt/conda/conda-meta/history
+micromamba install --root-prefix ~/.conda --prefix /opt/conda \
+ --yes --override-channels --channel conda-forge --strict-channel-priority \
+ pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1"
export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1
-mamba install --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \
- pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1"
-mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \
- pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1"
-
# set up the condarc
setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"
source run_conda_forge_build_setup
+
+
# make the build number clobber
make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"
@@ -74,8 +76,8 @@ else
--extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}"
( startgroup "Inspecting artifacts" ) 2> /dev/null
- # inspect_artifacts was only added in conda-forge-ci-setup 4.6.0
- command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts || echo "inspect_artifacts needs conda-forge-ci-setup >=4.6.0"
+ # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4
+ command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir "${RECIPE_ROOT}" -m "${CONFIG_FILE}" || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4"
( endgroup "Inspecting artifacts" ) 2> /dev/null
( startgroup "Validating outputs" ) 2> /dev/null
diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh
index ba0c879..0e3c394 100755
--- a/.scripts/run_osx_build.sh
+++ b/.scripts/run_osx_build.sh
@@ -6,29 +6,41 @@ source .scripts/logging_utils.sh
set -xe
-MINIFORGE_HOME=${MINIFORGE_HOME:-${HOME}/miniforge3}
-
-( startgroup "Installing a fresh version of Miniforge" ) 2> /dev/null
-
-MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download"
-MINIFORGE_FILE="Mambaforge-MacOSX-$(uname -m).sh"
-curl -L -O "${MINIFORGE_URL}/${MINIFORGE_FILE}"
-rm -rf ${MINIFORGE_HOME}
-bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME}
-
-( endgroup "Installing a fresh version of Miniforge" ) 2> /dev/null
+MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}"
+MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash
+export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}"
+
+( startgroup "Provisioning base env with micromamba" ) 2> /dev/null
+MICROMAMBA_VERSION="1.5.10-0"
+if [[ "$(uname -m)" == "arm64" ]]; then
+ osx_arch="osx-arm64"
+else
+ osx_arch="osx-64"
+fi
+MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}"
+MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)"
+echo "Downloading micromamba ${MICROMAMBA_VERSION}"
+micromamba_exe="$(mktemp -d)/micromamba"
+curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}"
+chmod +x "${micromamba_exe}"
+echo "Creating environment"
+"${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \
+ --channel conda-forge \
+ pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1"
+echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}"
+mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}"
+echo "Cleaning up micromamba"
+rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true
+( endgroup "Provisioning base env with micromamba" ) 2> /dev/null
( startgroup "Configuring conda" ) 2> /dev/null
-
-source ${MINIFORGE_HOME}/etc/profile.d/conda.sh
+echo "Activating environment"
+source "${MINIFORGE_HOME}/etc/profile.d/conda.sh"
conda activate base
export CONDA_SOLVER="libmamba"
export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1
-mamba install --update-specs --quiet --yes --channel conda-forge --strict-channel-priority \
- pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1"
-mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \
- pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1"
+
@@ -88,8 +100,8 @@ else
( startgroup "Inspecting artifacts" ) 2> /dev/null
- # inspect_artifacts was only added in conda-forge-ci-setup 4.6.0
- command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts || echo "inspect_artifacts needs conda-forge-ci-setup >=4.6.0"
+ # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4
+ command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir ./recipe -m ./.ci_support/${CONFIG}.yaml || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4"
( endgroup "Inspecting artifacts" ) 2> /dev/null
( startgroup "Validating outputs" ) 2> /dev/null
diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat
index 65650bf..283e143 100755
--- a/.scripts/run_win_build.bat
+++ b/.scripts/run_win_build.bat
@@ -3,30 +3,51 @@
:: changes to this script, consider a proposal to conda-smithy so that other feedstocks can also
:: benefit from the improvement.
-:: Note: we assume a Miniforge installation is available
-
:: INPUTS (required environment variables)
:: CONFIG: name of the .ci_support/*.yaml file for this job
:: CI: azure, github_actions, or unset
+:: MINIFORGE_HOME: where to install the base conda environment
:: UPLOAD_PACKAGES: true or false
:: UPLOAD_ON_BRANCH: true or false
setlocal enableextensions enabledelayedexpansion
+FOR %%A IN ("%~dp0.") DO SET "REPO_ROOT=%%~dpA"
+if "%MINIFORGE_HOME%"=="" set "MINIFORGE_HOME=%USERPROFILE%\Miniforge3"
+:: Remove trailing backslash, if present
+if "%MINIFORGE_HOME:~-1%"=="\" set "MINIFORGE_HOME=%MINIFORGE_HOME:~0,-1%"
+call :start_group "Provisioning base env with micromamba"
+set "MAMBA_ROOT_PREFIX=%MINIFORGE_HOME%-micromamba-%RANDOM%"
+set "MICROMAMBA_VERSION=1.5.10-0"
+set "MICROMAMBA_URL=https://github.com/mamba-org/micromamba-releases/releases/download/%MICROMAMBA_VERSION%/micromamba-win-64"
+set "MICROMAMBA_TMPDIR=%TMP%\micromamba-%RANDOM%"
+set "MICROMAMBA_EXE=%MICROMAMBA_TMPDIR%\micromamba.exe"
+
+echo Downloading micromamba %MICROMAMBA_VERSION%
+if not exist "%MICROMAMBA_TMPDIR%" mkdir "%MICROMAMBA_TMPDIR%"
+certutil -urlcache -split -f "%MICROMAMBA_URL%" "%MICROMAMBA_EXE%"
+if !errorlevel! neq 0 exit /b !errorlevel!
+
+echo Creating environment
+call "%MICROMAMBA_EXE%" create --yes --root-prefix "%MAMBA_ROOT_PREFIX%" --prefix "%MINIFORGE_HOME%" ^
+ --channel conda-forge ^
+ pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1"
+if !errorlevel! neq 0 exit /b !errorlevel!
+echo Removing %MAMBA_ROOT_PREFIX%
+del /S /Q "%MAMBA_ROOT_PREFIX%" >nul
+del /S /Q "%MICROMAMBA_TMPDIR%" >nul
+call :end_group
+
call :start_group "Configuring conda"
:: Activate the base conda environment
-call activate base
+echo Activating environment
+call "%MINIFORGE_HOME%\Scripts\activate.bat"
:: Configure the solver
set "CONDA_SOLVER=libmamba"
if !errorlevel! neq 0 exit /b !errorlevel!
set "CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1"
-:: Provision the necessary dependencies to build the recipe later
-echo Installing dependencies
-mamba.exe install "python=3.10" pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -c conda-forge --strict-channel-priority --yes
-if !errorlevel! neq 0 exit /b !errorlevel!
-
:: Set basic configuration
echo Setting up configuration
setup_conda_rc .\ ".\recipe" .\.ci_support\%CONFIG%.yaml
@@ -48,7 +69,7 @@ if NOT [%HOST_PLATFORM%] == [%BUILD_PLATFORM%] (
)
if NOT [%flow_run_id%] == [] (
- set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% remote_url=%remote_url% sha=%sha%"
+ set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% remote_url=%remote_url% sha=%sha%"
)
call :end_group
@@ -59,8 +80,8 @@ conda-build.exe "recipe" -m .ci_support\%CONFIG%.yaml --suppress-variables %EXTR
if !errorlevel! neq 0 exit /b !errorlevel!
call :start_group "Inspecting artifacts"
-:: inspect_artifacts was only added in conda-forge-ci-setup 4.6.0
-WHERE inspect_artifacts >nul 2>nul && inspect_artifacts || echo "inspect_artifacts needs conda-forge-ci-setup >=4.6.0"
+:: inspect_artifacts was only added in conda-forge-ci-setup 4.9.4
+WHERE inspect_artifacts >nul 2>nul && inspect_artifacts --recipe-dir ".\recipe" -m .ci_support\%CONFIG%.yaml || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4"
call :end_group
:: Prepare some environment variables for the upload step
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 18ca8e6..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# This file was generated automatically from conda-smithy. To update this configuration,
-# update the conda-forge.yml and/or the recipe/meta.yaml.
-
-language: shell
-
-
-
-jobs:
- include:
- - env: CONFIG=linux_aarch64_ UPLOAD_PACKAGES=True PLATFORM=linux-aarch64 DOCKER_IMAGE=quay.io/condaforge/linux-anvil-aarch64
- os: linux
- arch: arm64
- dist: focal
-
-script:
- - export CI=travis
- - export GIT_BRANCH="$TRAVIS_BRANCH"
- - export flow_run_id="travis_$TRAVIS_JOB_ID"
- - export sha="$TRAVIS_COMMIT"
- - export remote_url="https://github.com/$TRAVIS_REPO_SLUG"
- - export FEEDSTOCK_NAME=$(basename ${TRAVIS_REPO_SLUG})
- - if [[ "${TRAVIS_PULL_REQUEST:-}" == "false" ]]; then export IS_PR_BUILD="False"; else export IS_PR_BUILD="True"; fi
-
-
- - if [[ ${PLATFORM} =~ .*linux.* ]]; then CONDA_FORGE_DOCKER_RUN_ARGS="--network=host --security-opt=seccomp=unconfined" ./.scripts/run_docker_build.sh; fi
\ No newline at end of file
diff --git a/README.md b/README.md
index 800ffb1..54f487c 100644
--- a/README.md
+++ b/README.md
@@ -15,14 +15,7 @@ Current build status
====================
-
- Travis |
-
-
-
-
- |
-
+
Azure |
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index e5306da..eff4ad6 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -2,7 +2,32 @@
# update the conda-forge.yml and/or the recipe/meta.yaml.
# -*- mode: yaml -*-
-jobs:
- - template: ./.azure-pipelines/azure-pipelines-linux.yml
- - template: ./.azure-pipelines/azure-pipelines-osx.yml
- - template: ./.azure-pipelines/azure-pipelines-win.yml
\ No newline at end of file
+stages:
+- stage: Check
+ jobs:
+ - job: Skip
+ pool:
+ vmImage: 'ubuntu-22.04'
+ variables:
+ DECODE_PERCENTS: 'false'
+ RET: 'true'
+ steps:
+ - checkout: self
+ fetchDepth: '2'
+ - bash: |
+ git_log=`git log --max-count=1 --skip=1 --pretty=format:"%B" | tr "\n" " "`
+ echo "##vso[task.setvariable variable=log]$git_log"
+ displayName: Obtain commit message
+ - bash: echo "##vso[task.setvariable variable=RET]false"
+ condition: and(eq(variables['Build.Reason'], 'PullRequest'), or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]')))
+ displayName: Skip build?
+ - bash: echo "##vso[task.setvariable variable=start_main;isOutput=true]$RET"
+ name: result
+ displayName: Export result
+- stage: Build
+ condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true'))
+ dependsOn: Check
+ jobs:
+ - template: ./.azure-pipelines/azure-pipelines-linux.yml
+ - template: ./.azure-pipelines/azure-pipelines-osx.yml
+ - template: ./.azure-pipelines/azure-pipelines-win.yml
\ No newline at end of file
diff --git a/build-locally.py b/build-locally.py
index e0d408d..c4a56c6 100755
--- a/build-locally.py
+++ b/build-locally.py
@@ -1,13 +1,16 @@
-#!/usr/bin/env python3
+#!/bin/sh
+"""exec" "python3" "$0" "$@" #""" # fmt: off # fmt: on
#
# This file has been generated by conda-smithy in order to build the recipe
# locally.
#
-import os
+# The line above this comment is a bash / sh / zsh guard
+# to stop people from running it with the wrong interpreter
import glob
+import os
+import platform
import subprocess
from argparse import ArgumentParser
-import platform
def setup_environment(ns):
@@ -23,6 +26,13 @@ def setup_environment(ns):
os.path.dirname(__file__), "miniforge3"
)
+ # The default cache location might not be writable using docker on macOS.
+ if ns.config.startswith("linux") and platform.system() == "Darwin":
+ os.environ["CONDA_FORGE_DOCKER_RUN_ARGS"] = (
+ os.environ.get("CONDA_FORGE_DOCKER_RUN_ARGS", "")
+ + " -e RATTLER_CACHE_DIR=/tmp/rattler_cache"
+ )
+
def run_docker_build(ns):
script = ".scripts/run_docker_build.sh"
diff --git a/conda-forge.yml b/conda-forge.yml
index d1212e5..bb30507 100644
--- a/conda-forge.yml
+++ b/conda-forge.yml
@@ -1,5 +1,4 @@
build_platform: {osx_arm64: osx_64}
-conda_forge_output_validation: true
provider: {linux_aarch64: default, win: azure}
conda_build:
pkg_format: '2'
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index 1efa01b..165e5e2 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -1,5 +1,5 @@
{% set name = "cpp-argparse" %}
-{% set version = "3.1" %}
+{% set version = "3.2" %}
package:
name: {{ name|lower }}
@@ -7,7 +7,7 @@ package:
source:
url: https://github.com/p-ranav/argparse/archive/v{{ version }}.tar.gz
- sha256: d01733552ca4a18ab501ae8b8be878131baa32e89090fafdeef018ebfa4c6e46
+ sha256: 9dcb3d8ce0a41b2a48ac8baa54b51a9f1b6a2c52dd374e28cc713bab0568ec98
build:
number: 0