Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building conda pacakge and uploading it to conda-forge #51

Open
munechika-koyo opened this issue Nov 12, 2024 · 1 comment
Open

Building conda pacakge and uploading it to conda-forge #51

munechika-koyo opened this issue Nov 12, 2024 · 1 comment

Comments

@munechika-koyo
Copy link

munechika-koyo commented Nov 12, 2024

Hello!

Currently, I am trying to create conda packages for IMAS-related libraries.
To retrieve dependencies through the conda-forge repository, I propose providing UDA-related conda packages.

I would like to share configure files I created, which are used by rattler-build conda package build tool:


recipe.yaml
context:
  name: UDA
  version: "2.8.0"
  username: ukaea

recipe:
  name: ${{ name|lower }}
  version: ${{ version }}

source:
  url: https://github.com//${{ username }}/${{ name }}/archive/refs/tags/${{ version }}.tar.gz
  sha256: decfe8af6a6cdf1913695f8ed8ae6eadbe86aa6eaf995af0d665bb7e39bf3650

outputs:
  - package:
      name: ${{ name|lower }}-client-cpp
      version: ${{ version }}
    build:
      number: 0
      script:
        - if: unix
          then: build-client-cpp.sh
        - if: win
          then: build-client-cpp.bat

    requirements:
      build:
        - ${{ compiler("cxx") }}
        - git
        - cmake
        - ninja
        - pkg-config
      host:
        - libxml2
        - libboost-devel
        - fmt
        - openssl
        - capnproto
      run_exports:
        - uda-client-cpp

about:
  homepage: https://ukaea.github.io/UDA/
  summary: Universal Data Access library to provide data over the network in a unified data object.
  description: |
    The UDA can be either run as a client-server API, running as thin client with all functionality
    being handled on a remote server, or as fat-client API where both the client access and plugin
    functionality is run on the local machine.
  license: Apache-2.0
  license_file: LICENCE.txt
  documentation: https://ukaea.github.io/UDA/
  repository: https://github.com/ukaea/UDA

extra:
  feedstock-name: uda-feedstock
  recipe-maintainers:
    - munechika-koyo
build-client-cpp.sh
#!/bin/bash

# CMake extra configuration:
extra_cmake_args=(
    -GNinja
    -DBUILD_SHARED_LIBS=ON
    # SSL/RTL X509 authentication
    -DSSLAUTHENTICATION=ON
    # Build client
    -DCLIENT_ONLY=ON
    -DSERVER_ONLY=OFF
    # Enable Cap’n Proto serialisation
    -DENABLE_CAPNP=ON
    # Wrappers (Only C++)
    -DNO_WRAPPERS=OFF
    -DNO_CXX_WRAPPER=OFF
    -DNO_IDL_WRAPPER=ON
    -DNO_PYTHON_WRAPPER=ON
    -DNO_JAVA_WRAPPER=ON
    -DFAT_IDL=OFF
    -DNO_CLI=OFF
)

mkdir build && cd build

cmake ${CMAKE_ARGS} "${extra_cmake_args[@]}" \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_PREFIX_PATH=$PREFIX \
    -DCMAKE_INSTALL_PREFIX=$PREFIX \
    $SRC_DIR

# Build and install
ninja
ninja install
variants.yaml
c_stdlib:
  - if: linux
    then: sysroot
  - if: osx
    then: macosx_deployment_target

c_stdlib_version:
  - if: linux
    then: 2.17
  - if: osx and x86_64
    then: 10.13
  - if: osx and arm64
    then: 11.0

The recipe is designed to reproduce several output packages like

  • Client only / C++ wrapper (that I show here)
  • Client only / Python wrapper
  • Client only / JAVA wrapper
  • Client only / full wrapper
  • Fat client only / ... wrapper
  • Server only
  • etc.

How to build conda package by rattler-build

If you install rattler-build, please run the following commands:

rattler-build build --recipe-dir path/to/directory/contains/recipe.yaml_and_build-client-cpp.sh_and_variants.yaml --experimental

I would appreciate it if you would consider this proposal and share what outputs we should offer.

@jholloc
Copy link
Collaborator

jholloc commented Nov 14, 2024

Hi. Please create a PR with these conda packages and we will have a look at merging them into the code.

It would be good if you could also create a GitHub action to run the packages so we can test them.

Note that we cannot commit to support these packages going forward, though we can keep the version numbers up to date on releases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants