Skip to content

Add rapidgzip#23901

Merged
carterbox merged 1 commit intoconda-forge:mainfrom
ap--:rapidgzip
Aug 26, 2025
Merged

Add rapidgzip#23901
carterbox merged 1 commit intoconda-forge:mainfrom
ap--:rapidgzip

Conversation

@ap--
Copy link
Member

@ap-- ap-- commented Sep 4, 2023

Checklist

  • Title of this PR is meaningful: e.g. "Adding my_nifty_package", not "updated meta.yaml".
  • License file is packaged (see here for an example).
  • Source is from official source.
  • Package does not vendor other packages. (If a package uses the source of another package, they should be separate packages or the licenses of all packages need to be packaged).
  • If static libraries are linked in, the license of the static library is packaged.
  • Package does not ship static libraries. If static libraries are needed, follow CFEP-18.
  • Build number is 0.
  • A tarball (url) rather than a repo (e.g. git_url) is used in your recipe (see here for more details).
  • GitHub users listed in the maintainer section have posted a comment confirming they are willing to be listed there.
  • When in trouble, please check our knowledge base documentation before pinging a team.

@conda-forge-webservices
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/rapidgzip) and found it was in an excellent condition.

@ap-- ap-- changed the title add rapidgzip Add rapidgzip Sep 4, 2023
@ap-- ap-- mentioned this pull request Sep 4, 2023
10 tasks
@mxmlnkn
Copy link
Contributor

mxmlnkn commented Sep 5, 2023

I agree to be a maintainer.

@ap--
Copy link
Member Author

ap-- commented Sep 6, 2023

@conda-forge/help-python-c, ready for review!

@ap--
Copy link
Member Author

ap-- commented Sep 6, 2023

@conda-forge-admin, please restart ci

@ap--
Copy link
Member Author

ap-- commented Sep 6, 2023

Current build error seems to be some issue with staged-recipes on OSX.

Error message:


  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/build.py", line 3799, in build_tree
    packages_from_this = build(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/build.py", line 2469, in build
    output_metas = expand_outputs([(m, need_source_download, need_reparse_in_env)])
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/render.py", line 923, in expand_outputs
    for output_dict, m in deepcopy(_m).get_output_metadata_set(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/metadata.py", line 2565, in get_output_metadata_set
    conda_packages = finalize_outputs_pass(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/metadata.py", line 909, in finalize_outputs_pass
    fm = finalize_metadata(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/render.py", line 637, in finalize_metadata
    build_unsat, host_unsat = add_upstream_pins(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/render.py", line 452, in add_upstream_pins
    build_deps, build_unsat, extra_run_specs_from_build = _read_upstream_pin_files(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/render.py", line 431, in _read_upstream_pin_files
    deps, actions, unsat = get_env_dependencies(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/conda_build/render.py", line 151, in get_env_dependencies
    actions = environ.get_install_actions(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/boa/cli/mambabuild.py", line 141, in mamba_get_install_actions
    solution = solver.solve_for_action(_specs, prefix)
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/boa/core/solver.py", line 252, in solve_for_action
    return to_action(
  File "/Users/runner/mambaforge/lib/python3.10/site-packages/boa/core/solver.py", line 80, in to_action
    entry = lookup_dict[get_url_from_channel(c)]
KeyError: 'https://conda.anaconda.org/conda-forge'

Same issue in #23918

@mxmlnkn
Copy link
Contributor

mxmlnkn commented Sep 24, 2023

@conda-forge/help-python-c ready for review!

@ap--
Copy link
Member Author

ap-- commented Oct 16, 2023

@conda-forge/staged-recipes kindly submitting another request for review.

If there's anything I can do to let me know.

Cheers,
Andreas 😃

@@ -0,0 +1,27 @@
---
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the origin of this file?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rapidgzip --oss-attributions

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We strongly prefer that you dynamically link to these dependenices via the existing conda-forge packages or by adding additional packages to this PR. OR provide a justification of why static linking to these packages is needed.

Copy link
Contributor

@mxmlnkn mxmlnkn Oct 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • cxxopts: is a header-only library, dynamic linking makes no sense. I don't understand what the conda-forge package exists for. I guess to update the headers and rebuild dependant conda-forge packages?
  • ISA-L: uses a custom fork made by me. Upstream cannot be used because of custom additions. It can be disabled with the WITH_ISAL CMake option. Rapidgzip is ~2x faster with ISA-L. (The upstream version would have been available on conda-forge)
  • rpmalloc: I did not bother dynamically linking against this, because it is not available as a package on Ubuntu. It can be disabled with the WITH_RPMALLOC CMake option, which seems like the easiest option. Rpmalloc only leads to ~20% speedup for short workloads and possibly for longer workloads on high core counts. It is much less important for performance than ISA-L. I did not find rpmalloc on conda-forge.
  • zlib: can be dynamically linked with the USE_SYSTEM_ZLIB CMake option. I don't know how to set this option for the conda build. I guess I'll need to take a look. Unsurprisingly exists on conda-forge.

Copy link
Contributor

@mxmlnkn mxmlnkn Oct 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If zlib is dynamically linked, should it be removed from THIRDPARTY.yml?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this file can be generated, it should be generated during the build and not be submitting as part of the recipe.

Copy link
Contributor

@mxmlnkn mxmlnkn Dec 2, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have finally tried to use cxxopts and zlib via the existing conda packages but I get an import error because of an undefined symbol now:

The following NEW packages will be INSTALLED:

    _libgcc_mutex:    0.1-conda_forge            conda-forge
    _openmp_mutex:    4.5-2_gnu                  conda-forge
    bzip2:            1.0.8-hd590300_5           conda-forge
    ca-certificates:  2023.11.17-hbcca054_0      conda-forge
    cxxopts:          3.1.0-hf52228f_0           conda-forge
    ld_impl_linux-64: 2.40-h41732ed_0            conda-forge
    libffi:           3.4.2-h7f98852_5           conda-forge
    libgcc-ng:        13.2.0-h807b86a_3          conda-forge
    libgomp:          13.2.0-h807b86a_3          conda-forge
    libnsl:           2.0.1-hd590300_0           conda-forge
    libsqlite:        3.44.2-h2797004_0          conda-forge
    libstdcxx-ng:     13.2.0-h7e041cc_3          conda-forge
    libuuid:          2.38.1-h0b41bf4_0          conda-forge
    libzlib:          1.2.13-hd590300_5          conda-forge
    ncurses:          6.4-h59595ed_2             conda-forge
    openssl:          3.2.0-hd590300_1           conda-forge
    pip:              23.3.1-pyhd8ed1ab_0        conda-forge
    python:           3.10.13-hd12c33a_0_cpython conda-forge
    python_abi:       3.10-4_cp310               conda-forge
    rapidgzip:        0.10.4-py310hd5d28ae_0     local      
    readline:         8.2-h8228510_1             conda-forge
    setuptools:       68.2.2-pyhd8ed1ab_0        conda-forge
    tk:               8.6.13-noxft_h4845f30_101  conda-forge
    tzdata:           2023c-h71feb2d_0           conda-forge
    wheel:            0.42.0-pyhd8ed1ab_0        conda-forge
    xz:               5.2.6-h166bdaf_0           conda-forge
    zlib:             1.2.13-hd590300_5          conda-forge

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
export PREFIX=/miniconda3/conda-bld/rapidgzip_1701540286573/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place
export SRC_DIR=/miniconda3/conda-bld/rapidgzip_1701540286573/test_tmp
Traceback (most recent call last):
  File "/miniconda3/conda-bld/rapidgzip_1701540286573/test_tmp/run_test.py", line 2, in <module>
import: 'rapidgzip'
    import rapidgzip
ImportError: /miniconda3/conda-bld/rapidgzip_1701540286573/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place/lib/python3.10/site-packages/rapidgzip.cpython-310-x86_64-linux-gnu.so: undefined symbol: inflatePrime
WARNING: Tests failed for rapidgzip-0.10.4-py310hd5d28ae_0.tar.bz2 - moving package to /miniconda3/conda-bld/broken
TESTS FAILED: rapidgzip-0.10.4-py310hd5d28ae_0.tar.bz2

According to the changelog, inflatePrime has been added in 2005 with version 1.2.2.4 and according to the list above, version 1.2.13 is loaded. So, why is inflatePrime still missing? And it seems to be the only missing symbol as many others are used but not shown as missing.

I have attached the patch, which probably should be cherry-picked by @ap-- ontop of this PR if only it would work ...

0001-Use-conda-packaged-cxxopts-and-zlib.txt

Edit: I have opened an issue here

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cxxopts: is a header-only library, dynamic linking makes no sense. I don't understand what the conda-forge package exists for. I guess to update the headers and rebuild dependant conda-forge packages?

Not every library revends its dependencies, so the package is there for convenience. If CXXOPTS is header only, then static linking is the only option, so that's the justification.

ISA-L: uses a custom fork made by me. Upstream cannot be used because of custom additions. It can be disabled with the WITH_ISAL CMake option. Rapidgzip is ~2x faster with ISA-L. (The upstream version would have been available on conda-forge)

If your custom fork contains unique changes that are not compatible with upstream, this is an acceptable justification because your fork is no longer the canonical ISA-L. However, we encourage you to upstream your changes, so others can benefit.

rpmalloc: I did not bother dynamically linking against this, because it is not available as a package on Ubuntu. It can be disabled with the WITH_RPMALLOC CMake option, which seems like the easiest option. Rpmalloc only leads to ~20% speedup for short workloads and possibly for longer workloads on high core counts. It is much less important for performance than ISA-L. I did not find rpmalloc on conda-forge.

Create an additional recipe folder for rpmalloc in this PR, and add rpmalloc as a host dependency for rapidgzip. Our build runner can determine in which order to build multiple recipes or disable this option until rpmalloc is added.

zlib: can be dynamically linked with the USE_SYSTEM_ZLIB CMake option. I don't know how to set this option for the conda build. I guess I'll need to take a look. Unsurprisingly exists on conda-forge.

Add zlib to the host requirements. Set USE_SYSTEM_ZLIB and ensure that your package links to libz.so in the host environment i.e. $PREFIX during the build step. Please push the commits in which you attempt to USE_SYSYEM_ZLIB so we can read the build logs and/or recreate your work.

@carterbox
Copy link
Member

@conda-forge/help-python-c, please review

Copy link
Member

@carterbox carterbox left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the following tasks need to be completed for this PR:

  • dynamically link to zlib instead of revending
  • dynamically link to rpmalloc instead of revending
  • generate THIRDPARTY.yaml during the build step, so that upstream licenses are updated automatically if changed

@@ -0,0 +1,27 @@
---
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cxxopts: is a header-only library, dynamic linking makes no sense. I don't understand what the conda-forge package exists for. I guess to update the headers and rebuild dependant conda-forge packages?

Not every library revends its dependencies, so the package is there for convenience. If CXXOPTS is header only, then static linking is the only option, so that's the justification.

ISA-L: uses a custom fork made by me. Upstream cannot be used because of custom additions. It can be disabled with the WITH_ISAL CMake option. Rapidgzip is ~2x faster with ISA-L. (The upstream version would have been available on conda-forge)

If your custom fork contains unique changes that are not compatible with upstream, this is an acceptable justification because your fork is no longer the canonical ISA-L. However, we encourage you to upstream your changes, so others can benefit.

rpmalloc: I did not bother dynamically linking against this, because it is not available as a package on Ubuntu. It can be disabled with the WITH_RPMALLOC CMake option, which seems like the easiest option. Rpmalloc only leads to ~20% speedup for short workloads and possibly for longer workloads on high core counts. It is much less important for performance than ISA-L. I did not find rpmalloc on conda-forge.

Create an additional recipe folder for rpmalloc in this PR, and add rpmalloc as a host dependency for rapidgzip. Our build runner can determine in which order to build multiple recipes or disable this option until rpmalloc is added.

zlib: can be dynamically linked with the USE_SYSTEM_ZLIB CMake option. I don't know how to set this option for the conda build. I guess I'll need to take a look. Unsurprisingly exists on conda-forge.

Add zlib to the host requirements. Set USE_SYSTEM_ZLIB and ensure that your package links to libz.so in the host environment i.e. $PREFIX during the build step. Please push the commits in which you attempt to USE_SYSYEM_ZLIB so we can read the build logs and/or recreate your work.

@mxmlnkn
Copy link
Contributor

mxmlnkn commented Dec 20, 2023

Please push the commits in which you attempt to USE_SYSYEM_ZLIB so we can read the build logs and/or recreate your work.

To speed up things, as I have no control over this PR, I have tried to reopen my own PR for now: #23903 but failed to do so and therefore created another one: #24835
That PR tries to use the conda zlib and, at least in my local tests, fails the import test because of the undefined reference to inflatePrime. Please run PR #24835 to generate the build logs.

## Package Plan ##

  environment location: /opt/miniconda3/conda-bld/rapidgzip_1703064500773/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place


The following NEW packages will be INSTALLED:

    _libgcc_mutex:                        0.1-conda_forge            conda-forge
    _openmp_mutex:                        4.5-2_gnu                  conda-forge
    _sysroot_linux-64_curr_repodata_hack: 3-h69a702a_13              conda-forge
    binutils_impl_linux-64:               2.40-hf600244_0            conda-forge
    binutils_linux-64:                    2.40-hbdbef99_2            conda-forge
    bzip2:                                1.0.8-hd590300_5           conda-forge
    ca-certificates:                      2023.11.17-hbcca054_0      conda-forge
    cxxopts:                              3.1.0-hf52228f_0           conda-forge
    cython:                               3.0.7-py310hc6cd4ac_0      conda-forge
    gcc_impl_linux-64:                    13.2.0-h338b0a0_3          conda-forge
    gcc_linux-64:                         13.2.0-h112eaf3_2          conda-forge
    gxx_impl_linux-64:                    13.2.0-h338b0a0_3          conda-forge
    gxx_linux-64:                         13.2.0-hc53e3bf_2          conda-forge
    kernel-headers_linux-64:              3.10.0-h4a8ded7_13         conda-forge
    ld_impl_linux-64:                     2.40-h41732ed_0            conda-forge
    libffi:                               3.4.2-h7f98852_5           conda-forge
    libgcc-devel_linux-64:                13.2.0-ha9c7c90_103        conda-forge
    libgcc-ng:                            13.2.0-h807b86a_3          conda-forge
    libgomp:                              13.2.0-h807b86a_3          conda-forge
    libnsl:                               2.0.1-hd590300_0           conda-forge
    libsanitizer:                         13.2.0-h7e041cc_3          conda-forge
    libsqlite:                            3.44.2-h2797004_0          conda-forge
    libstdcxx-devel_linux-64:             13.2.0-ha9c7c90_103        conda-forge
    libstdcxx-ng:                         13.2.0-h7e041cc_3          conda-forge
    libuuid:                              2.38.1-h0b41bf4_0          conda-forge
    libzlib:                              1.2.13-hd590300_5          conda-forge
    nasm:                                 2.15.05-h7f98852_0         conda-forge
    ncurses:                              6.4-h59595ed_2             conda-forge
    openssl:                              3.2.0-hd590300_1           conda-forge
    pip:                                  23.3.2-pyhd8ed1ab_0        conda-forge
    python:                               3.10.13-hd12c33a_0_cpython conda-forge
    python_abi:                           3.10-4_cp310               conda-forge
    rapidgzip:                            0.11.0-py310hd5d28ae_0     local      
    readline:                             8.2-h8228510_1             conda-forge
    setuptools:                           68.2.2-pyhd8ed1ab_0        conda-forge
    sysroot_linux-64:                     2.17-h4a8ded7_13           conda-forge
    tk:                                   8.6.13-noxft_h4845f30_101  conda-forge
    tzdata:                               2023c-h71feb2d_0           conda-forge
    wheel:                                0.42.0-pyhd8ed1ab_0        conda-forge
    xz:                                   5.2.6-h166bdaf_0           conda-forge
    zlib:                                 1.2.13-hd590300_5          conda-forge

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
export PREFIX=/opt/miniconda3/conda-bld/rapidgzip_1703064500773/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place
export SRC_DIR=/opt/miniconda3/conda-bld/rapidgzip_1703064500773/test_tmp
INFO: activate-binutils_linux-64.sh made the following environmental changes:
+ADDR2LINE=$PREFIX/bin/x86_64-conda-linux-gnu-addr2line
+AR=$PREFIX/bin/x86_64-conda-linux-gnu-ar
+AS=$PREFIX/bin/x86_64-conda-linux-gnu-as
+CXXFILT=$PREFIX/bin/x86_64-conda-linux-gnu-c++filt
+ELFEDIT=$PREFIX/bin/x86_64-conda-linux-gnu-elfedit
+GPROF=$PREFIX/bin/x86_64-conda-linux-gnu-gprof
+LD_GOLD=$PREFIX/bin/x86_64-conda-linux-gnu-ld.gold
+LD=$PREFIX/bin/x86_64-conda-linux-gnu-ld
+NM=$PREFIX/bin/x86_64-conda-linux-gnu-nm
+OBJCOPY=$PREFIX/bin/x86_64-conda-linux-gnu-objcopy
+OBJDUMP=$PREFIX/bin/x86_64-conda-linux-gnu-objdump
+RANLIB=$PREFIX/bin/x86_64-conda-linux-gnu-ranlib
+READELF=$PREFIX/bin/x86_64-conda-linux-gnu-readelf
+SIZE=$PREFIX/bin/x86_64-conda-linux-gnu-size
+STRINGS=$PREFIX/bin/x86_64-conda-linux-gnu-strings
+STRIP=$PREFIX/bin/x86_64-conda-linux-gnu-strip
INFO: activate-gcc_linux-64.sh made the following environmental changes:
+build_alias=x86_64-conda-linux-gnu
-BUILD=x86_64-conda_cos6-linux-gnu
+BUILD=x86_64-conda-linux-gnu
+CC_FOR_BUILD=$PREFIX/bin/x86_64-conda-linux-gnu-cc
+CC=$PREFIX/bin/x86_64-conda-linux-gnu-cc
+CFLAGS=-march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/rapidgzip-0.11.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+CMAKE_ARGS=-DCMAKE_AR=$PREFIX/bin/x86_64-conda-linux-gnu-ar -DCMAKE_CXX_COMPILER_AR=$PREFIX/bin/x86_64-conda-linux-gnu-gcc-ar -DCMAKE_C_COMPILER_AR=$PREFIX/bin/x86_64-conda-linux-gnu-gcc-ar -DCMAKE_RANLIB=$PREFIX/bin/x86_64-conda-linux-gnu-ranlib -DCMAKE_CXX_COMPILER_RANLIB=$PREFIX/bin/x86_64-conda-linux-gnu-gcc-ranlib -DCMAKE_C_COMPILER_RANLIB=$PREFIX/bin/x86_64-conda-linux-gnu-gcc-ranlib -DCMAKE_LINKER=$PREFIX/bin/x86_64-conda-linux-gnu-ld -DCMAKE_STRIP=$PREFIX/bin/x86_64-conda-linux-gnu-strip -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_FIND_ROOT_PATH=$PREFIX;/opt/miniconda3/conda-bld/rapidgzip_1703064500773/_build_env/x86_64-conda-linux-gnu/sysroot -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_PROGRAM_PATH=/opt/miniconda3/conda-bld/rapidgzip_1703064500773/_build_env/bin;$PREFIX/bin
+CMAKE_PREFIX_PATH=$PREFIX:$PREFIX/x86_64-conda-linux-gnu/sysroot/usr
+CONDA_BUILD_SYSROOT=$PREFIX/x86_64-conda-linux-gnu/sysroot
+_CONDA_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_x86_64_conda_cos6_linux_gnu
+CONDA_TOOLCHAIN_BUILD=x86_64-conda-linux-gnu
+CONDA_TOOLCHAIN_HOST=x86_64-conda-linux-gnu
+CPPFLAGS=-DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include
+CPP=$PREFIX/bin/x86_64-conda-linux-gnu-cpp
+DEBUG_CFLAGS=-march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-all -fno-plt -Og -g -Wall -Wextra -fvar-tracking-assignments -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/rapidgzip-0.11.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+DEBUG_CPPFLAGS=-D_DEBUG -D_FORTIFY_SOURCE=2 -Og -isystem $PREFIX/include
+GCC_AR=$PREFIX/bin/x86_64-conda-linux-gnu-gcc-ar
+GCC=$PREFIX/bin/x86_64-conda-linux-gnu-gcc
+GCC_NM=$PREFIX/bin/x86_64-conda-linux-gnu-gcc-nm
+GCC_RANLIB=$PREFIX/bin/x86_64-conda-linux-gnu-gcc-ranlib
+host_alias=x86_64-conda-linux-gnu
+HOST=x86_64-conda-linux-gnu
+LDFLAGS=-Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,--allow-shlib-undefined -Wl,-rpath,$PREFIX/lib -Wl,-rpath-link,$PREFIX/lib -L$PREFIX/lib
+MESON_ARGS=--buildtype release --prefix=$PREFIX -Dlibdir=lib
INFO: activate-gxx_linux-64.sh made the following environmental changes:
+CXXFLAGS=-fvisibility-inlines-hidden -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/rapidgzip-0.11.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+CXX_FOR_BUILD=$PREFIX/bin/x86_64-conda-linux-gnu-c++
+CXX=$PREFIX/bin/x86_64-conda-linux-gnu-c++
+DEBUG_CXXFLAGS=-fvisibility-inlines-hidden -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-all -fno-plt -Og -g -Wall -Wextra -fvar-tracking-assignments -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/rapidgzip-0.11.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix
+GXX=$PREFIX/bin/x86_64-conda-linux-gnu-g++
Traceback (most recent call last):
  File "/opt/miniconda3/conda-bld/rapidgzip_1703064500773/test_tmp/run_test.py", line 2, in <module>
import: 'rapidgzip'
    import rapidgzip
ImportError: /opt/miniconda3/conda-bld/rapidgzip_1703064500773/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place/lib/python3.10/site-packages/rapidgzip.cpython-310-x86_64-linux-gnu.so: undefined symbol: inflatePrime
WARNING: Tests failed for rapidgzip-0.11.0-py310hd5d28ae_0.tar.bz2 - moving package to /opt/miniconda3/conda-bld/broken
TESTS FAILED: rapidgzip-0.11.0-py310hd5d28ae_0.tar.bz2

I'm still not any further to fix this issue and really would like some help. In the meantime, I guess, I'll have to read deeper into conda and try to find out how and which shared libraries it provides to my own package.

@mxmlnkn
Copy link
Contributor

mxmlnkn commented Dec 20, 2023

[ ] generate THIRDPARTY.yaml during the build step, so that upstream licenses are updated automatically if changed

How do I do that? Is there an example I can merge into this PR?

@carterbox
Copy link
Member

build/script can have multiple lines or you can use a file named build.sh

@ap--
Copy link
Member Author

ap-- commented Dec 20, 2023

Hello everyone,

Sorry for the delay. It was a busy month and I'm currently on holiday.
@mxmlnkn I invited you to the staged-recipes fork on my account in case you want to push to this PR.
It's unlikely I can contribute before early January.

Happy holidays everyone 🎄
Andreas

@mxmlnkn
Copy link
Contributor

mxmlnkn commented Dec 20, 2023

Hello everyone,

Sorry for the delay. It was a busy month and I'm currently on holiday. @mxmlnkn I invited you to the staged-recipes fork on my account in case you want to push to this PR. It's unlikely I can contribute before early January.

Happy holidays everyone 🎄 Andreas

Thanks, I have pushed to this PR, which is probably for the best because there already have been reviews here. Unfortunately, I'm not any closer to fixing that zlib problem.

@carterbox
Copy link
Member

Conda build has a link checker. If you look at the logs, you will notice that the link checker doesn't detect any links from any of the binaries in your package to libz. In fact, it warns you that the dependencies on libzlib are unused.

I also don't see any linking args being passed to gcc in the build logs. There are some big L -L args which tell where to look for libraries, but no little l -l that tell which libraries need to be linked.

My suggestion is that the python build Extension definition is missing some linking args for each non-header library that is set to system.

tl;dr inflatePrime is undefined probably because you didn't tell the compiler is needs to link to libz.

@mbhall88
Copy link

Just a friendly ping to ask how this is progressing? I love rapidgzip and would love to be have a conda package for it. Though sounds like the zlib linking is being problematic?

@mxmlnkn
Copy link
Contributor

mxmlnkn commented Aug 19, 2024

Just a friendly ping to ask how this is progressing? I love rapidgzip and would love to be have a conda package for it. Though sounds like the zlib linking is being problematic?

I'm unable to bundle zlib as desired by the conda maintainers and "developing" for conda is cumbersome. Any help would be welcome.

@stale
Copy link

stale bot commented Apr 27, 2025

Hi friend!

We really, really, really appreciate that you have taken the time to make a PR on conda-forge/staged-recipes! conda-forge only exists because people like you donate their time to build and maintain conda recipes for use by the community.

In an effort to maintain this repository and increase the signal-to-noise for open PRs, the maintainers of staged-recipes close excessively old PRs after six months. This PR will remain open for another month, and then will be closed.

If you'd like to keep it open, please comment/push and we will be happy to oblige! Note that very old PRs will likely need to be rebased on main so that they can be rebuilt with the most recent CI scripts. If you have any trouble, or we missed reviewing this PR in the first place (sorry!), feel free to ping the team using a special command in a comment on the PR to get the attention of the staged-recipes team.

Cheers and thank you for contributing to this community effort!

@stale stale bot added the stale will be closed in 30 days label Apr 27, 2025
@github-actions
Copy link
Contributor

Hi! This is the staged-recipes linter and your PR looks excellent! 🚀

@mxmlnkn mxmlnkn force-pushed the rapidgzip branch 2 times, most recently from 36f7a81 to 442b4fa Compare August 18, 2025 16:40
@stale stale bot removed the stale will be closed in 30 days label Aug 18, 2025
@conda-forge-admin
Copy link
Contributor

conda-forge-admin commented Aug 18, 2025

Hi! This is the friendly automated conda-forge-linting service.

I wanted to let you know that I linted all conda-recipes in your PR (recipes/rapidgzip/meta.yaml) and found some lint.

Here's what I've got...

For recipes/rapidgzip/meta.yaml:

  • ❌ This recipe is using a compiler, which now requires adding a build dependence on {{ stdlib("c") }} as well. Note that this rule applies to each output of the recipe using a compiler. For further details, please see META: {{ stdlib("c") }} migration conda-forge.github.io#2102.
  • ❌ You're setting a requirement on sysroot_linux- directly; this should now be done by adding a build dependence on {{ stdlib("c") }}, and overriding c_stdlib_version in recipe/conda_build_config.yaml for the respective platform as necessary. For further details, please see META: {{ stdlib("c") }} migration conda-forge.github.io#2102.
  • ❌ In your conda_build_config.yaml, please change the name of MACOSX_DEPLOYMENT_TARGET, to c_stdlib_version!

For recipes/rapidgzip/meta.yaml:

  • ℹ️ PyPI default URL is now pypi.org, and not pypi.io. You may want to update the default source url.

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/17048539144. Examine the logs at this URL for more detail.

@mxmlnkn mxmlnkn force-pushed the rapidgzip branch 2 times, most recently from 70d6e7c to 8604aa6 Compare August 18, 2025 18:02
@conda-forge-admin
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/rapidgzip/meta.yaml) and found it was in an excellent condition.

I do have some suggestions for making it better though...

For recipes/rapidgzip/meta.yaml:

  • ℹ️ No valid build backend found for Python recipe for package rapidgzip using pip. Python recipes using pip need to explicitly specify a build backend in the host section. If your recipe has built with only pip in the host section in the past, you likely should add setuptools to the host section of your recipe.

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/17048826010. Examine the logs at this URL for more detail.

@mxmlnkn
Copy link
Contributor

mxmlnkn commented Aug 18, 2025

Everything should be in order now! @carterbox's observations were completely right, I was just too inept to translate them into a fix in setup.py. All dependencies are now built via conda (cxxopts, zlib) or disabled (rpmalloc, ISA-L). This also makes the THIRDPARTY.yml obsolete

@conda-forge/staged-recipes ready for review.

@github-actions
Copy link
Contributor

To help direct your pull request to the best reviewers, please mention a topic-specifc team if your recipe matches any of the following: conda-forge/help-c-cpp, conda-forge/help-cdts, conda-forge/help-go, conda-forge/help-java, conda-forge/help-julia, conda-forge/help-nodejs, conda-forge/help-perl, conda-forge/help-python, conda-forge/help-python-c, conda-forge/help-r, conda-forge/help-ruby,or conda-forge/help-rust. Thanks!

@mxmlnkn
Copy link
Contributor

mxmlnkn commented Aug 18, 2025

@conda-forge/help-python-c ready for review

@carterbox carterbox merged commit 75ea87f into conda-forge:main Aug 26, 2025
7 checks passed
@carterbox
Copy link
Member

Good job!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants