├── .github └── CODEOWNERS ├── recipe ├── macos-codesign │ ├── macos-show-caveats.sh │ ├── gdb-entitlement.xml │ ├── macos-codesign-gdb.sh │ ├── macos-setup-codesign.sh.patch │ └── macos-setup-codesign.sh ├── testing │ ├── process_to_debug.py │ └── hello.c ├── activate.sh ├── README.md ├── 0003-darwin-nat.c-Add-missing-include.patch ├── 0001-gdb-darwin-remove-not-so-harmless-spurious-call-to-w.patch ├── 0002-gdb-darwin-skip-over-WIFSTOPPED-wait4-status.patch ├── meta.yaml ├── build.sh ├── post-link.sh └── run_test.sh ├── conda-forge.yml ├── .ci_support ├── README ├── linux_64_python3.13.____cp313.yaml ├── linux_64_python3.14.____cp314.yaml ├── linux_64_python3.10.____cpython.yaml ├── linux_64_python3.11.____cpython.yaml ├── linux_64_python3.12.____cpython.yaml ├── linux_aarch64_python3.13.____cp313.yaml ├── linux_aarch64_python3.14.____cp314.yaml ├── linux_ppc64le_python3.13.____cp313.yaml ├── linux_ppc64le_python3.14.____cp314.yaml ├── linux_aarch64_python3.10.____cpython.yaml ├── linux_aarch64_python3.11.____cpython.yaml ├── linux_aarch64_python3.12.____cpython.yaml ├── linux_ppc64le_python3.10.____cpython.yaml ├── linux_ppc64le_python3.11.____cpython.yaml ├── linux_ppc64le_python3.12.____cpython.yaml ├── osx_64_python3.13.____cp313.yaml ├── osx_64_python3.14.____cp314.yaml ├── osx_64_python3.10.____cpython.yaml ├── osx_64_python3.11.____cpython.yaml ├── osx_64_python3.12.____cpython.yaml ├── osx_arm64_python3.13.____cp313.yaml ├── osx_arm64_python3.14.____cp314.yaml ├── osx_arm64_python3.10.____cpython.yaml ├── osx_arm64_python3.11.____cpython.yaml ├── osx_arm64_python3.12.____cpython.yaml └── migrations │ └── python314.yaml ├── .circleci └── config.yml ├── .gitattributes ├── .gitignore ├── .scripts ├── logging_utils.sh ├── build_steps.sh ├── run_docker_build.sh └── run_osx_build.sh ├── azure-pipelines.yml ├── LICENSE.txt ├── .azure-pipelines ├── azure-pipelines-osx.yml └── azure-pipelines-linux.yml └── README.md /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @gqmelo @jmakovicka @marcelotrevisani @matthiasdiener @phil-blain -------------------------------------------------------------------------------- /recipe/macos-codesign/macos-show-caveats.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cat $CONDA_PREFIX/etc/gdb/.messages.txt 4 | -------------------------------------------------------------------------------- /recipe/testing/process_to_debug.py: -------------------------------------------------------------------------------- 1 | import os 2 | import signal 3 | os.kill(os.getpid(), signal.SIGSEGV) 4 | -------------------------------------------------------------------------------- /recipe/testing/hello.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | printf("Hello, World!\n"); 4 | return 0; 5 | } 6 | -------------------------------------------------------------------------------- /recipe/activate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check gdb is codesigned 4 | if ! /usr/bin/codesign -vv $CONDA_PREFIX/bin/gdb > /dev/null 2>&1; then 5 | echo "Warning: GDB is not codesigned." 6 | cat $CONDA_PREFIX/etc/gdb/.messages.txt 7 | fi 8 | -------------------------------------------------------------------------------- /conda-forge.yml: -------------------------------------------------------------------------------- 1 | build_platform: 2 | osx_arm64: osx_64 3 | conda_build: 4 | pkg_format: '2' 5 | conda_forge_output_validation: true 6 | github: 7 | branch_name: main 8 | tooling_branch_name: main 9 | provider: 10 | linux_aarch64: default 11 | linux_ppc64le: default 12 | test: native_and_emulated 13 | -------------------------------------------------------------------------------- /recipe/macos-codesign/gdb-entitlement.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.cs.debugger 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.ci_support/README: -------------------------------------------------------------------------------- 1 | This file is automatically generated by conda-smithy. If any 2 | particular build configuration is expected, but it is not found, 3 | please make sure all dependencies are satisfiable. To add/modify any 4 | matrix elements, you should create/change conda-smithy's input 5 | recipe/conda_build_config.yaml and re-render the recipe, rather than 6 | editing these files directly. 7 | -------------------------------------------------------------------------------- /recipe/README.md: -------------------------------------------------------------------------------- 1 | Note: the macOS build now uses Azure as Travis usage for macOS was discontinued by conda-forge. 2 | Most of the tests are skipped on macOS as GDB hangs at program startup on macOS 10.14+ the first time the debugee is ran (at least on CI). 3 | 4 | This is probably a manifestation of this bug : 5 | https://sourceware.org/bugzilla/show_bug.cgi?id=24069 6 | 7 | Note also that building this recipe locally on macOS will fail in the test phase because the GDB executable will not be codesigned[2] (unless your user has passwordless `sudo` permissions). 8 | 9 | [2]: https://sourceware.org/gdb/wiki/PermissionsDarwin#Sign_and_entitle_the_gdb_binary 10 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: jinja-yaml -*- 4 | 5 | version: 2 6 | 7 | jobs: 8 | build: 9 | working_directory: ~/test 10 | machine: 11 | image: ubuntu-2004:current 12 | steps: 13 | - run: 14 | # The Circle-CI build should not be active, but if this is not true for some reason, do a fast finish. 15 | command: exit 0 16 | 17 | workflows: 18 | version: 2 19 | build_and_test: 20 | jobs: 21 | - build: 22 | filters: 23 | branches: 24 | ignore: 25 | - /.*/ 26 | -------------------------------------------------------------------------------- /recipe/0003-darwin-nat.c-Add-missing-include.patch: -------------------------------------------------------------------------------- 1 | From 06bca63c29e82f05e58ef0a5bd5c535f7f1ab41f Mon Sep 17 00:00:00 2001 2 | From: Jindrich Makovicka 3 | Date: Mon, 22 Dec 2025 16:22:08 +0100 4 | Subject: [PATCH] darwin-nat.c: Add missing include 5 | 6 | --- 7 | gdb/darwin-nat.c | 1 + 8 | 1 file changed, 1 insertion(+) 9 | 10 | diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c 11 | index 665e617fd2f..47a8c3e2752 100644 12 | --- a/gdb/darwin-nat.c 13 | +++ b/gdb/darwin-nat.c 14 | @@ -64,6 +64,7 @@ 15 | 16 | #include "darwin-nat.h" 17 | #include "filenames.h" 18 | +#include "gdbsupport/common-inferior.h" 19 | #include "gdbsupport/filestuff.h" 20 | #include "gdbsupport/gdb_unlinker.h" 21 | #include "gdbsupport/pathstuff.h" 22 | -- 23 | 2.51.0 24 | 25 | -------------------------------------------------------------------------------- /recipe/macos-codesign/macos-codesign-gdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu 4 | 5 | # macOS specificities: codesign the GDB executable 6 | # Generate code-signing certificate (needs `sudo`) 7 | $CONDA_PREFIX/bin/macos-setup-codesign.sh 8 | # unset a variable set by old versions of the clang activation script that prevents using `/usr/bin/codesign` 9 | # (in case old builds of conda-forge compilers are installed in the installation environment) 10 | # see https://github.com/conda-forge/clang-compiler-activation-feedstock/issues/18 11 | # and https://github.com/conda-forge/clang-compiler-activation-feedstock/pull/19 12 | unset CODESIGN_ALLOCATE 13 | # Sign the GDB binary 14 | /usr/bin/codesign --entitlements $CONDA_PREFIX/etc/gdb/gdb-entitlement.xml --force --sign gdb_codesign $CONDA_PREFIX/bin/gdb 15 | -------------------------------------------------------------------------------- /.ci_support/linux_64_python3.13.____cp313.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-x86_64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.13.* *_cp313 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_64_python3.14.____cp314.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-x86_64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.14.* *_cp314 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_64_python3.10.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-x86_64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.10.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_64_python3.11.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-x86_64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.11.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_64_python3.12.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-x86_64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.12.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_aarch64_python3.13.____cp313.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-aarch64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.13.* *_cp313 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-aarch64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_aarch64_python3.14.____cp314.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-aarch64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.14.* *_cp314 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-aarch64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_ppc64le_python3.13.____cp313.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-ppc64le:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.13.* *_cp313 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-ppc64le 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_ppc64le_python3.14.____cp314.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-ppc64le:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.14.* *_cp314 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-ppc64le 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_aarch64_python3.10.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-aarch64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.10.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-aarch64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_aarch64_python3.11.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-aarch64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.11.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-aarch64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_aarch64_python3.12.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-aarch64:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.12.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-aarch64 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_ppc64le_python3.10.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-ppc64le:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.10.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-ppc64le 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_ppc64le_python3.11.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-ppc64le:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.11.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-ppc64le 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /.ci_support/linux_ppc64le_python3.12.____cpython.yaml: -------------------------------------------------------------------------------- 1 | c_compiler: 2 | - gcc 3 | c_compiler_version: 4 | - '14' 5 | c_stdlib: 6 | - sysroot 7 | c_stdlib_version: 8 | - '2.17' 9 | channel_sources: 10 | - conda-forge 11 | channel_targets: 12 | - conda-forge main 13 | cxx_compiler: 14 | - gxx 15 | cxx_compiler_version: 16 | - '14' 17 | docker_image: 18 | - quay.io/condaforge/linux-anvil-ppc64le:alma9 19 | fortran_compiler: 20 | - gfortran 21 | fortran_compiler_version: 22 | - '14' 23 | gmp: 24 | - '6' 25 | libiconv: 26 | - '1' 27 | liblzma_devel: 28 | - '5' 29 | mpfr: 30 | - '4' 31 | ncurses: 32 | - '6' 33 | pin_run_as_build: 34 | python: 35 | min_pin: x.x 36 | max_pin: x.x 37 | python: 38 | - 3.12.* *_cpython 39 | readline: 40 | - '8' 41 | target_platform: 42 | - linux-ppc64le 43 | zip_keys: 44 | - - c_compiler_version 45 | - cxx_compiler_version 46 | - fortran_compiler_version 47 | zlib: 48 | - '1' 49 | zstd: 50 | - '1.5' 51 | -------------------------------------------------------------------------------- /recipe/macos-codesign/macos-setup-codesign.sh.patch: -------------------------------------------------------------------------------- 1 | --- macos-setup-codesign.sh 2020-06-13 20:43:24.000000000 -0400 2 | +++ recipe/macos-codesign/macos-setup-codesign.sh 2020-06-13 20:47:52.000000000 -0400 3 | @@ -1,9 +1,11 @@ 4 | #!/bin/bash 5 | 6 | -CERT="lldb_codesign" 7 | +# This script is copied from https://github.com/llvm/llvm-project/blob/master/lldb/scripts/macos-setup-codesign.sh 8 | + 9 | +CERT="gdb_codesign" 10 | 11 | function error() { 12 | - echo error: "$@" 13 | + echo error: "$@" 1>&2 14 | exit 1 15 | } 16 | 17 | @@ -36,7 +38,7 @@ 18 | extendedKeyUsage = critical,codeSigning 19 | EOF 20 | 21 | -echo Generating and installing lldb_codesign certificate 22 | +echo Generating and installing gdb_codesign certificate 23 | 24 | # Generate a new certificate 25 | openssl req -new -newkey rsa:2048 -x509 -days 3650 -nodes -config "$TMPDIR/$CERT.tmpl" -extensions codesign_reqext -batch -out "$TMPDIR/$CERT.cer" -keyout "$TMPDIR/$CERT.key" > /dev/null 2>&1 26 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.patch binary 4 | *.diff binary 5 | meta.yaml text eol=lf 6 | build.sh text eol=lf 7 | bld.bat text eol=crlf 8 | 9 | # github helper pieces to make some files not show up in diffs automatically 10 | .azure-pipelines/* linguist-generated=true 11 | .circleci/* linguist-generated=true 12 | .ci_support/README linguist-generated=true 13 | .drone/* linguist-generated=true 14 | .drone.yml linguist-generated=true 15 | .github/* linguist-generated=true 16 | .travis/* linguist-generated=true 17 | .appveyor.yml linguist-generated=true 18 | .gitattributes linguist-generated=true 19 | .gitignore linguist-generated=true 20 | .travis.yml linguist-generated=true 21 | .scripts/* linguist-generated=true 22 | .woodpecker.yml linguist-generated=true 23 | /LICENSE.txt linguist-generated=true 24 | /README.md linguist-generated=true 25 | azure-pipelines.yml linguist-generated=true 26 | build-locally.py linguist-generated=true 27 | pixi.toml linguist-generated=true 28 | shippable.yml linguist-generated=true 29 | -------------------------------------------------------------------------------- /.ci_support/osx_64_python3.13.____cp313.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '10.13' 3 | MACOSX_SDK_VERSION: 4 | - '10.13' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '10.13' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - x86_64-apple-darwin13.4.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.13.* *_cp313 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_64_python3.14.____cp314.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '10.13' 3 | MACOSX_SDK_VERSION: 4 | - '10.13' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '10.13' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - x86_64-apple-darwin13.4.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.14.* *_cp314 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # User content belongs under recipe/. 2 | # Feedstock configuration goes in `conda-forge.yml` 3 | # Everything else is managed by the conda-smithy rerender process. 4 | # Please do not modify 5 | 6 | # Ignore all files and folders in root 7 | * 8 | !/conda-forge.yml 9 | 10 | # Don't ignore any files/folders if the parent folder is 'un-ignored' 11 | # This also avoids warnings when adding an already-checked file with an ignored parent. 12 | !/**/ 13 | # Don't ignore any files/folders recursively in the following folders 14 | !/recipe/** 15 | !/.ci_support/** 16 | 17 | # Since we ignore files/folders recursively, any folders inside 18 | # build_artifacts gets ignored which trips some build systems. 19 | # To avoid that we 'un-ignore' all files/folders recursively 20 | # and only ignore the root build_artifacts folder. 21 | !/build_artifacts/** 22 | /build_artifacts 23 | 24 | *.pyc 25 | 26 | # Rattler-build's artifacts are in `output` when not specifying anything. 27 | /output 28 | # Pixi's configuration 29 | .pixi 30 | -------------------------------------------------------------------------------- /.ci_support/osx_64_python3.10.____cpython.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '10.13' 3 | MACOSX_SDK_VERSION: 4 | - '10.13' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '10.13' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - x86_64-apple-darwin13.4.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.10.* *_cpython 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_64_python3.11.____cpython.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '10.13' 3 | MACOSX_SDK_VERSION: 4 | - '10.13' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '10.13' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - x86_64-apple-darwin13.4.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.11.* *_cpython 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_64_python3.12.____cpython.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '10.13' 3 | MACOSX_SDK_VERSION: 4 | - '10.13' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '10.13' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - x86_64-apple-darwin13.4.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.12.* *_cpython 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_arm64_python3.13.____cp313.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '11.0' 3 | MACOSX_SDK_VERSION: 4 | - '11.0' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '11.0' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - arm64-apple-darwin20.0.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.13.* *_cp313 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-arm64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_arm64_python3.14.____cp314.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '11.0' 3 | MACOSX_SDK_VERSION: 4 | - '11.0' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '11.0' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - arm64-apple-darwin20.0.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.14.* *_cp314 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-arm64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_arm64_python3.10.____cpython.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '11.0' 3 | MACOSX_SDK_VERSION: 4 | - '11.0' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '11.0' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - arm64-apple-darwin20.0.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.10.* *_cpython 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-arm64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_arm64_python3.11.____cpython.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '11.0' 3 | MACOSX_SDK_VERSION: 4 | - '11.0' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '11.0' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - arm64-apple-darwin20.0.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.11.* *_cpython 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-arm64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.ci_support/osx_arm64_python3.12.____cpython.yaml: -------------------------------------------------------------------------------- 1 | MACOSX_DEPLOYMENT_TARGET: 2 | - '11.0' 3 | MACOSX_SDK_VERSION: 4 | - '11.0' 5 | c_compiler: 6 | - clang 7 | c_compiler_version: 8 | - '19' 9 | c_stdlib: 10 | - macosx_deployment_target 11 | c_stdlib_version: 12 | - '11.0' 13 | channel_sources: 14 | - conda-forge 15 | channel_targets: 16 | - conda-forge main 17 | cxx_compiler: 18 | - clangxx 19 | cxx_compiler_version: 20 | - '19' 21 | expat: 22 | - '2' 23 | fortran_compiler: 24 | - gfortran 25 | fortran_compiler_version: 26 | - '14' 27 | gmp: 28 | - '6' 29 | libiconv: 30 | - '1' 31 | liblzma_devel: 32 | - '5' 33 | macos_machine: 34 | - arm64-apple-darwin20.0.0 35 | mpfr: 36 | - '4' 37 | ncurses: 38 | - '6' 39 | pin_run_as_build: 40 | python: 41 | min_pin: x.x 42 | max_pin: x.x 43 | python: 44 | - 3.12.* *_cpython 45 | readline: 46 | - '8' 47 | target_platform: 48 | - osx-arm64 49 | zip_keys: 50 | - - c_compiler_version 51 | - cxx_compiler_version 52 | - fortran_compiler_version 53 | zlib: 54 | - '1' 55 | zstd: 56 | - '1.5' 57 | -------------------------------------------------------------------------------- /.scripts/logging_utils.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Provide a unified interface for the different logging 4 | # utilities CI providers offer. If unavailable, provide 5 | # a compatible fallback (e.g. bare `echo xxxxxx`). 6 | 7 | function startgroup { 8 | # Start a foldable group of log lines 9 | # Pass a single argument, quoted 10 | case ${CI:-} in 11 | azure ) 12 | echo "##[group]$1";; 13 | travis ) 14 | echo "$1" 15 | echo -en 'travis_fold:start:'"${1// /}"'\r';; 16 | github_actions ) 17 | echo "::group::$1";; 18 | * ) 19 | echo "$1";; 20 | esac 21 | } 2> /dev/null 22 | 23 | function endgroup { 24 | # End a foldable group of log lines 25 | # Pass a single argument, quoted 26 | 27 | case ${CI:-} in 28 | azure ) 29 | echo "##[endgroup]";; 30 | travis ) 31 | echo -en 'travis_fold:end:'"${1// /}"'\r';; 32 | github_actions ) 33 | echo "::endgroup::";; 34 | esac 35 | } 2> /dev/null 36 | -------------------------------------------------------------------------------- /.ci_support/migrations/python314.yaml: -------------------------------------------------------------------------------- 1 | # this is intentionally sorted before the 3.13t migrator, because that determines 2 | # the order of application of the migrators; otherwise we'd have to add values for 3 | # is_freethreading and is_abi3 keys here, since that migration extends the zip; 4 | migrator_ts: 1724712607 5 | __migrator: 6 | commit_message: Rebuild for python 3.14 7 | migration_number: 1 8 | operation: key_add 9 | primary_key: python 10 | ordering: 11 | python: 12 | - 3.9.* *_cpython 13 | - 3.10.* *_cpython 14 | - 3.11.* *_cpython 15 | - 3.12.* *_cpython 16 | - 3.13.* *_cp313 17 | - 3.13.* *_cp313t 18 | - 3.14.* *_cp314 # new entry 19 | paused: false 20 | longterm: true 21 | pr_limit: 5 22 | max_solver_attempts: 3 # this will make the bot retry "not solvable" stuff 12 times 23 | exclude: 24 | # this shouldn't attempt to modify the python feedstocks 25 | - python 26 | - pypy3.6 27 | - pypy-meta 28 | - cross-python 29 | - python_abi 30 | # Manually migrated (e.g. were blocked on missing dev dependencies) 31 | - pyarrow 32 | exclude_pinned_pkgs: false 33 | ignored_deps_per_node: 34 | matplotlib: 35 | - pyqt 36 | 37 | python: 38 | - 3.14.* *_cp314 39 | # additional entries to add for zip_keys 40 | is_python_min: 41 | - false 42 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: yaml -*- 4 | 5 | stages: 6 | - stage: Check 7 | jobs: 8 | - job: Skip 9 | pool: 10 | vmImage: 'ubuntu-22.04' 11 | variables: 12 | DECODE_PERCENTS: 'false' 13 | RET: 'true' 14 | steps: 15 | - checkout: self 16 | fetchDepth: '2' 17 | - bash: | 18 | git_log=`git log --max-count=1 --skip=1 --pretty=format:"%B" | tr "\n" " "` 19 | echo "##vso[task.setvariable variable=log]$git_log" 20 | displayName: Obtain commit message 21 | - bash: echo "##vso[task.setvariable variable=RET]false" 22 | 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]'))) 23 | displayName: Skip build? 24 | - bash: echo "##vso[task.setvariable variable=start_main;isOutput=true]$RET" 25 | name: result 26 | displayName: Export result 27 | - stage: Build 28 | condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) 29 | dependsOn: Check 30 | jobs: 31 | - template: ./.azure-pipelines/azure-pipelines-linux.yml 32 | - template: ./.azure-pipelines/azure-pipelines-osx.yml -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | BSD-3-Clause license 2 | Copyright (c) 2015-2022, conda-forge contributors 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. Neither the name of the copyright holder nor the names of its 14 | contributors may be used to endorse or promote products derived from 15 | this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR 21 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 24 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 27 | DAMAGE. 28 | -------------------------------------------------------------------------------- /recipe/0001-gdb-darwin-remove-not-so-harmless-spurious-call-to-w.patch: -------------------------------------------------------------------------------- 1 | From 9cca177baec32a1ed1422a87a1f57cda2d2eb21a Mon Sep 17 00:00:00 2001 2 | From: Dominique Quatravaux 3 | Date: Wed, 16 Feb 2022 09:15:39 -0500 4 | Subject: [PATCH] gdb/darwin: remove not-so-harmless spurious call to `wait4` 5 | 6 | As seen in https://sourceware.org/bugzilla/show_bug.cgi?id=24069 this 7 | code will typically wait4() a second time on the same process that was 8 | already wait4()'d a few lines above. While this used to be 9 | harmless/idempotent (when we assumed that the process already exited), 10 | this now causes a deadlock in the WIFSTOPPED case. 11 | 12 | The early (~2019) history of bug #24069 cautiously suggests to use 13 | WNOHANG instead of outright deleting the call. However, tests on the 14 | current version of Darwin (Big Sur) demonstrate that gdb runs just fine 15 | without a redundant call to wait4(), as would be expected. 16 | Notwithstanding the debatable value of conserving bug compatibility with 17 | an OS release that is more than a decade old, there is scant evidence of 18 | what that double-wait4() was supposed to achieve in the first place - A 19 | cursory investigation with `git blame` pinpoints commits bb00b29d7802 20 | and a80b95ba67e2 from the 2008-2009 era, but fails to answer the 21 | "why" question conclusively. 22 | 23 | Co-Authored-By: Philippe Blain 24 | Change-Id: Id4e4415d66d6ff6b3552b60d761693f17015e4a0 25 | --- 26 | gdb/darwin-nat.c | 3 --- 27 | 1 file changed, 3 deletions(-) 28 | 29 | diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c 30 | index d96ce1a6c65..8b0ecfd5b77 100644 31 | --- a/gdb/darwin-nat.c 32 | +++ b/gdb/darwin-nat.c 33 | @@ -1113,9 +1113,6 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr, 34 | inferior_debug (4, _("darwin_wait: pid=%d exit, status=0x%x\n"), 35 | res_pid, wstatus); 36 | 37 | - /* Looks necessary on Leopard and harmless... */ 38 | - wait4 (inf->pid, &wstatus, 0, NULL); 39 | - 40 | return ptid_t (inf->pid); 41 | } 42 | else 43 | -- 44 | 2.32.0.dirty 45 | 46 | -------------------------------------------------------------------------------- /.azure-pipelines/azure-pipelines-osx.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: yaml -*- 4 | 5 | jobs: 6 | - job: osx 7 | pool: 8 | vmImage: macOS-15 9 | strategy: 10 | matrix: 11 | osx_64_python3.10.____cpython: 12 | CONFIG: osx_64_python3.10.____cpython 13 | UPLOAD_PACKAGES: 'True' 14 | osx_64_python3.11.____cpython: 15 | CONFIG: osx_64_python3.11.____cpython 16 | UPLOAD_PACKAGES: 'True' 17 | osx_64_python3.12.____cpython: 18 | CONFIG: osx_64_python3.12.____cpython 19 | UPLOAD_PACKAGES: 'True' 20 | osx_64_python3.13.____cp313: 21 | CONFIG: osx_64_python3.13.____cp313 22 | UPLOAD_PACKAGES: 'True' 23 | osx_64_python3.14.____cp314: 24 | CONFIG: osx_64_python3.14.____cp314 25 | UPLOAD_PACKAGES: 'True' 26 | osx_arm64_python3.10.____cpython: 27 | CONFIG: osx_arm64_python3.10.____cpython 28 | UPLOAD_PACKAGES: 'True' 29 | osx_arm64_python3.11.____cpython: 30 | CONFIG: osx_arm64_python3.11.____cpython 31 | UPLOAD_PACKAGES: 'True' 32 | osx_arm64_python3.12.____cpython: 33 | CONFIG: osx_arm64_python3.12.____cpython 34 | UPLOAD_PACKAGES: 'True' 35 | osx_arm64_python3.13.____cp313: 36 | CONFIG: osx_arm64_python3.13.____cp313 37 | UPLOAD_PACKAGES: 'True' 38 | osx_arm64_python3.14.____cp314: 39 | CONFIG: osx_arm64_python3.14.____cp314 40 | UPLOAD_PACKAGES: 'True' 41 | timeoutInMinutes: 360 42 | variables: {} 43 | 44 | steps: 45 | # TODO: Fast finish on azure pipelines? 46 | - script: | 47 | export CI=azure 48 | export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) 49 | export remote_url=$(Build.Repository.Uri) 50 | export sha=$(Build.SourceVersion) 51 | export OSX_FORCE_SDK_DOWNLOAD="1" 52 | export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME 53 | export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) 54 | if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then 55 | export IS_PR_BUILD="True" 56 | else 57 | export IS_PR_BUILD="False" 58 | fi 59 | ./.scripts/run_osx_build.sh 60 | displayName: Run OSX build 61 | env: 62 | BINSTAR_TOKEN: $(BINSTAR_TOKEN) 63 | FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) 64 | STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) 65 | -------------------------------------------------------------------------------- /recipe/0002-gdb-darwin-skip-over-WIFSTOPPED-wait4-status.patch: -------------------------------------------------------------------------------- 1 | From 0d327446e0493851a3700109deb95b1fb05f7a18 Mon Sep 17 00:00:00 2001 2 | From: Dominique Quatravaux via Gdb-patches 3 | Date: Thu, 8 Apr 2021 21:14:48 +0200 4 | Subject: [PATCH] Skip over WIFSTOPPED wait4 status 5 | 6 | On modern Darwin's, there appears to be a new circumstance in which a 7 | MACH_NOTIFY_DEAD_NAME message can be received, and which was not 8 | previously accounted for: to signal the WIFSTOPPED condition in the 9 | debuggee. In that case the debuggee is not dead yet (and in fact, 10 | counting it as dead would cause a zombie leak - A process in such a 11 | state reparents to PID 1, but cannot be killed). 12 | 13 | - Read and ignore such messages (counting on the next exception 14 | message to let us know of the inferior's new state again) 15 | - Refactor logging so as to clearly distinguish between the three 16 | MACH_NOTIFY_DEAD_NAME cases (WIFEXITED, WIFSTOPPED, signal) 17 | 18 | diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c 19 | index 9c6423ceb02..cbe36eba626 100644 20 | --- a/gdb/darwin-nat.c 21 | +++ b/gdb/darwin-nat.c 22 | @@ -1053,7 +1053,7 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr, 23 | } 24 | else if (hdr->msgh_id == 0x48) 25 | { 26 | - /* MACH_NOTIFY_DEAD_NAME: notification for exit. */ 27 | + /* MACH_NOTIFY_DEAD_NAME: notification for exit *or* WIFSTOPPED. */ 28 | int res; 29 | 30 | res = darwin_decode_notify_message (hdr, &inf); 31 | @@ -1096,16 +1096,23 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr, 32 | { 33 | status->kind = TARGET_WAITKIND_EXITED; 34 | status->value.integer = WEXITSTATUS (wstatus); 35 | + inferior_debug (4, _("darwin_wait: pid=%d exit, status=0x%x\n"), 36 | + res_pid, wstatus); 37 | + } 38 | + else if (WIFSTOPPED (wstatus)) 39 | + { 40 | + status->kind = TARGET_WAITKIND_IGNORE; 41 | + inferior_debug (4, _("darwin_wait: pid %d received WIFSTOPPED\n"), res_pid); 42 | + return minus_one_ptid; 43 | } 44 | else 45 | { 46 | status->kind = TARGET_WAITKIND_SIGNALLED; 47 | status->value.sig = gdb_signal_from_host (WTERMSIG (wstatus)); 48 | + inferior_debug (4, _("darwin_wait: pid=%d received signal %d\n"), 49 | + res_pid, status->value.sig); 50 | } 51 | 52 | - inferior_debug (4, _("darwin_wait: pid=%d exit, status=0x%x\n"), 53 | - res_pid, wstatus); 54 | - 55 | return ptid_t (inf->pid); 56 | } 57 | else 58 | -------------------------------------------------------------------------------- /recipe/macos-codesign/macos-setup-codesign.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script is copied from https://github.com/llvm/llvm-project/blob/master/lldb/scripts/macos-setup-codesign.sh 4 | 5 | CERT="gdb_codesign" 6 | 7 | function error() { 8 | echo error: "$@" 1>&2 9 | exit 1 10 | } 11 | 12 | function cleanup { 13 | # Remove generated files 14 | rm -f "$TMPDIR/$CERT.tmpl" "$TMPDIR/$CERT.cer" "$TMPDIR/$CERT.key" > /dev/null 2>&1 15 | } 16 | 17 | trap cleanup EXIT 18 | 19 | # Check if the certificate is already present in the system keychain 20 | security find-certificate -Z -p -c "$CERT" /Library/Keychains/System.keychain > /dev/null 2>&1 21 | if [ $? -eq 0 ]; then 22 | echo Certificate has already been generated and installed 23 | exit 0 24 | fi 25 | 26 | # Create the certificate template 27 | cat <$TMPDIR/$CERT.tmpl 28 | [ req ] 29 | default_bits = 2048 # RSA key size 30 | encrypt_key = no # Protect private key 31 | default_md = sha512 # MD to use 32 | prompt = no # Prompt for DN 33 | distinguished_name = codesign_dn # DN template 34 | [ codesign_dn ] 35 | commonName = "$CERT" 36 | [ codesign_reqext ] 37 | keyUsage = critical,digitalSignature 38 | extendedKeyUsage = critical,codeSigning 39 | EOF 40 | 41 | echo Generating and installing gdb_codesign certificate 42 | 43 | # Generate a new certificate 44 | openssl req -new -newkey rsa:2048 -x509 -days 3650 -nodes -config "$TMPDIR/$CERT.tmpl" -extensions codesign_reqext -batch -out "$TMPDIR/$CERT.cer" -keyout "$TMPDIR/$CERT.key" > /dev/null 2>&1 45 | [ $? -eq 0 ] || error Something went wrong when generating the certificate 46 | 47 | # Install the certificate in the system keychain 48 | sudo security authorizationdb read com.apple.trust-settings.admin > "$TMPDIR/rights" 49 | sudo security authorizationdb write com.apple.trust-settings.admin allow 50 | sudo security add-trusted-cert -d -r trustRoot -p codeSign -k /Library/Keychains/System.keychain "$TMPDIR/$CERT.cer" > /dev/null 2>&1 51 | result=$? 52 | sudo security authorizationdb write com.apple.trust-settings.admin < "$TMPDIR/rights" 53 | [ $result -eq 0 ] || error Something went wrong when installing the certificate 54 | 55 | # Install the key for the certificate in the system keychain 56 | sudo security import "$TMPDIR/$CERT.key" -A -k /Library/Keychains/System.keychain > /dev/null 2>&1 57 | [ $? -eq 0 ] || error Something went wrong when installing the key 58 | 59 | # Kill task_for_pid access control daemon 60 | sudo pkill -f /usr/libexec/taskgated > /dev/null 2>&1 61 | 62 | # Exit indicating the certificate is now generated and installed 63 | exit 0 64 | -------------------------------------------------------------------------------- /recipe/meta.yaml: -------------------------------------------------------------------------------- 1 | {% set name = "gdb" %} 2 | {% set version = "17.1" %} 3 | 4 | package: 5 | name: {{ name }} 6 | version: {{ version }} 7 | 8 | source: 9 | url: 10 | - https://ftp.gnu.org/gnu/gdb/gdb-{{ version }}.tar.xz 11 | - https://mirrors.ocf.berkeley.edu/gnu/gdb/gdb-{{ version }}.tar.xz 12 | sha256: 14996f5f74c9f68f5a543fdc45bca7800207f91f92aeea6c2e791822c7c6d876 13 | patches: 14 | - 0003-darwin-nat.c-Add-missing-include.patch 15 | 16 | build: 17 | number: 0 18 | skip: true # [win] 19 | # needed by macOS codesigning script 20 | script_env: 21 | - TMPDIR 22 | 23 | requirements: 24 | build: 25 | - python # [build_platform != target_platform] 26 | - cross-python_{{ target_platform }} # [build_platform != target_platform] 27 | - gnuconfig # [unix] 28 | - {{ compiler('fortran') }} 29 | - {{ compiler('c') }} 30 | - {{ stdlib("c") }} 31 | - {{ compiler('cxx') }} 32 | - make >=3.82 33 | - pkg-config 34 | host: 35 | - python 36 | - ncurses 37 | - texinfo 38 | - liblzma-devel 39 | - zlib 40 | - readline 41 | - libiconv 42 | - expat # [osx] 43 | - gmp 44 | - mpfr 45 | - zstd 46 | run: 47 | - python 48 | - ncurses 49 | - liblzma-devel 50 | - zlib 51 | - zstd 52 | - six 53 | - libiconv 54 | - expat # [osx] 55 | - pygments 56 | 57 | test: 58 | commands: 59 | - $PREFIX/bin/gdb --version 60 | - $PREFIX/bin/gdb -q -ex "show host-charset" --batch 61 | requires: 62 | - {{ compiler('c') }} 63 | - mold 64 | 65 | about: 66 | home: https://www.gnu.org/software/gdb/ 67 | license: GPL-3.0-only 68 | license_family: GPL 69 | license_file: gdb/COPYING 70 | summary: GDB, the GNU Project debugger, allows you to see what is going on inside another program while it executes -- or what another program was doing at the moment it crashed. 71 | description: | 72 | GDB, the GNU Project debugger, allows you to see what is going on `inside' 73 | another program while it executes -- or what another program was doing at 74 | the moment it crashed. 75 | The program being debugged can be written in Ada, C, C++, Objective-C, 76 | Pascal (and many other languages). Those programs might be executing on the 77 | same machine as GDB (native) or on another machine (remote). 78 | GDB can run on most popular UNIX and Microsoft Windows variants. 79 | doc_url: https://sourceware.org/gdb/current/onlinedocs/gdb/ 80 | dev_url: https://sourceware.org/git/binutils-gdb.git 81 | 82 | extra: 83 | recipe-maintainers: 84 | - gqmelo 85 | - marcelotrevisani 86 | - phil-blain 87 | - matthiasdiener 88 | - jmakovicka 89 | -------------------------------------------------------------------------------- /recipe/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Get an updated config.sub and config.guess 3 | cp $BUILD_PREFIX/share/gnuconfig/config.* ./readline/readline/support 4 | cp $BUILD_PREFIX/share/gnuconfig/config.* . 5 | 6 | set -eux 7 | 8 | # Download the right script to debug python processes. 9 | # This is an useful script provided by CPython project to help debugging 10 | # crashes in Python processes. 11 | # See https://devguide.python.org/gdb for some 12 | # examples on how to use it. 13 | # 14 | # Normally someone needs to download this script manually and properly 15 | # setup gdb to load it (if you are lucky gdb was compiled with python 16 | # support). 17 | # 18 | # Providing this in conda-forge's gdb makes the experience much smoother, 19 | # avoiding all the hassles someone can find when trying to configure gdb 20 | # for that. 21 | curl -SL https://raw.githubusercontent.com/python/cpython/$PY_VER/Tools/gdb/libpython.py \ 22 | > "$SP_DIR/gdb_libpython.py" 23 | 24 | # Install a gdbinit file that will be automatically loaded 25 | mkdir -p "$PREFIX/etc" 26 | echo ' 27 | python 28 | import gdb 29 | import sys 30 | import os 31 | def setup_python(event): 32 | import gdb_libpython 33 | gdb.events.new_objfile.connect(setup_python) 34 | end 35 | ' >> "$PREFIX/etc/gdbinit" 36 | 37 | # macOS specificities 38 | if [[ $target_platform == osx-* ]]; then 39 | # install needed scripts to generate a codesigning certificate and sign the gdb executable 40 | cp $RECIPE_DIR/macos-codesign/macos-setup-codesign.sh $PREFIX/bin/ 41 | cp $RECIPE_DIR/macos-codesign/macos-codesign-gdb.sh $PREFIX/bin/ 42 | cp $RECIPE_DIR/macos-codesign/macos-show-caveats.sh $PREFIX/bin/ 43 | # copy the entitlement file 44 | mkdir -p $PREFIX/etc/gdb 45 | cp $RECIPE_DIR/macos-codesign/gdb-entitlement.xml $PREFIX/etc/gdb/ 46 | # add expat flag 47 | expat_flag="--with-libexpat-prefix=$PREFIX" 48 | # Setup the necessary GDB startup command for macOS Sierra and later 49 | echo "set startup-with-shell off" >> "$PREFIX/etc/gdbinit" 50 | # Copy the activate script to the installation prefix 51 | mkdir -p "${PREFIX}/etc/conda/activate.d" 52 | cp $RECIPE_DIR/activate.sh "${PREFIX}/etc/conda/activate.d/${PKG_NAME}_activate.sh" 53 | export CXXFLAGS="${CXXFLAGS} -fno-blocks -D_LIBCPP_DISABLE_AVAILABILITY" 54 | fi 55 | 56 | export CPPFLAGS="$CPPFLAGS -I$PREFIX/include" 57 | export CXXFLAGS="${CXXFLAGS} -std=gnu++17" 58 | 59 | # Setting /usr/lib/debug as debug dir makes it possible to debug the system's 60 | # python on most Linux distributions 61 | 62 | mkdir build 63 | cd build 64 | 65 | $SRC_DIR/configure \ 66 | --prefix="$PREFIX" \ 67 | --with-separate-debug-dir="$PREFIX/lib/debug:/usr/lib/debug" \ 68 | --with-python=${PYTHON} \ 69 | --with-system-gdbinit="$PREFIX/etc/gdbinit" \ 70 | --with-system-zlib \ 71 | --with-zstd=yes \ 72 | --with-libiconv-prefix=$PREFIX \ 73 | ${expat_flag:-} \ 74 | || (cat config.log && exit 1) 75 | 76 | make -j${CPU_COUNT} VERBOSE=1 77 | make install 78 | 79 | # remove bfd includes and static libraries as they are statically linked in 80 | rm -rf $PREFIX/include 81 | rm -rf $PREFIX/lib/lib*.a 82 | -------------------------------------------------------------------------------- /.scripts/build_steps.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here 4 | # will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent 5 | # changes to this script, consider a proposal to conda-smithy so that other feedstocks can also 6 | # benefit from the improvement. 7 | 8 | # -*- mode: jinja-shell -*- 9 | 10 | set -xeuo pipefail 11 | export FEEDSTOCK_ROOT="${FEEDSTOCK_ROOT:-/home/conda/feedstock_root}" 12 | source ${FEEDSTOCK_ROOT}/.scripts/logging_utils.sh 13 | 14 | 15 | ( endgroup "Start Docker" ) 2> /dev/null 16 | 17 | ( startgroup "Configuring conda" ) 2> /dev/null 18 | 19 | export PYTHONUNBUFFERED=1 20 | export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" 21 | export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" 22 | export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" 23 | 24 | cat >~/.condarc < /opt/conda/conda-meta/history 36 | micromamba install --root-prefix ~/.conda --prefix /opt/conda \ 37 | --yes --override-channels --channel conda-forge --strict-channel-priority \ 38 | pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" 39 | export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 40 | 41 | # set up the condarc 42 | setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" 43 | 44 | source run_conda_forge_build_setup 45 | 46 | 47 | 48 | # make the build number clobber 49 | make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" 50 | 51 | if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${HOST_PLATFORM}" != linux-* ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then 52 | EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" 53 | fi 54 | 55 | 56 | ( endgroup "Configuring conda" ) 2> /dev/null 57 | 58 | if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then 59 | cp "${FEEDSTOCK_ROOT}/LICENSE.txt" "${RECIPE_ROOT}/recipe-scripts-license.txt" 60 | fi 61 | 62 | if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then 63 | if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then 64 | EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}" 65 | fi 66 | conda debug "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ 67 | ${EXTRA_CB_OPTIONS:-} \ 68 | --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" 69 | 70 | # Drop into an interactive shell 71 | /bin/bash 72 | else 73 | conda-build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ 74 | --suppress-variables ${EXTRA_CB_OPTIONS:-} \ 75 | --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ 76 | --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" 77 | ( startgroup "Inspecting artifacts" ) 2> /dev/null 78 | 79 | # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 80 | 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" 81 | 82 | ( endgroup "Inspecting artifacts" ) 2> /dev/null 83 | ( startgroup "Validating outputs" ) 2> /dev/null 84 | 85 | validate_recipe_outputs "${FEEDSTOCK_NAME}" 86 | 87 | ( endgroup "Validating outputs" ) 2> /dev/null 88 | 89 | ( startgroup "Uploading packages" ) 2> /dev/null 90 | 91 | if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then 92 | upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" 93 | fi 94 | 95 | ( endgroup "Uploading packages" ) 2> /dev/null 96 | fi 97 | 98 | ( startgroup "Final checks" ) 2> /dev/null 99 | 100 | touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" 101 | -------------------------------------------------------------------------------- /recipe/post-link.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu 4 | 5 | # Returns 0 if current user is in the sudoers file 6 | # and sudo-ing does not require a password. 7 | can_sudo_without_password () { 8 | sudo -ln | \grep -q '(ALL) NOPASSWD: ALL' 9 | } 10 | 11 | # Return X in macOS version 10.X.Y 12 | get_macos_min_version () { 13 | sw_vers -productVersion | awk -F . '{print $2}' 14 | } 15 | 16 | # Return A in macOS version A.X.Y 17 | get_macos_maj_version () { 18 | sw_vers -productVersion | awk -F . '{print $1}' 19 | } 20 | 21 | # Returns 0 if macOS version is Mojave or later 22 | on_mojave_or_later () { 23 | macos_min_version=$(get_macos_min_version) 24 | macos_maj_version=$(get_macos_maj_version) 25 | if [ $macos_min_version == '14' ] || [ $macos_min_version == '15' ] || [ $macos_maj_version != '10' ]; then 26 | return 0 27 | else 28 | return 1 29 | fi 30 | } 31 | 32 | # macOS specificities: codesign the GDB executable 33 | if [[ $(uname) == "Darwin" ]]; then 34 | # On CI, sign the executable (for the tests) 35 | if can_sudo_without_password; then 36 | $PREFIX/bin/macos-codesign-gdb.sh 37 | else 38 | # Create the message shown at the end of installation 39 | cat <<-EOF > $PREFIX/.messages.txt 40 | 41 | 42 | Codesigning GDB 43 | --------------- 44 | Due to macOS security restrictions, the GDB executable 45 | needs to be codesigned to be able to control other processes. 46 | 47 | The codesigning process requires the Command Line Tools 48 | (or a full Xcode installation). 49 | To install the Command Line Tools, run 50 | 51 | xcode-select --install 52 | 53 | The codesigning process also requires administrative permissions 54 | (your user must be able to run \`sudo\`). 55 | 56 | To codesign GDB, simply run the included script: 57 | 58 | macos-codesign-gdb.sh 59 | 60 | and enter your password. 61 | 62 | Make sure this environment, "$(basename $PREFIX)", is activated 63 | so that "macos-codesign-gdb.sh" is found in your \$PATH. 64 | 65 | For more information, see: https://sourceware.org/gdb/wiki/PermissionsDarwin 66 | EOF 67 | # Tell users how to avoid being prompted for their password each time they run their executable 68 | cat <<-EOF >> $PREFIX/.messages.txt 69 | 70 | Avoiding being prompted for a password 71 | -------------------------------------- 72 | On recent macOS versions, you will be prompted for an administrator username and password 73 | the first time you \`run\` an executable in GDB in each login session. 74 | 75 | To instead be prompted for your own password, 76 | you can add your user to the '_developer' group: 77 | 78 | sudo dscl . merge /Groups/_developer GroupMembership $USER 79 | 80 | To avoid being prompted for any password, run: 81 | 82 | sudo DevToolsSecurity -enable 83 | 84 | On older systems you might also need: 85 | 86 | sudo security authorizationdb write system.privilege.taskport allow 87 | 88 | EOF 89 | # If on Mojave or later, warn users about GDB PR 24069 90 | if on_mojave_or_later; then 91 | cat <<-EOF >> $PREFIX/.messages.txt 92 | Intermittent GDB error on Mojave and later 93 | ------------------------------------------ 94 | We've detected you are running macOS Mojave or later. GDB has a known intermittent bug on 95 | recent macOS versions, see: https://sourceware.org/bugzilla/show_bug.cgi?id=24069 96 | 97 | If you receive the following error when running your executable in GDB: 98 | 99 | During startup program terminated with signal ?, Unknown signal 100 | 101 | or if GDB hangs, simply kill it and try to \`run\` your executable again, it should work eventually. 102 | EOF 103 | fi 104 | # Tell the user how to show this message again 105 | cat <<-EOF >> $PREFIX/.messages.txt 106 | 107 | Showing this message again 108 | -------------------------- 109 | Once GDB is codesigned, this message will disappear. 110 | To show this message again, run 111 | 112 | macos-show-caveats.sh 113 | EOF 114 | # Copy the message file since we might need to show it in the activate script 115 | # and conda deletes it after displaying it 116 | cp $PREFIX/.messages.txt $PREFIX/etc/gdb/.messages.txt 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /recipe/run_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -ex 4 | 5 | # Make sure we are not prompted for a password before running an executable in GDB on macOS 6 | if [[ $(uname) == "Darwin" ]]; then 7 | sudo /usr/sbin/DevToolsSecurity -enable 8 | sudo security authorizationdb write system.privilege.taskport allow 9 | echo 'set startup-with-shell off' > $HOME/.gdbinit 10 | fi 11 | 12 | # Check source code highlighting works (using Pygments) 13 | gdb -ex "show style sources" -batch | grep "enabled" 14 | 15 | if [[ $(uname -m) == "ppc64le" || $(uname -m) == "aarch64" ]]; then 16 | # Emulated docker images do not provide sufficient support for gdb 17 | # https://github.com/docker/for-mac/issues/5191 18 | exit 0 19 | fi 20 | 21 | # Run hello world test 22 | if [[ $(uname) == "Darwin" && $(uname -m) == "x86_64" ]]; then 23 | # `-fuse-ld=mold` not supported on macOS x86-64 24 | $CC -o hello -g "$RECIPE_DIR/testing/hello.c" 25 | else 26 | # TODO: Remove mold usage once https://github.com/conda-forge/binutils-feedstock/issues/97 27 | # is done. 28 | $CC -o hello -g -gz=zstd -fuse-ld=mold "$RECIPE_DIR/testing/hello.c" 29 | fi 30 | gdb -batch -ex "run" --args hello 31 | 32 | # This next test tries to simulate a crash on a python process. The process under test 33 | # forces a crash by emitting a SIGSEGV signal to itself. This is similar to what 34 | # would happen on a python code calling a C/C++ module which causes a seg fault. 35 | # When that happens we should be able to use the python extensions for gdb to get 36 | # a nicer stack trace (instead of getting cryptic frames with CPython internals). 37 | # 38 | # To test that, we just run the process using gdb, let it crash and try to use the 39 | # py-bt command to print the Python stack trace. This command is provided by CPython 40 | # repository. 41 | # 42 | # You can find more about it: 43 | # 44 | # - https://github.com/python/cpython/blob/master/Tools/gdb/libpython.py 45 | # - https://devguide.python.org/gdb 46 | 47 | echo "CONDA_PY:$CONDA_PY" 48 | export CONDA_PY=`python -c "import sys;print('%s%s'%sys.version_info[:2])"` 49 | echo "CONDA_PY:$CONDA_PY" 50 | 51 | if [[ $(uname) == "Darwin" ]]; then 52 | # Skip python test on macOS, since the Python executable is missing debug symbols. 53 | # see https://github.com/conda-forge/gdb-feedstock/pull/23/#issuecomment-643008755 54 | # and https://github.com/conda-forge/python-feedstock/issues/354 55 | exit 0 56 | fi 57 | 58 | if [[ $(uname -m) == "ppc64le" || $(uname -m) == "aarch64" ]]; then 59 | # Skip Python test on ppc64le/aarch64 due to missing debug symbols 60 | exit 0 61 | fi 62 | 63 | gdb -batch -ex "run" -ex "py-bt" --args python "$RECIPE_DIR/testing/process_to_debug.py" | tee gdb_output 64 | 65 | # Unfortunately some python packages do not have enough debug info for py-bt 66 | # 67 | # This happens because conda-forge only provides packages with all optimizations enabled. 68 | # Depending on Python's and gdb version, the debug info present on those binaries are not 69 | # enough to for the libpython.py extension. If the Python version one wants to debug falls 70 | # into this list, they would have to rebuild the python package locally tweaking -O and -g 71 | # flags in Python recipe build script. 72 | # 73 | # This list is mostly for documentation purposes, so we know exactly which versions can be 74 | # debugged out-of-the-box with this gdb package. When things change, there is not much to be 75 | # done besides adding or removing versions from this list. 76 | # Example: insufficient_debug_info_versions=("27" "37") 77 | insufficient_debug_info_versions=("312" "313" "314") 78 | 79 | if [[ " ${insufficient_debug_info_versions[@]} " =~ " ${CONDA_PY} " ]]; then 80 | if grep "line 3" gdb_output; then 81 | if grep "built-in method kill" gdb_output; then 82 | echo "This test was expected to fail due to missing debug info in python" 83 | echo "As it passed the test should be re-enabled" 84 | # exit 1 85 | fi 86 | fi 87 | else 88 | # We are lucky! This Python version has enough debug info for us to easily identify 89 | # the exact Python code where the crash happened. 90 | grep "built-in method kill" gdb_output 91 | grep "line 3" gdb_output 92 | grep "process_to_debug.py" gdb_output 93 | grep 'os.kill(os.getpid(), signal.SIGSEGV)' gdb_output 94 | fi 95 | 96 | grep "Program received signal SIGSEGV" gdb_output 97 | 98 | -------------------------------------------------------------------------------- /.scripts/run_docker_build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here 4 | # will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent 5 | # changes to this script, consider a proposal to conda-smithy so that other feedstocks can also 6 | # benefit from the improvement. 7 | 8 | source .scripts/logging_utils.sh 9 | 10 | ( startgroup "Configure Docker" ) 2> /dev/null 11 | 12 | set -xeo pipefail 13 | 14 | THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )" 15 | PROVIDER_DIR="$(basename "$THISDIR")" 16 | 17 | FEEDSTOCK_ROOT="$( cd "$( dirname "$0" )/.." >/dev/null && pwd )" 18 | RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe" 19 | 20 | if [ -z ${FEEDSTOCK_NAME} ]; then 21 | export FEEDSTOCK_NAME=$(basename ${FEEDSTOCK_ROOT}) 22 | fi 23 | 24 | if [[ "${sha:-}" == "" ]]; then 25 | pushd "${FEEDSTOCK_ROOT}" 26 | sha=$(git rev-parse HEAD) 27 | popd 28 | fi 29 | 30 | docker info 31 | 32 | # In order for the conda-build process in the container to write to the mounted 33 | # volumes, we need to run with the same id as the host machine, which is 34 | # normally the owner of the mounted volumes, or at least has write permission 35 | export HOST_USER_ID=$(id -u) 36 | # Check if docker-machine is being used (normally on OSX) and get the uid from 37 | # the VM 38 | if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then 39 | export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u) 40 | fi 41 | 42 | ARTIFACTS="$FEEDSTOCK_ROOT/build_artifacts" 43 | 44 | if [ -z "$CONFIG" ]; then 45 | set +x 46 | FILES=`ls .ci_support/linux_*` 47 | CONFIGS="" 48 | for file in $FILES; do 49 | CONFIGS="${CONFIGS}'${file:12:-5}' or "; 50 | done 51 | echo "Need to set CONFIG env variable. Value can be one of ${CONFIGS:0:-4}" 52 | exit 1 53 | fi 54 | 55 | if [ -z "${DOCKER_IMAGE}" ]; then 56 | SHYAML_INSTALLED="$(shyaml -h || echo NO)" 57 | if [ "${SHYAML_INSTALLED}" == "NO" ]; then 58 | echo "WARNING: DOCKER_IMAGE variable not set and shyaml not installed. Trying to parse with coreutils" 59 | DOCKER_IMAGE=$(cat .ci_support/${CONFIG}.yaml | grep '^docker_image:$' -A 1 | tail -n 1 | cut -b 3-) 60 | if [ "${DOCKER_IMAGE}" = "" ]; then 61 | echo "No docker_image entry found in ${CONFIG}. Falling back to quay.io/condaforge/linux-anvil-comp7" 62 | DOCKER_IMAGE="quay.io/condaforge/linux-anvil-comp7" 63 | fi 64 | else 65 | DOCKER_IMAGE="$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 quay.io/condaforge/linux-anvil-comp7 )" 66 | fi 67 | fi 68 | 69 | mkdir -p "$ARTIFACTS" 70 | DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}" 71 | rm -f "$DONE_CANARY" 72 | 73 | # Allow people to specify extra default arguments to `docker run` (e.g. `--rm`) 74 | DOCKER_RUN_ARGS="${CONDA_FORGE_DOCKER_RUN_ARGS}" 75 | if [ -z "${CI}" ]; then 76 | DOCKER_RUN_ARGS="-it ${DOCKER_RUN_ARGS}" 77 | fi 78 | 79 | ( endgroup "Configure Docker" ) 2> /dev/null 80 | 81 | ( startgroup "Start Docker" ) 2> /dev/null 82 | 83 | export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" 84 | export IS_PR_BUILD="${IS_PR_BUILD:-False}" 85 | docker pull "${DOCKER_IMAGE}" 86 | docker run ${DOCKER_RUN_ARGS} \ 87 | -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw,z,delegated \ 88 | -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z,delegated \ 89 | -e CONFIG \ 90 | -e HOST_USER_ID \ 91 | -e UPLOAD_PACKAGES \ 92 | -e IS_PR_BUILD \ 93 | -e GIT_BRANCH \ 94 | -e UPLOAD_ON_BRANCH \ 95 | -e CI \ 96 | -e FEEDSTOCK_NAME \ 97 | -e CPU_COUNT \ 98 | -e BUILD_WITH_CONDA_DEBUG \ 99 | -e BUILD_OUTPUT_ID \ 100 | -e flow_run_id \ 101 | -e remote_url \ 102 | -e sha \ 103 | -e BINSTAR_TOKEN \ 104 | -e FEEDSTOCK_TOKEN \ 105 | -e STAGING_BINSTAR_TOKEN \ 106 | "${DOCKER_IMAGE}" \ 107 | bash \ 108 | "/home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh" 109 | 110 | # verify that the end of the script was reached 111 | test -f "$DONE_CANARY" 112 | 113 | # This closes the last group opened in `build_steps.sh` 114 | ( endgroup "Final checks" ) 2> /dev/null 115 | -------------------------------------------------------------------------------- /.azure-pipelines/azure-pipelines-linux.yml: -------------------------------------------------------------------------------- 1 | # This file was generated automatically from conda-smithy. To update this configuration, 2 | # update the conda-forge.yml and/or the recipe/meta.yaml. 3 | # -*- mode: yaml -*- 4 | 5 | jobs: 6 | - job: linux 7 | pool: 8 | vmImage: ubuntu-latest 9 | strategy: 10 | matrix: 11 | linux_64_python3.10.____cpython: 12 | CONFIG: linux_64_python3.10.____cpython 13 | UPLOAD_PACKAGES: 'True' 14 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 15 | linux_64_python3.11.____cpython: 16 | CONFIG: linux_64_python3.11.____cpython 17 | UPLOAD_PACKAGES: 'True' 18 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 19 | linux_64_python3.12.____cpython: 20 | CONFIG: linux_64_python3.12.____cpython 21 | UPLOAD_PACKAGES: 'True' 22 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 23 | linux_64_python3.13.____cp313: 24 | CONFIG: linux_64_python3.13.____cp313 25 | UPLOAD_PACKAGES: 'True' 26 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 27 | linux_64_python3.14.____cp314: 28 | CONFIG: linux_64_python3.14.____cp314 29 | UPLOAD_PACKAGES: 'True' 30 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 31 | linux_aarch64_python3.10.____cpython: 32 | CONFIG: linux_aarch64_python3.10.____cpython 33 | UPLOAD_PACKAGES: 'True' 34 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9 35 | linux_aarch64_python3.11.____cpython: 36 | CONFIG: linux_aarch64_python3.11.____cpython 37 | UPLOAD_PACKAGES: 'True' 38 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9 39 | linux_aarch64_python3.12.____cpython: 40 | CONFIG: linux_aarch64_python3.12.____cpython 41 | UPLOAD_PACKAGES: 'True' 42 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9 43 | linux_aarch64_python3.13.____cp313: 44 | CONFIG: linux_aarch64_python3.13.____cp313 45 | UPLOAD_PACKAGES: 'True' 46 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9 47 | linux_aarch64_python3.14.____cp314: 48 | CONFIG: linux_aarch64_python3.14.____cp314 49 | UPLOAD_PACKAGES: 'True' 50 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9 51 | linux_ppc64le_python3.10.____cpython: 52 | CONFIG: linux_ppc64le_python3.10.____cpython 53 | UPLOAD_PACKAGES: 'True' 54 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9 55 | linux_ppc64le_python3.11.____cpython: 56 | CONFIG: linux_ppc64le_python3.11.____cpython 57 | UPLOAD_PACKAGES: 'True' 58 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9 59 | linux_ppc64le_python3.12.____cpython: 60 | CONFIG: linux_ppc64le_python3.12.____cpython 61 | UPLOAD_PACKAGES: 'True' 62 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9 63 | linux_ppc64le_python3.13.____cp313: 64 | CONFIG: linux_ppc64le_python3.13.____cp313 65 | UPLOAD_PACKAGES: 'True' 66 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9 67 | linux_ppc64le_python3.14.____cp314: 68 | CONFIG: linux_ppc64le_python3.14.____cp314 69 | UPLOAD_PACKAGES: 'True' 70 | DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9 71 | timeoutInMinutes: 360 72 | variables: {} 73 | 74 | steps: 75 | # configure qemu binfmt-misc running. This allows us to run docker containers 76 | # embedded qemu-static 77 | - script: | 78 | docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes 79 | ls /proc/sys/fs/binfmt_misc/ 80 | condition: not(startsWith(variables['CONFIG'], 'linux_64')) 81 | displayName: Configure binfmt_misc 82 | 83 | - script: | 84 | export CI=azure 85 | export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) 86 | export remote_url=$(Build.Repository.Uri) 87 | export sha=$(Build.SourceVersion) 88 | export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME 89 | export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) 90 | if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then 91 | export IS_PR_BUILD="True" 92 | else 93 | export IS_PR_BUILD="False" 94 | fi 95 | .scripts/run_docker_build.sh 96 | displayName: Run docker build 97 | env: 98 | BINSTAR_TOKEN: $(BINSTAR_TOKEN) 99 | FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) 100 | STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) 101 | -------------------------------------------------------------------------------- /.scripts/run_osx_build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # -*- mode: jinja-shell -*- 4 | 5 | source .scripts/logging_utils.sh 6 | 7 | set -xe 8 | 9 | MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}" 10 | MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash 11 | export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}" 12 | 13 | ( startgroup "Provisioning base env with micromamba" ) 2> /dev/null 14 | MICROMAMBA_VERSION="1.5.10-0" 15 | if [[ "$(uname -m)" == "arm64" ]]; then 16 | osx_arch="osx-arm64" 17 | else 18 | osx_arch="osx-64" 19 | fi 20 | MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}" 21 | MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)" 22 | echo "Downloading micromamba ${MICROMAMBA_VERSION}" 23 | micromamba_exe="$(mktemp -d)/micromamba" 24 | curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}" 25 | chmod +x "${micromamba_exe}" 26 | echo "Creating environment" 27 | "${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ 28 | --channel conda-forge \ 29 | pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" 30 | echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}" 31 | mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}" 32 | echo "Cleaning up micromamba" 33 | rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true 34 | ( endgroup "Provisioning base env with micromamba" ) 2> /dev/null 35 | 36 | ( startgroup "Configuring conda" ) 2> /dev/null 37 | echo "Activating environment" 38 | source "${MINIFORGE_HOME}/etc/profile.d/conda.sh" 39 | conda activate base 40 | export CONDA_SOLVER="libmamba" 41 | export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 42 | 43 | 44 | 45 | 46 | 47 | echo -e "\n\nSetting up the condarc and mangling the compiler." 48 | setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml 49 | 50 | if [[ "${CI:-}" != "" ]]; then 51 | mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml 52 | fi 53 | 54 | if [[ "${CI:-}" != "" ]]; then 55 | echo -e "\n\nMangling homebrew in the CI to avoid conflicts." 56 | /usr/bin/sudo mangle_homebrew 57 | /usr/bin/sudo -k 58 | else 59 | echo -e "\n\nNot mangling homebrew as we are not running in CI" 60 | fi 61 | 62 | if [[ "${sha:-}" == "" ]]; then 63 | sha=$(git rev-parse HEAD) 64 | fi 65 | 66 | if [[ "${OSX_SDK_DIR:-}" == "" ]]; then 67 | if [[ "${CI:-}" == "" ]]; then 68 | echo "Please set OSX_SDK_DIR to a directory where SDKs can be downloaded to. Aborting" 69 | exit 1 70 | else 71 | export OSX_SDK_DIR=/opt/conda-sdks 72 | /usr/bin/sudo mkdir -p "${OSX_SDK_DIR}" 73 | /usr/bin/sudo chown "${USER}" "${OSX_SDK_DIR}" 74 | fi 75 | else 76 | if tmpf=$(mktemp -p "$OSX_SDK_DIR" tmp.XXXXXXXX 2>/dev/null); then 77 | rm -f "$tmpf" 78 | echo "OSX_SDK_DIR is writeable without sudo, continuing" 79 | else 80 | echo "User-provided OSX_SDK_DIR is not writeable for current user! Aborting" 81 | exit 1 82 | fi 83 | fi 84 | 85 | echo -e "\n\nRunning the build setup script." 86 | source run_conda_forge_build_setup 87 | 88 | 89 | 90 | ( endgroup "Configuring conda" ) 2> /dev/null 91 | 92 | echo -e "\n\nMaking the build clobber file" 93 | make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml 94 | 95 | if [[ -f LICENSE.txt ]]; then 96 | cp LICENSE.txt "recipe/recipe-scripts-license.txt" 97 | fi 98 | 99 | if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then 100 | if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then 101 | EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}" 102 | fi 103 | conda debug ./recipe -m ./.ci_support/${CONFIG}.yaml \ 104 | ${EXTRA_CB_OPTIONS:-} \ 105 | --clobber-file ./.ci_support/clobber_${CONFIG}.yaml 106 | 107 | # Drop into an interactive shell 108 | /bin/bash 109 | else 110 | 111 | if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then 112 | EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" 113 | fi 114 | 115 | conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \ 116 | --suppress-variables ${EXTRA_CB_OPTIONS:-} \ 117 | --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \ 118 | --extra-meta flow_run_id="$flow_run_id" remote_url="$remote_url" sha="$sha" 119 | 120 | ( startgroup "Inspecting artifacts" ) 2> /dev/null 121 | 122 | # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 123 | 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" 124 | 125 | ( endgroup "Inspecting artifacts" ) 2> /dev/null 126 | ( startgroup "Validating outputs" ) 2> /dev/null 127 | 128 | validate_recipe_outputs "${FEEDSTOCK_NAME}" 129 | 130 | ( endgroup "Validating outputs" ) 2> /dev/null 131 | 132 | ( startgroup "Uploading packages" ) 2> /dev/null 133 | 134 | if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then 135 | upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml 136 | fi 137 | 138 | ( endgroup "Uploading packages" ) 2> /dev/null 139 | fi 140 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | About gdb-feedstock 2 | =================== 3 | 4 | Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/gdb-feedstock/blob/main/LICENSE.txt) 5 | 6 | Home: https://www.gnu.org/software/gdb/ 7 | 8 | Package license: GPL-3.0-only 9 | 10 | Summary: GDB, the GNU Project debugger, allows you to see what is going on inside another program while it executes -- or what another program was doing at the moment it crashed. 11 | 12 | Development: https://sourceware.org/git/binutils-gdb.git 13 | 14 | Documentation: https://sourceware.org/gdb/current/onlinedocs/gdb/ 15 | 16 | GDB, the GNU Project debugger, allows you to see what is going on `inside' 17 | another program while it executes -- or what another program was doing at 18 | the moment it crashed. 19 | The program being debugged can be written in Ada, C, C++, Objective-C, 20 | Pascal (and many other languages). Those programs might be executing on the 21 | same machine as GDB (native) or on another machine (remote). 22 | GDB can run on most popular UNIX and Microsoft Windows variants. 23 | 24 | 25 | Current build status 26 | ==================== 27 | 28 | 29 | 30 | 31 | 32 | 33 | 222 | 223 |
Azure 34 |
35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 49 | 50 | 51 | 56 | 57 | 58 | 63 | 64 | 65 | 70 | 71 | 72 | 77 | 78 | 79 | 84 | 85 | 86 | 91 | 92 | 93 | 98 | 99 | 100 | 105 | 106 | 107 | 112 | 113 | 114 | 119 | 120 | 121 | 126 | 127 | 128 | 133 | 134 | 135 | 140 | 141 | 142 | 147 | 148 | 149 | 154 | 155 | 156 | 161 | 162 | 163 | 168 | 169 | 170 | 175 | 176 | 177 | 182 | 183 | 184 | 189 | 190 | 191 | 196 | 197 | 198 | 203 | 204 | 205 | 210 | 211 | 212 | 217 | 218 | 219 |
VariantStatus
linux_64_python3.10.____cpython 45 | 46 | variant 47 | 48 |
linux_64_python3.11.____cpython 52 | 53 | variant 54 | 55 |
linux_64_python3.12.____cpython 59 | 60 | variant 61 | 62 |
linux_64_python3.13.____cp313 66 | 67 | variant 68 | 69 |
linux_64_python3.14.____cp314 73 | 74 | variant 75 | 76 |
linux_aarch64_python3.10.____cpython 80 | 81 | variant 82 | 83 |
linux_aarch64_python3.11.____cpython 87 | 88 | variant 89 | 90 |
linux_aarch64_python3.12.____cpython 94 | 95 | variant 96 | 97 |
linux_aarch64_python3.13.____cp313 101 | 102 | variant 103 | 104 |
linux_aarch64_python3.14.____cp314 108 | 109 | variant 110 | 111 |
linux_ppc64le_python3.10.____cpython 115 | 116 | variant 117 | 118 |
linux_ppc64le_python3.11.____cpython 122 | 123 | variant 124 | 125 |
linux_ppc64le_python3.12.____cpython 129 | 130 | variant 131 | 132 |
linux_ppc64le_python3.13.____cp313 136 | 137 | variant 138 | 139 |
linux_ppc64le_python3.14.____cp314 143 | 144 | variant 145 | 146 |
osx_64_python3.10.____cpython 150 | 151 | variant 152 | 153 |
osx_64_python3.11.____cpython 157 | 158 | variant 159 | 160 |
osx_64_python3.12.____cpython 164 | 165 | variant 166 | 167 |
osx_64_python3.13.____cp313 171 | 172 | variant 173 | 174 |
osx_64_python3.14.____cp314 178 | 179 | variant 180 | 181 |
osx_arm64_python3.10.____cpython 185 | 186 | variant 187 | 188 |
osx_arm64_python3.11.____cpython 192 | 193 | variant 194 | 195 |
osx_arm64_python3.12.____cpython 199 | 200 | variant 201 | 202 |
osx_arm64_python3.13.____cp313 206 | 207 | variant 208 | 209 |
osx_arm64_python3.14.____cp314 213 | 214 | variant 215 | 216 |
220 |
221 |
224 | 225 | Current release info 226 | ==================== 227 | 228 | | Name | Downloads | Version | Platforms | 229 | | --- | --- | --- | --- | 230 | | [![Conda Recipe](https://img.shields.io/badge/recipe-gdb-green.svg)](https://anaconda.org/conda-forge/gdb) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/gdb.svg)](https://anaconda.org/conda-forge/gdb) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/gdb.svg)](https://anaconda.org/conda-forge/gdb) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/gdb.svg)](https://anaconda.org/conda-forge/gdb) | 231 | 232 | Installing gdb 233 | ============== 234 | 235 | Installing `gdb` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with: 236 | 237 | ``` 238 | conda config --add channels conda-forge 239 | conda config --set channel_priority strict 240 | ``` 241 | 242 | Once the `conda-forge` channel has been enabled, `gdb` can be installed with `conda`: 243 | 244 | ``` 245 | conda install gdb 246 | ``` 247 | 248 | or with `mamba`: 249 | 250 | ``` 251 | mamba install gdb 252 | ``` 253 | 254 | It is possible to list all of the versions of `gdb` available on your platform with `conda`: 255 | 256 | ``` 257 | conda search gdb --channel conda-forge 258 | ``` 259 | 260 | or with `mamba`: 261 | 262 | ``` 263 | mamba search gdb --channel conda-forge 264 | ``` 265 | 266 | Alternatively, `mamba repoquery` may provide more information: 267 | 268 | ``` 269 | # Search all versions available on your platform: 270 | mamba repoquery search gdb --channel conda-forge 271 | 272 | # List packages depending on `gdb`: 273 | mamba repoquery whoneeds gdb --channel conda-forge 274 | 275 | # List dependencies of `gdb`: 276 | mamba repoquery depends gdb --channel conda-forge 277 | ``` 278 | 279 | 280 | About conda-forge 281 | ================= 282 | 283 | [![Powered by 284 | NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://numfocus.org) 285 | 286 | conda-forge is a community-led conda channel of installable packages. 287 | In order to provide high-quality builds, the process has been automated into the 288 | conda-forge GitHub organization. The conda-forge organization contains one repository 289 | for each of the installable packages. Such a repository is known as a *feedstock*. 290 | 291 | A feedstock is made up of a conda recipe (the instructions on what and how to build 292 | the package) and the necessary configurations for automatic building using freely 293 | available continuous integration services. Thanks to the awesome service provided by 294 | [Azure](https://azure.microsoft.com/en-us/services/devops/), [GitHub](https://github.com/), 295 | [CircleCI](https://circleci.com/), [AppVeyor](https://www.appveyor.com/), 296 | [Drone](https://cloud.drone.io/welcome), and [TravisCI](https://travis-ci.com/) 297 | it is possible to build and upload installable packages to the 298 | [conda-forge](https://anaconda.org/conda-forge) [anaconda.org](https://anaconda.org/) 299 | channel for Linux, Windows and OSX respectively. 300 | 301 | To manage the continuous integration and simplify feedstock maintenance, 302 | [conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. 303 | Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of 304 | this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. 305 | 306 | For more information, please check the [conda-forge documentation](https://conda-forge.org/docs/). 307 | 308 | Terminology 309 | =========== 310 | 311 | **feedstock** - the conda recipe (raw material), supporting scripts and CI configuration. 312 | 313 | **conda-smithy** - the tool which helps orchestrate the feedstock. 314 | Its primary use is in the construction of the CI ``.yml`` files 315 | and simplify the management of *many* feedstocks. 316 | 317 | **conda-forge** - the place where the feedstock and smithy live and work to 318 | produce the finished article (built conda distributions) 319 | 320 | 321 | Updating gdb-feedstock 322 | ====================== 323 | 324 | If you would like to improve the gdb recipe or build a new 325 | package version, please fork this repository and submit a PR. Upon submission, 326 | your changes will be run on the appropriate platforms to give the reviewer an 327 | opportunity to confirm that the changes result in a successful build. Once 328 | merged, the recipe will be re-built and uploaded automatically to the 329 | `conda-forge` channel, whereupon the built conda packages will be available for 330 | everybody to install and use from the `conda-forge` channel. 331 | Note that all branches in the conda-forge/gdb-feedstock are 332 | immediately built and any created packages are uploaded, so PRs should be based 333 | on branches in forks, and branches in the main repository should only be used to 334 | build distinct package versions. 335 | 336 | In order to produce a uniquely identifiable distribution: 337 | * If the version of a package **is not** being increased, please add or increase 338 | the [``build/number``](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build-number-and-string). 339 | * If the version of a package **is** being increased, please remember to return 340 | the [``build/number``](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build-number-and-string) 341 | back to 0. 342 | 343 | Feedstock Maintainers 344 | ===================== 345 | 346 | * [@gqmelo](https://github.com/gqmelo/) 347 | * [@jmakovicka](https://github.com/jmakovicka/) 348 | * [@marcelotrevisani](https://github.com/marcelotrevisani/) 349 | * [@matthiasdiener](https://github.com/matthiasdiener/) 350 | * [@phil-blain](https://github.com/phil-blain/) 351 | 352 | --------------------------------------------------------------------------------