diff --git a/.ci_support/conda_forge_pinnings.yaml b/.ci_support/conda_forge_pinnings.yaml deleted file mode 100644 index 927289f11..000000000 --- a/.ci_support/conda_forge_pinnings.yaml +++ /dev/null @@ -1,847 +0,0 @@ -c_compiler: - - gcc # [linux] - - clang # [osx] - - vs2019 # [win and x86_64] - - vs2022 # [win and arm64] -c_compiler_version: # [unix] - - 12 # [linux] - - 16 # [osx] - - 10 # [os.environ.get("CF_CUDA_ENABLED", "False") == "True" and linux] - - 11 # [os.environ.get("CF_CUDA_ENABLED", "False") == "True" and linux] -cxx_compiler: - - gxx # [linux] - - clangxx # [osx] - - vs2019 # [win and x86_64] - - vs2022 # [win and arm64] -cxx_compiler_version: # [unix] - - 12 # [linux] - - 16 # [osx] - - 10 # [os.environ.get("CF_CUDA_ENABLED", "False") == "True" and linux] - - 11 # [os.environ.get("CF_CUDA_ENABLED", "False") == "True" and linux] -llvm_openmp: # [osx] - - 16 # [osx] -fortran_compiler: # [unix or win64] - - gfortran # [linux64 or (osx and x86_64)] - - gfortran # [aarch64 or ppc64le or armv7l or s390x] - - flang # [win64] -fortran_compiler_version: # [unix or win64] - - 12 # [linux] - - 12 # [osx] - - 5 # [win64] - - 10 # [os.environ.get("CF_CUDA_ENABLED", "False") == "True" and linux] - - 11 # [os.environ.get("CF_CUDA_ENABLED", "False") == "True" and linux] -m2w64_c_compiler: # [win] - - m2w64-toolchain # [win] -m2w64_cxx_compiler: # [win] - - m2w64-toolchain # [win] -m2w64_fortran_compiler: # [win] - - m2w64-toolchain # [win] - -cuda_compiler: - - None - - nvcc # [(linux or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - nvcc # [(linux or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] -cuda_compiler_version: - - None - - 11.2 # [(linux or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - 11.8 # [(linux or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] -cuda_compiler_version_min: - - None # [osx] - - 11.2 # [linux or win64] - - 11.8 # [linux or win64] - -arm_variant_type: # [aarch64] - - sbsa # [aarch64] - -_libgcc_mutex: - - 0.1 conda_forge -# -# Go Compiler Options -# - -# The basic go-compiler with CGO disabled, -# It generates fat binaries without libc dependencies -# The activation scripts will set your CC,CXX and related flags -# to invalid values. -go_compiler: - - go-nocgo -# The go compiler build with CGO enabled. -# It can generate fat binaries that depend on conda's libc. -# You should use this compiler if the underlying -# program needs to link against other C libraries, in which -# case make sure to add 'c,cpp,fortran_compiler' for unix -# and the m2w64 equivalent for windows. -cgo_compiler: - - go-cgo -# The following are helpful variables to simplify go meta.yaml files. -target_goos: - - linux # [linux] - - darwin # [osx] - - windows # [win] -target_goarch: - - amd64 # [x86_64] - - arm64 # [arm64 or aarch64] - - ppc64le # [ppc64le] -target_goexe: - - # [unix] - - .exe # [win] -target_gobin: - - '${PREFIX}/bin/' # [unix] - - '%PREFIX%\bin\' # [win] - -# Rust Compiler Options -rust_compiler: - - rust - -macos_machine: # [osx] - - x86_64-apple-darwin13.4.0 # [osx and x86_64] - - arm64-apple-darwin20.0.0 # [osx and arm64] -MACOSX_DEPLOYMENT_TARGET: # [osx] - - 11.0 # [osx and arm64] - - 10.9 # [osx and x86_64] -VERBOSE_AT: - - V=1 -VERBOSE_CM: - - VERBOSE=1 - -# dual build configuration -channel_sources: - - conda-forge # [not s390x] - - https://conda-web.anaconda.org/conda-forge # [s390x] - -channel_targets: - - conda-forge main - -cdt_name: # [linux] - - cos6 # [linux64 and os.environ.get("DEFAULT_LINUX_VERSION", "cos6") == "cos6"] - - cos7 # [linux64 and os.environ.get("DEFAULT_LINUX_VERSION", "cos6") == "cos7"] - - cos7 # [linux and aarch64] - - cos7 # [linux and ppc64le] - - cos7 # [linux and armv7l] - - cos7 # [linux and s390x] - - - cos7 # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - cos7 # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - -docker_image: # [os.environ.get("BUILD_PLATFORM", "").startswith("linux-")] - # Native builds - - quay.io/condaforge/linux-anvil-cos7-x86_64 # [os.environ.get("BUILD_PLATFORM") == "linux-64"] - - quay.io/condaforge/linux-anvil-aarch64 # [os.environ.get("BUILD_PLATFORM") == "linux-aarch64"] - - quay.io/condaforge/linux-anvil-ppc64le # [os.environ.get("BUILD_PLATFORM") == "linux-ppc64le"] - - quay.io/condaforge/linux-anvil-armv7l # [os.environ.get("BUILD_PLATFORM") == "linux-armv7l"] - - # CUDA 11.2 - - quay.io/condaforge/linux-anvil-cuda:11.2 # [linux64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-64"] - # CUDA 11.2 arch: native compilation (build == target) - - quay.io/condaforge/linux-anvil-ppc64le-cuda:11.2 # [ppc64le and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-ppc64le"] - - quay.io/condaforge/linux-anvil-aarch64-cuda:11.2 # [aarch64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-aarch64"] - # CUDA 11.2 arch: cross-compilation (build != target) - - quay.io/condaforge/linux-anvil-cuda:11.2 # [ppc64le and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-64"] - - quay.io/condaforge/linux-anvil-cuda:11.2 # [aarch64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-64"] - - # CUDA 11.8 - - quay.io/condaforge/linux-anvil-cuda:11.8 # [linux64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-64"] - # CUDA 11.8 arch: native compilation (build == target) - - quay.io/condaforge/linux-anvil-ppc64le-cuda:11.8 # [ppc64le and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-ppc64le"] - - quay.io/condaforge/linux-anvil-aarch64-cuda:11.8 # [aarch64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-aarch64"] - # CUDA 11.8 arch: cross-compilation (build != target) - - quay.io/condaforge/linux-anvil-cuda:11.8 # [ppc64le and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-64"] - - quay.io/condaforge/linux-anvil-cuda:11.8 # [aarch64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM") == "linux-64"] - -zip_keys: - - # [unix] - - c_compiler_version # [unix] - - cxx_compiler_version # [unix] - - fortran_compiler_version # [unix] - - cuda_compiler # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - cuda_compiler_version # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - cdt_name # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - docker_image # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True" and os.environ.get("BUILD_PLATFORM", "").startswith("linux-")] - - # [win64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - cuda_compiler # [win64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - cuda_compiler_version # [win64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - - - python - - numpy - - python_impl - # transition until arrow_cpp can be dropped for arrow 13.x - - - - arrow_cpp - - libarrow - - libarrow_all - # as of 4.23.x, libprotobuf requires patch-level run-exports; - # we couple it with grpc (which very roughly releases in sync) - # to reduce the migration pain for these two libs a bit. - - - - libgrpc - - libprotobuf - - -# aarch64 specifics because conda-build sets many things to centos 6 -# this can probably be removed when conda-build gets updated defaults -# for aarch64 -cdt_arch: aarch64 # [aarch64] -BUILD: aarch64-conda_cos7-linux-gnu # [aarch64] - -# armv7l specifics because conda-build sets many things to centos 6 -# this can probably be removed when conda-build gets updated defaults -# for aarch64 -cdt_arch: armv7l # [armv7l] -BUILD: armv7-conda_cos7-linux-gnueabihf # [armv7l] - -pin_run_as_build: - # TODO: add run_exports to the following feedstocks - flann: - max_pin: x.x.x - graphviz: - max_pin: x - libsvm: - max_pin: x - netcdf-cxx4: - max_pin: x.x - occt: - max_pin: x.x - poppler: - max_pin: x.x - r-base: - max_pin: x.x - min_pin: x.x - vlfeat: - max_pin: x.x.x - -# Pinning packages - -# blas -libblas: - - 3.9 *netlib -libcblas: - - 3.9 *netlib -liblapack: - - 3.9 *netlib -liblapacke: - - 3.9 *netlib -blas_impl: - - openblas - - mkl # [x86 or x86_64] - - blis # [x86 or x86_64] - -# this output was dropped as of libabseil 20230125 -abseil_cpp: - - '20220623.0' -alsa_lib: - - 1.2.10 -antic: - - 0.2 -aom: - - '3.7' -arb: - - '2.23' -arpack: - - '3.8' -# keep in sync with libarrow -arrow_cpp: - - 14 # does not exist; switch to libarrow - - 13 - - 12 - - 11.0.0 -assimp: - - 5.3.1 -attr: - - 2.5 -aws_c_auth: - - 0.7.11 -aws_c_cal: - - 0.6.9 -aws_c_common: - - 0.9.12 -aws_c_compression: - - 0.2.17 -# coupled to aws_c_common version bump, see -# https://github.com/conda-forge/aws-c-http-feedstock/pull/109 -aws_c_event_stream: - - 0.4.1 -aws_c_http: - - 0.8.0 -# the builds got coupled because 0.2.4 landed before the this migrator finished -aws_c_io: - - 0.14.1 -# the builds got coupled because 0.2.4 landed before the io migrator -aws_c_mqtt: - - 0.10.1 -aws_c_s3: - - 0.4.9 -aws_c_sdkutils: - - 0.1.13 -aws_checksums: - - 0.1.17 -aws_crt_cpp: - - 0.26.0 -aws_sdk_cpp: - - 1.11.210 -bullet_cpp: - - 3.25 -bzip2: - - 1 -c_ares: - - 1 -cairo: - - 1 -capnproto: - - 0.10.2 -ccr: - - 1.3 -cfitsio: - - 4.3.0 -coin_or_cbc: - - 2.10 -coincbc: - - 2.10 -coin_or_cgl: - - 0.60 -coin_or_clp: - - 1.17 -coin_or_osi: - - 0.108 -coin_or_utils: - - 2.11 -console_bridge: - - 1.0 -cudnn: - - 8 -cutensor: - - 1 -curl: - - 8 -dav1d: - - 1.2.1 -davix: - - '0.8' -dbus: - - 1 -dcap: - - 2.47 -eclib: - - '20231211' -elfutils: - - 0.189 -exiv2: - - 0.27 -expat: - - 2 -ffmpeg: - - '6' -fftw: - - 3 -flann: - - 1.9.2 -flatbuffers: - - 23.5.26 -fmt: - - '10' -fontconfig: - - 2 -freetype: - - 2 -gct: - - 6.2.1629922860 -gf2x: - - '1.3' -gdk_pixbuf: - - 2 -gnuradio_core: - - 3.10.9 -gnutls: - - 3.7 -gsl: - - 2.7 -gsoap: - - 2.8.123 -gstreamer: - - '1.22' -gst_plugins_base: - - '1.22' -gdal: - - '3.8' -geos: - - 3.12.1 -geotiff: - - 1.7.1 -gfal2: - - '2.21' -gflags: - - 2.2 -giflib: - - 5.2 -glew: - - 2.1 -glib: - - '2' -glog: - - '0.6' -glpk: - - '5.0' -gmp: - - 6 -# keep google_cloud_cpp in sync with libgoogle_cloud -google_cloud_cpp: - - '2.12' -google_cloud_cpp_common: - - 0.25.0 -googleapis_cpp: - - '0.10' -graphviz: - - '9' -# this has been renamed to libgrpc as of 1.49; dropped as of 1.52. -# IOW, this version is unavailable; makes the renaming more obvious -grpc_cpp: - - '1.52' -harfbuzz: - - '8' -hdf4: - - 4.2.15 -hdf5: - - 1.14.3 -icu: - - '73' -imath: - - 3.1.9 -ipopt: - - 3.14.13 -isl: - - '0.26' -jasper: - - 4 -jpeg: - - 9 -lcms: - - 2 -lerc: - - '4' -libjpeg_turbo: - - '3' -libev: - - 4.33 -json_c: - - '0.17' -jsoncpp: - - 1.9.5 -kealib: - - '1.5' -krb5: - - '1.20' -ldas_tools_framecpp: - - '2.9' -libabseil: - - '20230802' -libabseil_static: - - '20220623.0' -libaec: - - '1' -libarchive: - - '3.7' -# keep in sync with arrow_cpp (libarrow exists only from 10.x, -# but make sure we have same length for zip as arrow_cpp) -libarrow: - - 14 - - 13 - - 12 - - 11.0.0 -# only exists as of arrow v14, but needs to have same length as libarrow -libarrow_all: - - 14 - - 13 - - 12 - - 11.0.0 -libavif: - - '1.0.1' -libblitz: - - 1.0.2 -libboost_devel: - - '1.82' -libboost_python_devel: - - '1.82' -libcint: - - '5.5' -libcurl: - - 8 -libcrc32c: - - 1.1 -libdap4: - - 3.20.6 -libdeflate: - - '1.19' -libduckdb_devel: - - '0.9.2' -libeantic: - - 1 -libevent: - - 2.1.12 -libexactreal: - - '4' -libffi: - - '3.4' -libflatsurf: - - 3 -libflint: - - '2.9' -libframel: - - '8.41' -libgdal: - - '3.8' -libgit2: - - '1.7' -# Keep in sync with google_cloud_cpp -libgoogle_cloud: - - '2.12' -libgrpc: - - '1.59' -libhugetlbfs: - - 2 -libhwy: - - '1.0' -libiconv: - - 1 -libidn2: - - 2 -libintervalxt: - - 3 -libkml: - - 1.3 -libiio: - - 0 -libmed: - - '4.1' -libmatio: - - 1.5.26 -libmatio_cpp: - - 0.2.3 -libmicrohttpd: - - 0.9 -libnetcdf: - - 4.9.2 -libopencv: - - 4.9.0 -libopentelemetry_cpp: - - '1.13' -libosqp: - - 0.6.3 -libopenvino_dev: - - 2023.2.0 -libpcap: - - '1.10' -libpng: - - 1.6 -libprotobuf: - - 4.24.4 -libpq: - - '16' -libraw: - - '0.21' -librdkafka: - - '2.2' -librsvg: - - 2 -libsecret: - - 0.18 -libsentencepiece: - - '0.1.99' -libsndfile: - - '1.2' -libsoup: - - 3 -libspatialindex: - - 1.9.3 -libssh: - - 0.10 -libssh2: - - 1 -libsvm: - - '332' -# keep libsqlite in sync with sqlite -libsqlite: - - 3 -libtensorflow: - - 2.14 -libtensorflow_cc: - - 2.14 -libthrift: - - 0.18.1 -libtiff: - - '4.6' -libunwind: - - '1.6' -libv8: - - 8.9.83 -libvips: - - 8 -libwebp: - - 1 -libwebp_base: - - 1 -libxml2: - - 2 -libxsmm: - - 1 -libuuid: - - 2 -libzip: - - 1 -lmdb: - - 0.9.29 -log4cxx: - - 1.1.0 -lz4_c: - - '1.9.3' -lzo: - - 2 -metis: - - 5.1 -mimalloc: - - 2.1.2 -mkl: - - '2023' -mkl_devel: - - 2023 -mpg123: - - '1.32' -mpich: - - 4 -mpfr: - - 4 -msgpack_c: - - 6 -msgpack_cxx: - - 6 -mumps_mpi: - - 5.2.1 -mumps_seq: - - 5.2.1 -nccl: - - 2 -ncurses: - - 6 -netcdf_cxx4: - - 4.3 -netcdf_fortran: - - '4.6' -nettle: - - '3.9' -nodejs: - - '20' - - '18' -nss: - - 3 -nspr: - - 4 -nlopt: - - '2.7' -ntl: - - '11.4.3' -# we build for the oldest version possible of numpy for forward compatibility -# we roughly follow NEP29 in choosing the oldest version -numpy: - # part of a zip_keys: python, python_impl, numpy - - 1.22 - - 1.22 - - 1.22 - - 1.23 -occt: - - 7.7.2 -openblas: - - 0.3.* -openexr: - - '3.2' -openh264: - - 2.4.0 -openjpeg: - - '2' -openmpi: - - 4 -openssl: - - '3' -orc: - - 1.9.2 -pango: - - 1.50 -pari: - - 2.15.* *_pthread -pcl: - - 1.13.1 -perl: - - 5.32.1 -petsc: - - '3.20' -petsc4py: - - '3.20' -pugixml: - - '1.14' -slepc: - - '3.20' -slepc4py: - - '3.20' -svt_av1: - - 1.8.0 -p11_kit: - - '0.24' -pcre: - - '8' -pcre2: - - '10.42' -pixman: - - 0 -poco: - - 1.12.4 -poppler: - - '23.07' -postgresql: - - '16' -postgresql_plpython: - - '16' -proj: - - 9.3.1 -pulseaudio: - - '16.1' -pulseaudio_client: - - '16.1' -pulseaudio_daemon: - - '16.1' -pybind11_abi: - - 4 -python: - # part of a zip_keys: python, python_impl, numpy - - 3.8.* *_cpython - - 3.9.* *_cpython - - 3.10.* *_cpython - - 3.11.* *_cpython -python_impl: - # part of a zip_keys: python, python_impl, numpy - - cpython - - cpython - - cpython - - cpython -pytorch: - - '2.0' -pyqt: - - 5.15 -pyqtwebengine: - - 5.15 -pyqtchart: - - 5.15 -qt: - - 5.15 -qt_main: - - 5.15 -qt6_main: - - '6.6' -qtkeychain: - - '0.14' -rdma_core: - - '49' -re2: - - 2023.06.02 -readline: - - "8" -rocksdb: - - '8.0' -root_base: - - 6.28.10 -ruby: - - 2.5 - - 2.6 -r_base: - - 4.1 # [win] - - 4.2 # [not win] - - 4.3 # [not win] -libscotch: - - 7.0.4 -libptscotch: - - 7.0.4 -scotch: - - 7.0.4 -ptscotch: - - 7.0.4 -s2n: - - 1.4.1 -sdl2: - - '2' -sdl2_image: - - '2' -sdl2_mixer: - - '2' -sdl2_net: - - '2' -sdl2_ttf: - - '2' -singular: - - 4.3.2.p8 -snappy: - - 1 -soapysdr: - - '0.8' -sox: - - 14.4.2 -spdlog: - - '1.12' -# keep sqlite in sync with libsqlite -sqlite: - - 3 -srm_ifce: - - 1.24.6 -starlink_ast: - - '9.2.7' -suitesparse: - - 5 -superlu_dist: - - '8' -tbb: - - '2021' -tbb_devel: - - '2021' -tensorflow: - - '2.14' -thrift_cpp: - - 0.18.1 -tinyxml2: - - 10 -tk: - - 8.6 # [not ppc64le] -tiledb: - - '2.19' -ucx: - - '1.15.0' -uhd: - - 4.6.0 -urdfdom: - - 4 -vc: # [win] - - 14 # [win] -vlfeat: - - 0.9.21 -volk: - - '3.1' -vtk: - - 9.2.6 -wcslib: - - '8' -wxwidgets: - - '3.2' -x264: - - '1!164.*' -x265: - - '3.5' -xerces_c: - - 3.2 -xrootd: - - '5' -xz: - - 5 -zeromq: - - '4.3.5' -zfp: - - 1.0 -zlib: - - 1.2 -zlib_ng: - - 2.0 -zstd: - - '1.5' diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..07fe41c52 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/.github/testpr_environment.yml b/.github/testpr_environment.yml deleted file mode 100644 index 8df50df86..000000000 --- a/.github/testpr_environment.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: testpr_env -channels: - - robostack-staging - - conda-forge -dependencies: - - python 3.11.* - - pip - - boa - - conda-build - - rospkg - - catkin_pkg >=0.4.16 - - ruamel.yaml >=0.16.6,<0.18 - - rosdistro >=0.8.0 - - empy >=3.3.4 - - networkx diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e2e21ca78..053877ad3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,3 +1,5 @@ +name: Generate CI pipelines for ROS 2 packages + permissions: actions: write contents: write @@ -18,7 +20,7 @@ jobs: python-version: '3.11' # Version range or exact version of a Python version to use, using SemVer's version range syntax - name: Install vinca run: | - pip install git+https://github.com/RoboStack/vinca.git + pip install git+https://github.com/RoboStack/vinca.git@rattler-build-humble - name: Generate recipes for linux-64 run: | diff --git a/.github/workflows/testpr.yml b/.github/workflows/testpr.yml index 247dacda6..53df0202b 100644 --- a/.github/workflows/testpr.yml +++ b/.github/workflows/testpr.yml @@ -8,71 +8,51 @@ env: jobs: build: - runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, macos-14, windows-2019] - platform: [linux-64, linux-aarch64, osx-64, win-64, osx-arm64] - exclude: - - os: ubuntu-latest - platform: win-64 - - os: ubuntu-latest - platform: osx-64 + include: - os: ubuntu-latest - platform: osx-arm64 - - os: macos-14 platform: linux-64 - - os: macos-14 + - os: cirun-linux-aarch64--${{ github.run_id }} platform: linux-aarch64 - - os: macos-14 + - os: macos-13 platform: osx-64 - os: macos-14 - platform: win-64 - - os: macos-latest - platform: linux-64 - - os: macos-latest - platform: linux-aarch64 - - os: macos-latest platform: osx-arm64 - - os: macos-latest - platform: win-64 - os: windows-2019 - platform: linux-64 - - os: windows-2019 - platform: linux-aarch64 - - os: windows-2019 - platform: osx-64 - - os: windows-2019 - platform: osx-arm64 + platform: win-64 + + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token + fetch-depth: 0 # otherwise, you will failed to push refs to dest repo + + - uses: prefix-dev/setup-pixi@v0.8.1 + with: + environments: beta + frozen: true + # Workaround for https://github.com/RoboStack/ros-humble/pull/141#issuecomment-1941919816 - name: Clean up PATH if: contains(matrix.os, 'windows') uses: egor-tensin/cleanup-path@v4 with: # cygpath in C:\Program Files\Git\usr\bin is used by install micromamba - # git in C:\Program Files\Git\bin is used by pip install git+ + # git in C:\Program Files\Git\bin is used by pip install git+ dirs: 'C:\Program Files\Git\usr\bin;C:\Program Files\Git\bin;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin' - - uses: actions/checkout@master - - name: install micromamba - uses: mamba-org/setup-micromamba@main - with: - environment-file: .github/testpr_environment.yml - condarc: | - channels: - - robostack-staging - - conda-forge - - - shell: bash -l {0} - if: matrix.platform == 'linux-aarch64' - run: | - echo "::group::Configure binfmt_misc" - docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes - export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" - export GIT_BRANCH="$(basename $GITHUB_REF)" - echo "::endgroup::" + # - shell: bash -l {0} + # if: matrix.platform == 'linux-aarch64' + # run: | + # echo "::group::Configure binfmt_misc" + # docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes + # export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" + # export GIT_BRANCH="$(basename $GITHUB_REF)" + # echo "::endgroup::" - name: Install libgl1-mesa-dev (only for linux-aarch64) if: matrix.platform == 'linux-aarch64' @@ -81,24 +61,15 @@ jobs: sudo apt-get update sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libx11-dev libxi-dev libxmu-dev - - shell: bash -l {0} - run: | - conda config --show channels | grep defaults && conda config --remove channels defaults - conda info - conda config --show - micromamba install -y pip rospkg networkx "catkin_pkg>=0.4.16" "ruamel.yaml>=0.16.6" "rosdistro>=0.8.0" "empy>=3.3.4" boa - - name: install vinca - shell: bash -l {0} - run: | - # use no-deps for now, otherwise problems with ruamel. - pip install git+https://github.com/RoboStack/vinca.git --no-deps # For some reason, the Strawberry perl's pkg-config is found # instead of the conda's one, so let's delete the /c/Strawberry directory + # Furthermore, we also need to remove an older SDK that is used and can result in compilation problems - name: Debug pkg-config problem if: contains(matrix.os, 'windows') shell: bash -l {0} run: | rm -rf /c/Strawberry + rm -rf "/c/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/" - name: Check what files have changed id: filecheck @@ -119,85 +90,82 @@ jobs: echo "::set-output name=WIN_YAML_CHANGED::${?}" - name: Generate recipes for linux-64 shell: bash -l {0} - if: steps.filecheck.outputs.LINUX_YAML_CHANGED == 1 && matrix.os == 'ubuntu-latest' && matrix.platform == 'linux-64' + if: steps.filecheck.outputs.LINUX_YAML_CHANGED == 1 && matrix.platform == 'linux-64' run: | - git clean -fdx cp vinca_linux_64.yaml vinca.yaml - vinca --platform linux-64 - ls - cat recipe.yaml + mkdir -p recipes + $HOME/.pixi/bin/pixi run -e beta -v vinca --platform linux-64 -m -n + ls -la recipes - name: Generate recipes for linux-aarch64 shell: bash -l {0} - if: steps.filecheck.outputs.LINUX_AARCH_YAML_CHANGED == 1 && matrix.os == 'ubuntu-latest' && matrix.platform == 'linux-aarch64' + if: steps.filecheck.outputs.LINUX_AARCH_YAML_CHANGED == 1 && matrix.platform == 'linux-aarch64' run: | - git clean -fdx cp vinca_linux_aarch64.yaml vinca.yaml - vinca --platform linux-aarch64 - ls - cat recipe.yaml + mkdir -p recipes + $HOME/.pixi/bin/pixi run -e beta -v vinca --platform linux-aarch64 -m -n + ls -la recipes - name: Generate recipes for osx-64 shell: bash -l {0} - if: steps.filecheck.outputs.OSX_YAML_CHANGED == 1 && matrix.os == 'macos-latest' && matrix.platform == 'osx-64' + if: steps.filecheck.outputs.OSX_YAML_CHANGED == 1 && matrix.platform == 'osx-64' run: | - git clean -fdx cp vinca_osx.yaml vinca.yaml - vinca --platform osx-64 - ls - cat recipe.yaml + mkdir -p recipes + $HOME/.pixi/bin/pixi run -e beta -v vinca --platform osx-64 -m -n + ls -la recipes - name: Generate recipes for osx-arm64 shell: bash -l {0} - if: steps.filecheck.outputs.OSX_ARM_YAML_CHANGED == 1 && matrix.os == 'macos-14' && matrix.platform == 'osx-arm64' + if: steps.filecheck.outputs.OSX_ARM_YAML_CHANGED == 1 && matrix.platform == 'osx-arm64' run: | - git clean -fdx cp vinca_osx_arm64.yaml vinca.yaml - vinca --platform osx-arm64 - ls - cat recipe.yaml + mkdir -p recipes + $HOME/.pixi/bin/pixi run -e beta -v vinca --platform osx-arm64 -m -n + ls -la recipes - name: Generate recipes for win-64 shell: bash -l {0} - if: steps.filecheck.outputs.WIN_YAML_CHANGED == 1 && matrix.os == 'windows-2019' && matrix.platform == 'win-64' + if: steps.filecheck.outputs.WIN_YAML_CHANGED == 1 && matrix.platform == 'win-64' run: | + # Workaround for problem related to long paths echo "CONDA_BLD_PATH=C:\\bld\\" >> $GITHUB_ENV - git clean -fdx + mkdir /c/bld cp vinca_win.yaml vinca.yaml - vinca --platform win-64 - ls - cat recipe.yaml + mkdir -p recipes + $HOME/.pixi/bin/pixi run -e beta -v vinca --platform win-64 -m -n + ls -la recipes - name: Check if there are packages to be built id: newrecipecheck shell: bash -l {0} run: | # continue on error set +e - grep -q "outputs: \[\]" recipe.yaml > /dev/null + test ! -d recipes echo "::set-output name=RECIPE_CREATED::${?}" - name: Build recipes for linux-64 shell: bash -l {0} + if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.LINUX_YAML_CHANGED == 1 && matrix.platform == 'linux-64' run: | - boa build additional_recipes/ros2-distro-mutex/ -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml - boa build . -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml - if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.LINUX_YAML_CHANGED == 1 && matrix.os == 'ubuntu-latest' && matrix.platform == 'linux-64' + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe additional_recipes/ros2-distro-mutex/ --target-platform linux-64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe-dir recipes --target-platform linux-64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing - name: Build recipes for linux-aarch64 shell: bash -l {0} - if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.LINUX_AARCH_YAML_CHANGED == 1 && matrix.os == 'ubuntu-latest' && matrix.platform == 'linux-aarch64' + if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.LINUX_AARCH_YAML_CHANGED == 1 && matrix.platform == 'linux-aarch64' run: | - boa build additional_recipes/ros2-distro-mutex/ -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml --target-platform=linux-aarch64 - boa build . -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml --target-platform=linux-aarch64 + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe additional_recipes/ros2-distro-mutex/ --target-platform linux-aarch64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe-dir recipes --target-platform linux-aarch64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing - name: Build recipes for osx-64 shell: bash -l {0} - if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.OSX_YAML_CHANGED == 1 && matrix.os == 'macos-latest' && matrix.platform == 'osx-64' + if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.OSX_YAML_CHANGED == 1 && matrix.platform == 'osx-64' run: | - boa build additional_recipes/ros2-distro-mutex/ -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml - boa build . -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe additional_recipes/ros2-distro-mutex/ --target-platform osx-64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe-dir recipes --target-platform osx-64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing - name: Build recipes for osx-arm64 shell: bash -l {0} - if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.OSX_ARM_YAML_CHANGED == 1 && matrix.os == 'macos-14' && matrix.platform == 'osx-arm64' + if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.OSX_ARM_YAML_CHANGED == 1 && matrix.platform == 'osx-arm64' run: | - boa build additional_recipes/ros2-distro-mutex/ -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml --target-platform=osx-arm64 - boa build . -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe additional_recipes/ros2-distro-mutex/ --target-platform osx-arm64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing + env -i $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe-dir recipes --target-platform osx-arm64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing - name: Build recipes for win-64 shell: bash -l {0} - if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.WIN_YAML_CHANGED == 1 && matrix.os == 'windows-2019' && matrix.platform == 'win-64' + if: steps.newrecipecheck.outputs.RECIPE_CREATED == 1 && steps.filecheck.outputs.WIN_YAML_CHANGED == 1 && matrix.platform == 'win-64' run: | - boa build additional_recipes/ros2-distro-mutex/ -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml - boa build . -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml + $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe additional_recipes/ros2-distro-mutex/ --target-platform win-64 -m ./conda_build_config.yaml -c robostack-staging -c conda-forge --skip-existing + $HOME/.pixi/bin/pixi run -e beta rattler-build build --recipe-dir recipes -m ./conda_build_config.yaml --target-platform win-64 -c robostack-staging -c conda-forge --skip-existing diff --git a/.gitignore b/.gitignore index 74fe3e5b7..dc169f00c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,7 @@ recipes/ *.ps1 *.json .DS_Store +# pixi environments +.pixi +*.egg-info +output/ diff --git a/.scripts/build_linux.sh b/.scripts/build_linux.sh index e4355408a..b1c930061 100755 --- a/.scripts/build_linux.sh +++ b/.scripts/build_linux.sh @@ -9,67 +9,25 @@ set -xeuo pipefail export PYTHONUNBUFFERED=1 export FEEDSTOCK_ROOT="${FEEDSTOCK_ROOT:-/home/conda/feedstock_root}" export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" -# export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" -# export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" -cat >~/.condarc <=24.5.0" pip boa quetz-client -c conda-forge - set -e -# echo -e "\n\nSetting up the condarc and mangling the compiler." -# # setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml -# # mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml - -# echo -e "\n\nMangling homebrew in the CI to avoid conflicts." -# # /usr/bin/sudo mangle_homebrew -# # /usr/bin/sudo -k - -# echo -e "\n\nRunning the build setup script." -# # source run_conda_forge_build_setup - -export "CONDA_BLD_PATH=$CONDA_PREFIX/conda-bld/" - -mkdir -p $CONDA_BLD_PATH -conda index $CONDA_BLD_PATH -conda config --set anaconda_upload yes -conda config --set show_channel_urls true -conda config --set auto_update_conda false -conda config --set add_pip_as_python_dependency false - -conda config --add channels conda-forge -conda config --add channels robostack-staging -conda config --add channels $CONDA_BLD_PATH -# conda config --set channel_priority strict +export FEEDSTOCK_ROOT=`pwd` +export "CONDA_BLD_PATH=$HOME/conda-bld/" -# echo -e "\n\nMaking the build clobber file and running the build." -# make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml +curl -fsSL https://pixi.sh/install.sh | bash +export PATH="$HOME/.pixi/bin:$PATH" -conda info -conda config --show-sources -conda list --show-channel-urls +# Remove homebrew from $PATH +export PATH=$(echo $PATH | tr ":" "\n" | grep -v 'homebrew' | xargs | tr ' ' ':') for recipe in ${CURRENT_RECIPES[@]}; do - cd ${FEEDSTOCK_ROOT}/recipes/${recipe} - boa build . -m ${FEEDSTOCK_ROOT}/.ci_support/conda_forge_pinnings.yaml -m ${FEEDSTOCK_ROOT}/conda_build_config.yaml -done + pixi run -v rattler-build build \ + --recipe ${FEEDSTOCK_ROOT}/recipes/${recipe} \ + -m ${FEEDSTOCK_ROOT}/conda_build_config.yaml \ + -c robostack-staging -c conda-forge \ + --output-dir $CONDA_BLD_PATH -anaconda -t ${ANACONDA_API_TOKEN} upload ${CONDA_BLD_PATH}/osx-64/*.tar.bz2 --force -# quetz-client "${QUETZ_URL}" ${CONDA_BLD_PATH} --force - -# conda build ./recipe -m ./.ci_support/${CONFIG}.yaml --clobber-file ./.ci_support/clobber_${CONFIG}.yaml + # -m ${FEEDSTOCK_ROOT}/.ci_support/conda_forge_pinnings.yaml \ +done -# if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then -# echo -e "\n\nUploading the packages." -# upload_package --validate --feedstock-name="libsolv-feedstock" ./ ./recipe ./.ci_support/${CONFIG}.yaml -# fi +pixi run upload ${CONDA_BLD_PATH}/osx-*/*.conda --force diff --git a/.scripts/build_osx_arm64.sh b/.scripts/build_osx_arm64.sh index f70f96ae3..d6286fbdb 100755 --- a/.scripts/build_osx_arm64.sh +++ b/.scripts/build_osx_arm64.sh @@ -1,70 +1,25 @@ #!/bin/bash set -x - -export FEEDSTOCK_ROOT=`pwd` - -echo -e "\n\nInstalling a fresh version of Miniforge." -MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download" -MINIFORGE_FILE="Mambaforge-MacOSX-arm64.sh" -curl -L -O --silent "${MINIFORGE_URL}/${MINIFORGE_FILE}" -/bin/bash $MINIFORGE_FILE -b - -echo -e "\n\nConfiguring conda." - -source ${HOME}/mambaforge/etc/profile.d/conda.sh -conda activate base - -conda config --set remote_max_retries 5 - -echo -e "\n\nInstalling conda-forge-ci-setup and conda-build." -mamba install -n base --quiet --yes conda-forge-ci-setup "conda-build>=24.5.0" pip boa quetz-client -c conda-forge - set -e -# echo -e "\n\nSetting up the condarc and mangling the compiler." -# # setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml -# # mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml - -# echo -e "\n\nMangling homebrew in the CI to avoid conflicts." -# # /usr/bin/sudo mangle_homebrew -# # /usr/bin/sudo -k - -# echo -e "\n\nRunning the build setup script." -# # source run_conda_forge_build_setup - -export "CONDA_BLD_PATH=$CONDA_PREFIX/conda-bld/" - -mkdir -p $CONDA_BLD_PATH -conda index $CONDA_BLD_PATH -conda config --set anaconda_upload yes -conda config --set show_channel_urls true -conda config --set auto_update_conda false -conda config --set add_pip_as_python_dependency false - -conda config --add channels conda-forge -conda config --add channels robostack-staging -conda config --add channels $CONDA_BLD_PATH -# conda config --set channel_priority strict +export FEEDSTOCK_ROOT=`pwd` +export "CONDA_BLD_PATH=$HOME/conda-bld/" -# echo -e "\n\nMaking the build clobber file and running the build." -# make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml +curl -fsSL https://pixi.sh/install.sh | bash +export PATH="$HOME/.pixi/bin:$PATH" -conda info -conda config --show-sources -conda list --show-channel-urls +# Remove homebrew from $PATH +export PATH=$(echo $PATH | tr ":" "\n" | grep -v 'homebrew' | xargs | tr ' ' ':') for recipe in ${CURRENT_RECIPES[@]}; do - cd ${FEEDSTOCK_ROOT}/recipes/${recipe} - boa build . -m ${FEEDSTOCK_ROOT}/.ci_support/conda_forge_pinnings.yaml -m ${FEEDSTOCK_ROOT}/conda_build_config.yaml --target-platform=osx-arm64 -done + pixi run -v rattler-build build \ + --recipe ${FEEDSTOCK_ROOT}/recipes/${recipe} \ + -m ${FEEDSTOCK_ROOT}/conda_build_config.yaml \ + -c robostack-staging -c conda-forge \ + --output-dir $CONDA_BLD_PATH -anaconda -t ${ANACONDA_API_TOKEN} upload ${CONDA_BLD_PATH}/osx-arm64/*.tar.bz2 --force -# quetz-client "${QUETZ_URL}" ${CONDA_BLD_PATH} --force - -# conda build ./recipe -m ./.ci_support/${CONFIG}.yaml --clobber-file ./.ci_support/clobber_${CONFIG}.yaml + # -m ${FEEDSTOCK_ROOT}/.ci_support/conda_forge_pinnings.yaml \ +done -# if [[ "${UPLOAD_PACKAGES}" != "False" ]]; then -# echo -e "\n\nUploading the packages." -# upload_package --validate --feedstock-name="libsolv-feedstock" ./ ./recipe ./.ci_support/${CONFIG}.yaml -# fi +pixi run upload ${CONDA_BLD_PATH}/osx-*/*.conda --force diff --git a/.scripts/build_win.bat b/.scripts/build_win.bat index a0c28bd8f..7325fc07c 100644 --- a/.scripts/build_win.bat +++ b/.scripts/build_win.bat @@ -1,9 +1,7 @@ setlocal EnableExtensions EnableDelayedExpansion -call %CONDA%\condabin\conda_hook.bat -call %CONDA%\condabin\conda.bat activate base +set CONDA_BLD_PATH=C:\bld echo "PATH is %PATH%" -echo "CONDA_BLD_PATH is %CONDA_BLD_PATH%" rmdir /Q/S C:\Strawberry\ rmdir /Q/S "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\" @@ -11,25 +9,21 @@ rmdir /Q/S "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\" set "FEEDSTOCK_ROOT=%cd%" mkdir %CONDA_BLD_PATH% -call conda index %CONDA_BLD_PATH% - -rem call conda config --remove channels defaults -call conda config --add channels conda-forge -call conda config --add channels robostack-staging -call conda config --add channels %CONDA_BLD_PATH% -:: call conda config --set channel_priority strict :: Enable long path names on Windows reg add HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f -:: conda remove --force m2-git - for %%X in (%CURRENT_RECIPES%) do ( echo "BUILDING RECIPE %%X" cd %FEEDSTOCK_ROOT%\recipes\%%X\ - boa build . -m %FEEDSTOCK_ROOT%\.ci_support\conda_forge_pinnings.yaml -m %FEEDSTOCK_ROOT%\conda_build_config.yaml + pixi run -v rattler-build build --recipe %FEEDSTOCK_ROOT%\recipes\%%X\ ^ + -m %FEEDSTOCK_ROOT%\conda_build_config.yaml ^ + -c robostack-staging -c conda-forge ^ + --output-dir %CONDA_BLD_PATH% + if errorlevel 1 exit 1 + rem -m %FEEDSTOCK_ROOT%\.ci_support\conda_forge_pinnings.yaml ) -anaconda -t %ANACONDA_API_TOKEN% upload "C:\bld\win-64\*.tar.bz2" --force +pixi run upload "%CONDA_BLD_PATH%\win-64\*.conda" --force if errorlevel 1 exit 1 diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh deleted file mode 100755 index 8b50efc15..000000000 --- a/.scripts/run_docker_build.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env bash - -# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here -# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent -# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also -# benefit from the improvement. - -set -xeo pipefail - -THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )" -PROVIDER_DIR="$(basename $THISDIR)" - -FEEDSTOCK_ROOT=$(cd "$(dirname "$0")/.."; pwd;) -RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe" - -if [ -z ${FEEDSTOCK_NAME} ]; then - export FEEDSTOCK_NAME=$(basename ${FEEDSTOCK_ROOT}) -fi - -docker info - -# In order for the conda-build process in the container to write to the mounted -# volumes, we need to run with the same id as the host machine, which is -# normally the owner of the mounted volumes, or at least has write permission -export HOST_USER_ID=$(id -u) -# Check if docker-machine is being used (normally on OSX) and get the uid from -# the VM -if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then - export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u) -fi - -ARTIFACTS="$FEEDSTOCK_ROOT/build_artifacts" - -# if [ -z "$CONFIG" ]; then -# set +x -# FILES=`ls .ci_support/linux_*` -# CONFIGS="" -# for file in $FILES; do -# CONFIGS="${CONFIGS}'${file:12:-5}' or "; -# done -# echo "Need to set CONFIG env variable. Value can be one of ${CONFIGS:0:-4}" -# exit 1 -# fi - -# if [ -z "${DOCKER_IMAGE}" ]; then -# SHYAML_INSTALLED="$(shyaml -h || echo NO)" -# if [ "${SHYAML_INSTALLED}" == "NO" ]; then -# echo "WARNING: DOCKER_IMAGE variable not set and shyaml not installed. Falling back to condaforge/linux-anvil-comp7" -# DOCKER_IMAGE="condaforge/linux-anvil-comp7" -# else -# DOCKER_IMAGE="$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 condaforge/linux-anvil-comp7 )" -# fi -# fi - -# DOCKER_IMAGE="condaforge/linux-anvil-comp7" -# Docker image is set in the pipeline - -mkdir -p "$ARTIFACTS" -# DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}" -# rm -f "$DONE_CANARY" - -# Allow people to specify extra default arguments to `docker run` (e.g. `--rm`) -DOCKER_RUN_ARGS="${CONDA_FORGE_DOCKER_RUN_ARGS}" -if [ -z "${CI}" ]; then - DOCKER_RUN_ARGS="-it ${DOCKER_RUN_ARGS}" -fi - -export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" -docker run --rm ${DOCKER_RUN_ARGS} \ - -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw,z \ - -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z \ - -e HOST_USER_ID \ - -e UPLOAD_PACKAGES \ - -e GIT_BRANCH \ - -e UPLOAD_ON_BRANCH \ - -e CI \ - -e FEEDSTOCK_NAME \ - -e CPU_COUNT \ - -e ANACONDA_API_TOKEN \ - -e CURRENT_RECIPES \ - $DOCKER_IMAGE \ - bash \ - /home/conda/feedstock_root/${PROVIDER_DIR}/build_linux.sh - - # -e CONFIG \ - -# verify that the end of the script was reached -# test -f "$DONE_CANARY" diff --git a/additional_recipes/ros-humble-octomap/recipe.yaml b/additional_recipes/ros-humble-octomap/recipe.yaml index 43a86907e..f6fdfbde5 100644 --- a/additional_recipes/ros-humble-octomap/recipe.yaml +++ b/additional_recipes/ros-humble-octomap/recipe.yaml @@ -1,17 +1,17 @@ package: name: ros-humble-octomap - version: "1.9.8" + version: "1.10.0" build: - number: 2 + number: 0 requirements: run: - - octomap 1.9.* + - octomap 1.10.* about: - home: https://github.com/conda-forge/octomap-feedstock + homepage: https://github.com/conda-forge/octomap-feedstock license: BSD-3-Clause summary: | An Efficient Probabilistic 3D Mapping Framework Based on Octrees diff --git a/additional_recipes/ros-humble-urdfdom-py/recipe.yaml b/additional_recipes/ros-humble-urdfdom-py/recipe.yaml index 35da339ce..e9950c66e 100644 --- a/additional_recipes/ros-humble-urdfdom-py/recipe.yaml +++ b/additional_recipes/ros-humble-urdfdom-py/recipe.yaml @@ -1,16 +1,16 @@ package: name: ros-humble-urdfdom-py - version: "1.2.0" + version: "1.2.1" build: number: 2 requirements: run: - - urdfdom-py 1.2.0 + - urdfdom-py 1.2.1.* about: - home: https://github.com/ros/urdf_parser_py + homepage: https://github.com/ros/urdf_parser_py license: BSD-3-Clause summary: | Standalone URDF parser for Python. diff --git a/additional_recipes/ros2-distro-mutex/recipe.yaml b/additional_recipes/ros2-distro-mutex/recipe.yaml index 3dedac159..810468941 100644 --- a/additional_recipes/ros2-distro-mutex/recipe.yaml +++ b/additional_recipes/ros2-distro-mutex/recipe.yaml @@ -1,13 +1,12 @@ package: name: ros2-distro-mutex - version: 0.5.0 + version: 0.6.0 build: number: 0 - string: humble - run_exports: - weak: - - "{{ pin_subpackage('ros2-distro-mutex', max_pin='x.x') }}" + # Note: keep in sync with build number + # Cannot be done automatically, see https://github.com/mamba-org/boa/issues/278 + string: humble_0 requirements: # NOTE: @@ -28,15 +27,20 @@ requirements: # values here should be applied from run_exports! # if the upstream package does not have run_exports # please change it in the conda_build_config.yaml! - run_constrained: - - libboost 1.82 - - libboost-devel 1.82 - - pcl 1.13.1 - - gazebo 11 - - libpqxx 6 + run_constraints: + - libboost 1.86.* + - libboost-devel 1.86.* + - pcl 1.14.1.* + - gazebo 11.* + - libprotobuf 5.28.2.* + + run_exports: + weak: + - ${{ pin_subpackage('ros2-distro-mutex', upper_bound='x.x') }} + about: - home: https://github.com/robostack/ros-humble + homepage: https://github.com/robostack/ros-humble license: BSD-3-Clause summary: | The ROS2 distro mutex. To switch between ROS2 versions, you need to change the mutex. diff --git a/conda_build_config.yaml b/conda_build_config.yaml index c30cf97fc..cdb780d86 100644 --- a/conda_build_config.yaml +++ b/conda_build_config.yaml @@ -1,51 +1,33 @@ -gazebo: - - '11' -libpqxx: - - 6 numpy: - - 1.23 -ogre: - - 1.12.* -setuptools: - - 69 - -cdt_name: # [linux] - - cos7 # [linux] + - 1.26 +libprotobuf: + - 5.28.2 +protobuf: + - 5.28.2 +spdlog: + - 1.14 + +cdt_name: + - ${{ "cos7" if linux }} python: - 3.11.* *_cpython python_impl: - cpython -# Project overrides -macos_min_version: # [osx and x86_64] - - 10.14 # [osx and x86_64] -macos_machine: # [osx] - - x86_64-apple-darwin13.4.0 # [osx and x86_64] - - arm64-apple-darwin20.0.0 # [osx and arm64] -MACOSX_DEPLOYMENT_TARGET: # [osx] - - 11.0 # [osx and arm64] - - 10.14 # [osx and x86_64] -CONDA_BUILD_SYSROOT: - - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk # [osx and arm64] - - -# fix build metadata, needed for mapviz and moveit-core -replacements: - all_replacements: - - tag: 'pkg-config build metadata' - glob_patterns: - - '*.pc' - regex_re: '(?:-L|-I)?\"?([^;\s]+\/sysroot\/)' - replacement_re: '$(CONDA_BUILD_SYSROOT_S)' - regex_rg: '([^;\s"]+/sysroot/)' - - tag: 'CMake build metadata' - glob_patterns: - - '*.cmake' - regex_re: '([^;\s"]+/sysroot)' - replacement_re: '$ENV{CONDA_BUILD_SYSROOT}' - - tag: 'CMake build metadata OSX' - glob_patterns: - - '*.cmake' - regex_re: '([^;\s"]+/MacOSX\d*\.?\d*\.sdk)' - replacement_re: '$ENV{CONDA_BUILD_SYSROOT}' +c_stdlib: + - ${{ "sysroot" if linux }} + - ${{ "macosx_deployment_target" if osx }} + - ${{ "vs" if win }} +c_stdlib_version: + - ${{ "2.17" if linux }} + - ${{ "10.14" if osx and x86_64 }} + - ${{ "11.0" if osx and arm64 }} +c_compiler: + - ${{ "gcc" if linux }} + - ${{ "clang" if osx }} + - ${{ "vs2019" if win }} +cxx_compiler: + - ${{ "gxx" if linux }} + - ${{ "clangxx" if osx }} + - ${{ "vs2019" if win }} diff --git a/env/robostackenv.yaml b/env/robostackenv.yaml deleted file mode 100644 index 95af1c9d9..000000000 --- a/env/robostackenv.yaml +++ /dev/null @@ -1,20 +0,0 @@ -name: robostackenv -channels: -- robostack-staging -- conda-forge -dependencies: -- python=3.11 -- conda-build -- anaconda-client -- mamba -- conda -- catkin_pkg -- ruamel.yaml -- rosdistro -- empy -- networkx -- requests -- boa -- pip -- pip: - - git+https://github.com/RoboStack/vinca.git@master diff --git a/patch/dependencies.yaml b/patch/dependencies.yaml index c4cc9ed87..f06079ed9 100644 --- a/patch/dependencies.yaml +++ b/patch/dependencies.yaml @@ -13,7 +13,7 @@ yaml_cpp_vendor: add_host: ["yaml-cpp"] add_run: ["yaml-cpp"] zstd_vendor: - add_host: ["zstd", {sel(not win): zstd-static}] + add_host: ["zstd", "${{ 'zstd-static' if not win }}"] add_run: ["zstd"] sqlite3_vendor: add_host: ["sqlite"] @@ -34,6 +34,7 @@ intra_process_demo: add_host: ["REQUIRE_OPENGL"] rviz_ogre_vendor: add_host: ["zlib", "freeimage", "freetype", "assimp", "zziplib", "pugixml"] + add_build: ["vcstool"] add_run: ["assimp"] pcl_conversions: add_host: ["REQUIRE_OPENGL", "libboost-devel"] @@ -45,7 +46,7 @@ behaviortree_cpp_v3: add_host: ["libboost-devel", "cppzmq"] add_run: ["libboost"] plotjuggler: - add_host: ["libxcb", {sel(linux): elfutils}, "ros-humble-ros-workspace"] + add_host: ["libxcb", "${{ 'elfutils' if linux }}", "ros-humble-ros-workspace"] embree_vendor: add_host: ["REQUIRE_OPENGL", "libpng", "libjpeg-turbo", "openimageio", "tbb", "tbb-devel", "embree"] ign_rviz_common: @@ -75,7 +76,7 @@ fmilibrary_vendor: mrpt2: add_host: ["assimp", "octomap", "tinyxml2", "libboost-devel", "jsoncpp", "gtest", "libboost-python-devel", "libdc1394", "xorg-libxcomposite", "libftdi", "ros-humble-octomap"] add_run: ["assimp", "octomap", "tinyxml2", "libboost-devel", "jsoncpp", "gtest", "libboost-python-devel", "libdc1394", "xorg-libxcomposite", "libftdi", "ros-humble-octomap"] - add_build: [{"sel(linux)": "{{ cdt('libxcomposite-devel') }}"}] + add_build: ["${{ cdt('libxcomposite-devel') if linux }}"] ros1_rosbag_storage_vendor: add_host: ["ros-noetic-roscpp", "ros-noetic-roslz4", "ros-noetic-rostest"] add_run: ["ros-noetic-roscpp", "ros-noetic-roslz4"] @@ -84,14 +85,16 @@ popf: rtabmap: add_host: ["REQUIRE_OPENGL", "ceres-solver", "libdc1394", "libusb", "vtk"] backward_ros: - add_host: [{sel(linux or (osx and x86_64)): binutils}, {sel(linux): elfutils}] + add_host: ["${{ 'binutils' if linux or (osx and x86_64) }}", "${{ 'elfutils' if linux }}", "ros-humble-ament-cmake-libraries"] nav2_smac_planner: - add_build: [{"sel(osx)": "llvm-openmp"}] - add_host: [{"sel(osx)": "llvm-openmp"}, "ompl", "libode"] + add_build: ["${{ 'llvm-openmp' if osx }}"] + add_host: ["${{ 'llvm-openmp' if osx }}", "ompl", "libode"] nav2_util: add_host: ["libboost-devel"] nav2_constrained_smoother: - add_host: [{"sel(win)": "openblas"}] + add_host: ["${{ 'openblas' if win }}"] +nav2_mppi_controller: + add_build: ["${{ 'clang <19' if osx }}"] ompl: add_host: ["ompl"] pybind11_vendor: @@ -101,7 +104,7 @@ python_qt_binding: add_host: ["pyqt-builder"] add_run: ["pyqt-builder"] qt_gui_cpp: - add_build: [{sel(build_platform != target_platform): pyqt}, {sel(build_platform != target_platform): qt-main}] + add_build: ["${{ 'pyqt' if (build_platform != target_platform) }}", "${{ 'qt-main' if (build_platform != target_platform) }}"] add_host: ["REQUIRE_OPENGL", "pyqt-builder", "pep517"] add_run: ["pyqt-builder", "pep517"] rqt_gui_cpp: @@ -153,12 +156,23 @@ ros_image_to_qimage: rqt_image_overlay: add_host: ["REQUIRE_OPENGL"] slam_toolbox: - add_build: [{sel(build_platform != target_platform): qt-main}] + add_build: ["${{ 'qt-main' if (build_platform != target_platform) }}"] add_host: ["REQUIRE_OPENGL"] vision_msgs_rviz_plugins: - add_build: [{sel(build_platform != target_platform): qt-main}] + add_build: ["${{ 'qt-main' if (build_platform != target_platform) }}"] add_host: ["REQUIRE_OPENGL"] velodyne_pointcloud: add_host: ["libboost-devel"] -motion_capture_tracking: - add_host: ["REQUIRE_OPENGL", "libboost-devel"] +# TODO unvendor?! +uncrustify_vendor: + add_build: ["vcstool"] +mimick_vendor: + add_build: ["vcstool"] +gz_cmake_vendor: + add_build: ["vcstool"] +gz_math_vendor: + add_build: ["vcstool"] +gz_utils_vendor: + add_build: ["vcstool"] +rosx_introspection: + add_host: ["rapidjson"] diff --git a/patch/ros-humble-apex-containers.patch b/patch/ros-humble-apex-containers.patch index 35a31fc0e..efb527636 100644 --- a/patch/ros-humble-apex-containers.patch +++ b/patch/ros-humble-apex-containers.patch @@ -1,13 +1,23 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index ebab722..452127f 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -27,8 +27,6 @@ set(apex_containers_sources +diff --git a/apex_containers/CMakeLists.txt b/apex_containers/CMakeLists.txt +index ebab72230e7a18cb65aaa151e211e3c1c60bc2da..89aaf1b82b05f3af120c66e81fbc9b8b32e0a766 100644 +--- a/apex_containers/CMakeLists.txt ++++ b/apex_containers/CMakeLists.txt +@@ -26,9 +26,8 @@ set(apex_containers_sources + set_source_files_properties(${apex_containers_sources} PROPERTIES language "CXX") add_library(${PROJECT_NAME} SHARED ${apex_containers_sources}) ++if(NOT WIN) target_compile_options(${PROJECT_NAME} PRIVATE - -Wall - -Werror -Wextra -pedantic -Wcast-align +@@ -40,6 +39,7 @@ target_compile_options(${PROJECT_NAME} PRIVATE + # C++-only options + target_compile_options(${PROJECT_NAME} + PRIVATE $<$: -Woverloaded-virtual -Wold-style-cast>) ++endif() + + ament_target_dependencies(${PROJECT_NAME} + foonathan_memory_vendor) diff --git a/patch/ros-humble-apriltag.patch b/patch/ros-humble-apriltag.patch deleted file mode 100644 index c50ad7715..000000000 --- a/patch/ros-humble-apriltag.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index cf57352..a3a81f2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -152,7 +152,7 @@ if (NOT Python3_NOT_FOUND AND NOT Numpy_NOT_FOUND AND PYTHONLIBS_FOUND AND BUILD - COMMAND ${CMAKE_C_COMPILER} ${PY_CFLAGS} -I${PROJECT_BINARY_DIR} -c -o apriltag_pywrap.o ${PROJECT_SOURCE_DIR}/apriltag_pywrap.c - DEPENDS ${PROJECT_SOURCE_DIR}/apriltag_pywrap.c ${PROJECT_BINARY_DIR}/apriltag_detect.docstring.h ${PROJECT_BINARY_DIR}/apriltag_py_type.docstring.h) - add_custom_command(OUTPUT apriltag${PY_EXT_SUFFIX} -- COMMAND ${PY_LINKER} ${PY_LDFLAGS} -Wl,-rpath,lib apriltag_pywrap.o $ -o apriltag${PY_EXT_SUFFIX} -+ COMMAND ${CMAKE_C_COMPILER} ${PY_LDFLAGS} -Wl,-rpath,lib apriltag_pywrap.o $ -o apriltag${PY_EXT_SUFFIX} - DEPENDS ${PROJECT_NAME} apriltag_pywrap.o) - add_custom_target(apriltag_python ALL - DEPENDS apriltag${PY_EXT_SUFFIX}) -diff --git a/Makefile b/Makefile -index 32574ad..b7c1b0c 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,7 +1,7 @@ - PREFIX ?= /usr/local - --CC = gcc --AR = ar -+CC ?= gcc -+AR ?= ar - - CFLAGS = -std=gnu99 -fPIC -Wall -Wno-unused-parameter -Wno-unused-function - CFLAGS += -I. -O3 -fno-strict-overflow -diff --git a/example/Makefile b/example/Makefile -index 6027428..e8f059a 100644 ---- a/example/Makefile -+++ b/example/Makefile -@@ -1,5 +1,5 @@ --CC = gcc --CXX = g++ -+CC ?= gcc -+CXX ?= g++ - - CPPFLAGS = -I.. `pkg-config --cflags opencv4` - CFLAGS = -g -std=gnu99 -Wall -Wno-unused-parameter -Wno-unused-function -O3 -diff --git a/python_build_flags.py b/python_build_flags.py -index f3f0e79..865c85b 100644 ---- a/python_build_flags.py -+++ b/python_build_flags.py -@@ -21,7 +21,7 @@ print('LINKER', end=';') - print(conf.get('BLDSHARED', '').split()[0], end=';') - - print('LDFLAGS', end=';') --print(' '.join(conf.get('BLDSHARED', '').split()[1:]) + ' ' + conf.get('BLDLIBRARY', '') + ' ' + conf.get('LDFLAGS', ''), end=';') -+print(' '.join(conf.get('BLDSHARED', '').split()[1:]) + ' ' + conf.get('LDFLAGS', ''), end=';') - - print('EXT_SUFFIX', end=';') - ext_suffix = '.so' diff --git a/patch/ros-humble-avt-vimba-camera.patch b/patch/ros-humble-avt-vimba-camera.patch new file mode 100644 index 000000000..f5e941c2b --- /dev/null +++ b/patch/ros-humble-avt-vimba-camera.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b1c74500..f71f7109 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -9,6 +9,8 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() + ++add_definitions(-DNOMINMAX) ++ + find_package(ament_cmake_auto REQUIRED) + + ament_auto_find_build_dependencies() diff --git a/patch/ros-humble-backward-ros.patch b/patch/ros-humble-backward-ros.patch index 4623ede2f..96f528a72 100644 --- a/patch/ros-humble-backward-ros.patch +++ b/patch/ros-humble-backward-ros.patch @@ -1,34 +1,15 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8927192..cb461f6 100644 +index 64af86c..9be355d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -29,6 +29,7 @@ include(cmake/BackwardConfig.cmake) +@@ -27,6 +27,7 @@ include(cmake/BackwardConfig.cmake) set(CMAKE_CXX_STANDARD_REQUIRED True) - set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD 14) +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) ############################################################################### # COMPILER FLAGS -diff --git a/cmake/BackwardConfigAment.cmake b/cmake/BackwardConfigAment.cmake -index 273a51a..d981cbb 100644 ---- a/cmake/BackwardConfigAment.cmake -+++ b/cmake/BackwardConfigAment.cmake -@@ -24,5 +24,13 @@ foreach(lib ${backward_ros_forced_LIBRARIES}) - set(backward_ros_full_path_LIBRARIES "${backward_ros_full_path_LIBRARIES} ${lib}") - endif() - endforeach() --SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed ${backward_ros_full_path_LIBRARIES} -Wl,--as-needed ${CMAKE_EXE_LINKER_FLAGS}") -+set(no_as_needed) -+set(as_needed) - -+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") -+ set(no_as_needed "-Wl,--no-as-needed") -+ set(as_needed "-Wl,--as-needed") -+endif() -+ -+SET(CMAKE_EXE_LINKER_FLAGS "${no_as_needed} ${backward_ros_full_path_LIBRARIES} ${as_needed} ${CMAKE_EXE_LINKER_FLAGS}") -+ diff --git a/cmake/BackwardConfig.cmake b/cmake/BackwardConfig.cmake index 77d22d2..8e95287 100644 --- a/cmake/BackwardConfig.cmake @@ -51,3 +32,55 @@ index 77d22d2..8e95287 100644 ) list(APPEND _BACKWARD_INCLUDE_DIRS ${BACKWARD_INCLUDE_DIR}) +diff --git a/cmake/BackwardConfigAment.cmake b/cmake/BackwardConfigAment.cmake +index 273a51a..d981cbb 100644 +--- a/cmake/BackwardConfigAment.cmake ++++ b/cmake/BackwardConfigAment.cmake +@@ -24,5 +24,13 @@ foreach(lib ${backward_ros_forced_LIBRARIES}) + set(backward_ros_full_path_LIBRARIES "${backward_ros_full_path_LIBRARIES} ${lib}") + endif() + endforeach() +-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed ${backward_ros_full_path_LIBRARIES} -Wl,--as-needed ${CMAKE_EXE_LINKER_FLAGS}") ++set(no_as_needed) ++set(as_needed) + ++if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") ++ set(no_as_needed "-Wl,--no-as-needed") ++ set(as_needed "-Wl,--as-needed") ++endif() ++ ++SET(CMAKE_EXE_LINKER_FLAGS "${no_as_needed} ${backward_ros_full_path_LIBRARIES} ${as_needed} ${CMAKE_EXE_LINKER_FLAGS}") ++ +diff --git a/backward_rosConfig.cmake.in b/backward_rosConfig.cmake.in +index 6713e91..bd9397a 100644 +--- a/backward_rosConfig.cmake.in ++++ b/backward_rosConfig.cmake.in +@@ -1,9 +1,11 @@ + @PACKAGE_INIT@ +-set_and_check(backward_ros_INCLUDE_DIRS "@BACKWARD_ROS_INSTALL_PREFIX@/include") ++set_and_check(backward_ros_INCLUDE_DIRS "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/include") + if(WIN32) +-set_and_check(backward_ros_LIBRARIES "@BACKWARD_ROS_INSTALL_PREFIX@/lib/backward.lib") ++set_and_check(backward_ros_LIBRARIES "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/lib/backward.lib") ++elseif(APPLE) ++set_and_check(backward_ros_LIBRARIES "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/lib/libbackward.dylib") + else() +-set_and_check(backward_ros_LIBRARIES "@BACKWARD_ROS_INSTALL_PREFIX@/lib/libbackward.so") ++set_and_check(backward_ros_LIBRARIES "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/lib/libbackward.so") + endif() + check_required_components(backward_ros) +-include(@BACKWARD_ROS_INSTALL_PREFIX@/share/@PROJECT_NAME@/cmake/BackwardConfigAment.cmake) +\ No newline at end of file ++include(@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/share/@PROJECT_NAME@/cmake/BackwardConfigAment.cmake) +diff --git a/package.xml b/package.xml +index e8bc10a..d39e613 100644 +--- a/package.xml ++++ b/package.xml +@@ -11,6 +11,7 @@ + https://github.com/pal-robotics/backward_ros + + cmake ++ ament_cmake_libraries + + libdw-dev + diff --git a/patch/ros-humble-bno055.patch b/patch/ros-humble-bno055.patch deleted file mode 100644 index 1bd94b338..000000000 --- a/patch/ros-humble-bno055.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/setup.py b/setup.py -index 552531f..0774755 100644 ---- a/setup.py -+++ b/setup.py -@@ -7,7 +7,7 @@ package_name = 'bno055' - - setup( - name=package_name, -- version='0.4.1.', -+ version='0.4.1', - # find sub-packages automatically in order to allow sub-modules, etc. to be imported: - # packages=[package_name], - packages=find_packages(exclude=['test']), diff --git a/patch/ros-humble-cartographer-ros.patch b/patch/ros-humble-cartographer-ros.patch index c18243735..d34684b4a 100644 --- a/patch/ros-humble-cartographer-ros.patch +++ b/patch/ros-humble-cartographer-ros.patch @@ -1,37 +1,56 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1beca59..3b63beb 100644 +index f7f476296..0725a05d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -49,6 +49,8 @@ find_package(tf2_ros REQUIRED) - find_package(urdf REQUIRED) +@@ -50,6 +50,16 @@ find_package(urdf REQUIRED) find_package(urdfdom_headers REQUIRED) find_package(visualization_msgs REQUIRED) + +find_package(Protobuf REQUIRED CONFIG) ++# glog is not linked, however we look for it to detect the glog version ++# and use a different code path if glog >= 0.7.0 is detected ++find_package(glog CONFIG QUIET) ++if(DEFINED glog_VERSION) ++ if(NOT glog_VERSION VERSION_LESS 0.7.0) ++ add_definitions(-DROS_CARTOGRAPHER_GLOG_GE_070) ++ endif() ++endif() + - include_directories( include -@@ -59,20 +61,13 @@ include_directories( - # Library - add_library(${PROJECT_NAME} - src/assets_writer.cpp -- src/assets_writer_main.cpp - src/map_builder_bridge.cpp - src/msg_conversion.cpp - src/node_constants.cpp - src/node.cpp -- src/node_main.cpp - src/node_options.cpp -- src/occupancy_grid_node_main.cpp - src/offline_node.cpp -- src/offline_node_main.cpp -- src/pbstream_map_publisher_main.cpp -- src/pbstream_to_ros_map_main.cpp - src/playable_bag.cpp -- src/rosbag_validate_main.cpp - src/ros_log_sink.cpp - src/ros_map.cpp - src/ros_map_writing_points_processor.cpp + ${PCL_INCLUDE_DIRS} +diff --git a/src/ros_log_sink.cpp b/src/ros_log_sink.cpp +index 1396381d4..9e189c690 100644 +--- a/src/ros_log_sink.cpp ++++ b/src/ros_log_sink.cpp +@@ -33,6 +33,11 @@ const char* GetBasename(const char* filepath) { + return base ? (base + 1) : filepath; + } + ++std::chrono::system_clock::time_point ConvertTmToTimePoint(const std::tm& tm) { ++ std::time_t timeT = std::mktime(const_cast(&tm)); // Convert std::tm to time_t ++ return std::chrono::system_clock::from_time_t(timeT); // Convert time_t to time_point ++} ++ + } // namespace + + ScopedRosLogSink::ScopedRosLogSink() : will_die_(false) { AddLogSink(this); } +@@ -46,10 +51,13 @@ void ScopedRosLogSink::send(const ::google::LogSeverity severity, + const size_t message_len) { + (void) base_filename; // TODO: remove unused arg ? + ++#if defined(ROS_CARTOGRAPHER_GLOG_GE_070) ++ const std::string message_string = ::google::LogSink::ToString( ++ severity, GetBasename(filename), line, ::google::LogMessageTime(ConvertTmToTimePoint(*tm_time)), message, message_len); + // Google glog broke the ToString API, but has no way to tell what version it is using. + // To support both newer and older glog versions, use a nasty hack were we infer the + // version based on whether GOOGLE_GLOG_DLL_DECL is defined +-#if defined(GOOGLE_GLOG_DLL_DECL) ++#elif defined(GOOGLE_GLOG_DLL_DECL) + const std::string message_string = ::google::LogSink::ToString( + severity, GetBasename(filename), line, tm_time, message, message_len); + #else + diff --git a/include/cartographer_ros/map_builder_bridge.h b/include/cartographer_ros/map_builder_bridge.h index b2c00b7..9c1befd 100644 --- a/include/cartographer_ros/map_builder_bridge.h @@ -111,19 +130,6 @@ index f3527ca..f9fb9fb 100644 rclcpp::Node::SharedPtr node_; ::rclcpp::Publisher<::cartographer_ros_msgs::msg::SubmapList>::SharedPtr submap_list_publisher_; -diff --git a/include/cartographer_ros/ros_log_sink.h b/include/cartographer_ros/ros_log_sink.h -index e603727..651305a 100644 ---- a/include/cartographer_ros/ros_log_sink.h -+++ b/include/cartographer_ros/ros_log_sink.h -@@ -32,7 +32,7 @@ class ScopedRosLogSink : public ::google::LogSink { - ~ScopedRosLogSink() override; - - void send(::google::LogSeverity severity, const char* filename, -- const char* base_filename, int line, const struct std::tm* tm_time, -+ const char* base_filename, int line, const ::google::LogMessageTime &logmsgtime, - const char* message, size_t message_len) override; - - void WaitTillSent() override; diff --git a/src/occupancy_grid_node_main.cpp b/src/occupancy_grid_node_main.cpp index 324426b..443dac2 100644 --- a/src/occupancy_grid_node_main.cpp @@ -143,23 +149,4 @@ index 324426b..443dac2 100644 rclcpp::TimerBase::SharedPtr occupancy_grid_publisher_timer_; std::string last_frame_id_; rclcpp::Time last_timestamp_; -diff --git a/src/ros_log_sink.cpp b/src/ros_log_sink.cpp -index d9b8ee2..2c688ea 100644 ---- a/src/ros_log_sink.cpp -+++ b/src/ros_log_sink.cpp -@@ -40,13 +40,13 @@ ScopedRosLogSink::~ScopedRosLogSink() { RemoveLogSink(this); } - void ScopedRosLogSink::send(const ::google::LogSeverity severity, - const char* const filename, - const char* const base_filename, const int line, -- const struct std::tm* const tm_time, -+ const ::google::LogMessageTime &logmsgtime, - const char* const message, - const size_t message_len) { - (void) base_filename; // TODO: remove unused arg ? - - const std::string message_string = ::google::LogSink::ToString( -- severity, GetBasename(filename), line, tm_time, message, message_len); -+ severity, GetBasename(filename), line, logmsgtime, message, message_len); - switch (severity) { - case ::google::GLOG_INFO: - RCLCPP_INFO_STREAM(logger_, message_string); + diff --git a/patch/ros-humble-control-toolbox.win.patch b/patch/ros-humble-control-toolbox.win.patch index d40c05daa..cd4529871 100644 --- a/patch/ros-humble-control-toolbox.win.patch +++ b/patch/ros-humble-control-toolbox.win.patch @@ -1,12 +1,32 @@ +From 791d063ea62837e86831b7b4dda48b22e680d8cc Mon Sep 17 00:00:00 2001 +From: Christoph Froehlich +Date: Mon, 25 Nov 2024 20:11:09 +0000 +Subject: [PATCH] Export symbols on windows + +--- + CMakeLists.txt | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + diff --git a/CMakeLists.txt b/CMakeLists.txt -index 7d3a2c7..4d5745c 100644 +index cc1f551..30f4bad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -73,6 +73,7 @@ target_include_directories(low_pass_filter PUBLIC - $ - ) - target_link_libraries(low_pass_filter PUBLIC low_pass_filter_parameters) -+set_target_properties(low_pass_filter PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) - ament_target_dependencies(low_pass_filter PUBLIC ${CONTROL_FILTERS_INCLUDE_DEPENDS}) +@@ -7,11 +7,16 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + endif() - # Install pluginlib xml + if(WIN32) +- # Enable Math Constants +- # https://docs.microsoft.com/en-us/cpp/c-runtime-library/math-constants?view=vs-2019 + add_compile_definitions( ++ # For math constants ++ # https://docs.microsoft.com/en-us/cpp/c-runtime-library/math-constants?view=vs-2019 + _USE_MATH_DEFINES ++ # Minimize Windows namespace collision ++ NOMINMAX ++ WIN32_LEAN_AND_MEAN + ) ++ # set the same behavior for windows as it is on linux ++ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + endif() + + set(THIS_PACKAGE_INCLUDE_DEPENDS diff --git a/patch/ros-humble-controller-interface.win.patch b/patch/ros-humble-controller-interface.win.patch index 114d2f997..f180af190 100644 --- a/patch/ros-humble-controller-interface.win.patch +++ b/patch/ros-humble-controller-interface.win.patch @@ -7,10 +7,10 @@ Subject: [PATCH] Add missing export symbol in protected methods .../controller_interface/chainable_controller_interface.hpp | 1 + 1 file changed, 1 insertion(+) -diff --git a/controller_interface/include/controller_interface/chainable_controller_interface.hpp b/controller_interface/include/controller_interface/chainable_controller_interface.hpp +diff --git a/include/controller_interface/chainable_controller_interface.hpp b/include/controller_interface/chainable_controller_interface.hpp index 2bdccefdc5..13c8b3f9b9 100644 ---- a/controller_interface/include/controller_interface/chainable_controller_interface.hpp -+++ b/controller_interface/include/controller_interface/chainable_controller_interface.hpp +--- a/include/controller_interface/chainable_controller_interface.hpp ++++ b/include/controller_interface/chainable_controller_interface.hpp @@ -88,6 +88,7 @@ class ChainableControllerInterface : public ControllerInterfaceBase * \default returns true so the method don't have to be overridden if controller can always switch * chained mode. diff --git a/patch/ros-humble-fastrtps.patch b/patch/ros-humble-fastrtps.patch index ac7bfd624..881d5233a 100644 --- a/patch/ros-humble-fastrtps.patch +++ b/patch/ros-humble-fastrtps.patch @@ -11,3 +11,31 @@ index 899fe693..f1e7e37d 100644 COMPONENT discovery) else() # Use ln to create the symbolic link. We remove the version from the file name but keep the debug suffix +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 47e0dbc6780..b0e7bad312e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -27,6 +27,9 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") + endif() + ++set(SM_RUN_RESULT 0 CACHE INTERNAL "") ++set(SM_RUN_RESULT__TRYRUN_OUTPUT "" CACHE INTERNAL "") ++ + ############################################################################### + # Project # + ############################################################################### + +diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt +index fbda6027ec1..dce8342be10 100644 +--- a/src/cpp/CMakeLists.txt ++++ b/src/cpp/CMakeLists.txt +@@ -400,7 +400,7 @@ try_run(SM_RUN_RESULT SM_COMPILE_RESULT + RUN_OUTPUT_VARIABLE SM_RUN_OUTPUT) + + if(SM_COMPILE_RESULT AND NOT SM_RUN_RESULT) +- string(STRIP ${SM_RUN_OUTPUT} SM_RUN_OUTPUT) ++ string(STRIP "${SM_RUN_OUTPUT}" SM_RUN_OUTPUT) + message(STATUS "Framework's shared_mutex is ${SM_RUN_OUTPUT}") + endif() + diff --git a/patch/ros-humble-gazebo-ros2-control.patch b/patch/ros-humble-gazebo-ros2-control.patch deleted file mode 100644 index 10cf5af11..000000000 --- a/patch/ros-humble-gazebo-ros2-control.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index cfba129..d91c6a3 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -30,6 +30,7 @@ link_directories( - add_library(${PROJECT_NAME} SHARED - src/gazebo_ros2_control_plugin.cpp - ) -+target_compile_definitions(${PROJECT_NAME} PRIVATE "_USE_MATH_DEFINES" "NO_STRICT") - ament_target_dependencies(${PROJECT_NAME} - angles - controller_manager -@@ -44,6 +45,7 @@ ament_target_dependencies(${PROJECT_NAME} - add_library(gazebo_hardware_plugins SHARED - src/gazebo_system.cpp - ) -+target_compile_definitions(gazebo_hardware_plugins PRIVATE "_USE_MATH_DEFINES" "NO_STRICT") - ament_target_dependencies(gazebo_hardware_plugins - angles - gazebo_dev -diff --git a/src/gazebo_ros2_control_plugin.cpp b/src/gazebo_ros2_control_plugin.cpp -index 82b7ba7..eee85e6 100644 ---- a/src/gazebo_ros2_control_plugin.cpp -+++ b/src/gazebo_ros2_control_plugin.cpp -@@ -36,6 +36,8 @@ - #include - #include - #include -+#include -+#include - - #include "gazebo_ros/node.hpp" - -@@ -465,7 +471,7 @@ std::string GazeboRosControlPrivate::getURDF(std::string param_name) const - model_nh_->get_logger(), "gazebo_ros2_control plugin is waiting for model" - " URDF in parameter [%s] on the ROS param server.", search_param_name.c_str()); - } -- usleep(100000); -+ std::this_thread::sleep_for(std::chrono::microseconds(100000)); - } - RCLCPP_INFO( - model_nh_->get_logger(), "Received urdf from param server, parsing..."); diff --git a/patch/ros-humble-gazebo-ros2-control.win.patch b/patch/ros-humble-gazebo-ros2-control.win.patch new file mode 100644 index 000000000..5ec394060 --- /dev/null +++ b/patch/ros-humble-gazebo-ros2-control.win.patch @@ -0,0 +1,20 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index cfba129..d91c6a3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -30,6 +30,7 @@ link_directories( + add_library(${PROJECT_NAME} SHARED + src/gazebo_ros2_control_plugin.cpp + ) ++target_compile_definitions(${PROJECT_NAME} PRIVATE "_USE_MATH_DEFINES" "NO_STRICT") + ament_target_dependencies(${PROJECT_NAME} + angles + controller_manager +@@ -44,6 +45,7 @@ ament_target_dependencies(${PROJECT_NAME} + add_library(gazebo_hardware_plugins SHARED + src/gazebo_system.cpp + ) ++target_compile_definitions(gazebo_hardware_plugins PRIVATE "_USE_MATH_DEFINES" "NO_STRICT") + ament_target_dependencies(gazebo_hardware_plugins + angles + gazebo_dev diff --git a/patch/ros-humble-geometric-shapes.patch b/patch/ros-humble-geometric-shapes.patch new file mode 100644 index 000000000..d9887372c --- /dev/null +++ b/patch/ros-humble-geometric-shapes.patch @@ -0,0 +1,22 @@ +From d236b8e9172705076e1c0aba34940307a925d3e2 Mon Sep 17 00:00:00 2001 +From: Silvio Traversaro +Date: Wed, 18 Dec 2024 13:50:38 +0100 +Subject: [PATCH] Drop apt-specific workaround on the octomap version + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8c46189..277356c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -45,7 +45,7 @@ find_package(eigen_stl_containers REQUIRED) + find_package(geometry_msgs REQUIRED) + # Enforce the system package version on Ubuntu jammy and noble which is also used by libfcl-dev + # The version is fixed to prevent ABI conflicts with ros-octomap +-find_package(octomap 1.9.7...<1.10.0 REQUIRED) ++find_package(octomap REQUIRED) + find_package(QHULL REQUIRED) + find_package(random_numbers REQUIRED) + find_package(rclcpp REQUIRED) diff --git a/patch/ros-humble-geometric-shapes.win.patch b/patch/ros-humble-geometric-shapes.win.patch deleted file mode 100644 index a3f889592..000000000 --- a/patch/ros-humble-geometric-shapes.win.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index b686167..80a6ae8 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -30,8 +30,8 @@ endif() - # find *absolute* paths to ASSIMP_LIBRARIES - # Both, pkg-config and assimp's cmake-config don't provide an absolute library path. - # For, pkg-config the path is in ASSIMP_PC_LIBRARY_DIRS, for cmake in ASSIMP_LIBRARY_DIRS. --find_library(assimp_ABS_LIBRARIES NAMES ${assimp_LIBRARIES} assimp HINTS ${assimp_LIBRARY_DIRS} ${assimp_PC_LIBRARY_DIRS}) --set(assimp_LIBRARIES "${assimp_ABS_LIBRARIES}") -+# find_library(assimp_ABS_LIBRARIES NAMES ${assimp_LIBRARIES} assimp HINTS ${assimp_LIBRARY_DIRS} ${assimp_PC_LIBRARY_DIRS}) -+# set(assimp_LIBRARIES "${assimp_ABS_LIBRARIES}") - - # These need to be in this order to find header files - find_package(eigen3_cmake_module REQUIRED) -@@ -90,10 +90,12 @@ ament_target_dependencies(${PROJECT_NAME} - ) - ament_target_dependencies(${PROJECT_NAME} SYSTEM - # We don't export these dependencies because their cmake is broken -- assimp - QHULL - ) - -+get_property(ASSIMP_LIBS TARGET assimp::assimp PROPERTY IMPORTED_IMPLIB_RELEASE) -+target_link_libraries(${PROJECT_NAME} ${ASSIMP_LIBS}) -+ - if(BUILD_TESTING) - find_package(ament_cmake_gtest REQUIRED) - # Unit tests diff --git a/patch/ros-humble-gripper-controllers.patch b/patch/ros-humble-gripper-controllers.patch new file mode 100644 index 000000000..30d61283c --- /dev/null +++ b/patch/ros-humble-gripper-controllers.patch @@ -0,0 +1,16 @@ +diff --git a/gripper_controllers/CMakeLists.txt b/gripper_controllers/CMakeLists.txt +index 4ffdc76168..05174402d0 100644 +--- a/gripper_controllers/CMakeLists.txt ++++ b/gripper_controllers/CMakeLists.txt +@@ -1,11 +1,6 @@ + cmake_minimum_required(VERSION 3.16) + project(gripper_controllers) + +-if(APPLE OR WIN32) +- message(WARNING "gripper controllers are not available on OSX or Windows") +- return() +-endif() +- + if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra -Wpedantic -Werror=conversion -Werror=unused-but-set-variable + -Werror=return-type -Werror=shadow -Werror=format -Werror=range-loop-construct diff --git a/patch/ros-humble-iceoryx-hoofs.win.patch b/patch/ros-humble-iceoryx-hoofs.win.patch index cec977216..d235dd862 100644 --- a/patch/ros-humble-iceoryx-hoofs.win.patch +++ b/patch/ros-humble-iceoryx-hoofs.win.patch @@ -1,15 +1,27 @@ -diff --git a/iceoryx_hoofs/CMakeLists.txt b/iceoryx_hoofs/CMakeLists.txt +diff --git a/CMakeLists.txt b/CMakeLists.txt index 8afdbb5e8..cf66ba0ea 100644 ---- a/iceoryx_hoofs/CMakeLists.txt -+++ b/iceoryx_hoofs/CMakeLists.txt +--- a/CMakeLists.txt ++++ b/CMakeLists.txt @@ -17,6 +17,10 @@ - + cmake_minimum_required(VERSION 3.16) - + +if(WIN32) + set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) +endif() + set(IOX_VERSION_STRING "2.0.5") - + project(iceoryx_hoofs VERSION ${IOX_VERSION_STRING}) + +diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in +index c03b3b564b..2229930efb 100644 +--- a/cmake/Config.cmake.in ++++ b/cmake/Config.cmake.in +@@ -19,5 +19,5 @@ + include(CMakeFindDependencyMacro) + + include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") +-list(APPEND CMAKE_MODULE_PATH "@CMAKE_INSTALL_PREFIX@/@DESTINATION_CONFIGDIR@") ++list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") + check_required_components("@PROJECT_NAME@") diff --git a/patch/ros-humble-iceoryx-posh.win.patch b/patch/ros-humble-iceoryx-posh.win.patch index 0fc7347f1..739877a0a 100644 --- a/patch/ros-humble-iceoryx-posh.win.patch +++ b/patch/ros-humble-iceoryx-posh.win.patch @@ -5,11 +5,23 @@ index 57e84cdd0..d7781cbb9 100644 @@ -16,6 +16,10 @@ # SPDX-License-Identifier: Apache-2.0 cmake_minimum_required(VERSION 3.16) - + +if(WIN32) + set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) +endif() + set(IOX_VERSION_STRING "2.0.5") - + project(iceoryx_posh VERSION ${IOX_VERSION_STRING}) + +diff --git a/iceoryx_posh/cmake/Config.cmake.in b/iceoryx_posh/cmake/Config.cmake.in +index 0f74ce4f6b..1de0093d3b 100644 +--- a/iceoryx_posh/cmake/Config.cmake.in ++++ b/iceoryx_posh/cmake/Config.cmake.in +@@ -22,5 +22,5 @@ include(CMakeFindDependencyMacro) + find_dependency(iceoryx_hoofs) + + include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") +-list(APPEND CMAKE_MODULE_PATH "@CMAKE_INSTALL_PREFIX@/@DESTINATION_CONFIGDIR@") ++list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") + check_required_components("@PROJECT_NAME@") diff --git a/patch/ros-humble-image-geometry.win.patch b/patch/ros-humble-image-geometry.win.patch index fcc688486..ea48efcd9 100644 --- a/patch/ros-humble-image-geometry.win.patch +++ b/patch/ros-humble-image-geometry.win.patch @@ -4,13 +4,13 @@ Date: Fri, 24 Jun 2022 09:47:36 +0200 Subject: [PATCH] Fix visibility of static const data member --- - image_geometry/include/image_geometry/stereo_camera_model.h | 1 + + include/image_geometry/stereo_camera_model.h | 1 + 1 file changed, 1 insertion(+) -diff --git a/image_geometry/include/image_geometry/stereo_camera_model.h b/image_geometry/include/image_geometry/stereo_camera_model.h +diff --git a/include/image_geometry/stereo_camera_model.h b/include/image_geometry/stereo_camera_model.h index f1568ac5..83a081fc 100644 ---- a/image_geometry/include/image_geometry/stereo_camera_model.h -+++ b/image_geometry/include/image_geometry/stereo_camera_model.h +--- a/include/image_geometry/stereo_camera_model.h ++++ b/include/image_geometry/stereo_camera_model.h @@ -72,6 +72,7 @@ class StereoCameraModel IMAGE_GEOMETRY_PUBLIC void projectDisparityImageTo3d(const cv::Mat& disparity, cv::Mat& point_cloud, diff --git a/patch/ros-humble-image-publisher.win.patch b/patch/ros-humble-image-publisher.win.patch index d83efec6c..b3bd9e079 100644 --- a/patch/ros-humble-image-publisher.win.patch +++ b/patch/ros-humble-image-publisher.win.patch @@ -5,9 +5,21 @@ index cb41c81..88460ba 100644 @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 3.5) project(image_publisher) - + +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + # Default to C++14 if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) + +diff --git a/src/image_publisher.cpp b/src/image_publisher.cpp +index 667e7209c..2f75459c1 100644 +--- a/src/image_publisher.cpp ++++ b/src/image_publisher.cpp +@@ -34,3 +34,6 @@ ++#ifndef _USE_MATH_DEFINES ++#define _USE_MATH_DEFINES ++#endif + #include + #include + #include diff --git a/patch/ros-humble-io-context.win.patch b/patch/ros-humble-io-context.win.patch new file mode 100644 index 000000000..fc76cb71b --- /dev/null +++ b/patch/ros-humble-io-context.win.patch @@ -0,0 +1,12 @@ +diff --git a/io_context/CMakeLists.txt b/io_context/CMakeLists.txt +index 54804aa..3c04653 100644 +--- a/io_context/CMakeLists.txt ++++ b/io_context/CMakeLists.txt +@@ -25,6 +25,7 @@ endif() + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + ## dependencies + find_package(ament_cmake_auto REQUIRED) diff --git a/patch/ros-humble-kinematics-interface-kdl.win.patch b/patch/ros-humble-kinematics-interface-kdl.win.patch new file mode 100644 index 000000000..7a26c6c3e --- /dev/null +++ b/patch/ros-humble-kinematics-interface-kdl.win.patch @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index afeadae..c1cc640 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5,6 +5,10 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() + ++# using this instead of visibility macros ++# S1 from https://github.com/ros-controls/ros2_controllers/issues/1053 ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) ++ + set(THIS_PACKAGE_INCLUDE_DEPENDS + kdl_parser + kinematics_interface diff --git a/patch/ros-humble-kinematics-interface.win.patch b/patch/ros-humble-kinematics-interface.win.patch new file mode 100644 index 000000000..39610e2e0 --- /dev/null +++ b/patch/ros-humble-kinematics-interface.win.patch @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 88eaf9e..f0dbffd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5,6 +5,10 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() + ++# using this instead of visibility macros ++# S1 from https://github.com/ros-controls/ros2_controllers/issues/1053 ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) ++ + set(THIS_PACKAGE_INCLUDE_DEPENDS + rclcpp + rclcpp_lifecycle diff --git a/patch/ros-humble-mimick-vendor.linux.patch b/patch/ros-humble-mimick-vendor.linux.patch new file mode 100644 index 000000000..c82c4f6b6 --- /dev/null +++ b/patch/ros-humble-mimick-vendor.linux.patch @@ -0,0 +1,33 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e0632bc..4465708 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -65,6 +65,7 @@ macro(build_mimick) + GIT_CONFIG advice.detachedHead=false + # Suppress git update due to https://gitlab.kitware.com/cmake/cmake/-/issues/16419 + UPDATE_COMMAND "" ++ PATCH_COMMAND git apply ${CMAKE_CURRENT_LIST_DIR}/crosscompile.patch + TIMEOUT 6000 + ${cmake_commands} + CMAKE_ARGS +diff --git a/crosscompile.patch b/crosscompile.patch +new file mode 100644 +index 0000000..cc33b63 +--- /dev/null ++++ b/crosscompile.patch +@@ -0,0 +1,15 @@ ++diff --git a/CMakeLists.txt b/CMakeLists.txt ++index a0ff848..34c95ff 100644 ++--- a/CMakeLists.txt +++++ b/CMakeLists.txt ++@@ -32,6 +32,10 @@ else () ++ set (_ARCH "${CMAKE_SYSTEM_PROCESSOR}") ++ endif () ++ +++if(UNIX AND NOT APPLE AND "$ENV{CONDA_BUILD_CROSS_COMPILATION}" EQUAL "1") +++ set (_ARCH "aarch64") +++endif() +++ ++ set (MMK_MANGLING "none") ++ ++ if (MSVC) diff --git a/patch/ros-humble-moveit-core.osx.patch b/patch/ros-humble-moveit-core.osx.patch new file mode 100644 index 000000000..c1813fcbb --- /dev/null +++ b/patch/ros-humble-moveit-core.osx.patch @@ -0,0 +1,216 @@ +diff --git a/moveit_core/collision_detection/include/moveit/collision_detection/collision_common.h b/moveit_core/collision_detection/include/moveit/collision_detection/collision_common.h +index 319273fd6..8c14ea803 100644 +--- a/moveit_core/collision_detection/include/moveit/collision_detection/collision_common.h ++++ b/moveit_core/collision_detection/include/moveit/collision_detection/collision_common.h +@@ -141,6 +141,91 @@ struct CostSource + } + }; + ++/** \brief Representation of a collision checking result */ ++struct CollisionResult ++{ ++ CollisionResult() : collision(false), distance(std::numeric_limits::max()), contact_count(0) ++ { ++ } ++ using ContactMap = std::map, std::vector >; ++ ++ EIGEN_MAKE_ALIGNED_OPERATOR_NEW ++ ++ /** \brief Clear a previously stored result */ ++ void clear() ++ { ++ collision = false; ++ distance = std::numeric_limits::max(); ++ contact_count = 0; ++ contacts.clear(); ++ cost_sources.clear(); ++ } ++ ++ /** \brief Throttled warning printing the first collision pair, if any. All collisions are logged at DEBUG level */ ++ void print() const; ++ ++ /** \brief True if collision was found, false otherwise */ ++ bool collision; ++ ++ /** \brief Closest distance between two bodies */ ++ double distance; ++ ++ /** \brief Number of contacts returned */ ++ std::size_t contact_count; ++ ++ /** \brief A map returning the pairs of body ids in contact, plus their contact details */ ++ ContactMap contacts; ++ ++ /** \brief These are the individual cost sources when costs are computed */ ++ std::set cost_sources; ++}; ++ ++/** \brief Representation of a collision checking request */ ++struct CollisionRequest ++{ ++ CollisionRequest() ++ : distance(false) ++ , cost(false) ++ , contacts(false) ++ , max_contacts(1) ++ , max_contacts_per_pair(1) ++ , max_cost_sources(1) ++ , verbose(false) ++ { ++ } ++ virtual ~CollisionRequest() ++ { ++ } ++ ++ /** \brief The group name to check collisions for (optional; if empty, assume the complete robot) */ ++ std::string group_name; ++ ++ /** \brief If true, compute proximity distance */ ++ bool distance; ++ ++ /** \brief If true, a collision cost is computed */ ++ bool cost; ++ ++ /** \brief If true, compute contacts. Otherwise only a binary collision yes/no is reported. */ ++ bool contacts; ++ ++ /** \brief Overall maximum number of contacts to compute */ ++ std::size_t max_contacts; ++ ++ /** \brief Maximum number of contacts to compute per pair of bodies (multiple bodies may be in contact at different ++ * configurations) */ ++ std::size_t max_contacts_per_pair; ++ ++ /** \brief When costs are computed, this value defines how many of the top cost sources should be returned */ ++ std::size_t max_cost_sources; ++ ++ /** \brief Function call that decides whether collision detection should stop. */ ++ std::function is_done; ++ ++ /** \brief Flag indicating whether information about detected collisions should be reported */ ++ bool verbose; ++}; ++ + namespace DistanceRequestTypes + { + enum DistanceRequestType +@@ -296,93 +381,4 @@ struct DistanceResult + distances.clear(); + } + }; +- +-/** \brief Representation of a collision checking result */ +-struct CollisionResult +-{ +- EIGEN_MAKE_ALIGNED_OPERATOR_NEW +- +- /** \brief Clear a previously stored result */ +- void clear() +- { +- collision = false; +- distance = std::numeric_limits::max(); +- distance_result.clear(); +- contact_count = 0; +- contacts.clear(); +- cost_sources.clear(); +- } +- +- /** \brief Throttled warning printing the first collision pair, if any. All collisions are logged at DEBUG level */ +- void print() const; +- +- /** \brief True if collision was found, false otherwise */ +- bool collision = false; +- +- /** \brief Closest distance between two bodies */ +- double distance = std::numeric_limits::max(); +- +- /** \brief Distance data for each link */ +- DistanceResult distance_result; +- +- /** \brief Number of contacts returned */ +- std::size_t contact_count = 0; +- +- /** \brief A map returning the pairs of body ids in contact, plus their contact details */ +- using ContactMap = std::map, std::vector >; +- ContactMap contacts; +- +- /** \brief These are the individual cost sources when costs are computed */ +- std::set cost_sources; +-}; +- +-/** \brief Representation of a collision checking request */ +-struct CollisionRequest +-{ +- CollisionRequest() +- : distance(false) +- , cost(false) +- , contacts(false) +- , max_contacts(1) +- , max_contacts_per_pair(1) +- , max_cost_sources(1) +- , verbose(false) +- { +- } +- virtual ~CollisionRequest() +- { +- } +- +- /** \brief The group name to check collisions for (optional; if empty, assume the complete robot) */ +- std::string group_name; +- +- /** \brief If true, compute proximity distance */ +- bool distance; +- +- /** \brief If true, return detailed distance information. Distance must be set to true as well */ +- bool detailed_distance = false; +- +- /** \brief If true, a collision cost is computed */ +- bool cost; +- +- /** \brief If true, compute contacts. Otherwise only a binary collision yes/no is reported. */ +- bool contacts; +- +- /** \brief Overall maximum number of contacts to compute */ +- std::size_t max_contacts; +- +- /** \brief Maximum number of contacts to compute per pair of bodies (multiple bodies may be in contact at different +- * configurations) */ +- std::size_t max_contacts_per_pair; +- +- /** \brief When costs are computed, this value defines how many of the top cost sources should be returned */ +- std::size_t max_cost_sources; +- +- /** \brief Function call that decides whether collision detection should stop. */ +- std::function is_done; +- +- /** \brief Flag indicating whether information about detected collisions should be reported */ +- bool verbose; +-}; +- + } // namespace collision_detection +diff --git a/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp b/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp +index 1ce152dcf..eb0394ca4 100644 +--- a/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp ++++ b/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp +@@ -277,10 +277,6 @@ void CollisionEnvFCL::checkSelfCollisionHelper(const CollisionRequest& req, Coll + dreq.enableGroup(getRobotModel()); + distanceSelf(dreq, dres, state); + res.distance = dres.minimum_distance.distance; +- if (req.detailed_distance) +- { +- res.distance_result = dres; +- } + } + } + +@@ -334,10 +330,6 @@ void CollisionEnvFCL::checkRobotCollisionHelper(const CollisionRequest& req, Col + dreq.enableGroup(getRobotModel()); + distanceRobot(dreq, dres, state); + res.distance = dres.minimum_distance.distance; +- if (req.detailed_distance) +- { +- res.distance_result = dres; +- } + } + } + diff --git a/patch/ros-humble-moveit-core.patch b/patch/ros-humble-moveit-core.patch deleted file mode 100644 index 56ff484a5..000000000 --- a/patch/ros-humble-moveit-core.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9f000181..742ae3e9 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -16,8 +16,12 @@ pkg_check_modules(LIBFCL REQUIRED "fcl>=0.5.0") - set(LIBFCL_LIBRARIES_FULL "") - foreach(LIBFCL_LIBRARY ${LIBFCL_LIBRARIES}) - find_library(${LIBFCL_LIBRARY}_LIB ${LIBFCL_LIBRARY} ${LIBFCL_LIBRARY_DIRS}) -- list(APPEND LIBFCL_LIBRARIES_FULL ${${LIBFCL_LIBRARY}_LIB}) -+ if (NOT "${${LIBFCL_LIBRARY}_LIB}" MATCHES "_build_env") -+ list(APPEND LIBFCL_LIBRARIES_FULL ${${LIBFCL_LIBRARY}_LIB}) -+ endif() - endforeach() -+message("LIBFCL LIBRARIES: ${LIBFCL_LIBRARIES}") -+message("LIBFCL LIBRARIES FULL: ${LIBFCL_LIBRARIES_FULL}") - set(LIBFCL_LIBRARIES "${LIBFCL_LIBRARIES_FULL}") - - find_package(Bullet 2.87 REQUIRED) diff --git a/patch/ros-humble-moveit-core.win.patch b/patch/ros-humble-moveit-core.win.patch deleted file mode 100644 index 1459699d5..000000000 --- a/patch/ros-humble-moveit-core.win.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/moveit_core/collision_detection_fcl/CMakeLists.txt b/moveit_core/collision_detection_fcl/CMakeLists.txt -index 382dc41c70..99d49531ef 100644 ---- a/moveit_core/collision_detection_fcl/CMakeLists.txt -+++ b/moveit_core/collision_detection_fcl/CMakeLists.txt -@@ -14,11 +14,11 @@ ament_target_dependencies(${MOVEIT_LIB_NAME} - urdf - urdfdom - urdfdom_headers -- LIBFCL - visualization_msgs - ) - target_link_libraries(${MOVEIT_LIB_NAME} - moveit_collision_detection -+ ${LIBFCL_LINK_LIBRARIES} - ) - - add_library(collision_detector_fcl_plugin SHARED src/collision_detector_fcl_plugin_loader.cpp) diff --git a/patch/ros-humble-moveit-resources-prbt-ikfast-manipulator-plugin.patch b/patch/ros-humble-moveit-resources-prbt-ikfast-manipulator-plugin.patch deleted file mode 100644 index 979ee93c3..000000000 --- a/patch/ros-humble-moveit-resources-prbt-ikfast-manipulator-plugin.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/src/prbt_manipulator_ikfast_moveit_plugin.cpp b/src/prbt_manipulator_ikfast_moveit_plugin.cpp -index a0143f8fa..610d7e4a4 100644 ---- a/src/prbt_manipulator_ikfast_moveit_plugin.cpp -+++ b/src/prbt_manipulator_ikfast_moveit_plugin.cpp -@@ -804,13 +804,15 @@ bool IKFastKinematicsPlugin::getPositionFK(const std::vector& link_ - return false; - } - -- IkReal angles[num_joints_]; -+ IkReal* angles = new IkReal[num_joints_]; - for (unsigned char i = 0; i < num_joints_; i++) - angles[i] = joint_angles[i]; - - // IKFast56/61 - ComputeFk(angles, eetrans, eerot); - -+ delete[] angles; -+ - for (int i = 0; i < 3; ++i) - p_out.p.data[i] = eetrans[i]; - -diff --git a/src/prbt_manipulator_ikfast_solver.cpp b/src/prbt_manipulator_ikfast_solver.cpp -index b22d0f73d..d0a7a93b7 100644 ---- a/src/prbt_manipulator_ikfast_solver.cpp -+++ b/src/prbt_manipulator_ikfast_solver.cpp -@@ -25,10 +25,6 @@ - #include "ikfast.h" // found inside share/openrave-X.Y/python/ikfast.h - using namespace ikfast; - --// check if the included ikfast version matches what this file was compiled with --#define IKFAST_COMPILE_ASSERT(x) extern int __dummy[static_cast(x)] --IKFAST_COMPILE_ASSERT(IKFAST_VERSION==0x1000004a); -- - #include - #include - #include diff --git a/patch/ros-humble-moveit-ros-benchmarks.patch b/patch/ros-humble-moveit-ros-benchmarks.patch new file mode 100644 index 000000000..9c67b97c4 --- /dev/null +++ b/patch/ros-humble-moveit-ros-benchmarks.patch @@ -0,0 +1,27 @@ +diff --git a/src/BenchmarkExecutor.cpp b/src/BenchmarkExecutor.cpp +index cd0033d368..50760073fd 100644 +--- a/src/BenchmarkExecutor.cpp ++++ b/src/BenchmarkExecutor.cpp +@@ -43,13 +43,10 @@ + #include + #include + +-// TODO(henningkayser): Switch to boost/timer/progress_display.hpp with Boost 1.72 +-// boost/progress.hpp is deprecated and will be replaced by boost/timer/progress_display.hpp in Boost 1.72. +-// Until then we need to suppress the deprecation warning. + #define BOOST_ALLOW_DEPRECATED_HEADERS + #include +-#include + #undef BOOST_ALLOW_DEPRECATED_HEADERS ++#include + #include + #include + #include +@@ -784,7 +784,7 @@ void BenchmarkExecutor::runBenchmark(moveit_msgs::msg::MotionPlanRequest request + for (const std::pair>& pipeline_entry : pipeline_map) + num_planners += pipeline_entry.second.size(); + +- boost::progress_display progress(num_planners * runs, std::cout); ++ boost::timer::progress_display progress(num_planners * runs, std::cout); + + // Iterate through all planning pipelines diff --git a/patch/ros-humble-moveit-simple-controller-manager.patch b/patch/ros-humble-moveit-simple-controller-manager.patch deleted file mode 100644 index 282c31505..000000000 --- a/patch/ros-humble-moveit-simple-controller-manager.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/action_based_controller_handle.h b/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/action_based_controller_handle.h -index 311d51f7a5..e6e21efe97 100644 ---- a/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/action_based_controller_handle.h -+++ b/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/action_based_controller_handle.h -@@ -145,7 +145,7 @@ class ActionBasedControllerHandle : public ActionBasedControllerHandleBase - do - { - status = result_future.wait_for(50ms); -- if ((status == std::future_status::timeout) and ((node_->now() - start) > timeout)) -+ if ((status == std::future_status::timeout) && ((node_->now() - start) > timeout)) - { - RCLCPP_WARN(LOGGER, "waitForExecution timed out"); - return false; diff --git a/patch/ros-humble-nav2-rviz-plugins.patch b/patch/ros-humble-nav2-rviz-plugins.patch new file mode 100644 index 000000000..55c626ecb --- /dev/null +++ b/patch/ros-humble-nav2-rviz-plugins.patch @@ -0,0 +1,15 @@ +diff --git a/nav2_rviz_plugins/CMakeLists.txt b/nav2_rviz_plugins/CMakeLists.txt +index 39bdbabae4..659acd06fc 100644 +--- a/nav2_rviz_plugins/CMakeLists.txt ++++ b/nav2_rviz_plugins/CMakeLists.txt +@@ -6,10 +6,6 @@ if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 17) + endif() + +-if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +- add_compile_options(-Wall -Wextra -Wpedantic -Werror) +-endif() +- + # Qt5 boilerplate options from http://doc.qt.io/qt-5/cmake-manual.html + set(CMAKE_INCLUDE_CURRENT_DIR ON) + set(CMAKE_AUTOMOC ON) diff --git a/patch/ros-humble-nav2-waypoint-follower.patch b/patch/ros-humble-nav2-waypoint-follower.patch deleted file mode 100644 index b01e8d3d2..000000000 --- a/patch/ros-humble-nav2-waypoint-follower.patch +++ /dev/null @@ -1,106 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index a3b46942b..e228086fa 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1,6 +1,8 @@ - cmake_minimum_required(VERSION 3.5) - project(nav2_waypoint_follower) - -+add_definitions(-DNOMINMAX) -+ - # Try for OpenCV 4.X, but settle for whatever is installed - find_package(OpenCV 4 QUIET) - if(NOT OpenCV_FOUND) -@@ -25,7 +27,11 @@ find_package(pluginlib REQUIRED) - - nav2_package() - --link_libraries(stdc++fs) -+if(UNIX AND NOT APPLE) -+ link_libraries(stdc++fs) -+else() -+ -+endif() - - include_directories( - include -diff --git a/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp b/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp -index fc4aee5c5..a4fc67b82 100644 ---- a/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp -+++ b/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp -@@ -20,20 +20,22 @@ - * to ignore deprecated declarations - */ - #define _LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_FILESYSTEM -+#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING - - --#include -+#include - #include - #include - #include - -+#include -+#include -+ - #include "rclcpp/rclcpp.hpp" - #include "rclcpp_components/register_node_macro.hpp" - - #include "sensor_msgs/msg/image.hpp" - #include "nav2_core/waypoint_task_executor.hpp" --#include "opencv4/opencv2/core.hpp" --#include "opencv4/opencv2/opencv.hpp" - #include "cv_bridge/cv_bridge.h" - #include "image_transport/image_transport.hpp" - -@@ -97,7 +99,7 @@ protected: - // to ensure safety when accessing global var curr_frame_ - std::mutex global_mutex_; - // the taken photos will be saved under this directory -- std::experimental::filesystem::path save_dir_; -+ std::filesystem::path save_dir_; - // .png ? .jpg ? or some other well known format - std::string image_format_; - // the topic to subscribe in order capture a frame -diff --git a/plugins/photo_at_waypoint.cpp b/plugins/photo_at_waypoint.cpp -index 8a6cb74b9..4e2858f65 100644 ---- a/plugins/photo_at_waypoint.cpp -+++ b/plugins/photo_at_waypoint.cpp -@@ -61,14 +61,14 @@ void PhotoAtWaypoint::initialize( - // get inputted save directory and make sure it exists, if not log and create it - save_dir_ = save_dir_as_string; - try { -- if (!std::experimental::filesystem::exists(save_dir_)) { -+ if (!std::filesystem::exists(save_dir_)) { - RCLCPP_WARN( - logger_, - "Provided save directory for photo at waypoint plugin does not exist," - "provided directory is: %s, the directory will be created automatically.", - save_dir_.c_str() - ); -- if (!std::experimental::filesystem::create_directory(save_dir_)) { -+ if (!std::filesystem::create_directory(save_dir_)) { - RCLCPP_ERROR( - logger_, - "Failed to create directory!: %s required by photo at waypoint plugin, " -@@ -110,16 +110,16 @@ bool PhotoAtWaypoint::processAtWaypoint( - } - try { - // construct the full path to image filename -- std::experimental::filesystem::path file_name = std::to_string( -+ std::filesystem::path file_name = std::to_string( - curr_waypoint_index) + "_" + - std::to_string(curr_pose.header.stamp.sec) + "." + image_format_; -- std::experimental::filesystem::path full_path_image_path = save_dir_ / file_name; -+ std::filesystem::path full_path_image_path = save_dir_ / file_name; - - // save the taken photo at this waypoint to given directory - std::lock_guard guard(global_mutex_); - cv::Mat curr_frame_mat; - deepCopyMsg2Mat(curr_frame_msg_, curr_frame_mat); -- cv::imwrite(full_path_image_path.c_str(), curr_frame_mat); -+ cv::imwrite(full_path_image_path.string().c_str(), curr_frame_mat); - RCLCPP_INFO( - logger_, - "Photo has been taken sucessfully at waypoint %i", curr_waypoint_index); diff --git a/patch/ros-humble-pid-controller.patch b/patch/ros-humble-pid-controller.patch index 3fc24fefb..cc43bb492 100644 --- a/patch/ros-humble-pid-controller.patch +++ b/patch/ros-humble-pid-controller.patch @@ -1,28 +1,28 @@ -diff --git a/pid_controller/CMakeLists.txt b/pid_controller/CMakeLists.txt -index 15e903222a..6c9e00ef8b 100644 ---- a/pid_controller/CMakeLists.txt -+++ b/pid_controller/CMakeLists.txt -@@ -45,7 +45,7 @@ ament_target_dependencies(pid_controller PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) - - # Causes the visibility macros to use dllexport rather than dllimport, - # which is appropriate when building the dll but not consuming it. --target_compile_definitions(pid_controller PRIVATE "PID_CONTROLLER_BUILDING_DLL") -+target_compile_definitions(pid_controller PRIVATE "PID_CONTROLLER__VISIBILITY_BUILDING_DLL") - - pluginlib_export_plugin_description_file(controller_interface pid_controller.xml) - -diff --git a/pid_controller/include/pid_controller/pid_controller.hpp b/pid_controller/include/pid_controller/pid_controller.hpp -index f7b8cc4491..788f39f1ed 100644 ---- a/pid_controller/include/pid_controller/pid_controller.hpp -+++ b/pid_controller/include/pid_controller/pid_controller.hpp -@@ -121,8 +121,10 @@ class PidController : public controller_interface::ChainableControllerInterface - std::unique_ptr state_publisher_; - - // override methods from ChainableControllerInterface -+ PID_CONTROLLER__VISIBILITY_PUBLIC - std::vector on_export_reference_interfaces() override; - -+ PID_CONTROLLER__VISIBILITY_PUBLIC - bool on_set_chained_mode(bool chained_mode) override; - - // internal methods +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 81cbe6f00..d7798b579 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -45,7 +45,7 @@ ament_target_dependencies(pid_controller PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) + + # Causes the visibility macros to use dllexport rather than dllimport, + # which is appropriate when building the dll but not consuming it. +-target_compile_definitions(pid_controller PRIVATE "PID_CONTROLLER_BUILDING_DLL") ++target_compile_definitions(pid_controller PRIVATE "PID_CONTROLLER__VISIBILITY_BUILDING_DLL") + + pluginlib_export_plugin_description_file(controller_interface pid_controller.xml) + +diff --git a/include/pid_controller/pid_controller.hpp b/include/pid_controller/pid_controller.hpp +index 105a91544..4919a739c 100644 +--- a/include/pid_controller/pid_controller.hpp ++++ b/include/pid_controller/pid_controller.hpp +@@ -119,8 +119,10 @@ protected: + std::unique_ptr state_publisher_; + + // override methods from ChainableControllerInterface ++ PID_CONTROLLER__VISIBILITY_PUBLIC + std::vector on_export_reference_interfaces() override; + ++ PID_CONTROLLER__VISIBILITY_PUBLIC + bool on_set_chained_mode(bool chained_mode) override; + + // internal methods diff --git a/patch/ros-humble-plotjuggler.patch b/patch/ros-humble-plotjuggler.patch index e00b2626a..f5e975dd9 100644 --- a/patch/ros-humble-plotjuggler.patch +++ b/patch/ros-humble-plotjuggler.patch @@ -1,49 +1,62 @@ -diff --git a/3rdparty/QCodeEditor/CMakeLists.txt b/3rdparty/QCodeEditor/CMakeLists.txt -index 84282fe1f..c37ae8f49 100644 ---- a/3rdparty/QCodeEditor/CMakeLists.txt -+++ b/3rdparty/QCodeEditor/CMakeLists.txt -@@ -1,4 +1,4 @@ --cmake_minimum_required(VERSION 3.6) -+cmake_minimum_required(VERSION 3.20) - project(QCodeEditor) - - set(CMAKE_CXX_STANDARD 11) -@@ -69,10 +69,7 @@ set(CMAKE_AUTOMOC On) - # Create code from resource files - set(CMAKE_AUTORCC ON) - --# Find includes in corresponding build directories --find_package(Qt5Core CONFIG REQUIRED) --find_package(Qt5Widgets CONFIG REQUIRED) --find_package(Qt5Gui CONFIG REQUIRED) -+find_package(Qt5 COMPONENTS Core Widgets Gui REQUIRED) - - add_library(QCodeEditor STATIC - ${RESOURCES_FILE} -@@ -84,21 +81,6 @@ target_include_directories(QCodeEditor PUBLIC - include - ) - --if(CMAKE_COMPILER_IS_GNUCXX) -- target_compile_options(QCodeEditor -- PRIVATE -- -ansi -- -pedantic -- -Wall -- -Wextra -- -Weffc++ -- -Woverloaded-virtual -- -Winit-self -- -std=c++11 -- -Wunreachable-code -- ) --endif(CMAKE_COMPILER_IS_GNUCXX) -- - target_link_libraries(QCodeEditor - Qt5::Core - Qt5::Widgets +diff --git a/cmake/FindXCB.cmake b/cmake/FindXCB.cmake +new file mode 100644 +index 00000000..a2e2757a +--- /dev/null ++++ b/cmake/FindXCB.cmake +@@ -0,0 +1,51 @@ ++# - FindXCB ++# ++# Copyright 2015 Valve Coporation ++ ++find_package(PkgConfig) ++ ++if(NOT XCB_FIND_COMPONENTS) ++ set(XCB_FIND_COMPONENTS xcb) ++endif() ++ ++include(FindPackageHandleStandardArgs) ++set(XCB_FOUND true) ++set(XCB_INCLUDE_DIRS "") ++set(XCB_LIBRARIES "") ++foreach(comp ${XCB_FIND_COMPONENTS}) ++ # component name ++ string(TOUPPER ${comp} compname) ++ string(REPLACE "-" "_" compname ${compname}) ++ # header name ++ string(REPLACE "xcb-" "" headername xcb/${comp}.h) ++ # library name ++ set(libname ${comp}) ++ ++ pkg_check_modules(PC_${comp} QUIET ${comp}) ++ ++ find_path(${compname}_INCLUDE_DIR NAMES ${headername} ++ HINTS ++ ${PC_${comp}_INCLUDEDIR} ++ ${PC_${comp}_INCLUDE_DIRS} ++ ) ++ ++ find_library(${compname}_LIBRARY NAMES ${libname} ++ HINTS ++ ${PC_${comp}_LIBDIR} ++ ${PC_${comp}_LIBRARY_DIRS} ++ ) ++ ++ find_package_handle_standard_args(${comp} ++ FOUND_VAR ${comp}_FOUND ++ REQUIRED_VARS ${compname}_INCLUDE_DIR ${compname}_LIBRARY) ++ mark_as_advanced(${compname}_INCLUDE_DIR ${compname}_LIBRARY) ++ ++ list(APPEND XCB_INCLUDE_DIRS ${${compname}_INCLUDE_DIR}) ++ list(APPEND XCB_LIBRARIES ${${compname}_LIBRARY}) ++ ++ if(NOT ${comp}_FOUND) ++ set(XCB_FOUND false) ++ endif() ++endforeach() ++ ++list(REMOVE_DUPLICATES XCB_INCLUDE_DIRS) diff --git a/3rdparty/Qt-Advanced-Docking/CMakeLists.txt b/3rdparty/Qt-Advanced-Docking/CMakeLists.txt -index 6b650f1b6..82c58edb4 100644 +index 6b650f1b..82c58edb 100644 --- a/3rdparty/Qt-Advanced-Docking/CMakeLists.txt +++ b/3rdparty/Qt-Advanced-Docking/CMakeLists.txt @@ -67,7 +67,8 @@ target_link_libraries(qt_advanced_docking PUBLIC Qt5::Core Qt5::Gui Qt5::Widgets @@ -57,7 +70,7 @@ index 6b650f1b6..82c58edb4 100644 set_target_properties(qt_advanced_docking PROPERTIES diff --git a/3rdparty/lua-5.4.3/CMakeLists.txt b/3rdparty/lua-5.4.3/CMakeLists.txt -index 6f682a3e6..676feecb1 100644 +index ad3dc012..a3da197b 100644 --- a/3rdparty/lua-5.4.3/CMakeLists.txt +++ b/3rdparty/lua-5.4.3/CMakeLists.txt @@ -1,3 +1,5 @@ @@ -73,9 +86,9 @@ index 6f682a3e6..676feecb1 100644 -set(LUA_LIB_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/src) +# set(LUA_LIB_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/src) - add_compile_options(-fPIC) - -@@ -40,7 +42,7 @@ add_library(lua_static STATIC + if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|AppleClang") + add_compile_options(-fPIC) +@@ -42,7 +44,7 @@ add_library(lua_static STATIC ${LUA_LIB_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/src/lua.c ) @@ -84,7 +97,7 @@ index 6f682a3e6..676feecb1 100644 add_library(lua_objects OBJECT ${LUA_LIB_SRCS}) -@@ -53,3 +55,11 @@ if(EMSCRIPTEN) +@@ -55,3 +57,11 @@ if(EMSCRIPTEN) endif() target_compile_definitions(lua_static PUBLIC ${LUA_DEFINITIONS}) @@ -96,11 +109,366 @@ index 6f682a3e6..676feecb1 100644 + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin + INCLUDES DESTINATION include ) +diff --git a/3rdparty/nlohmann/json.hpp b/3rdparty/nlohmann/json.hpp +index cb27e058..cecdb1fd 100644 +--- a/3rdparty/nlohmann/json.hpp ++++ b/3rdparty/nlohmann/json.hpp +@@ -3198,6 +3198,7 @@ template struct identity_tag {}; + #include // false_type, is_constructible, is_integral, is_same, true_type + #include // declval + #include // tuple ++#include // char_traits + + // #include + +@@ -3261,6 +3262,7 @@ struct iterator_traits::value>> + + + // #include ++// #include + + + namespace nlohmann +@@ -3272,6 +3274,7 @@ NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + + + // #include ++// #include + + + namespace nlohmann +@@ -3482,6 +3485,63 @@ struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> + }; + + ++///////////////// ++// char_traits // ++///////////////// ++ ++// Primary template of char_traits calls std char_traits ++template ++struct char_traits : std::char_traits ++{}; ++ ++// Explicitly define char traits for unsigned char since it is not standard ++template<> ++struct char_traits : std::char_traits ++{ ++ using char_type = unsigned char; ++ using int_type = uint64_t; ++ ++ // Redefine to_int_type function ++ static int_type to_int_type(char_type c) noexcept ++ { ++ return static_cast(c); ++ } ++ ++ static char_type to_char_type(int_type i) noexcept ++ { ++ return static_cast(i); ++ } ++ ++ static constexpr int_type eof() noexcept ++ { ++ return static_cast(EOF); ++ } ++}; ++ ++// Explicitly define char traits for signed char since it is not standard ++template<> ++struct char_traits : std::char_traits ++{ ++ using char_type = signed char; ++ using int_type = uint64_t; ++ ++ // Redefine to_int_type function ++ static int_type to_int_type(char_type c) noexcept ++ { ++ return static_cast(c); ++ } ++ ++ static char_type to_char_type(int_type i) noexcept ++ { ++ return static_cast(i); ++ } ++ ++ static constexpr int_type eof() noexcept ++ { ++ return static_cast(EOF); ++ } ++}; ++ + /////////////////// + // is_ functions // + /////////////////// +@@ -5342,16 +5402,16 @@ class iterator_input_adapter + : current(std::move(first)), end(std::move(last)) + {} + +- typename std::char_traits::int_type get_character() ++ typename char_traits::int_type get_character() + { + if (JSON_HEDLEY_LIKELY(current != end)) + { +- auto result = std::char_traits::to_int_type(*current); ++ auto result = char_traits::to_int_type(*current); + std::advance(current, 1); + return result; + } + +- return std::char_traits::eof(); ++ return char_traits::eof(); + } + + private: +@@ -6517,7 +6577,7 @@ class lexer : public lexer_base + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using char_type = typename InputAdapterType::char_type; +- using char_int_type = typename std::char_traits::int_type; ++ using char_int_type = typename char_traits::int_type; + + public: + using token_type = typename lexer_base::token_type; +@@ -6667,7 +6727,7 @@ class lexer : public lexer_base + switch (get()) + { + // end of file while parsing string +- case std::char_traits::eof(): ++ case char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; +@@ -7256,7 +7316,7 @@ class lexer : public lexer_base + { + case '\n': + case '\r': +- case std::char_traits::eof(): ++ case char_traits::eof(): + case '\0': + return true; + +@@ -7273,7 +7333,7 @@ class lexer : public lexer_base + { + switch (get()) + { +- case std::char_traits::eof(): ++ case char_traits::eof(): + case '\0': + { + error_message = "invalid comment; missing closing '*/'"; +@@ -7702,10 +7762,10 @@ scan_number_done: + token_type scan_literal(const char_type* literal_text, const std::size_t length, + token_type return_type) + { +- JSON_ASSERT(std::char_traits::to_char_type(current) == literal_text[0]); ++ JSON_ASSERT(char_traits::to_char_type(current) == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { +- if (JSON_HEDLEY_UNLIKELY(std::char_traits::to_char_type(get()) != literal_text[i])) ++ if (JSON_HEDLEY_UNLIKELY(char_traits::to_char_type(get()) != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; +@@ -7723,7 +7783,7 @@ scan_number_done: + { + token_buffer.clear(); + token_string.clear(); +- token_string.push_back(std::char_traits::to_char_type(current)); ++ token_string.push_back(char_traits::to_char_type(current)); + } + + /* +@@ -7731,7 +7791,7 @@ scan_number_done: + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a +- `std::char_traits::eof()` in that case. Stores the scanned characters ++ `char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input +@@ -7751,9 +7811,9 @@ scan_number_done: + current = ia.get_character(); + } + +- if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) ++ if (JSON_HEDLEY_LIKELY(current != char_traits::eof())) + { +- token_string.push_back(std::char_traits::to_char_type(current)); ++ token_string.push_back(char_traits::to_char_type(current)); + } + + if (current == '\n') +@@ -7792,7 +7852,7 @@ scan_number_done: + --position.chars_read_current_line; + } + +- if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) ++ if (JSON_HEDLEY_LIKELY(current != char_traits::eof())) + { + JSON_ASSERT(!token_string.empty()); + token_string.pop_back(); +@@ -7986,7 +8046,7 @@ scan_number_done: + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': +- case std::char_traits::eof(): ++ case char_traits::eof(): + return token_type::end_of_input; + + // error +@@ -8004,7 +8064,7 @@ scan_number_done: + const bool ignore_comments = false; + + /// the current character +- char_int_type current = std::char_traits::eof(); ++ char_int_type current = char_traits::eof(); + + /// whether the next get() call should just return current + bool next_unget = false; +@@ -8235,7 +8295,7 @@ class binary_reader + using binary_t = typename BasicJsonType::binary_t; + using json_sax_t = SAX; + using char_type = typename InputAdapterType::char_type; +- using char_int_type = typename std::char_traits::int_type; ++ using char_int_type = typename char_traits::int_type; + + public: + /*! +@@ -8307,7 +8367,7 @@ class binary_reader + get(); + } + +- if (JSON_HEDLEY_UNLIKELY(current != std::char_traits::eof())) ++ if (JSON_HEDLEY_UNLIKELY(current != char_traits::eof())) + { + return sax->parse_error(chars_read, get_token_string(), + parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value"), BasicJsonType())); +@@ -8389,7 +8449,7 @@ class binary_reader + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string"), BasicJsonType())); + } + +- return get_string(input_format_t::bson, len - static_cast(1), result) && get() != std::char_traits::eof(); ++ return get_string(input_format_t::bson, len - static_cast(1), result) && get() != char_traits::eof(); + } + + /*! +@@ -8580,7 +8640,7 @@ class binary_reader + switch (get_char ? get() : current) + { + // EOF +- case std::char_traits::eof(): ++ case char_traits::eof(): + return unexpect_eof(input_format_t::cbor, "value"); + + // Integer 0x00..0x17 (0..23) +@@ -9350,7 +9410,7 @@ class binary_reader + switch (get()) + { + // EOF +- case std::char_traits::eof(): ++ case char_traits::eof(): + return unexpect_eof(input_format_t::msgpack, "value"); + + // positive fixint +@@ -10172,7 +10232,7 @@ class binary_reader + { + switch (prefix) + { +- case std::char_traits::eof(): // EOF ++ case char_traits::eof(): // EOF + return unexpect_eof(input_format_t::ubjson, "value"); + + case 'T': // true +@@ -10478,7 +10538,7 @@ class binary_reader + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued +- `std::char_traits::eof()` in that case. ++ `char_traits::eof()` in that case. + + @return character read from the input + */ +@@ -10618,7 +10678,7 @@ class binary_reader + JSON_HEDLEY_NON_NULL(3) + bool unexpect_eof(const input_format_t format, const char* context) const + { +- if (JSON_HEDLEY_UNLIKELY(current == std::char_traits::eof())) ++ if (JSON_HEDLEY_UNLIKELY(current == char_traits::eof())) + { + return sax->parse_error(chars_read, "", + parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context), BasicJsonType())); +@@ -10679,7 +10739,7 @@ class binary_reader + InputAdapterType ia; + + /// the current character +- char_int_type current = std::char_traits::eof(); ++ char_int_type current = char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; +@@ -16102,8 +16162,8 @@ class serializer + error_handler_t error_handler_ = error_handler_t::strict) + : o(std::move(s)) + , loc(std::localeconv()) +- , thousands_sep(loc->thousands_sep == nullptr ? '\0' : std::char_traits::to_char_type(* (loc->thousands_sep))) +- , decimal_point(loc->decimal_point == nullptr ? '\0' : std::char_traits::to_char_type(* (loc->decimal_point))) ++ , thousands_sep(loc->thousands_sep == nullptr ? '\0' : char_traits::to_char_type(* (loc->thousands_sep))) ++ , decimal_point(loc->decimal_point == nullptr ? '\0' : char_traits::to_char_type(* (loc->decimal_point))) + , indent_char(ichar) + , indent_string(512, indent_char) + , error_handler(error_handler_) +diff --git a/3rdparty/sol/sol.hpp b/3rdparty/sol/sol.hpp +index 0bb68ebe..fe90262a 100644 +--- a/3rdparty/sol/sol.hpp ++++ b/3rdparty/sol/sol.hpp +@@ -6747,12 +6747,9 @@ namespace sol { + /// one. + /// + /// \group emplace +- template +- T& emplace(Args&&... args) noexcept { +- static_assert(std::is_constructible::value, "T must be constructible with Args"); +- +- *this = nullopt; +- this->construct(std::forward(args)...); ++ T& emplace(T& arg) noexcept { ++ m_value = &arg; ++ return **this; + } + + /// Swaps this optional with the other. diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0c12d11a..37e5db3c 100644 +index c6de4a98..d181ff43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -123,11 +123,9 @@ find_package(Qt5 REQUIRED COMPONENTS +@@ -1,4 +1,4 @@ +-cmake_minimum_required(VERSION 3.10.2) ++cmake_minimum_required(VERSION 3.20) + + PROJECT(plotjuggler LANGUAGES C CXX VERSION 3.9.1) + +@@ -94,18 +94,6 @@ if (NOT WIN32) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") + endif() + +-if(APPLE AND EXISTS /usr/local/opt/qt5) +- # Homebrew installs Qt5 (up to at least 5.9.1) in +- # /usr/local/qt5, ensure it can be found by CMake since +- # it is not in the default /usr/local prefix. +- # source: https://github.com/Homebrew/homebrew-core/issues/8392#issuecomment-325226494 +- list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5") +- set(CMAKE_MACOSX_RPATH 1) +-elseif(APPLE AND EXISTS /opt/homebrew/opt/qt@5) +- list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/qt@5") +- set(CMAKE_MACOSX_RPATH 1) +-endif() +- + find_package(Qt5 REQUIRED COMPONENTS + Core + Widgets +@@ -120,11 +108,9 @@ find_package(Qt5 REQUIRED COMPONENTS set( QT_LINK_LIBRARIES Qt5::Core Qt5::Widgets @@ -112,7 +480,7 @@ index 0c12d11a..37e5db3c 100644 Qt5::WebSockets ) -@@ -193,7 +191,7 @@ if (BASE_AS_SHARED) +@@ -191,7 +177,7 @@ if (BASE_AS_SHARED) ${PLOTJUGGLER_BASE_SRC} ${PLOTJUGGLER_BASE_MOCS} ) @@ -121,7 +489,7 @@ index 0c12d11a..37e5db3c 100644 else() add_library(plotjuggler_base STATIC ${PLOTJUGGLER_BASE_SRC} -@@ -201,13 +199,6 @@ else() +@@ -199,13 +185,6 @@ else() ) endif() @@ -135,93 +503,123 @@ index 0c12d11a..37e5db3c 100644 ######################### INSTALL #################################### if(COMPILING_WITH_CATKIN) -@@ -224,8 +215,9 @@ elseif(COMPILING_WITH_AMENT) - set(PJ_PLUGIN_INSTALL_DIRECTORY lib/${PROJECT_NAME} ) - - ament_export_targets( -- ${PROJECT_NAME}Targets - export_plotjuggler_qwt -+ export_lua_static -+ ${PROJECT_NAME}Targets - HAS_LIBRARY_TARGET) - ament_package() - -diff --git a/cmake/FindXCB.cmake b/cmake/FindXCB.cmake -new file mode 100644 -index 00000000..a2e2757a ---- /dev/null -+++ b/cmake/FindXCB.cmake -@@ -0,0 +1,51 @@ -+# - FindXCB -+# -+# Copyright 2015 Valve Coporation -+ -+find_package(PkgConfig) -+ -+if(NOT XCB_FIND_COMPONENTS) -+ set(XCB_FIND_COMPONENTS xcb) -+endif() -+ -+include(FindPackageHandleStandardArgs) -+set(XCB_FOUND true) -+set(XCB_INCLUDE_DIRS "") -+set(XCB_LIBRARIES "") -+foreach(comp ${XCB_FIND_COMPONENTS}) -+ # component name -+ string(TOUPPER ${comp} compname) -+ string(REPLACE "-" "_" compname ${compname}) -+ # header name -+ string(REPLACE "xcb-" "" headername xcb/${comp}.h) -+ # library name -+ set(libname ${comp}) -+ -+ pkg_check_modules(PC_${comp} QUIET ${comp}) -+ -+ find_path(${compname}_INCLUDE_DIR NAMES ${headername} -+ HINTS -+ ${PC_${comp}_INCLUDEDIR} -+ ${PC_${comp}_INCLUDE_DIRS} -+ ) -+ -+ find_library(${compname}_LIBRARY NAMES ${libname} -+ HINTS -+ ${PC_${comp}_LIBDIR} -+ ${PC_${comp}_LIBRARY_DIRS} -+ ) -+ -+ find_package_handle_standard_args(${comp} -+ FOUND_VAR ${comp}_FOUND -+ REQUIRED_VARS ${compname}_INCLUDE_DIR ${compname}_LIBRARY) -+ mark_as_advanced(${compname}_INCLUDE_DIR ${compname}_LIBRARY) -+ -+ list(APPEND XCB_INCLUDE_DIRS ${${compname}_INCLUDE_DIR}) -+ list(APPEND XCB_LIBRARIES ${${compname}_LIBRARY}) -+ -+ if(NOT ${comp}_FOUND) -+ set(XCB_FOUND false) -+ endif() -+endforeach() -+ -+list(REMOVE_DUPLICATES XCB_INCLUDE_DIRS) diff --git a/plotjuggler_plugins/ParserProtobuf/CMakeLists.txt b/plotjuggler_plugins/ParserProtobuf/CMakeLists.txt -index 084c93cb..d484adf6 100644 +index f399fdad..4c89c787 100644 --- a/plotjuggler_plugins/ParserProtobuf/CMakeLists.txt +++ b/plotjuggler_plugins/ParserProtobuf/CMakeLists.txt -@@ -4,7 +4,7 @@ include_directories( ../ ) - add_definitions(${QT_DEFINITIONS}) - add_definitions(-DQT_PLUGIN) +@@ -1,13 +1,6 @@ +-if(BUILDING_WITH_CONAN) +- message(STATUS "Finding Protobuf with conan") +- set(Protobuf_LIBS protobuf::libprotobuf) +-else() +- message(STATUS "Finding Protobuf without package managers") +- find_package(Protobuf QUIET) +- set(Protobuf_LIBS ${Protobuf_LIBRARIES}) +-endif() ++set(Protobuf_LIBS protobuf::libprotobuf) -find_package(Protobuf QUIET) +find_package(Protobuf QUIET CONFIG) if( Protobuf_FOUND) - message(STATUS "[Protobuf] found") -@@ -24,7 +24,7 @@ if( Protobuf_FOUND) - target_link_libraries(ProtobufParser - ${Qt5Widgets_LIBRARIES} - ${Qt5Xml_LIBRARIES} -- ${Protobuf_LIBRARIES} -+ protobuf::libprotobuf - plotjuggler_base - plotjuggler_qwt) +diff --git a/plotjuggler_plugins/ParserProtobuf/error_collectors.cpp b/plotjuggler_plugins/ParserProtobuf/error_collectors.cpp +index 761e0b73..b7ce4129 100644 +--- a/plotjuggler_plugins/ParserProtobuf/error_collectors.cpp ++++ b/plotjuggler_plugins/ParserProtobuf/error_collectors.cpp +@@ -2,38 +2,38 @@ + #include + #include + +-void FileErrorCollector::AddError(const std::string& filename, int line, int, +- const std::string& message) ++void FileErrorCollector::RecordError(const absl::string_view filename, int line, int, ++ const absl::string_view message) + { + auto msg = QString("File: [%1] Line: [%2] Message: %3\n\n") +- .arg(QString::fromStdString(filename)) ++ .arg(QString::fromStdString(std::string(filename))) + .arg(line) +- .arg(QString::fromStdString(message)); ++ .arg(QString::fromStdString(std::string(message))); + + _errors.push_back(msg); + } + +-void FileErrorCollector::AddWarning(const std::string& filename, int line, int, +- const std::string& message) ++void FileErrorCollector::RecordWarning(const absl::string_view filename, int line, int, ++ const absl::string_view message) + { + auto msg = QString("Warning [%1] line %2: %3") +- .arg(QString::fromStdString(filename)) ++ .arg(QString::fromStdString(std::string(filename))) + .arg(line) +- .arg(QString::fromStdString(message)); ++ .arg(QString::fromStdString(std::string(message))); + qDebug() << msg; + } + +-void IoErrorCollector::AddError(int line, google::protobuf::io::ColumnNumber, +- const std::string& message) ++void IoErrorCollector::RecordError(int line, google::protobuf::io::ColumnNumber, ++ const absl::string_view message) + { + _errors.push_back( +- QString("Line: [%1] Message: %2\n").arg(line).arg(QString::fromStdString(message))); ++ QString("Line: [%1] Message: %2\n").arg(line).arg(QString::fromStdString(std::string(message)))); + } + +-void IoErrorCollector::AddWarning(int line, google::protobuf::io::ColumnNumber column, +- const std::string& message) ++void IoErrorCollector::RecordWarning(int line, google::protobuf::io::ColumnNumber column, ++ const absl::string_view message) + { + qDebug() << QString("Line: [%1] Message: %2\n") + .arg(line) +- .arg(QString::fromStdString(message)); ++ .arg(QString::fromStdString(std::string(message))); + } +diff --git a/plotjuggler_plugins/ParserProtobuf/error_collectors.h b/plotjuggler_plugins/ParserProtobuf/error_collectors.h +index f70a881f..7afe1fea 100644 +--- a/plotjuggler_plugins/ParserProtobuf/error_collectors.h ++++ b/plotjuggler_plugins/ParserProtobuf/error_collectors.h +@@ -3,17 +3,18 @@ + + #include + #include ++#include + + #include + + class IoErrorCollector : public google::protobuf::io::ErrorCollector + { + public: +- void AddError(int line, google::protobuf::io::ColumnNumber column, +- const std::string& message) override; ++ void RecordError(int line, google::protobuf::io::ColumnNumber column, ++ const absl::string_view message) override; + +- void AddWarning(int line, google::protobuf::io::ColumnNumber column, +- const std::string& message) override; ++ void RecordWarning(int line, google::protobuf::io::ColumnNumber column, ++ const absl::string_view message) override; + + const QStringList& errors() + { +@@ -27,11 +28,11 @@ private: + class FileErrorCollector : public google::protobuf::compiler::MultiFileErrorCollector + { + public: +- void AddError(const std::string& filename, int line, int, +- const std::string& message) override; ++ void RecordError(const absl::string_view filename, int line, int, ++ const absl::string_view message) override; + +- void AddWarning(const std::string& filename, int line, int, +- const std::string& message) override; ++ void RecordWarning(const absl::string_view filename, int line, int, ++ const absl::string_view message) override; + + const QStringList& errors() + { diff --git a/patch/ros-humble-realtime-tools.osx.patch b/patch/ros-humble-realtime-tools.osx.patch index 9cdd72842..b3a1736f4 100644 --- a/patch/ros-humble-realtime-tools.osx.patch +++ b/patch/ros-humble-realtime-tools.osx.patch @@ -1,27 +1,82 @@ -diff --git a/src/thread_priority.cpp b/src/thread_priority.cpp -index 72749e3..778c06a 100644 ---- a/src/thread_priority.cpp -+++ b/src/thread_priority.cpp -@@ -37,20 +37,12 @@ namespace realtime_tools - { - bool has_realtime_kernel() - { -- std::ifstream realtime_file("/sys/kernel/realtime", std::ios::in); -- bool has_realtime = false; -- if (realtime_file.is_open()) { -- realtime_file >> has_realtime; -- } -- return has_realtime; -+ return false; - } +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5a9be70..9141953 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -40,7 +40,7 @@ target_include_directories(realtime_tools PUBLIC + $ + ) + ament_target_dependencies(realtime_tools PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) +-if(UNIX) ++if(UNIX AND NOT APPLE) + target_link_libraries(realtime_tools PUBLIC cap) + endif() - bool configure_sched_fifo(int priority) - { -- struct sched_param schedp; -- memset(&schedp, 0, sizeof(schedp)); -- schedp.sched_priority = priority; -- return !sched_setscheduler(0, SCHED_FIFO, &schedp); -+ return false; - } +@@ -54,7 +54,7 @@ target_include_directories(thread_priority PUBLIC + $ + ) + ament_target_dependencies(thread_priority PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) +-if(UNIX) ++if(UNIX AND NOT APPLE) + target_link_libraries(thread_priority PUBLIC cap) + endif() + +diff --git a/src/realtime_helpers.cpp b/src/realtime_helpers.cpp +index e55894c..e75e4c8 100644 +--- a/src/realtime_helpers.cpp ++++ b/src/realtime_helpers.cpp +@@ -30,12 +30,15 @@ - } // namespace realtime_tools \ No newline at end of file + #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) + #include +-#include + #include + + #include + #endif + ++#if defined(__unix__) ++#include ++#endif ++ + #include + #include + +@@ -56,6 +59,19 @@ bool configure_sched_fifo(int priority) + #ifdef _WIN32 + HANDLE thread = GetCurrentThread(); + return SetThreadPriority(thread, priority); ++#elif defined(__APPLE__) ++ pthread_t thread = pthread_self(); ++ struct sched_param schedp; ++ memset(&schedp, 0, sizeof(schedp)); ++ schedp.sched_priority = priority; ++ ++ int policy = SCHED_FIFO; ++ if (pthread_setschedparam(thread, policy, &schedp) == 0) { ++ return true; ++ } else { ++ // Optionally log strerror(errno) for debugging ++ return false; ++ } + #else + struct sched_param schedp; + memset(&schedp, 0, sizeof(schedp)); +@@ -75,6 +91,8 @@ std::pair lock_memory() + { + #ifdef _WIN32 + return {false, "Memory locking is not supported on Windows."}; ++#elif defined(__APPLE__) ++ return {false, "Memory locking is not supported on MacOS."}; + #else + auto is_capable = [](cap_value_t v) -> bool { + bool rc = false; +@@ -127,6 +145,9 @@ std::pair set_thread_affinity( + #ifdef _WIN32 + message = "Thread affinity is not supported on Windows."; + return std::make_pair(false, message); ++#elif defined(__APPLE__) ++ message = "Memory locking is not supported on MacOS."; ++ return std::make_pair(false, message); + #else + auto set_affinity_result_message = [](int result, std::string & msg) -> bool { + if (result == 0) { diff --git a/patch/ros-humble-realtime-tools.win.patch b/patch/ros-humble-realtime-tools.win.patch deleted file mode 100644 index 23fb3d07f..000000000 --- a/patch/ros-humble-realtime-tools.win.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/src/thread_priority.cpp b/src/thread_priority.cpp -index 72749e3..778c06a 100644 ---- a/src/thread_priority.cpp -+++ b/src/thread_priority.cpp -@@ -37,20 +37,12 @@ namespace realtime_tools - { - bool has_realtime_kernel() - { -- std::ifstream realtime_file("/sys/kernel/realtime", std::ios::in); -- bool has_realtime = false; -- if (realtime_file.is_open()) { -- realtime_file >> has_realtime; -- } -- return has_realtime; -+ return false; - } - - bool configure_sched_fifo(int priority) - { -- struct sched_param schedp; -- memset(&schedp, 0, sizeof(schedp)); -- schedp.sched_priority = priority; -- return !sched_setscheduler(0, SCHED_FIFO, &schedp); -+ return false; - } - - } // namespace realtime_tools -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 4743d98..68fc981 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -5,6 +5,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options(-Wall -Wextra) - endif() - -+set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -+ - set(THIS_PACKAGE_INCLUDE_DEPENDS - rclcpp - rclcpp_action diff --git a/patch/ros-humble-robot-controllers-interface.win.patch b/patch/ros-humble-robot-controllers-interface.win.patch new file mode 100644 index 000000000..de6f358a6 --- /dev/null +++ b/patch/ros-humble-robot-controllers-interface.win.patch @@ -0,0 +1,12 @@ +diff --git a/robot_controllers_interface/CMakeLists.txt b/robot_controllers_interface/CMakeLists.txt +index 2c421fa..822b755 100644 +--- a/robot_controllers_interface/CMakeLists.txt ++++ b/robot_controllers_interface/CMakeLists.txt +@@ -14,6 +14,7 @@ endif() + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + find_package(ament_cmake REQUIRED) + find_package(pluginlib REQUIRED) diff --git a/patch/ros-humble-ros-image-to-qimage.win.patch b/patch/ros-humble-ros-image-to-qimage.win.patch new file mode 100644 index 000000000..35e316da5 --- /dev/null +++ b/patch/ros-humble-ros-image-to-qimage.win.patch @@ -0,0 +1,12 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 73439fc..f76a5d1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,6 +4,7 @@ project(ros_image_to_qimage) + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + # find dependencies + find_package(ament_cmake REQUIRED) diff --git a/patch/ros-humble-rosidl-generator-c.patch b/patch/ros-humble-rosidl-generator-c.patch deleted file mode 100644 index b9728725f..000000000 --- a/patch/ros-humble-rosidl-generator-c.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/rosidl_generator_c/rosidl_generator_c-extras.cmake.in b/rosidl_generator_c/rosidl_generator_c-extras.cmake.in -index 48ff0d8f..b6e2b507 100644 ---- a/rosidl_generator_c/rosidl_generator_c-extras.cmake.in -+++ b/rosidl_generator_c/rosidl_generator_c-extras.cmake.in -@@ -6,6 +6,6 @@ set(rosidl_generator_c_LIBRARY_TYPE "@rosidl_generator_c_LIBRARY_TYPE@") - include("${CMAKE_CURRENT_LIST_DIR}/register_c.cmake") - rosidl_generator_c_extras( - "${rosidl_generator_c_DIR}/../../../lib/rosidl_generator_c/rosidl_generator_c" -- "${rosidl_generator_c_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_generator_c/__init__.py" -+ "@PYTHON_INSTALL_DIR@/rosidl_generator_c/__init__.py" - "${rosidl_generator_c_DIR}/../resource" - ) diff --git a/patch/ros-humble-rosidl-generator-cpp.patch b/patch/ros-humble-rosidl-generator-cpp.patch deleted file mode 100644 index 8cc6328cb..000000000 --- a/patch/ros-humble-rosidl-generator-cpp.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/rosidl_generator_cpp/rosidl_generator_cpp-extras.cmake.in b/rosidl_generator_cpp/rosidl_generator_cpp-extras.cmake.in -index 703ced5e..8007dcac 100644 ---- a/rosidl_generator_cpp/rosidl_generator_cpp-extras.cmake.in -+++ b/rosidl_generator_cpp/rosidl_generator_cpp-extras.cmake.in -@@ -3,6 +3,6 @@ - include("${CMAKE_CURRENT_LIST_DIR}/register_cpp.cmake") - rosidl_generator_cpp_extras( - "${rosidl_generator_cpp_DIR}/../../../lib/rosidl_generator_cpp/rosidl_generator_cpp" -- "${rosidl_generator_cpp_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_generator_cpp/__init__.py" -+ "@PYTHON_INSTALL_DIR@/rosidl_generator_cpp/__init__.py" - "${rosidl_generator_cpp_DIR}/../resource" - ) diff --git a/patch/ros-humble-rosidl-generator-dds-idl.patch b/patch/ros-humble-rosidl-generator-dds-idl.patch deleted file mode 100644 index 6b1afad15..000000000 --- a/patch/ros-humble-rosidl-generator-dds-idl.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_generator_dds_idl/rosidl_generator_dds_idl-extras.cmake.in b/rosidl_generator_dds_idl/rosidl_generator_dds_idl-extras.cmake.in -index 4db2e71..15d04f4 100644 ---- a/rosidl_generator_dds_idl/rosidl_generator_dds_idl-extras.cmake.in -+++ b/rosidl_generator_dds_idl/rosidl_generator_dds_idl-extras.cmake.in -@@ -9,7 +9,7 @@ normalize_path(rosidl_generator_dds_idl_BIN - "${rosidl_generator_dds_idl_BIN}") - - set(rosidl_generator_dds_idl_GENERATOR_FILES -- "${rosidl_generator_dds_idl_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_generator_dds_idl/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_generator_dds_idl/__init__.py") - normalize_path(rosidl_generator_dds_idl_GENERATOR_FILES - "${rosidl_generator_dds_idl_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-generator-py.patch b/patch/ros-humble-rosidl-generator-py.patch index 781a8f038..dfc7ad3ae 100644 --- a/patch/ros-humble-rosidl-generator-py.patch +++ b/patch/ros-humble-rosidl-generator-py.patch @@ -132,15 +132,3 @@ index a6d8263..f231ea2 100644 -endif() +endif() \ No newline at end of file -diff --git a/rosidl_generator_py-extras.cmake.in b/rosidl_generator_py-extras.cmake.in -index 80bed29..ba70acc 100644 ---- a/rosidl_generator_py-extras.cmake.in -+++ b/rosidl_generator_py-extras.cmake.in -@@ -2,6 +2,6 @@ - include("${CMAKE_CURRENT_LIST_DIR}/register_py.cmake") - rosidl_generator_py_extras( - "${rosidl_generator_py_DIR}/../../../lib/rosidl_generator_py/rosidl_generator_py" -- "${rosidl_generator_py_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_generator_py/__init__.py;${rosidl_generator_py_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_generator_py/generate_py_impl.py" -+ "@PYTHON_INSTALL_DIR@/rosidl_generator_py/__init__.py;@PYTHON_INSTALL_DIR@/rosidl_generator_py/generate_py_impl.py" - "${rosidl_generator_py_DIR}/../resource" - ) diff --git a/patch/ros-humble-rosidl-typesupport-c.patch b/patch/ros-humble-rosidl-typesupport-c.patch deleted file mode 100644 index 95c11e828..000000000 --- a/patch/ros-humble-rosidl-typesupport-c.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_c/rosidl_typesupport_c-extras.cmake.in b/rosidl_typesupport_c/rosidl_typesupport_c-extras.cmake.in -index 8afe385..154b63f 100644 ---- a/rosidl_typesupport_c/rosidl_typesupport_c-extras.cmake.in -+++ b/rosidl_typesupport_c/rosidl_typesupport_c-extras.cmake.in -@@ -25,7 +25,7 @@ normalize_path(rosidl_typesupport_c_BIN - "${rosidl_typesupport_c_BIN}") - - set(rosidl_typesupport_c_GENERATOR_FILES -- "${rosidl_typesupport_c_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_c/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_c/__init__.py") - normalize_path(rosidl_typesupport_c_GENERATOR_FILES - "${rosidl_typesupport_c_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-connext-c.patch b/patch/ros-humble-rosidl-typesupport-connext-c.patch deleted file mode 100644 index bbf6f1430..000000000 --- a/patch/ros-humble-rosidl-typesupport-connext-c.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_connext_c/rosidl_typesupport_connext_c-extras.cmake.in b/rosidl_typesupport_connext_c/rosidl_typesupport_connext_c-extras.cmake.in -index 510e1d4..6770f33 100644 ---- a/rosidl_typesupport_connext_c/rosidl_typesupport_connext_c-extras.cmake.in -+++ b/rosidl_typesupport_connext_c/rosidl_typesupport_connext_c-extras.cmake.in -@@ -19,7 +19,7 @@ else() - "${rosidl_typesupport_connext_c_BIN}") - - set(rosidl_typesupport_connext_c_GENERATOR_FILES -- "${rosidl_typesupport_connext_c_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_connext_c/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_connext_c/__init__.py") - normalize_path(rosidl_typesupport_connext_c_GENERATOR_FILES - "${rosidl_typesupport_connext_c_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-connext-cpp.patch b/patch/ros-humble-rosidl-typesupport-connext-cpp.patch deleted file mode 100644 index 31ad675eb..000000000 --- a/patch/ros-humble-rosidl-typesupport-connext-cpp.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_connext_cpp/rosidl_typesupport_connext_cpp-extras.cmake.in b/rosidl_typesupport_connext_cpp/rosidl_typesupport_connext_cpp-extras.cmake.in -index 5deef97..3cd5d2e 100644 ---- a/rosidl_typesupport_connext_cpp/rosidl_typesupport_connext_cpp-extras.cmake.in -+++ b/rosidl_typesupport_connext_cpp/rosidl_typesupport_connext_cpp-extras.cmake.in -@@ -19,7 +19,7 @@ else() - "${rosidl_typesupport_connext_cpp_BIN}") - - set(rosidl_typesupport_connext_cpp_GENERATOR_FILES -- "${rosidl_typesupport_connext_cpp_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_connext_cpp/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_connext_cpp/__init__.py") - normalize_path(rosidl_typesupport_connext_cpp_GENERATOR_FILES - "${rosidl_typesupport_connext_cpp_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-cpp.patch b/patch/ros-humble-rosidl-typesupport-cpp.patch deleted file mode 100644 index a75af4d60..000000000 --- a/patch/ros-humble-rosidl-typesupport-cpp.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_cpp/rosidl_typesupport_cpp-extras.cmake.in b/rosidl_typesupport_cpp/rosidl_typesupport_cpp-extras.cmake.in -index 50609ce..0a0ddc6 100644 ---- a/rosidl_typesupport_cpp/rosidl_typesupport_cpp-extras.cmake.in -+++ b/rosidl_typesupport_cpp/rosidl_typesupport_cpp-extras.cmake.in -@@ -25,7 +25,7 @@ normalize_path(rosidl_typesupport_cpp_BIN - "${rosidl_typesupport_cpp_BIN}") - - set(rosidl_typesupport_cpp_GENERATOR_FILES -- "${rosidl_typesupport_cpp_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_cpp/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_cpp/__init__.py") - normalize_path(rosidl_typesupport_cpp_GENERATOR_FILES - "${rosidl_typesupport_cpp_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-fastrtps-c.patch b/patch/ros-humble-rosidl-typesupport-fastrtps-c.patch deleted file mode 100644 index 4f4794ece..000000000 --- a/patch/ros-humble-rosidl-typesupport-fastrtps-c.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_fastrtps_c/rosidl_typesupport_fastrtps_c-extras.cmake.in b/rosidl_typesupport_fastrtps_c/rosidl_typesupport_fastrtps_c-extras.cmake.in -index f23e9d0..cc19345 100644 ---- a/rosidl_typesupport_fastrtps_c/rosidl_typesupport_fastrtps_c-extras.cmake.in -+++ b/rosidl_typesupport_fastrtps_c/rosidl_typesupport_fastrtps_c-extras.cmake.in -@@ -21,7 +21,7 @@ else() - "${rosidl_typesupport_fastrtps_c_BIN}") - - set(rosidl_typesupport_fastrtps_c_GENERATOR_FILES -- "${rosidl_typesupport_fastrtps_c_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_fastrtps_c/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_fastrtps_c/__init__.py") - normalize_path(rosidl_typesupport_fastrtps_c_GENERATOR_FILES - "${rosidl_typesupport_fastrtps_c_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-fastrtps-cpp.patch b/patch/ros-humble-rosidl-typesupport-fastrtps-cpp.patch deleted file mode 100644 index 74c260aad..000000000 --- a/patch/ros-humble-rosidl-typesupport-fastrtps-cpp.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_fastrtps_cpp/rosidl_typesupport_fastrtps_cpp-extras.cmake.in b/rosidl_typesupport_fastrtps_cpp/rosidl_typesupport_fastrtps_cpp-extras.cmake.in -index 0dd5b22..67f17fd 100644 ---- a/rosidl_typesupport_fastrtps_cpp/rosidl_typesupport_fastrtps_cpp-extras.cmake.in -+++ b/rosidl_typesupport_fastrtps_cpp/rosidl_typesupport_fastrtps_cpp-extras.cmake.in -@@ -22,7 +22,7 @@ else() - "${rosidl_typesupport_fastrtps_cpp_BIN}") - - set(rosidl_typesupport_fastrtps_cpp_GENERATOR_FILES -- "${rosidl_typesupport_fastrtps_cpp_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_fastrtps_cpp/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_fastrtps_cpp/__init__.py") - normalize_path(rosidl_typesupport_fastrtps_cpp_GENERATOR_FILES - "${rosidl_typesupport_fastrtps_cpp_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-gurumdds-c.patch b/patch/ros-humble-rosidl-typesupport-gurumdds-c.patch deleted file mode 100644 index 6897827d4..000000000 --- a/patch/ros-humble-rosidl-typesupport-gurumdds-c.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_gurumdds_c/rosidl_typesupport_gurumdds_c-extras.cmake.in b/rosidl_typesupport_gurumdds_c/rosidl_typesupport_gurumdds_c-extras.cmake.in -index 1c8a3dc..3a69e87 100644 ---- a/rosidl_typesupport_gurumdds_c/rosidl_typesupport_gurumdds_c-extras.cmake.in -+++ b/rosidl_typesupport_gurumdds_c/rosidl_typesupport_gurumdds_c-extras.cmake.in -@@ -19,7 +19,7 @@ else() - "${rosidl_typesupport_gurumdds_c_BIN}") - - set(rosidl_typesupport_gurumdds_c_GENERATOR_FILES -- "${rosidl_typesupport_gurumdds_c_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_gurumdds_c/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_gurumdds_c/__init__.py") - normalize_path(rosidl_typesupport_gurumdds_c_GENERATOR_FILES - "${rosidl_typesupport_gurumdds_c_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-gurumdds-cpp.patch b/patch/ros-humble-rosidl-typesupport-gurumdds-cpp.patch deleted file mode 100644 index cb034e0b5..000000000 --- a/patch/ros-humble-rosidl-typesupport-gurumdds-cpp.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_gurumdds_cpp/rosidl_typesupport_gurumdds_cpp-extras.cmake.in b/rosidl_typesupport_gurumdds_cpp/rosidl_typesupport_gurumdds_cpp-extras.cmake.in -index 2c7a381..60b85df 100644 ---- a/rosidl_typesupport_gurumdds_cpp/rosidl_typesupport_gurumdds_cpp-extras.cmake.in -+++ b/rosidl_typesupport_gurumdds_cpp/rosidl_typesupport_gurumdds_cpp-extras.cmake.in -@@ -15,7 +15,7 @@ else() - "${rosidl_typesupport_gurumdds_cpp_BIN}") - - set(rosidl_typesupport_gurumdds_cpp_GENERATOR_FILES -- "${rosidl_typesupport_gurumdds_cpp_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_gurumdds_cpp/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_gurumdds_cpp/__init__.py") - normalize_path(rosidl_typesupport_gurumdds_GENERATOR_FILES - "${rosidl_typesupport_gurumdds_cpp_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-introspection-c.patch b/patch/ros-humble-rosidl-typesupport-introspection-c.patch deleted file mode 100644 index bb06de44a..000000000 --- a/patch/ros-humble-rosidl-typesupport-introspection-c.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c-extras.cmake.in b/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c-extras.cmake.in -index 004a1e62..ee3c19ab 100644 ---- a/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c-extras.cmake.in -+++ b/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c-extras.cmake.in -@@ -21,7 +21,7 @@ normalize_path(rosidl_typesupport_introspection_c_BIN - "${rosidl_typesupport_introspection_c_BIN}") - - set(rosidl_typesupport_introspection_c_GENERATOR_FILES -- "${rosidl_typesupport_introspection_c_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_introspection_c/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_introspection_c/__init__.py") - normalize_path(rosidl_typesupport_introspection_c_GENERATOR_FILES - "${rosidl_typesupport_introspection_c_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-introspection-cpp.patch b/patch/ros-humble-rosidl-typesupport-introspection-cpp.patch deleted file mode 100644 index 07f3d5efe..000000000 --- a/patch/ros-humble-rosidl-typesupport-introspection-cpp.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp-extras.cmake.in b/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp-extras.cmake.in -index c90641b9..f1d02b9d 100644 ---- a/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp-extras.cmake.in -+++ b/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp-extras.cmake.in -@@ -21,7 +21,7 @@ normalize_path(rosidl_typesupport_introspection_cpp_BIN - "${rosidl_typesupport_introspection_cpp_BIN}") - - set(rosidl_typesupport_introspection_cpp_GENERATOR_FILES -- "${rosidl_typesupport_introspection_cpp_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_introspection_cpp/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_introspection_cpp/__init__.py") - normalize_path(rosidl_typesupport_introspection_cpp_GENERATOR_FILES - "${rosidl_typesupport_introspection_cpp_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-opensplice-c.patch b/patch/ros-humble-rosidl-typesupport-opensplice-c.patch deleted file mode 100644 index b486b296f..000000000 --- a/patch/ros-humble-rosidl-typesupport-opensplice-c.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_opensplice_c/rosidl_typesupport_opensplice_c-extras.cmake.in b/rosidl_typesupport_opensplice_c/rosidl_typesupport_opensplice_c-extras.cmake.in -index 4a57f4b..22673b5 100644 ---- a/rosidl_typesupport_opensplice_c/rosidl_typesupport_opensplice_c-extras.cmake.in -+++ b/rosidl_typesupport_opensplice_c/rosidl_typesupport_opensplice_c-extras.cmake.in -@@ -21,7 +21,7 @@ else() - "${rosidl_typesupport_opensplice_c_BIN}") - - set(rosidl_typesupport_opensplice_c_GENERATOR_FILES -- "${rosidl_typesupport_opensplice_c_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_opensplice_c/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_opensplice_c/__init__.py") - normalize_path(rosidl_typesupport_opensplice_c_GENERATOR_FILES - "${rosidl_typesupport_opensplice_c_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosidl-typesupport-opensplice-cpp.patch b/patch/ros-humble-rosidl-typesupport-opensplice-cpp.patch deleted file mode 100644 index 0ef733aac..000000000 --- a/patch/ros-humble-rosidl-typesupport-opensplice-cpp.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/rosidl_typesupport_opensplice_cpp/rosidl_typesupport_opensplice_cpp-extras.cmake.in b/rosidl_typesupport_opensplice_cpp/rosidl_typesupport_opensplice_cpp-extras.cmake.in -index c9e5e73..ed334a5 100644 ---- a/rosidl_typesupport_opensplice_cpp/rosidl_typesupport_opensplice_cpp-extras.cmake.in -+++ b/rosidl_typesupport_opensplice_cpp/rosidl_typesupport_opensplice_cpp-extras.cmake.in -@@ -21,7 +21,7 @@ else() - "${rosidl_typesupport_opensplice_cpp_BIN}") - - set(rosidl_typesupport_opensplice_cpp_GENERATOR_FILES -- "${rosidl_typesupport_opensplice_cpp_DIR}/../../../@PYTHON_INSTALL_DIR@/rosidl_typesupport_opensplice_cpp/__init__.py") -+ "@PYTHON_INSTALL_DIR@/rosidl_typesupport_opensplice_cpp/__init__.py") - normalize_path(rosidl_typesupport_opensplice_cpp_GENERATOR_FILES - "${rosidl_typesupport_opensplice_cpp_GENERATOR_FILES}") - diff --git a/patch/ros-humble-rosx-introspection.unix.patch b/patch/ros-humble-rosx-introspection.unix.patch new file mode 100644 index 000000000..a2d095fc4 --- /dev/null +++ b/patch/ros-humble-rosx-introspection.unix.patch @@ -0,0 +1,23 @@ +diff --git a/src/ros_parser.cpp b/src/ros_parser.cpp +index 40c161b..8a1523c 100644 +--- a/src/ros_parser.cpp ++++ b/src/ros_parser.cpp +@@ -581,8 +581,7 @@ bool Parser::serializeFromJson(const std::string_view json_string, + } + else + { +- rapidjson::Value next_value = value_field->GetObject(); +- serializeImpl(msg_node_child.get(), &next_value); ++ serializeImpl(msg_node_child.get(), value_field); + } + } + break; +@@ -600,7 +599,7 @@ bool Parser::serializeFromJson(const std::string_view json_string, + auto root_msg = + _schema->field_tree.croot()->value()->getMessagePtr(_schema->msg_library); + +- rapidjson::Value json_root = json_document.GetObject(); ++ rapidjson::Value& json_root = json_document; + serializeImpl(root_msg.get(), &json_root); + + return true; diff --git a/patch/ros-humble-rosx-introspection.win.patch b/patch/ros-humble-rosx-introspection.win.patch new file mode 100644 index 000000000..60f0afc4d --- /dev/null +++ b/patch/ros-humble-rosx-introspection.win.patch @@ -0,0 +1,42 @@ +diff --git a/src/ros_parser.cpp b/src/ros_parser.cpp +index 40c161b..8a1523c 100644 +--- a/src/ros_parser.cpp ++++ b/src/ros_parser.cpp +@@ -581,8 +581,7 @@ bool Parser::serializeFromJson(const std::string_view json_string, + } + else + { +- rapidjson::Value next_value = value_field->GetObject(); +- serializeImpl(msg_node_child.get(), &next_value); ++ serializeImpl(msg_node_child.get(), value_field); + } + } + break; +@@ -600,7 +599,7 @@ bool Parser::serializeFromJson(const std::string_view json_string, + auto root_msg = + _schema->field_tree.croot()->value()->getMessagePtr(_schema->msg_library); + +- rapidjson::Value json_root = json_document.GetObject(); ++ rapidjson::Value& json_root = json_document; + serializeImpl(root_msg.get(), &json_root); + + return true; + +diff --git a/src/ros_utils/message_definition_cache.cpp b/src/ros_utils/message_definition_cache.cpp +index 7c4da1f..41b8f5e 100644 +--- a/src/ros_utils/message_definition_cache.cpp ++++ b/src/ros_utils/message_definition_cache.cpp +@@ -22,3 +22,4 @@ ++#include + #include + #include + #include + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 005588b..16a8b50 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,2 +7,3 @@ project(rosx_introspection LANGUAGES CXX VERSION 1.0.2) ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + diff --git a/patch/ros-humble-rviz-common.patch b/patch/ros-humble-rviz-common.unix.patch similarity index 100% rename from patch/ros-humble-rviz-common.patch rename to patch/ros-humble-rviz-common.unix.patch diff --git a/patch/ros-humble-rviz-common.win.patch b/patch/ros-humble-rviz-common.win.patch new file mode 100644 index 000000000..3bc998390 --- /dev/null +++ b/patch/ros-humble-rviz-common.win.patch @@ -0,0 +1,43 @@ +diff --git a/rviz_common/include/rviz_common/visualization_manager.hpp b/rviz_common/include/rviz_common/visualization_manager.hpp +index b06436ce3..fa61b3a0e 100644 +--- a/rviz_common/include/rviz_common/visualization_manager.hpp ++++ b/rviz_common/include/rviz_common/visualization_manager.hpp +@@ -87,7 +87,7 @@ class VisualizationManagerPrivate; + * The "protected" members should probably all be "private", as + * VisualizationManager is not intended to be subclassed. + */ +-class VisualizationManager : public DisplayContext ++class RVIZ_COMMON_PUBLIC VisualizationManager : public DisplayContext + { + Q_OBJECT + diff --git a/rviz_common/include/rviz_common/visualization_frame.hpp b/rviz_common/include/rviz_common/visualization_frame.hpp +index 620f2179d..81539066c 100644 +--- a/rviz_common/include/rviz_common/visualization_frame.hpp ++++ b/rviz_common/include/rviz_common/visualization_frame.hpp +@@ -80,7 +80,7 @@ class WidgetGeometryChangeDetector; + * At the top is a toolbar with Tools like "Move Camera", "Select", etc. + * There is also a menu bar with file/open, etc. + */ +-class VisualizationFrame : public QMainWindow, public WindowManagerInterface ++class RVIZ_COMMON_PUBLIC VisualizationFrame : public QMainWindow, public WindowManagerInterface + { + Q_OBJECT + + +diff --git a/rviz_common/include/rviz_common/tool_manager.hpp b/rviz_common/include/rviz_common/tool_manager.hpp +index 7431cea8b..7293b1dd9 100644 +--- a/rviz_common/include/rviz_common/tool_manager.hpp ++++ b/rviz_common/include/rviz_common/tool_manager.hpp +@@ -45,1 +45,2 @@ ++#include "rviz_common/visibility_control.hpp" + +diff --git a/rviz_common/include/rviz_common/tool_manager.hpp b/rviz_common/include/rviz_common/tool_manager.hpp +index 7431cea8b..7293b1dd9 100644 +--- a/rviz_common/include/rviz_common/tool_manager.hpp ++++ b/rviz_common/include/rviz_common/tool_manager.hpp +@@ -58,4 +59,4 @@ class PropertyTreeModel; +-class ToolManager : public QObject ++class RVIZ_COMMON_PUBLIC ToolManager : public QObject + { + Q_OBJECT + diff --git a/patch/ros-humble-rviz-ogre-vendor.patch b/patch/ros-humble-rviz-ogre-vendor.patch index 38785d333..687948eac 100644 --- a/patch/ros-humble-rviz-ogre-vendor.patch +++ b/patch/ros-humble-rviz-ogre-vendor.patch @@ -138,31 +138,62 @@ index 00000000..ab1c324c \ No newline at end of file diff --git a/0004-fix-arm64.patch b/0004-fix-arm64.patch new file mode 100644 -index 00000000..fb54a574 +index 000000000..9e9540007 --- /dev/null +++ b/0004-fix-arm64.patch -@@ -0,0 +1,20 @@ +@@ -0,0 +1,52 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 20984c5eba1..607bf7cec5e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt -+@@ -280,15 +280,6 @@ elseif(EMSCRIPTEN) ++@@ -14,9 +14,9 @@ ++ # and provide build configuration options. ++ ###################################################################### + -+ set(OGRE_CONFIG_THREADS "0" CACHE STRING "Threading is unstable on Emscripten" FORCE) ++-cmake_minimum_required(VERSION 3.3.0) +++cmake_minimum_required(VERSION 3.21.0) ++ ++-set(CMAKE_CXX_STANDARD 11) +++set(CMAKE_CXX_STANDARD 11) ++ set(CMAKE_CXX_STANDARD_REQUIRED ON) ++ set(CMAKE_CXX_EXTENSIONS OFF) ++ ++@@ -283,12 +283,13 @@ elseif(EMSCRIPTEN) + elseif (APPLE AND NOT APPLE_IOS) -+- -+- set(XCODE_ATTRIBUTE_SDKROOT macosx) ++ ++ set(XCODE_ATTRIBUTE_SDKROOT macosx) +- if(CMAKE_GENERATOR STREQUAL "Unix Makefiles") -+- execute_process(COMMAND xcodebuild -version -sdk "${XCODE_ATTRIBUTE_SDKROOT}" Path | head -n 1 OUTPUT_VARIABLE CMAKE_OSX_SYSROOT) -+- string(REGEX REPLACE "(\r?\n)+$" "" CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}") +++ # if(CMAKE_GENERATOR STREQUAL "Unix Makefiles") ++ execute_process(COMMAND xcodebuild -version -sdk "${XCODE_ATTRIBUTE_SDKROOT}" Path | head -n 1 OUTPUT_VARIABLE CMAKE_OSX_SYSROOT) ++ string(REGEX REPLACE "(\r?\n)+$" "" CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}") +- else() +- set(CMAKE_OSX_SYSROOT macosx) +- endif() -+- +++ add_definitions(-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) +++ # else() +++ # set(CMAKE_OSX_SYSROOT macosx) +++ # endif() ++ + # Make sure that the GLES2 render system is disabled for non-iOS Apple builds + set(OGRE_BUILD_RENDERSYSTEM_GLES2 FALSE CACHE BOOL "" FORCE) -+ endif () -\ No newline at end of file ++ ++diff --git a/Components/Overlay/include/OgreUTFString.h b/Components/Overlay/include/OgreUTFString.h ++index 4b29f9d..bb55630 100644 ++--- a/Components/Overlay/include/OgreUTFString.h +++++ b/Components/Overlay/include/OgreUTFString.h ++@@ -183,10 +183,10 @@ namespace Ogre { ++ static const size_type npos = static_cast(~0); ++ ++ //! a single 32-bit Unicode character ++- typedef uint32 unicode_char; +++ typedef char32_t unicode_char; ++ ++ //! a single UTF-16 code point ++- typedef uint16 code_point; +++ typedef char16_t code_point; ++ ++ //! value type typedef for use in iterators ++ typedef code_point value_type; diff --git a/CMakeLists.txt b/CMakeLists.txt index 122f2f29..c837ae29 100644 --- a/CMakeLists.txt diff --git a/patch/ros-humble-serial-driver.win.patch b/patch/ros-humble-serial-driver.win.patch new file mode 100644 index 000000000..7186a9185 --- /dev/null +++ b/patch/ros-humble-serial-driver.win.patch @@ -0,0 +1,12 @@ +diff --git a/serial_driver/CMakeLists.txt b/serial_driver/CMakeLists.txt +index 4b15ca5..9055ace 100644 +--- a/serial_driver/CMakeLists.txt ++++ b/serial_driver/CMakeLists.txt +@@ -24,6 +24,7 @@ endif() + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + ## dependencies + find_package(ament_cmake_auto REQUIRED) diff --git a/patch/ros-humble-slam-toolbox.patch b/patch/ros-humble-slam-toolbox.patch index 5c916f914..bc2a6b0f4 100644 --- a/patch/ros-humble-slam-toolbox.patch +++ b/patch/ros-humble-slam-toolbox.patch @@ -86,3 +86,17 @@ index 42c2fad..e414c73 100644 } }; +diff --git a/CMake/FindCSparse.cmake b/CMake/FindCSparse.cmake +index 053c4e76d..702e00453 100644 +--- a/CMake/FindCSparse.cmake ++++ b/CMake/FindCSparse.cmake +@@ -10,6 +10,9 @@ FIND_PATH(CSPARSE_INCLUDE_DIR NAMES cs.h + /opt/local/include/ufsparse + /usr/local/include/ufsparse + /sw/include/ufsparse ++ PATH_SUFFIXES ++ suitesparse ++ ufsparse + ) + + FIND_LIBRARY(CSPARSE_LIBRARY NAMES cxsparse diff --git a/patch/ros-humble-steering-controllers-library.win.patch b/patch/ros-humble-steering-controllers-library.win.patch index 3bc765712..2121ae433 100644 --- a/patch/ros-humble-steering-controllers-library.win.patch +++ b/patch/ros-humble-steering-controllers-library.win.patch @@ -1,192 +1,15 @@ diff --git a/steering_controllers_library/CMakeLists.txt b/steering_controllers_library/CMakeLists.txt -index 88f24d304c..106fdcc464 100644 +index fc79d54b7c..2e80ed198f 100644 --- a/steering_controllers_library/CMakeLists.txt +++ b/steering_controllers_library/CMakeLists.txt -@@ -51,7 +51,7 @@ ament_target_dependencies(steering_controllers_library PUBLIC ${THIS_PACKAGE_INC +@@ -7,6 +7,10 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + -Werror=missing-braces) + endif() - # Causes the visibility macros to use dllexport rather than dllimport, - # which is appropriate when building the dll but not consuming it. --target_compile_definitions(steering_controllers_library PRIVATE "STEERING_CONTROLLERS_BUILDING_DLL") -+target_compile_definitions(steering_controllers_library PRIVATE "STEERING_CONTROLLERS__VISIBILITY_BUILDING_DLL" "_USE_MATH_DEFINES") - - if(BUILD_TESTING) - find_package(ament_cmake_gmock REQUIRED) -diff --git a/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp b/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp -index b560e2a782..5e3264fd67 100644 ---- a/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp -+++ b/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp -@@ -89,7 +89,7 @@ class SteeringControllersLibrary : public controller_interface::ChainableControl - using AckermanControllerState = control_msgs::msg::SteeringControllerStatus; - - protected: -- controller_interface::CallbackReturn set_interface_numbers( -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC controller_interface::CallbackReturn set_interface_numbers( - size_t nr_state_itfs, size_t nr_cmd_itfs, size_t nr_ref_itfs); - - std::shared_ptr param_listener_; -@@ -112,9 +112,9 @@ class SteeringControllersLibrary : public controller_interface::ChainableControl - std::unique_ptr rt_tf_odom_state_publisher_; - - // override methods from ChainableControllerInterface -- std::vector on_export_reference_interfaces() override; -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC std::vector on_export_reference_interfaces() override; - -- bool on_set_chained_mode(bool chained_mode) override; -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC bool on_set_chained_mode(bool chained_mode) override; - - /// Odometry: - steering_odometry::SteeringOdometry odometry_; -diff --git a/steering_controllers_library/include/steering_controllers_library/steering_odometry.hpp b/steering_controllers_library/include/steering_controllers_library/steering_odometry.hpp -index 95bcef7e63..f1d63287cd 100644 ---- a/steering_controllers_library/include/steering_controllers_library/steering_odometry.hpp -+++ b/steering_controllers_library/include/steering_controllers_library/steering_odometry.hpp -@@ -26,6 +26,8 @@ - - #include "rcpputils/rolling_mean_accumulator.hpp" - -+#include "steering_controllers_library/visibility_control.h" ++# using this instead of visibility macros ++# S1 from https://github.com/ros-controls/ros2_controllers/issues/1053 ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + - namespace steering_odometry - { - const unsigned int BICYCLE_CONFIG = 0; -@@ -45,12 +47,14 @@ class SteeringOdometry - * \param velocity_rolling_window_size Rolling window size used to compute the velocity mean - * - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - explicit SteeringOdometry(size_t velocity_rolling_window_size = 10); - - /** - * \brief Initialize the odometry - * \param time Current time - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - void init(const rclcpp::Time & time); - - /** -@@ -60,6 +64,7 @@ class SteeringOdometry - * \param dt time difference to last call - * \return true if the odometry is actually updated - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - bool update_from_position( - const double traction_wheel_pos, const double steer_pos, const double dt); - -@@ -71,6 +76,7 @@ class SteeringOdometry - * \param dt time difference to last call - * \return true if the odometry is actually updated - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - bool update_from_position( - const double right_traction_wheel_pos, const double left_traction_wheel_pos, - const double steer_pos, const double dt); -@@ -84,6 +90,7 @@ class SteeringOdometry - * \param dt time difference to last call - * \return true if the odometry is actually updated - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - bool update_from_position( - const double right_traction_wheel_pos, const double left_traction_wheel_pos, - const double right_steer_pos, const double left_steer_pos, const double dt); -@@ -95,6 +102,7 @@ class SteeringOdometry - * \param dt time difference to last call - * \return true if the odometry is actually updated - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - bool update_from_velocity( - const double traction_wheel_vel, const double steer_pos, const double dt); - -@@ -106,6 +114,7 @@ class SteeringOdometry - * \param dt time difference to last call - * \return true if the odometry is actually updated - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - bool update_from_velocity( - const double right_traction_wheel_vel, const double left_traction_wheel_vel, - const double steer_pos, const double dt); -@@ -119,6 +128,7 @@ class SteeringOdometry - * \param dt time difference to last call - * \return true if the odometry is actually updated - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - bool update_from_velocity( - const double right_traction_wheel_vel, const double left_traction_wheel_vel, - const double right_steer_pos, const double left_steer_pos, const double dt); -@@ -129,53 +139,62 @@ class SteeringOdometry - * \param angular Angular velocity [rad/s] - * \param time Current time - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - void update_open_loop(const double linear, const double angular, const double dt); - - /** - * \brief Set odometry type - * \param type odometry type - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - void set_odometry_type(const unsigned int type); - - /** - * \brief heading getter - * \return heading [rad] - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - double get_heading() const { return heading_; } - - /** - * \brief x position getter - * \return x position [m] - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - double get_x() const { return x_; } - - /** - * \brief y position getter - * \return y position [m] - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - double get_y() const { return y_; } - - /** - * \brief linear velocity getter - * \return linear velocity [m/s] - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - double get_linear() const { return linear_; } - - /** - * \brief angular velocity getter - * \return angular velocity [rad/s] - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - double get_angular() const { return angular_; } - - /** - * \brief Sets the wheel parameters: radius, separation and wheelbase - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - void set_wheel_params(double wheel_radius, double wheelbase = 0.0, double wheel_track = 0.0); - - /** - * \brief Velocity rolling window size setter - * \param velocity_rolling_window_size Velocity rolling window size - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - void set_velocity_rolling_window_size(size_t velocity_rolling_window_size); - - /** -@@ -184,12 +203,14 @@ class SteeringOdometry - * \param theta_dot Desired angular velocity [rad/s] - * \return Tuple of velocity commands and steering commands - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - std::tuple, std::vector> get_commands( - const double Vx, const double theta_dot); - - /** - * \brief Reset poses, heading, and accumulators - */ -+ STEERING_CONTROLLERS__VISIBILITY_PUBLIC - void reset_odometry(); - - private: + # find dependencies + set(THIS_PACKAGE_INCLUDE_DEPENDS + control_msgs diff --git a/patch/ros-humble-stubborn-buddies.win.patch b/patch/ros-humble-stubborn-buddies.win.patch new file mode 100644 index 000000000..79fa174ef --- /dev/null +++ b/patch/ros-humble-stubborn-buddies.win.patch @@ -0,0 +1,11 @@ +index 0963f77..4aa0891 100644 +--- a/stubborn_buddies/CMakeLists.txt ++++ b/stubborn_buddies/CMakeLists.txt +@@ -14,6 +14,7 @@ endif() + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + # find dependencies + find_package(ament_cmake REQUIRED) diff --git a/patch/ros-humble-system-modes.win.patch b/patch/ros-humble-system-modes.win.patch new file mode 100644 index 000000000..6074f4cc7 --- /dev/null +++ b/patch/ros-humble-system-modes.win.patch @@ -0,0 +1,9 @@ +diff --git a/system_modes/CMakeLists.txt b/system_modes/CMakeLists.txt +index 2c0bf30..ab07f68 100644 +--- a/system_modes/CMakeLists.txt ++++ b/system_modes/CMakeLists.txt +@@ -17,3 +17,4 @@ endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + # find dependencies + find_package(ament_cmake REQUIRED) diff --git a/patch/ros-humble-tricycle-controller.win.patch b/patch/ros-humble-tricycle-controller.win.patch deleted file mode 100644 index 954f61e6f..000000000 --- a/patch/ros-humble-tricycle-controller.win.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff --git a/tricycle_controller/CMakeLists.txt b/tricycle_controller/CMakeLists.txt -index cdc69f182a..94fba916b1 100644 ---- a/tricycle_controller/CMakeLists.txt -+++ b/tricycle_controller/CMakeLists.txt -@@ -47,6 +47,7 @@ target_include_directories(tricycle_controller PUBLIC - ) - target_link_libraries(tricycle_controller PUBLIC tricycle_controller_parameters) - ament_target_dependencies(tricycle_controller PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) -+target_compile_definitions(tricycle_controller PRIVATE "TRICYCLE_CONTROLLER_BUILDING_DLL" _USE_MATH_DEFINES) - - pluginlib_export_plugin_description_file(controller_interface tricycle_controller.xml) - -diff --git a/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp b/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp -index 24aaf89de9..f76451d607 100644 ---- a/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp -+++ b/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp -@@ -105,11 +105,15 @@ class TricycleController : public controller_interface::ControllerInterface - std::reference_wrapper position_command; - }; - -+ TRICYCLE_CONTROLLER_PUBLIC - CallbackReturn get_traction( - const std::string & traction_joint_name, std::vector & joint); -+ TRICYCLE_CONTROLLER_PUBLIC - CallbackReturn get_steering( - const std::string & steering_joint_name, std::vector & joint); -+ TRICYCLE_CONTROLLER_PUBLIC - double convert_trans_rot_vel_to_steering_angle(double v, double omega, double wheelbase); -+ TRICYCLE_CONTROLLER_PUBLIC - std::tuple twist_to_ackermann(double linear_command, double angular_command); - - // Parameters from ROS for tricycle_controller -@@ -155,11 +159,14 @@ class TricycleController : public controller_interface::ControllerInterface - - bool is_halted = false; - -+ TRICYCLE_CONTROLLER_PUBLIC - void reset_odometry( - const std::shared_ptr request_header, - const std::shared_ptr req, - std::shared_ptr res); -+ TRICYCLE_CONTROLLER_PUBLIC - bool reset(); -+ TRICYCLE_CONTROLLER_PUBLIC - void halt(); - }; - } // namespace tricycle_controller \ No newline at end of file diff --git a/patch/ros-humble-tricycle-steering-controller.win.patch b/patch/ros-humble-tricycle-steering-controller.win.patch deleted file mode 100644 index 7145d8105..000000000 --- a/patch/ros-humble-tricycle-steering-controller.win.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/tricycle_steering_controller/CMakeLists.txt b/tricycle_steering_controller/CMakeLists.txt -index 02c9453ace..21604df0c4 100644 ---- a/tricycle_steering_controller/CMakeLists.txt -+++ b/tricycle_steering_controller/CMakeLists.txt -@@ -44,7 +44,7 @@ ament_target_dependencies(tricycle_steering_controller PUBLIC ${THIS_PACKAGE_INC - - # Causes the visibility macros to use dllexport rather than dllimport, - # which is appropriate when building the dll but not consuming it. --target_compile_definitions(tricycle_steering_controller PRIVATE "ACKERMANN_STEERING_CONTROLLER_BUILDING_DLL") -+target_compile_definitions(tricycle_steering_controller PRIVATE "TRICYCLE_STEERING_CONTROLLER__VISIBILITY_BUILDING_DLL") - - pluginlib_export_plugin_description_file( - controller_interface tricycle_steering_controller.xml) -diff --git a/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp b/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp -index 607a684df5..0ae5db0a26 100644 ---- a/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp -+++ b/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp -@@ -45,13 +45,13 @@ class TricycleSteeringController : public steering_controllers_library::Steering - public: - TricycleSteeringController(); - -- STEERING_CONTROLLERS__VISIBILITY_PUBLIC controller_interface::CallbackReturn configure_odometry() -+ TRICYCLE_STEERING_CONTROLLER__VISIBILITY_PUBLIC controller_interface::CallbackReturn configure_odometry() - override; - -- STEERING_CONTROLLERS__VISIBILITY_PUBLIC bool update_odometry( -+ TRICYCLE_STEERING_CONTROLLER__VISIBILITY_PUBLIC bool update_odometry( - const rclcpp::Duration & period) override; - -- STEERING_CONTROLLERS__VISIBILITY_PUBLIC void initialize_implementation_parameter_listener() -+ TRICYCLE_STEERING_CONTROLLER__VISIBILITY_PUBLIC void initialize_implementation_parameter_listener() - override; - - protected: diff --git a/patch/ros-humble-turtlebot3-node.win.patch b/patch/ros-humble-turtlebot3-node.win.patch new file mode 100644 index 000000000..206c3a804 --- /dev/null +++ b/patch/ros-humble-turtlebot3-node.win.patch @@ -0,0 +1,9 @@ +diff --git a/turtlebot3_node/CMakeLists.txt b/turtlebot3_node/CMakeLists.txt +index d81d8127..3c464b42 100644 +--- a/turtlebot3_node/CMakeLists.txt ++++ b/turtlebot3_node/CMakeLists.txt +@@ -14,3 +14,4 @@ endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + ################################################################################ + # Find ament packages and libraries for ament and system dependencies diff --git a/patch/ros-humble-udp-driver.win.patch b/patch/ros-humble-udp-driver.win.patch new file mode 100644 index 000000000..d484ffa51 --- /dev/null +++ b/patch/ros-humble-udp-driver.win.patch @@ -0,0 +1,12 @@ +diff --git a/udp_driver/CMakeLists.txt b/udp_driver/CMakeLists.txt +index a9b3c61..f78d262 100644 +--- a/udp_driver/CMakeLists.txt ++++ b/udp_driver/CMakeLists.txt +@@ -25,6 +25,7 @@ endif() + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) + endif() ++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + + ## dependencies + find_package(ament_cmake_auto REQUIRED) diff --git a/patch/ros-humble-webots-ros2-control.patch b/patch/ros-humble-webots-ros2-control.patch deleted file mode 100644 index e7a67e1e6..000000000 --- a/patch/ros-humble-webots-ros2-control.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/webots_ros2_control/src/Ros2Control.cpp b/webots_ros2_control/src/Ros2Control.cpp -index fca501e86..fa414b150 100644 ---- a/webots_ros2_control/src/Ros2Control.cpp -+++ b/webots_ros2_control/src/Ros2Control.cpp -@@ -78,7 +78,7 @@ namespace webots_ros2_control { - } - for (unsigned int i = 0; i < controlHardware.size(); i++) { - // Necessary hotfix for renamed variables present in "hardware_interface" package for versions above 3.5 (#590) --#if HARDWARE_INTERFACE_VERSION_MAJOR >= 3 && HARDWARE_INTERFACE_VERSION_MINOR >= 5 -+#if 0 - const std::string pluginName = controlHardware[i].hardware_plugin_name; - auto webotsSystem = - std::unique_ptr(mHardwareLoader->createUnmanagedInstance(pluginName)); -@@ -93,7 +93,7 @@ namespace webots_ros2_control { - // Configure and activate all components - // Necessary hotfix for deprecation of component activation present in "hardware_interface" package for versions above 3.15 - // (#793) --#if HARDWARE_INTERFACE_VERSION_MAJOR >= 3 && HARDWARE_INTERFACE_VERSION_MINOR >= 15 -+#if 1 - using lifecycle_msgs::msg::State; - rclcpp_lifecycle::State active_state(State::PRIMARY_STATE_ACTIVE, hardware_interface::lifecycle_state_names::ACTIVE); - resourceManager->set_component_state(controlHardware[i].name, active_state); diff --git a/patch/ros-humble-webots-ros2-driver.patch b/patch/ros-humble-webots-ros2-driver.patch index fb62e3a0d..b1c8feb64 100644 --- a/patch/ros-humble-webots-ros2-driver.patch +++ b/patch/ros-humble-webots-ros2-driver.patch @@ -1,14 +1,24 @@ -diff --git a/webots_ros2_driver/CMakeLists.txt b/webots_ros2_driver/CMakeLists.txt -index 60dfb0c45..36112f59c 100644 ---- a/webots_ros2_driver/CMakeLists.txt -+++ b/webots_ros2_driver/CMakeLists.txt -@@ -29,7 +29,7 @@ find_package(webots_ros2_msgs REQUIRED) - find_package(tinyxml2_vendor REQUIRED) - find_package(TinyXML2 REQUIRED) +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8856bcb90..bfefbd625 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,4 +1,4 @@ +-cmake_minimum_required(VERSION 3.10) ++cmake_minimum_required(VERSION 3.16) + project(webots_ros2_driver) + + set(CMAKE_CXX_STANDARD 17) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8856bcb90..0834db8ab 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -31,7 +31,7 @@ find_package(TinyXML2 REQUIRED) find_package(yaml-cpp REQUIRED) --find_package(PythonLibs 3.10 EXACT REQUIRED) -+find_package(PythonLibs REQUIRED) - add_custom_target(compile-lib-controller ALL - COMMAND ${CMAKE_COMMAND} -E env "WEBOTS_HOME=${CMAKE_CURRENT_SOURCE_DIR}/webots" make release -f Makefile > /dev/null 2>&1 - + if($ENV{ROS_DISTRO} MATCHES "humble") +- find_package(Python 3.10 EXACT REQUIRED COMPONENTS Development) ++ find_package(Python REQUIRED COMPONENTS Development) + elseif($ENV{ROS_DISTRO} MATCHES "jazzy") + find_package(Python 3.12 EXACT REQUIRED COMPONENTS Development) + elseif($ENV{ROS_DISTRO} MATCHES "rolling") diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 000000000..6dd217108 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,3039 @@ +version: 6 +environments: + beta: + channels: + - url: https://repo.prefix.dev/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://repo.prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/patchelf-0.17.2-h58526e2_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/rattler-build-0.33.2-hbcf9e9b_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.22.3-py311h9e33e62_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: https://files.pythonhosted.org/packages/91/f7/86d933ec31f00450f513ef110fa9c0e5da4c6e2c992933a35c8d8fe7d01f/catkin_pkg-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/32/d0fbc4383a6a213d315c39dda9107f81654d9941c43d6c687e61995ec388/rosdistro-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/e2/772f8cff8172a612823755035073b00753613c24af0ed6d3bae215021608/rospkg-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: git+https://github.com/RoboStack/vinca.git@8295f8f9b0fade22fff8683f491f203d145d639c + linux-aarch64: + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/patchelf-0.17.2-h884eca8_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/rattler-build-0.33.2-h33857bb_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/rpds-py-0.22.3-py311h7270cec_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://files.pythonhosted.org/packages/91/f7/86d933ec31f00450f513ef110fa9c0e5da4c6e2c992933a35c8d8fe7d01f/catkin_pkg-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/32/d0fbc4383a6a213d315c39dda9107f81654d9941c43d6c687e61995ec388/rosdistro-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/e2/772f8cff8172a612823755035073b00753613c24af0ed6d3bae215021608/rospkg-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl + - pypi: git+https://github.com/RoboStack/vinca.git@8295f8f9b0fade22fff8683f491f203d145d639c + osx-64: + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/ca-certificates-2024.12.14-h8857fd0_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libcxx-19.1.6-hf95d169_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/osx-64/liblzma-5.6.3-hd471939_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libsqlite-3.47.2-hdb6dae5_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/python-3.11.11-h9ccd52b_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py311h3336109_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/rattler-build-0.33.2-h113f492_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/rpds-py-0.22.3-py311h3b9c2be_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + - pypi: https://files.pythonhosted.org/packages/91/f7/86d933ec31f00450f513ef110fa9c0e5da4c6e2c992933a35c8d8fe7d01f/catkin_pkg-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/32/d0fbc4383a6a213d315c39dda9107f81654d9941c43d6c687e61995ec388/rosdistro-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/e2/772f8cff8172a612823755035073b00753613c24af0ed6d3bae215021608/rospkg-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz + - pypi: git+https://github.com/RoboStack/vinca.git@8295f8f9b0fade22fff8683f491f203d145d639c + osx-arm64: + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/rattler-build-0.33.2-h760a855_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/rpds-py-0.22.3-py311h3ff9189_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - pypi: https://files.pythonhosted.org/packages/91/f7/86d933ec31f00450f513ef110fa9c0e5da4c6e2c992933a35c8d8fe7d01f/catkin_pkg-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/32/d0fbc4383a6a213d315c39dda9107f81654d9941c43d6c687e61995ec388/rosdistro-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/e2/772f8cff8172a612823755035073b00753613c24af0ed6d3bae215021608/rospkg-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl + - pypi: git+https://github.com/RoboStack/vinca.git@8295f8f9b0fade22fff8683f491f203d145d639c + win-64: + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/win-64/git-2.47.1-h57928b3_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/m2-conda-epoch-20230914-0_x86_64.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/m2-msys2-runtime-3.4.9.1-hd8ed1ab_4.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/m2-patch-2.7.6.2-hd8ed1ab_4.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/python-3.11.11-h3f84c4b_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py311he736701_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/rattler-build-0.33.2-ha8cf89e_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.22.3-py311h533ab2d_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + - pypi: https://files.pythonhosted.org/packages/91/f7/86d933ec31f00450f513ef110fa9c0e5da4c6e2c992933a35c8d8fe7d01f/catkin_pkg-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz + - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/32/d0fbc4383a6a213d315c39dda9107f81654d9941c43d6c687e61995ec388/rosdistro-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/e2/772f8cff8172a612823755035073b00753613c24af0ed6d3bae215021608/rospkg-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl + - pypi: git+https://github.com/RoboStack/vinca.git@8295f8f9b0fade22fff8683f491f203d145d639c + default: + channels: + - url: https://repo.prefix.dev/conda-forge/ + packages: + linux-64: + - conda: https://repo.prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/patchelf-0.17.2-h58526e2_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/rattler-build-0.33.2-hbcf9e9b_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.22.3-py311h9e33e62_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/patchelf-0.17.2-h884eca8_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/rattler-build-0.33.2-h33857bb_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/rpds-py-0.22.3-py311h7270cec_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda + - conda: https://repo.prefix.dev/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-64: + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/ca-certificates-2024.12.14-h8857fd0_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libcxx-19.1.6-hf95d169_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/osx-64/liblzma-5.6.3-hd471939_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libsqlite-3.47.2-hdb6dae5_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/python-3.11.11-h9ccd52b_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py311h3336109_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/rattler-build-0.33.2-h113f492_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/rpds-py-0.22.3-py311h3b9c2be_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + osx-arm64: + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/rattler-build-0.33.2-h760a855_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/rpds-py-0.22.3-py311h3ff9189_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda + - conda: https://repo.prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + win-64: + - conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/win-64/git-2.47.1-h57928b3_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/m2-conda-epoch-20230914-0_x86_64.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/m2-msys2-runtime-3.4.9.1-hd8ed1ab_4.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/m2-patch-2.7.6.2-hd8ed1ab_4.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/python-3.11.11-h3f84c4b_1_cpython.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/python_abi-3.11-5_cp311.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py311he736701_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/rattler-build-0.33.2-ha8cf89e_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.22.3-py311h533ab2d_0.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda + - conda: https://repo.prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda + - conda: https://repo.prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda +packages: +- conda: https://repo.prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://repo.prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23621 + timestamp: 1650670423406 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://repo.prefix.dev/conda-forge/noarch/anaconda-client-1.12.3-pyhd8ed1ab_1.conda + sha256: 28218e24143d81597b0165977f230301cd8a4e3bb09ac2b5fac6052b71e84998 + md5: 92b52daa795f159861487b3be6a2a7ea + depends: + - conda-package-handling >=1.7.3 + - defusedxml >=0.7.1 + - nbformat >=4.4.0 + - platformdirs >=3.10.0,<5.0 + - python >=3.8 + - python-dateutil >=2.6.1 + - pytz >=2021.3 + - pyyaml >=3.12 + - requests >=2.20.0 + - requests-toolbelt >=0.9.1 + - setuptools >=58.0.4 + - six >=1.15.0 + - tqdm >=4.56.0 + - urllib3 >=1.26.4 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/anaconda-client?source=hash-mapping + size: 72548 + timestamp: 1719693590229 +- conda: https://repo.prefix.dev/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=hash-mapping + size: 56354 + timestamp: 1734348889193 +- conda: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda + sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 + md5: d21daab070d76490cb39a8f1d1729d79 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 350367 + timestamp: 1725267768486 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda + sha256: 8f299ccbda87e19f393bf9c01381415343650b06b9ef088dc2129ddcd48c05d4 + md5: c62b4c4d3eb1d13dfe16abbe648c28b7 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356967 + timestamp: 1725268124383 +- conda: https://repo.prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda + sha256: 004cefbd18f581636a8dcb1964fb73478f15d496769226ec896c1d4a0161b7d8 + md5: d75f06ee06001794aa83a05e885f1520 + depends: + - __osx >=10.13 + - libcxx >=17 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.1.0 h00291cd_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 363793 + timestamp: 1725267947069 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad + md5: c8793a23206344faa25f4e0b5d0e7908 + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339584 + timestamp: 1725268241628 +- conda: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda + sha256: aa3ac5dbf63db2f145235708973c626c2189ee4040d769fdf0076286fa45dc26 + md5: a0ea2839841a06740a1c110ba3317b42 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 h2466b09_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 322114 + timestamp: 1725268368720 +- conda: https://repo.prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://repo.prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 + md5: 7ed4301d437b59045be7e051a0308211 + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 134188 + timestamp: 1720974491916 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://repo.prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b + md5: 276e7ffe9ffe39688abc665ef0f45596 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 54927 + timestamp: 1720974860185 +- conda: https://repo.prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de + license: ISC + purls: [] + size: 157088 + timestamp: 1734208393264 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + license: ISC + purls: [] + size: 157096 + timestamp: 1734209301744 +- conda: https://repo.prefix.dev/conda-forge/osx-64/ca-certificates-2024.12.14-h8857fd0_0.conda + sha256: ddaafdcd1b8ace6ffeea22b6824ca9db8a64cf0a2652a11d7554ece54935fa06 + md5: b7b887091c99ed2e74845e75e9128410 + license: ISC + purls: [] + size: 156925 + timestamp: 1734208413176 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e + license: ISC + purls: [] + size: 157091 + timestamp: 1734208344343 +- conda: https://repo.prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda + sha256: 424d82db36cd26234bc4772426170efd60e888c2aed0099a257a95e131683a5e + md5: cb2eaeb88549ddb27af533eccf9a45c1 + license: ISC + purls: [] + size: 157422 + timestamp: 1734208404685 +- pypi: https://files.pythonhosted.org/packages/91/f7/86d933ec31f00450f513ef110fa9c0e5da4c6e2c992933a35c8d8fe7d01f/catkin_pkg-1.0.0-py3-none-any.whl + name: catkin-pkg + version: 1.0.0 + sha256: 10a6589e9edf3cd5bd18e35e094d20b516e6351bcf0da891c28a0ff526fdb7cc + requires_dist: + - docutils + - python-dateutil + - pyparsing + - setuptools + - flake8 ; extra == 'test' + - flake8-blind-except ; extra == 'test' + - flake8-builtins ; extra == 'test' + - flake8-class-newline ; extra == 'test' + - flake8-comprehensions ; extra == 'test' + - flake8-deprecated ; extra == 'test' + - flake8-docstrings ; extra == 'test' + - flake8-import-order ; extra == 'test' + - flake8-quotes ; extra == 'test' + - pytest ; extra == 'test' + requires_python: '>=3.6' +- conda: https://repo.prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=hash-mapping + size: 161642 + timestamp: 1734380604767 +- conda: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda + sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 + md5: 55553ecd5328336368db611f350b7039 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 302115 + timestamp: 1725560701719 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda + sha256: 3d220020c9782ebd4f23cd0a6148b419e4397590ee414e6e69b9be810c57d2ca + md5: 616d65d1eea809af7e2b5f7ea36350fc + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 319122 + timestamp: 1725562148568 +- conda: https://repo.prefix.dev/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda + sha256: 012ee7b1ed4f9b0490d6e90c72decf148d7575173c7eaf851cd87fd434d2cacc + md5: a4b0f531064fa3dd5e3afbb782ea2cd5 + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 288762 + timestamp: 1725560945833 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda + sha256: 253605b305cc4548b8f97eb7c2e146697e0c7672b099c4862ec5ca7e8e995307 + md5: a42272c5dbb6ffbc1a5af70f24c7b448 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 288211 + timestamp: 1725560745212 +- conda: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda + sha256: 9689fbd8a31fdf273f826601e90146006f6631619767a67955048c7ad7798a1d + md5: e1c69be23bd05471a6c623e91680ad59 + depends: + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 297627 + timestamp: 1725561079708 +- conda: https://repo.prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://repo.prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-handling-2.4.0-pyha770c72_1.conda + sha256: d150295cb2dab74486a81ae518f4556d2c0a93cf22ae5c8fe7ed163a8c4fc176 + md5: 28b86d110bda4ef40e680d1afa9ddb1d + depends: + - conda-package-streaming >=0.9.0 + - python >=3.9 + - zstandard >=0.15 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/conda-package-handling?source=hash-mapping + size: 257894 + timestamp: 1733855878648 +- conda: https://repo.prefix.dev/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda + sha256: 685b06951e563514a9b158e82d3d44faf102f0770af42e4d08347a6eec3d48ea + md5: bc9533d8616a97551ed144789bf9c1cd + depends: + - python >=3.7 + - zstandard >=0.15 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/conda-package-streaming?source=hash-mapping + size: 20582 + timestamp: 1729004160440 +- conda: https://repo.prefix.dev/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + noarch: generic + sha256: b9bb4486ba7b81d7264e92f346c9fa2d4a6c9678c28b33fb5d1652ecc7f82e26 + md5: 6aab9c45010dc5ed92215f89cdafa201 + depends: + - python 3.11.11.* + - python_abi * *_cp311 + license: Python-2.0 + purls: [] + size: 46068 + timestamp: 1733407866862 +- conda: https://repo.prefix.dev/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be + md5: 961b3a227b437d82ad7054484cfa71b2 + depends: + - python >=3.6 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/defusedxml?source=hash-mapping + size: 24062 + timestamp: 1615232388757 +- pypi: https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl + name: distro + version: 1.9.0 + sha256: 7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2 + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl + name: docutils + version: 0.21.2 + sha256: dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz + name: empy + version: 3.3.4 + sha256: 73ac49785b601479df4ea18a7c79bc1304a8a7c34c02b9472cf1206ae88f01b3 +- conda: https://repo.prefix.dev/conda-forge/win-64/git-2.47.1-h57928b3_0.conda + sha256: e140c2348b2a967bb7259c22420201e9dcac5b75aca3881e30f2a3f6c88e44d0 + md5: 84cd6e6a2d60974df8c954eafdf72f2b + license: GPL-2.0-or-later and LGPL-2.1-or-later + purls: [] + size: 122064793 + timestamp: 1732612079527 +- conda: https://repo.prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 52000 + timestamp: 1733298867359 +- conda: https://repo.prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 29412 + timestamp: 1733299296857 +- conda: https://repo.prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17239 + timestamp: 1733298862681 +- conda: https://repo.prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://repo.prefix.dev/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + sha256: 461199e429a3db01f0a673f8beaac5e0be75b88895952fb9183f2ab01c5c3c24 + md5: 15798fa69312d433af690c8c42b3fb36 + depends: + - python >=3.9 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.4.5,<6.4.6.0a0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-resources?source=hash-mapping + size: 32701 + timestamp: 1733231441973 +- conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 + depends: + - attrs >=22.2.0 + - importlib_resources >=1.4.0 + - jsonschema-specifications >=2023.03.6 + - pkgutil-resolve-name >=1.3.10 + - python >=3.9 + - referencing >=0.28.4 + - rpds-py >=0.7.1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema?source=hash-mapping + size: 74256 + timestamp: 1733472818764 +- conda: https://repo.prefix.dev/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 + depends: + - python >=3.9 + - referencing >=0.31.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema-specifications?source=hash-mapping + size: 16170 + timestamp: 1733493624968 +- conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://repo.prefix.dev/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + sha256: 7c903b2d62414c3e8da1f78db21f45b98de387aae195f8ca959794113ba4b3fd + md5: 46d87d1c0ea5da0aae36f77fa406e20d + depends: + - __win + - cpython + - platformdirs >=2.5 + - python >=3.8 + - pywin32 >=300 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 58269 + timestamp: 1727164026641 +- conda: https://repo.prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 669211 + timestamp: 1729655358674 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 698245 + timestamp: 1729655345825 +- conda: https://repo.prefix.dev/conda-forge/osx-64/libcxx-19.1.6-hf95d169_1.conda + sha256: c40661648c34c08e21b69e0eec021ccaf090ffff070d2a9cbcb1519e1b310568 + md5: 1bad6c181a0799298aad42fc5a7e98b7 + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 527370 + timestamp: 1734494305140 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec + md5: ce5252d8db110cdb4ae4173d0a63c7c5 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 520992 + timestamp: 1734494699681 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://repo.prefix.dev/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 + md5: 20307f4049a735a78a29073be1be2626 + depends: + - __osx >=10.13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 70758 + timestamp: 1730967204736 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://repo.prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 + md5: eb383771c680aa792feb529eaf9df82f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 139068 + timestamp: 1730967442102 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 58292 + timestamp: 1636488182923 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 59450 + timestamp: 1636488255090 +- conda: https://repo.prefix.dev/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f + md5: ccb34fb14960ad8b125962d3d79b31a9 + license: MIT + license_family: MIT + purls: [] + size: 51348 + timestamp: 1636488394370 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://repo.prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 + md5: 2c96d1b6915b408893f9472569dee135 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + purls: [] + size: 42063 + timestamp: 1636489106777 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 848745 + timestamp: 1729027721139 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535243 + timestamp: 1729089435134 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 54142 + timestamp: 1729027726517 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 54104 + timestamp: 1729089444587 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 460992 + timestamp: 1729027639220 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 463521 + timestamp: 1729089357313 +- conda: https://repo.prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + purls: [] + size: 111132 + timestamp: 1733407410083 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + license: 0BSD + purls: [] + size: 124138 + timestamp: 1733409137214 +- conda: https://repo.prefix.dev/conda-forge/osx-64/liblzma-5.6.3-hd471939_1.conda + sha256: c70639ff3cb034a8e31cb081c907879b6a639bb12b0e090069a68eb69125b10e + md5: f9e9205fed9c664421c1c09f0b90ce6d + depends: + - __osx >=10.13 + license: 0BSD + purls: [] + size: 103745 + timestamp: 1733407504892 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + license: 0BSD + purls: [] + size: 99129 + timestamp: 1733407496073 +- conda: https://repo.prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda + sha256: 24d04bd55adfa44c421c99ce169df38cb1ad2bba5f43151bc847fc802496a1fa + md5: 015b9c0bd1eef60729ab577a38aaf0b5 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: 0BSD + purls: [] + size: 104332 + timestamp: 1733407872569 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 873551 + timestamp: 1733761824646 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 1042182 + timestamp: 1733761913736 +- conda: https://repo.prefix.dev/conda-forge/osx-64/libsqlite-3.47.2-hdb6dae5_0.conda + sha256: 4d5e188d921f93c97ce172fc8c4341e8171670ec98d76f9961f65f6306fcda77 + md5: 44d9799fda97eb34f6d88ac1e3eb0ea6 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 923167 + timestamp: 1733761860127 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 850553 + timestamp: 1733762057506 +- conda: https://repo.prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda + sha256: ecfc0182c3b2e63c870581be1fa0e4dbdfec70d2011cb4f5bde416ece26c41df + md5: ff00095330e0d35a16bd3bdbd1a2d3e7 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + purls: [] + size: 891292 + timestamp: 1733762116902 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3893695 + timestamp: 1729027746910 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3816794 + timestamp: 1729089463404 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 54105 + timestamp: 1729027780628 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 + depends: + - libstdcxx 14.2.0 h3f4de04_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 54133 + timestamp: 1729089498541 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://repo.prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://repo.prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + sha256: 8412f96504fc5993a63edf1e211d042a1fd5b1d51dedec755d2058948fcced09 + md5: 003a54a4e32b02f7355b50a837e699da + depends: + - __osx >=10.13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 57133 + timestamp: 1727963183990 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://repo.prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 + md5: 41fbfac52c601159df6c01f875de31b9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 55476 + timestamp: 1727963768015 +- conda: https://repo.prefix.dev/conda-forge/win-64/m2-conda-epoch-20230914-0_x86_64.conda + build_number: 0 + sha256: 5514efb349d06a8dfe7966b64a3076efad461934e35da9e84c0693a36097fe77 + md5: e2a0da44f380c05e8d1f897ed3ec3ce0 + constrains: + - msys2-conda-epoch <0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6961 + timestamp: 1696161055254 +- conda: https://repo.prefix.dev/conda-forge/noarch/m2-msys2-runtime-3.4.9.1-hd8ed1ab_4.conda + sha256: e505bf056171089c761b600d21dee062ad1c962b892ca8a7bc852211e3fd3273 + md5: 77d17c947f9014b2b97a267c5e95cbf2 + depends: + - m2-conda-epoch 20230914 *_x86_64 + - m2-conda-epoch 20230914.* + license: GPL + purls: [] + size: 1918370 + timestamp: 1719980096293 +- conda: https://repo.prefix.dev/conda-forge/noarch/m2-patch-2.7.6.2-hd8ed1ab_4.conda + sha256: c53d091882a43cfc49f74be7c3d74d41856eac9a2cd62424d31c78b3ae5d313f + md5: ace92cb3c819c9baa7f90a9e58435ba8 + depends: + - m2-conda-epoch 20230914 *_x86_64 + - m2-conda-epoch 20230914.* + - m2-msys2-runtime + license: GPL + purls: [] + size: 132160 + timestamp: 1719980487208 +- pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl + name: markdown-it-py + version: 3.0.0 + sha256: 355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 + requires_dist: + - mdurl~=0.1 + - psutil ; extra == 'benchmarking' + - pytest ; extra == 'benchmarking' + - pytest-benchmark ; extra == 'benchmarking' + - pre-commit~=3.0 ; extra == 'code-style' + - commonmark~=0.9 ; extra == 'compare' + - markdown~=3.4 ; extra == 'compare' + - mistletoe~=1.0 ; extra == 'compare' + - mistune~=2.0 ; extra == 'compare' + - panflute~=2.3 ; extra == 'compare' + - linkify-it-py>=1,<3 ; extra == 'linkify' + - mdit-py-plugins ; extra == 'plugins' + - gprof2dot ; extra == 'profiling' + - mdit-py-plugins ; extra == 'rtd' + - myst-parser ; extra == 'rtd' + - pyyaml ; extra == 'rtd' + - sphinx ; extra == 'rtd' + - sphinx-copybutton ; extra == 'rtd' + - sphinx-design ; extra == 'rtd' + - sphinx-book-theme ; extra == 'rtd' + - jupyter-sphinx ; extra == 'rtd' + - coverage ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-regressions ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + name: mdurl + version: 0.1.2 + sha256: 84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 + requires_python: '>=3.7' +- conda: https://repo.prefix.dev/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 + md5: bbe1963f1e47f594070ffe87cdf612ea + depends: + - jsonschema >=2.6 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-fastjsonschema >=2.15 + - traitlets >=5.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nbformat?source=hash-mapping + size: 100945 + timestamp: 1733402844974 +- conda: https://repo.prefix.dev/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 889086 + timestamp: 1724658547447 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 + md5: 91d49c85cacd92caa40cf375ef72a25d + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 924472 + timestamp: 1724658573518 +- conda: https://repo.prefix.dev/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda + sha256: b0b3180039ef19502525a2abd5833c00f9624af830fd391f851934d57bffb9af + md5: e102bbf8a6ceeaf429deab8032fc8977 + depends: + - __osx >=10.13 + license: X11 AND BSD-3-Clause + purls: [] + size: 822066 + timestamp: 1724658603042 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + purls: [] + size: 802321 + timestamp: 1724658775723 +- pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + name: networkx + version: 3.4.2 + sha256: df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f + requires_dist: + - numpy>=1.24 ; extra == 'default' + - scipy>=1.10,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.7 ; extra == 'default' + - pandas>=2.0 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7.3 ; extra == 'doc' + - pydata-sphinx-theme>=0.15 ; extra == 'doc' + - sphinx-gallery>=0.16 ; extra == 'doc' + - numpydoc>=1.8.0 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.1 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - osmnx>=1.9 ; extra == 'example' + - momepy>=0.7.2 ; extra == 'example' + - contextily>=1.6 ; extra == 'example' + - seaborn>=0.13 ; extra == 'example' + - cairocffi>=1.7 ; extra == 'example' + - igraph>=0.11 ; extra == 'example' + - scikit-learn>=1.5 ; extra == 'example' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.14 ; extra == 'extra' + - pydot>=3.0.1 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://repo.prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 + md5: 23cc74f77eb99315c0360ec3533147a9 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2947466 + timestamp: 1731377666602 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 + md5: b2f202b5bddafac824eb610b65dde98f + depends: + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3474825 + timestamp: 1731379200886 +- conda: https://repo.prefix.dev/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + sha256: ba7e068ed469d6625e32ae60e6ad893e655b6695280dadf7e065ed0b6f3b885c + md5: ec99d2ce0b3033a75cbad01bbc7c5b71 + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2590683 + timestamp: 1731378034404 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 + md5: df307bbc703324722df0293c9ca2e418 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2935176 + timestamp: 1731377561525 +- conda: https://repo.prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + sha256: e03045a0837e01ff5c75e9273a572553e7522290799807f918c917a9826a6484 + md5: d0d805d9b5524a14efb51b3bff965e83 + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 8491156 + timestamp: 1731379715927 +- conda: https://repo.prefix.dev/conda-forge/linux-64/patchelf-0.17.2-h58526e2_0.conda + sha256: eb355ac225be2f698e19dba4dcab7cb0748225677a9799e9cc8e4cadc3cb738f + md5: ba76a6a448819560b5f8b08a9c74f415 + depends: + - libgcc-ng >=7.5.0 + - libstdcxx-ng >=7.5.0 + license: GPL-3.0-or-later + license_family: GPL + purls: [] + size: 94048 + timestamp: 1673473024463 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/patchelf-0.17.2-h884eca8_0.conda + sha256: 8b98158f36a7a92013a1982ab7a60947151350ac5c513c1d1575825d0fa52518 + md5: bbd8dee69c4ac2e2d07bca100b8fcc31 + depends: + - libgcc-ng >=7.5.0 + - libstdcxx-ng >=7.5.0 + license: GPL-3.0-or-later + license_family: GPL + purls: [] + size: 101306 + timestamp: 1673473812166 +- conda: https://repo.prefix.dev/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 + depends: + - python >=3.9 + license: MIT AND PSF-2.0 + purls: + - pkg:pypi/pkgutil-resolve-name?source=hash-mapping + size: 10693 + timestamp: 1733344619659 +- conda: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://repo.prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + name: pygments + version: 2.18.0 + sha256: b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a + requires_dist: + - colorama>=0.4.6 ; extra == 'windows-terminal' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl + name: pyparsing + version: 3.2.1 + sha256: 506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1 + requires_dist: + - railroad-diagrams ; extra == 'diagrams' + - jinja2 ; extra == 'diagrams' + requires_python: '>=3.9' +- conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca + md5: e2fd202833c4a981ce8a65974fe4abd1 + depends: + - __win + - python >=3.9 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21784 + timestamp: 1733217448189 +- conda: https://repo.prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://repo.prefix.dev/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 30624804 + timestamp: 1733409665928 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + build_number: 1 + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 15234582 + timestamp: 1733407838276 +- conda: https://repo.prefix.dev/conda-forge/osx-64/python-3.11.11-h9ccd52b_1_cpython.conda + build_number: 1 + sha256: 4c53c4c48a0f42577ae405553ab899b3ef5ee23b2a1bf4fbbc694c46f884f6fc + md5: 9b20fb7c571405d29f33ae2fc5990d8d + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 14221518 + timestamp: 1733409959819 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + build_number: 1 + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 14647146 + timestamp: 1733409012105 +- conda: https://repo.prefix.dev/conda-forge/win-64/python-3.11.11-h3f84c4b_1_cpython.conda + build_number: 1 + sha256: 5be6181ab6d655ad761490b7808584c5e78e5d7139846685b1850a8b7ef6c5df + md5: 4d490a426481298bdd89a502253a7fd4 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 18161635 + timestamp: 1733408064601 +- conda: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://repo.prefix.dev/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 + md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fastjsonschema?source=hash-mapping + size: 226259 + timestamp: 1733236073335 +- conda: https://repo.prefix.dev/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de + md5: 139a8d40c8a2f430df31048949e450de + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6211 + timestamp: 1723823324668 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 76974c2732919ace87b5f3a634eac93fed6900d557fcae0575787ec0a33c370e + md5: c2078141f21872cc34d9305123ba08f2 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6300 + timestamp: 1723823316891 +- conda: https://repo.prefix.dev/conda-forge/osx-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 9b092850a268aca99600b724bae849f51209ecd5628e609b4699debc59ff1945 + md5: e6d62858c06df0be0e6255c753d74787 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6303 + timestamp: 1723823062672 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a + md5: 3b855e3734344134cb56c410f729c340 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6308 + timestamp: 1723823096865 +- conda: https://repo.prefix.dev/conda-forge/win-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 9b210e5807dd9c9ed71ff192a95f1872da597ddd10e7cefec93a922fe22e598a + md5: 895b873644c11ccc0ab7dba2d8513ae6 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6707 + timestamp: 1723823225752 +- conda: https://repo.prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + sha256: 0a7c706b2eb13f7da5692d9ddf1567209964875710b471de6f2743b33d1ba960 + md5: f26ec986456c30f6dff154b670ae140f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 185890 + timestamp: 1733215766006 +- conda: https://repo.prefix.dev/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda + sha256: 78a4ede098bbc122a3dff4e0e27255e30b236101818e8f499779c89670c58cd6 + md5: 1bc10dbe3b8d03071070c962a2bdf65f + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/pywin32?source=hash-mapping + size: 6023110 + timestamp: 1728636767562 +- conda: https://repo.prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda + sha256: e721e5ff389a7b2135917c04b27391be3d3382e261bb60a369b1620655365c3d + md5: abeb54d40f439b86f75ea57045ab8496 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 212644 + timestamp: 1725456264282 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda + sha256: c0f373c2944cf18da2cec19bae76284ef54cef44b3925c249d53821e4021d59a + md5: ad89d09994540880f297259742a8428a + depends: + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 205817 + timestamp: 1725456351893 +- conda: https://repo.prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py311h3336109_1.conda + sha256: d8f4513c53a7c0be9f1cdb9d1af31ac85cf8a6f0e4194715e36e915c03104662 + md5: b0132bec7165a53403dcc393ff761a9e + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 193941 + timestamp: 1725456465818 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda + sha256: 9ae182eef4e96a7c2f46cc9add19496276612663e17429500432631dce31a831 + md5: d32590e7bd388f18b036c6fc402a0cb1 + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192321 + timestamp: 1725456528007 +- conda: https://repo.prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py311he736701_1.conda + sha256: 86608f1b4f6b1819a74b6b1344c34304745fd7e84bfc9900269f57cf28178d31 + md5: d0c5f3c595039890be0c9af47d23b9ba + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 187901 + timestamp: 1725456808581 +- conda: https://repo.prefix.dev/conda-forge/linux-64/rattler-build-0.33.2-hbcf9e9b_0.conda + sha256: 54cbd84b13fa9eedee174e09ada326649f72e0b9b672ecad2734223f638d78c9 + md5: c8d94ca9d2667a2c37ab3b1cd3ec0fe4 + depends: + - __glibc >=2.17,<3.0.a0 + - openssl >=3.4.0,<4.0a0 + - patchelf + constrains: + - __glibc >=2.17 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 11231188 + timestamp: 1735901851719 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/rattler-build-0.33.2-h33857bb_0.conda + sha256: 1227a955e2b4a65aec6317679a8b40fff943a5b4dc9e63549cd1e45caa5c2eb9 + md5: 764bbeb1c850874c3032e164d1a4e391 + depends: + - openssl >=3.4.0,<4.0a0 + - patchelf + constrains: + - __glibc >=2.17 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 11367972 + timestamp: 1735901845008 +- conda: https://repo.prefix.dev/conda-forge/osx-64/rattler-build-0.33.2-h113f492_0.conda + sha256: a2e4b65a6fc47be6138e966a922081d33e95e2834f7b3d866920b70b4c0d3540 + md5: 49a22eacddef3f2005b431b82658b4ff + depends: + - __osx >=10.13 + constrains: + - __osx >=10.13 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 9569464 + timestamp: 1735902241579 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/rattler-build-0.33.2-h760a855_0.conda + sha256: c09be9b9cfd0d31fddba61762c8359373caf72c9cdb7062e009752516feccaa6 + md5: 848191c939c2fd32d595fc92d78faad8 + depends: + - __osx >=11.0 + constrains: + - __osx >=11.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 9166844 + timestamp: 1735902063695 +- conda: https://repo.prefix.dev/conda-forge/win-64/rattler-build-0.33.2-ha8cf89e_0.conda + sha256: e03b27468531a09d4bb19675ee787246189ab201122b0a16a9e12befdf375ffb + md5: a7e8ae1b27ae6301fbfe8a67850beb1e + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34433 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8912823 + timestamp: 1735902555109 +- conda: https://repo.prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 281456 + timestamp: 1679532220005 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 294092 + timestamp: 1679532238805 +- conda: https://repo.prefix.dev/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 + md5: f17f77f2acf4d344734bda76829ce14e + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 255870 + timestamp: 1679532707590 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 250351 + timestamp: 1679532511311 +- conda: https://repo.prefix.dev/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + sha256: f972eecb4dc8e06257af37642f92b0f2df04a7fe4c950f2e1045505e5e93985f + md5: 8c9083612c1bfe6878715ed5732605f8 + depends: + - attrs >=22.2.0 + - python >=3.9 + - rpds-py >=0.7.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/referencing?source=hash-mapping + size: 42201 + timestamp: 1733366868091 +- conda: https://repo.prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://repo.prefix.dev/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + sha256: c0b815e72bb3f08b67d60d5e02251bbb0164905b5f72942ff5b6d2a339640630 + md5: 66de8645e324fda0ea6ef28c2f99a2ab + depends: + - python >=3.9 + - requests >=2.0.1,<3.0.0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests-toolbelt?source=hash-mapping + size: 44285 + timestamp: 1733734886897 +- pypi: https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl + name: rich + version: 13.9.4 + sha256: 6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90 + requires_dist: + - ipywidgets>=7.5.1,<9 ; extra == 'jupyter' + - markdown-it-py>=2.2.0 + - pygments>=2.13.0,<3.0.0 + - typing-extensions>=4.0.0,<5.0 ; python_full_version < '3.11' + requires_python: '>=3.8.0' +- pypi: https://files.pythonhosted.org/packages/22/32/d0fbc4383a6a213d315c39dda9107f81654d9941c43d6c687e61995ec388/rosdistro-1.0.1-py3-none-any.whl + name: rosdistro + version: 1.0.1 + sha256: 587da10e1bc9f1ff8dc026ac9361ac1a1d2a79a434dfcb73175e45110880651c + requires_dist: + - pyyaml + - setuptools + - catkin-pkg + - rospkg + - pytest ; extra == 'test' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/1c/e2/772f8cff8172a612823755035073b00753613c24af0ed6d3bae215021608/rospkg-1.5.1-py3-none-any.whl + name: rospkg + version: 1.5.1 + sha256: 1167a8f908d9c4379954732a605810e166ddcc18fcf47e6555395e1d6d972a7c + requires_dist: + - catkin-pkg + - pyyaml + - distro>=1.4.0 ; python_full_version >= '3.8' + - pytest ; extra == 'test' + - mock ; python_full_version < '3.3' and extra == 'test' +- conda: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.22.3-py311h9e33e62_0.conda + sha256: 0908ac4acb1a10fe63046e947a96c77cea0d392619ef965944da86c3574b68ec + md5: b1f5799ae0cc22198928f09879da01f5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 351650 + timestamp: 1733366766805 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/rpds-py-0.22.3-py311h7270cec_0.conda + sha256: ea5c5dd50ec3c22fb1d37af67d1a1a92b1db258be48d07e5201afa85229b6f76 + md5: e2235bd1223f3eaf22cc50e1578e26f4 + depends: + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 345860 + timestamp: 1733369036541 +- conda: https://repo.prefix.dev/conda-forge/osx-64/rpds-py-0.22.3-py311h3b9c2be_0.conda + sha256: 435d6ddb0a1625b91e83573b17fcd543ebedffc81d912cacb53d48a8cb59a861 + md5: 19f12b2368042654dbc26036f036483b + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 329432 + timestamp: 1733367026508 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/rpds-py-0.22.3-py311h3ff9189_0.conda + sha256: 8b1e693f3bb84f1152858bba9e15a6717cad02f70b45df3538078c22e67f5a06 + md5: 16669f8098b2f4a8560727efb9e65afd + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 324661 + timestamp: 1733366968758 +- conda: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.22.3-py311h533ab2d_0.conda + sha256: c74b3a4430706dfb63176429cc31410dcb86a15e1d35463aae04733c4700b8d8 + md5: 40c964a32833f3ad13ba4183cd180577 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 222035 + timestamp: 1733367148577 +- pypi: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + name: ruamel-yaml + version: 0.17.40 + sha256: b16b6c3816dff0a93dca12acf5e70afd089fa5acb80604afd1ffa8b465b7722c + requires_dist: + - ruamel-yaml-clib>=0.2.7 ; python_full_version < '3.13' and platform_python_implementation == 'CPython' + - ryd ; extra == 'docs' + - mercurial>5.7 ; extra == 'docs' + - ruamel-yaml-jinja2>=0.2 ; extra == 'jinja2' + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz + name: ruamel-yaml-clib + version: 0.2.12 + sha256: 6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl + name: ruamel-yaml-clib + version: 0.2.12 + sha256: d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: ruamel-yaml-clib + version: 0.2.12 + sha256: bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl + name: ruamel-yaml-clib + version: 0.2.12 + sha256: a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl + name: ruamel-yaml-clib + version: 0.2.12 + sha256: 4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6 + requires_python: '>=3.9' +- conda: https://repo.prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/setuptools?source=hash-mapping + size: 774252 + timestamp: 1732632769210 +- conda: https://repo.prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://repo.prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://repo.prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3270220 + timestamp: 1699202389792 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://repo.prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 + md5: fc048363eb8f03cd1737600a5d08aafe + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: TCL + license_family: BSD + purls: [] + size: 3503410 + timestamp: 1699202577803 +- conda: https://repo.prefix.dev/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://repo.prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://repo.prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + md5: 8ac3367aafb1cc0a068483c580af8015 + license: LicenseRef-Public-Domain + purls: [] + size: 122354 + timestamp: 1728047496079 +- conda: https://repo.prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 + md5: 6797b005cd0f439c4c5c9ac565783700 + constrains: + - vs2015_runtime >=14.29.30037 + license: LicenseRef-MicrosoftWindowsSDK10 + purls: [] + size: 559710 + timestamp: 1728377334097 +- conda: https://repo.prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://repo.prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + sha256: 986ddaf8feec2904eac9535a7ddb7acda1a1dfb9482088fdb8129f1595181663 + md5: 7c10ec3158d1eb4ddff7007c9101adb0 + depends: + - vc14_runtime >=14.38.33135 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17479 + timestamp: 1731710827215 +- conda: https://repo.prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda + sha256: c483b090c4251a260aba6ff3e83a307bcfb5fb24ad7ced872ab5d02971bd3a49 + md5: 32b37d0cfa80da34548501cdc913a832 + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.42.34433.* *_23 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + purls: [] + size: 754247 + timestamp: 1731710681163 +- pypi: git+https://github.com/RoboStack/vinca.git@8295f8f9b0fade22fff8683f491f203d145d639c + name: vinca + version: 0.0.2 + requires_dist: + - catkin-pkg>=0.4.16 + - ruamel-yaml>=0.16.6,<0.18.0 + - rosdistro>=0.8.0 + - empy>=3.3.4,<4.0.0 + - requests>=2.24.0 + - networkx>=2.5 + - rich>=10 + requires_python: '>=3.6' +- conda: https://repo.prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda + sha256: 568ce8151eaae256f1cef752fc78651ad7a86ff05153cc7a4740b52ae6536118 + md5: 5c176975ca2b8366abad3c97b3cd1e83 + depends: + - vc14_runtime >=14.42.34433 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17572 + timestamp: 1731710685291 +- conda: https://repo.prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f + md5: 46e441ba871f524e2b067929da3051c2 + depends: + - __win + - python >=3.9 + license: LicenseRef-Public-Domain + purls: + - pkg:pypi/win-inet-pton?source=hash-mapping + size: 9555 + timestamp: 1733130678956 +- conda: https://repo.prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://repo.prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148 + md5: d7e08fcf8259d742156188e8762b4d20 + license: MIT + license_family: MIT + purls: [] + size: 84237 + timestamp: 1641347062780 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://repo.prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + sha256: 4e2246383003acbad9682c7c63178e2e715ad0eb84f03a8df1fbfba455dfedc5 + md5: adbfb9f45d1004a26763652246a33764 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + purls: [] + size: 63274 + timestamp: 1641347623319 +- conda: https://repo.prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda + sha256: a5cf0eef1ffce0d710eb3dffcb07d9d5922d4f7a141abc96f6476b98600f718f + md5: aec590674ba365e50ae83aa2d6e1efae + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 417923 + timestamp: 1725305669690 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda + sha256: 44c4c8e718f7f50c985d9b3de23760fb01987e6307301eef0bcfc26862094690 + md5: 7a022310d8759b7d251717b09242ee13 + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 391826 + timestamp: 1725305804278 +- conda: https://repo.prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda + sha256: d9bf977b620750049eb60fffca299a701342a2df59bcc2586a79b2f7c5783fa1 + md5: 4fc42d6f85a21b09ee6477f456554df3 + depends: + - __osx >=10.13 + - cffi >=1.11 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 411350 + timestamp: 1725305723486 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda + sha256: d2f2f1a408e2353fc61d2bf064313270be2260ee212fe827dcf3cfd3754f1354 + md5: 29d320d6450b2948740a9be3761b2e9d + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 332271 + timestamp: 1725305847224 +- conda: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda + sha256: a93584e6167c3598854a47f3bf8276fa646a3bb4d12fcfc23a54e37d5879f35c + md5: 7d4c123cbb5e6293dd4dd2f8d30f0de4 + depends: + - cffi >=1.11 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 321357 + timestamp: 1725305930669 +- conda: https://repo.prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://repo.prefix.dev/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://repo.prefix.dev/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 + md5: 4cb2cd56f039b129bb0e491c1164167e + depends: + - __osx >=10.9 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 498900 + timestamp: 1714723303098 +- conda: https://repo.prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 +- conda: https://repo.prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 + md5: 9a17230f95733c04dc40a2b1e5491d74 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 349143 + timestamp: 1714723445995 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 000000000..a8a196d82 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,58 @@ +[project] +name = "ros-humble" +# Just a convention, this is the same as the mutex package +version = "0.6.0" +description = "RoboStack repo to package ros-humble packages as conda packages" +authors = ["Tobias Fischer ", "Wolf Vollprecht ", "Silvio Traversaro "] +channels = ["https://repo.prefix.dev/conda-forge"] +platforms = ["osx-arm64", "linux-64", "osx-64", "linux-aarch64", "win-64"] + +[system-requirements] +# 2.17 is the glibc version used in centos 7 +libc = { family="glibc", version="2.17" } + +[tasks] +upload = "anaconda -t $ANACONDA_API_TOKEN upload" + +[dependencies] +python = ">=3.11.0,<3.12" +rattler-build = ">=0.33.2" +anaconda-client = ">=1.12" + +[target.win-64.dependencies] +# patch is required by rattler-build +m2-patch = "*" +# git is required by rattler-build +git = "*" + +[feature.beta.pypi-dependencies] +# This is tipically the latest commit on rattler-build-humble branch +vinca = { git ="https://github.com/RoboStack/vinca.git", rev = "8295f8f9b0fade22fff8683f491f203d145d639c" } +# Uncomment this line to work with a local vinca for faster iteration, but remember to comment it back +# (and regenerate the pixi.lock) once you push the modified commit to the repo +#vinca = { path = "../vinca", editable = true } + +[feature.beta.tasks] +generate-recipes = { cmd = "vinca -m", depends_on = ["rename-file"] } +remove-file = { cmd = "rm vinca.yaml; rm -rf recipes" } +build_additional_recipes = { cmd = "rattler-build build --recipe-dir ./additional_recipes -m ./conda_build_config.yaml --skip-existing" } +build = { cmd = "rattler-build build --recipe-dir ./recipes -m ./conda_build_config.yaml --skip-existing", depends_on = ["build_additional_recipes", "generate-recipes"] } +build_one_package = { cmd = "cp ./patch/$PACKAGE.*patch ./recipes/$PACKAGE/patch/; rattler-build build --recipe ./recipes/$PACKAGE/recipe.yaml -m ./conda_build_config.yaml", env = { PACKAGE = "ros-humble-ros-workspace" } } + +[environments] +beta = ["beta"] + +[target.linux-64.tasks] +rename-file = { cmd = "ln -s vinca_linux_64.yaml vinca.yaml", depends_on = ["remove-file"] } + +[target.osx-64.tasks] +rename-file = { cmd = "ln -s vinca_osx.yaml vinca.yaml", depends_on = ["remove-file"] } + +[target.osx-arm64.tasks] +rename-file = { cmd = "ln -s vinca_osx_arm64.yaml vinca.yaml", depends_on = ["remove-file"] } + +[target.linux-aarch64.tasks] +rename-file = { cmd = "ln -s vinca_linux_aarch64.yaml vinca.yaml", depends_on = ["remove-file"] } + +[target.win-64.tasks] +rename-file = { cmd = "cp vinca_win.yaml vinca.yaml", depends_on = ["remove-file"] } diff --git a/robostack.yaml b/robostack.yaml index bd43367c8..717abd15d 100644 --- a/robostack.yaml +++ b/robostack.yaml @@ -87,8 +87,19 @@ festival: linux: [festival, festvox-kallpc16k] osx: [] win64: [] +# This is not available on Windows, and it is only +# required by libcurl_vendor (see https://index.ros.org/d/file/) +# but it is not actually used if libcurl is not compiled, +# so we can just ignore it on Windows. +file: + robostack: + linux: [file] + osx: [file] + win64: [] ffmpeg: robostack: [ffmpeg] +ffmpeg-dev: + robostack: [ffmpeg] flac: robostack: [libflac] flex: @@ -111,6 +122,8 @@ geographiclib-tools: robostack: [geographiclib-cpp] git: robostack: [git] +glslang-dev: + robostack: [glslang] glut: robostack: linux: [freeglut] @@ -184,6 +197,8 @@ libabsl-dev: robostack: [libabseil] libblas-dev: robostack: [libblas, libcblas] +libboost: + robostack: [libboost] libboost-chrono-dev: robostack: [libboost-devel] libboost-date-time: @@ -255,8 +270,12 @@ libflann-dev: robostack: [flann] libfltk-dev: robostack: [fltk] +libfreeimage-dev: + robostack: [freeimage] libfreenect-dev: robostack: [] +libfreetype-dev: + robostack: [freetype] libfreetype6: robostack: [freetype] libfreetype6-dev: @@ -304,7 +323,7 @@ libhdf5-dev: libi2c-dev: robostack: [libi2c] liblttng-ust-dev: - robostack: [lttng-ust] + robostack: ["${{ \"lttng-ust\" if linux }}"] libjpeg: robostack: [libjpeg-turbo] libjsoncpp: @@ -313,6 +332,10 @@ libjsoncpp-dev: robostack: [jsoncpp] liblapack-dev: robostack: [liblapack] +liblz4: + robostack: [lz4] +liblz4-dev: + robostack: [lz4] libmicrohttpd: robostack: [libmicrohttpd] libncurses-dev: @@ -358,7 +381,7 @@ libpcap: libpcl-all: robostack: [pcl] libpcl-all-dev: - robostack: [pcl] + robostack: [pcl, libboost-devel, vtk-base, REQUIRE_OPENGL] libpng-dev: robostack: [libpng] libpoco-dev: @@ -395,10 +418,12 @@ libreadline: robostack: [readline] libreadline-dev: robostack: [readline] +libshaderc-dev: + robostack: [shaderc] libsndfile1-dev: robostack: [libsndfile] libspnav-dev: - robostack: [libspnav] + robostack: [libspnav, xorg-xorgproto] libsqlite3-dev: robostack: [sqlite 3.*] libssl-dev: @@ -446,10 +471,15 @@ libvtk: robostack: [vtk] libvtk-qt: robostack: [vtk] +libvulkan-dev: + robostack: + linux: [libvulkan-headers, libvulkan-loader] + osx: [] + win64: [libvulkan-headers, libvulkan-loader] libx11: - robostack: [xorg-libx11, REQUIRE_OPENGL] + robostack: [xorg-libx11, xorg-xorgproto, REQUIRE_OPENGL] libx11-dev: - robostack: [xorg-libx11, REQUIRE_OPENGL] + robostack: [xorg-libx11, xorg-xorgproto, REQUIRE_OPENGL] libxaw: robostack: linux: [xorg-libxaw] @@ -476,6 +506,12 @@ libxt-dev: robostack: [xorg-libxt] libxxf86vm: robostack: [REQUIRE_OPENGL] +libyaml: + robostack: [yaml] +libyaml-dev: + robostack: [yaml] +libzip-dev: + robostack: [libzip] libzmq3-dev: robostack: [zeromq, cppzmq] libzstd-dev: @@ -678,6 +714,8 @@ python3-cryptography: robostack: [cryptography] python3-defusedxml: robostack: [defusedxml] +python3-deprecated: + robostack: [deprecated] python3-dev: robostack: [python] python3-docopt: @@ -688,6 +726,8 @@ python3-empy: robostack: [empy] python3-flake8: robostack: [flake8] +python3-flake8-comprehensions: + robostack: [flake8-comprehensions] python3-flask: robostack: [flask] python3-flask-cors: @@ -762,6 +802,8 @@ python3-pip: robostack: [pip] python3-pkg-resources: robostack: [] +python3-protobuf: + robostack: [protobuf] python3-psutil: robostack: [psutil] python3-pyassimp: @@ -850,6 +892,16 @@ python3-unidiff: robostack: [unidiff] python3-usb: robostack: [pyusb] +python3-vcstool: + robostack: [vcstool] +python3-flake8-docstrings: + robostack: [flake8-docstrings] +python3-flake8-import-order: + robostack: [flake8-import-order] +python3-flake8-builtins: + robostack: [flake8-builtins] +python3-flake8-quotes: + robostack: [flake8-quotes] python3-venv: robostack: [virtualenv, pip, pip-tools, setuptools] python3-websocket: @@ -864,12 +916,16 @@ qt5-qmake: robostack: [qt-main, REQUIRE_OPENGL] qtbase5-dev: robostack: [qt-main, REQUIRE_OPENGL] +rapidjson-dev: + robostack: [rapidjson] roboticstoolbox-python: robostack: [roboticstoolbox-python] rsync: robostack: [rsync] rti-connext-dds-5.3.1: robostack: [] +ruby: + robostack: [ruby] sbcl: robostack: linux: [sbcl] @@ -938,7 +994,7 @@ wget: xsimd: robostack: [xsimd] xtensor: - robostack: [xtensor 0.24] + robostack: [xtensor ==0.24.7] wx-common: robostack: [wxpython] wxpython: @@ -955,4 +1011,5 @@ zbar: robostack: [zbar] zlib: robostack: [zlib] - +zziplib: + robostack: [zziplib] diff --git a/tests/ros-humble-ament-cpplint.yaml b/tests/ros-humble-ament-cpplint.yaml new file mode 100644 index 000000000..a408f1ef4 --- /dev/null +++ b/tests/ros-humble-ament-cpplint.yaml @@ -0,0 +1,3 @@ +tests: + - script: + - ament_cpplint --help diff --git a/tests/ros-humble-ament-lint-cmake.yaml b/tests/ros-humble-ament-lint-cmake.yaml new file mode 100644 index 000000000..8e0eef24b --- /dev/null +++ b/tests/ros-humble-ament-lint-cmake.yaml @@ -0,0 +1,3 @@ +tests: + - script: + - ament_lint_cmake --help diff --git a/tests/ros-humble-ament-xmllint.yaml b/tests/ros-humble-ament-xmllint.yaml new file mode 100644 index 000000000..215597bc1 --- /dev/null +++ b/tests/ros-humble-ament-xmllint.yaml @@ -0,0 +1,3 @@ +tests: + - script: + - ament_xmllint --help diff --git a/tests/ros-humble-backward-ros.yaml b/tests/ros-humble-backward-ros.yaml new file mode 100644 index 000000000..475225c30 --- /dev/null +++ b/tests/ros-humble-backward-ros.yaml @@ -0,0 +1,9 @@ +tests: + # Regression test for https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2567039092 + - script: + - cmake-package-check backward_ros + requirements: + run: + - cmake-package-check + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} diff --git a/tests/ros-humble-demo-nodes-cpp.yaml b/tests/ros-humble-demo-nodes-cpp.yaml new file mode 100644 index 000000000..d8ba73c65 --- /dev/null +++ b/tests/ros-humble-demo-nodes-cpp.yaml @@ -0,0 +1,11 @@ +tests: + # Regression test for https://github.com/RoboStack/ros-humble/issues/150 + - script: + - if: unix + then: + - test -f ${PREFIX}/lib/demo_nodes_cpp/talker + - test -f ${PREFIX}/lib/demo_nodes_cpp/listener + - if: win + then: + - if not exist %LIBRARY_LIB%\demo_nodes_cpp\talker.exe exit 1 + - if not exist %LIBRARY_LIB%\demo_nodes_cpp\listener.exe exit 1 diff --git a/tests/ros-humble-demo-nodes-py.yaml b/tests/ros-humble-demo-nodes-py.yaml new file mode 100644 index 000000000..6fb1cce96 --- /dev/null +++ b/tests/ros-humble-demo-nodes-py.yaml @@ -0,0 +1,11 @@ +tests: + # Regression test for https://github.com/RoboStack/ros-humble/issues/150 + - script: + - if: unix + then: + - test -f ${PREFIX}/lib/demo_nodes_py/talker + - test -f ${PREFIX}/lib/demo_nodes_py/listener + - if: win + then: + - if not exist %LIBRARY_LIB%\demo_nodes_py\talker.exe exit 1 + - if not exist %LIBRARY_LIB%\demo_nodes_py\listener.exe exit 1 diff --git a/tests/ros-humble-kinematics-interface.yaml b/tests/ros-humble-kinematics-interface.yaml new file mode 100644 index 000000000..5c3a19316 --- /dev/null +++ b/tests/ros-humble-kinematics-interface.yaml @@ -0,0 +1,8 @@ +tests: + - script: + - cmake-package-check kinematics_interface --targets kinematics_interface::kinematics_interface + requirements: + run: + - cmake-package-check + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} diff --git a/tests/ros-humble-rclpy.yaml b/tests/ros-humble-rclpy.yaml new file mode 100644 index 000000000..693c36b0f --- /dev/null +++ b/tests/ros-humble-rclpy.yaml @@ -0,0 +1,5 @@ +tests: + - python: + imports: + - rclpy + pip_check: false diff --git a/tests/ros-humble-rcutils.yaml b/tests/ros-humble-rcutils.yaml new file mode 100644 index 000000000..4903914a6 --- /dev/null +++ b/tests/ros-humble-rcutils.yaml @@ -0,0 +1,4 @@ +tests: + - python: + imports: + - rcutils diff --git a/tests/ros-humble-rosidl-typesupport-introspection-c.yaml b/tests/ros-humble-rosidl-typesupport-introspection-c.yaml new file mode 100644 index 000000000..c388f1a3d --- /dev/null +++ b/tests/ros-humble-rosidl-typesupport-introspection-c.yaml @@ -0,0 +1,9 @@ +tests: + # Regression test for https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2563868968 + - script: + - cmake-package-check rosidl_typesupport_introspection_c + requirements: + run: + - cmake-package-check + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} diff --git a/tests/ros-humble-rosx-introspection.yaml b/tests/ros-humble-rosx-introspection.yaml new file mode 100644 index 000000000..64b1f70b2 --- /dev/null +++ b/tests/ros-humble-rosx-introspection.yaml @@ -0,0 +1,8 @@ +tests: + - script: + - cmake-package-check rosx_introspection --targets rosx_introspection::rosx_introspection + requirements: + run: + - cmake-package-check + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} diff --git a/tests/ros-humble-steering-controllers-library.yaml b/tests/ros-humble-steering-controllers-library.yaml new file mode 100644 index 000000000..291a15bed --- /dev/null +++ b/tests/ros-humble-steering-controllers-library.yaml @@ -0,0 +1,10 @@ +tests: + - script: + - cmake-package-check steering_controllers_library --targets steering_controllers_library::steering_controllers_library + requirements: + run: + - cmake-package-check + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} + # workaround for https://github.com/ros-controls/ros2_controllers/pull/1463 + - ros-humble-generate-parameter-library diff --git a/vinca_linux_64.yaml b/vinca_linux_64.yaml index 0698bc500..d9dbad104 100644 --- a/vinca_linux_64.yaml +++ b/vinca_linux_64.yaml @@ -5,9 +5,9 @@ conda_index: - robostack.yaml - packages-ignore.yaml -build_number: 6 +build_number: 7 -mutex_package: ros2-distro-mutex 0.5 humble +mutex_package: ros2-distro-mutex 0.6.* humble_* skip_all_deps: false @@ -37,111 +37,124 @@ skip_existing: packages_select_by_deps: # only subset of packages to reduce maintainer load # trigger - - qt-qui-cpp # needs to be compiled locally - - generator-dds-idl + # build 7 reselect - ros_workspace - - ros_environment - - ament_cmake + - ros_core + - ament-cmake-nose - ros_base + - perception + - rosidl-generator-dds-idl + - simulation - desktop - - navigation2 - - graph_msgs - - nav2_bringup - - turtlebot3 - desktop_full - - apriltag - - turtlebot3_fake_node - - ur - - ublox - - robot_localization - - topic_tools - - stubborn_buddies - - teleop_tools - - udp_driver - - urdf_tutorial - - test_bond - - apex_test_tools - - ublox_dgnss - - velodyne_description - - velodyne - - visp - - apex_containers - - apex_test_tools - - bno055 - - aws_robomaker_small_warehouse_world - - avt_vimba_camera - - ros_ign - - spacenav - - system_modes - - tf_transformations - - turtle_tf2_cpp - - turtle_tf2_py - - ros2controlcli - - robot_controllers - - ros2_control - - ros2_controllers - - control-toolbox - - joint-trajectory-controller - - gazebo-dev - - gazebo-plugins - - gazebo-ros - - gazebo-ros-pkgs - - turtlebot3_gazebo - - turtlebot3_simulations + # - qt-qui-cpp # needs to be compiled locally + + # rqt - rqt - rqt_image_overlay - rqt-robot-dashboard - rqt-robot-monitor - rqt-robot-steering - - joint-state-broadcaster - - joint-state-publisher - - xacro - - image-pipeline - - image-view - - bond-core - - camera-calibration - - camera-calibration-parsers - - camera-info-manager - - slam-toolbox - - foxglove_bridge - - ament-cmake-nose - - geographic_info - - geodesy - - rosbridge_suite - - ament_cmake_catch2 - - apriltag - - apriltag_ros - - marker-msgs + - moveit - - moveit-ros-perception - - moveit-runtime - - moveit-servo - moveit_visual_tools - moveit_servo - moveit2_tutorials - moveit-planners-chomp - rqt-moveit + # - moveit2_tutorials # this does not exist anymore + - pilz-industrial-motion-planner - - librealsense2 - - realsense2-camera - - realsense2-camera-msgs - - realsense2-description - - webots_ros2 - - rosidl-generator-dds-idl + - topic_tools + + - navigation2 + # ros control - ros2_control + - ros2_controllers + - joint-state-publisher # probably this should not be here as there is some strange porting to ros2 + - control-toolbox + - realtime_tools + - control_msgs + - teleop_tools - gazebo-ros2-control + - gazebo_ros2_control_demos - # Modern gz-sim integration - - ros-gz - - libg2o + # - joystick_drivers + - joy + - joy_linux + - sdl2_vendor + - spacenav + # - wiimote # needs bluetooth and is not in conda-forge + # - wiimote_msgs - - gtsam - - motion-capture-tracking + # other control + - robot_controllers + - bond_core - # Needs fixing - # - moveit-resources + # *** learning and tutorials *** + - turtlebot3 + - turtlebot3_simulations + - urdf_tutorial + - geometry_tutorials + + # gazebo + - gazebo-ros-pkgs + - ros_gz + + # *** Vendor packages *** + - graph_msgs # PickNik Robotics + - apriltag # AprilRobotics + - apriltag_ros # Christian Rauch + - ur_robot_driver # Universal Robots + - ur_calibration # Universal Robots, requested in https://github.com/RoboStack/ros-humble/issues/217 + - ublox # Kumar Robotics + - ublox_dgnss # Aussie Robots + - ublox_dgnss_node + - ublox_ubx_interfaces + - robot_localization # Charles River Analytics, Inc. + - stubborn_buddies # Open RMF + - ament_cmake_catch2 # Open RMF + - ament_cmake_vendor_package # Requested in https://github.com/RoboStack/ros-humble/pull/210 + + # - transport_drivers + - asio_cmake_module + - io_context + - serial_driver + - udp_driver + + - apex_test_tools + - apex_containers # Apex AI + - velodyne + - velodyne_simulator # Dataspeed Inc. + + # - visp # this does not exist in Humble anymore + + - bno055 # flynneva + - aws_robomaker_small_warehouse_world # AWS Robotics + - avt_vimba_camera # Allied Vision Technologies + - system_modes # Micro-ROS + - tf_transformations # DLu + - slam-toolbox # Steve Macenski + - foxglove_bridge # foxglove + - geographic_info # ros-geographic-info + - rosbridge_suite # RobotWebTools + - marker-msgs # TUW Robotics + - librealsense2 # IntelRealSense + - realsense2-camera # IntelRealSense + - webots_ros2 # Cyberbotics + # - libg2o # this does not exist anymore + - gtsam # Borglab + - motion_capture_tracking # IMRC Lab + - moveit_resources + + # requested in https://github.com/RoboStack/ros-humble/issues/228 + - event_camera_codecs + - event_camera_renderer + + # requested in https://github.com/RoboStack/ros-humble/pull/205 + - rosbag2_storage_mcap # ----- end of package support ----- diff --git a/vinca_linux_aarch64.yaml b/vinca_linux_aarch64.yaml index 883bfffca..017d9d999 100644 --- a/vinca_linux_aarch64.yaml +++ b/vinca_linux_aarch64.yaml @@ -5,9 +5,9 @@ conda_index: - robostack.yaml - packages-ignore.yaml -build_number: 4 +build_number: 5 -mutex_package: ros2-distro-mutex 0.5 humble +mutex_package: ros2-distro-mutex 0.6.* humble_* skip_all_deps: false @@ -81,8 +81,10 @@ packages_select_by_deps: - apriltag_ros - moveit + - moveit_visual_tools - moveit_servo - moveit-planners-chomp + - pilz-industrial-motion-planner # - control_toolbox # - ros1_bridge @@ -95,6 +97,9 @@ packages_select_by_deps: - gtsam + - ament_cmake_vendor_package # Requested in https://github.com/RoboStack/ros-humble/pull/210 + + # Used to work, now needs fixes # - rtabmap # - webots-ros2 @@ -393,3 +398,4 @@ packages_select_by_deps: # - osrf_testing_tools_cpp patch_dir: patch + diff --git a/vinca_osx.yaml b/vinca_osx.yaml index a5d9244d8..418f43699 100644 --- a/vinca_osx.yaml +++ b/vinca_osx.yaml @@ -5,9 +5,9 @@ conda_index: - robostack.yaml - packages-ignore.yaml -build_number: 6 +build_number: 7 -mutex_package: ros2-distro-mutex 0.5 humble +mutex_package: ros2-distro-mutex 0.6.* humble_* skip_all_deps: false @@ -100,9 +100,16 @@ packages_select_by_deps: - ros-gz - moveit + - moveit_visual_tools - moveit_servo - moveit-planners-chomp + - pilz-industrial-motion-planner - gtsam + - ament_cmake_vendor_package # Requested in https://github.com/RoboStack/ros-humble/pull/210 + + # requested in https://github.com/RoboStack/ros-humble/pull/205 + - rosbag2_storage_mcap + patch_dir: patch diff --git a/vinca_osx_arm64.yaml b/vinca_osx_arm64.yaml index fc1b8a0fc..66e7ebb34 100644 --- a/vinca_osx_arm64.yaml +++ b/vinca_osx_arm64.yaml @@ -5,9 +5,9 @@ conda_index: - robostack.yaml - packages-ignore.yaml -build_number: 5 +build_number: 6 -mutex_package: ros2-distro-mutex 0.5 humble +mutex_package: ros2-distro-mutex 0.6.* humble_* skip_all_deps: false @@ -91,8 +91,15 @@ packages_select_by_deps: - ros-gz - moveit + - moveit_visual_tools - moveit-planners-chomp + - pilz-industrial-motion-planner - gtsam + - ament_cmake_vendor_package # Requested in https://github.com/RoboStack/ros-humble/pull/210 + + # requested in https://github.com/RoboStack/ros-humble/pull/205 + - rosbag2_storage_mcap + patch_dir: patch diff --git a/vinca_win.yaml b/vinca_win.yaml index 65df984e1..c6c38bdbe 100644 --- a/vinca_win.yaml +++ b/vinca_win.yaml @@ -5,9 +5,9 @@ conda_index: - robostack.yaml - packages-ignore.yaml -build_number: 7 +build_number: 8 -mutex_package: ros2-distro-mutex 0.5 humble +mutex_package: ros2-distro-mutex 0.6.* humble_* skip_all_deps: false @@ -28,52 +28,205 @@ packages_remove_from_deps: - pendulum_control - warehouse_ros_mongo - pilz-industrial-motion-planner + # removed in jazzy, never supported windows, no packages depend on it + - apex_containers + # never worked in Windows, probably trivial to support if someone needs it + - avt_vimba_camera + # navigation still does not compile fine on windows + - cartographer_ros + - cartographer_ros_msgs + - slam_toolbox + - nav2_amcl + - nav2_waypoint_follower + # skip as Ignition Fortress is not working in conda-forge on Windows, + # see https://github.com/conda-forge/libignition-gazebo-feedstock/pull/59#issuecomment-1902107706 + - ros_gz + - ros_gz_sim + - ros_gz_bridge + - ros_gz_image + - ros_gz_interfaces + - ros_gz_sim_demos + - ros_ign_interfaces + - ros_ign_bridge + - ros_ign_image + - ros_ign_interfaces + - ros_ign_gazebo_demos + - ros_ign_gazebo + - ros_ign + # event_camera_codecs uses gcc/clang-specific options and attributes + - event_camera_codecs + - event_camera_renderer + # foxglove_bridge has some windows-specific issues + - foxglove_bridge + # CMake and boost problems + - gtsam + # realsense was never compiled on Windows, not even in conda-forge + - librealsense2 + - realsense2-camera + # Path too long on Windows + - motion-capture-tracking-interfaces + - motion_capture_tracking + # min/max conflicts on Windows + - ntrip_client_node + # M_PI not defined on Windows problems + - robot_controllers + - robot_localization + # Several rqt-related packages do not support Windows due to complex pip/sip build issues + - qt_gui_cpp + - rqt_gui_cpp + - rqt_image_overlay + # libspnav is not available on Windows + - spacenav + # ublox packages are not supported on Windows + - ublox_gps + - ublox_msgs + - ublox + - ublox-dgnss-node + - ublox-nav-sat-fix-hp-node + - ublox-dgnss + # Some packages in ur stack do not support Windows + - ur-client-library + - ur-controllers + - ur_robot_driver + - ur_calibration + # Some packages in velodyne repo do not support Windows + - velodyne_driver + - velodyne_pointcloud + - velodyne_laserscan + - velodyne + - velodyne_gazebo_plugins + - velodyne_simulator + # webots_ros2 is not supported on Windows + - webots_ros2 + - webots_ros2_control + - webots_ros2_driver + - webots_ros2_epuck + - webots_ros2_importer + - webots_ros2_mavic + - webots_ros2_msgs + - webots_ros2_tesla + - webots_ros2_tiago + - webots_ros2_turtlebot + - webots_ros2_universal_robot + - webots_ros2_tests skip_existing: - https://conda.anaconda.org/robostack-staging/ packages_select_by_deps: - # trigger - - ament-cmake-core - #- ros2_control - #- ros2_controllers - - backward_ros - ros_workspace - - vision_msgs - - ros_environment + - ros_core + - ament-cmake-nose - ros_base - - rmw_cyclonedds_cpp + - perception + - rosidl-generator-dds-idl + - simulation + - desktop + - desktop_full + + # rqt + - rqt + - rqt_image_overlay + - rqt-robot-dashboard + - rqt-robot-monitor + - rqt-robot-steering + - moveit + - moveit_visual_tools + - moveit_servo + - moveit2_tutorials - moveit-planners-chomp - - xacro - - gazebo-ros - # - navigation2 - # - desktop - # - cv_bridge - # - perception - # - gazebo_msgs - # - gazebo_dev - # - gazebo_ros - # - gazebo_plugins - # - gazebo_ros2_control - # - gazebo_ros_pkgs - # - turtlebot3_simulations - # - rosbridge_suite - # - ament_cmake_catch2 - # - nav2-mppi-controller - - # ros2_control + - rqt-moveit + # - moveit2_tutorials # this does not exist anymore + + - topic_tools + + - navigation2 + + # ros control + - ros2_control + - ros2_controllers + - joint-state-publisher # probably this should not be here as there is some strange porting to ros2 + - control-toolbox + - realtime_tools + - control_msgs + - teleop_tools - gazebo-ros2-control - - ros2-controllers-test-nodes - - joint-state-publisher-gui + - gazebo_ros2_control_demos + + # - joystick_drivers + - joy + - joy_linux + - sdl2_vendor + - spacenav + # - wiimote # needs bluetooth and is not in conda-forge + # - wiimote_msgs + + # other control + - robot_controllers + - bond_core + + # *** learning and tutorials *** + - turtlebot3 + - turtlebot3_simulations + - urdf_tutorial + - geometry_tutorials + + # gazebo + - gazebo-ros-pkgs + - ros_gz + + # *** Vendor packages *** + - graph_msgs # PickNik Robotics + - apriltag # AprilRobotics + - apriltag_ros # Christian Rauch + - ur_robot_driver # Universal Robots + - ur_calibration # Universal Robots, requested in https://github.com/RoboStack/ros-humble/issues/217 + - ublox # Kumar Robotics + - ublox_dgnss # Aussie Robots + - ublox_dgnss_node + - ublox_ubx_interfaces + - robot_localization # Charles River Analytics, Inc. + - stubborn_buddies # Open RMF + - ament_cmake_catch2 # Open RMF + - ament_cmake_vendor_package # Requested in https://github.com/RoboStack/ros-humble/pull/210 + + # - transport_drivers + - asio_cmake_module + - io_context + - serial_driver + - udp_driver + + - apex_test_tools + - apex_containers # Apex AI + - velodyne + - velodyne_simulator # Dataspeed Inc. + + # - visp # this does not exist in Humble anymore + + - bno055 # flynneva + - aws_robomaker_small_warehouse_world # AWS Robotics + - avt_vimba_camera # Allied Vision Technologies + - system_modes # Micro-ROS + - tf_transformations # DLu + - slam-toolbox # Steve Macenski + - foxglove_bridge # foxglove + - geographic_info # ros-geographic-info + - rosbridge_suite # RobotWebTools + - marker-msgs # TUW Robotics + - librealsense2 # IntelRealSense + - realsense2-camera # IntelRealSense + - webots_ros2 # Cyberbotics + # - libg2o # this does not exist anymore + - gtsam # Borglab + - motion_capture_tracking # IMRC Lab + - moveit_resources - # Broken for now until we migrate to newer gazebo - # - desktop_full + # requested in https://github.com/RoboStack/ros-humble/issues/228 + - event_camera_codecs + - event_camera_renderer - # REQUESTED PACKAGES - # Fails due to not finding csparse, could borrow patch from mrpt2 - # - slam-toolbox - # Needs slam-toolbox - # - nav2-bringup + # requested in https://github.com/RoboStack/ros-humble/pull/205 + - rosbag2_storage_mcap patch_dir: patch