Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
# build and publish manylinux_2_28_x86_64 with GraalVM, Maven and Poetry
# build and publish custom manylinux with GraalVM, Maven, and Poetry
name: Docker
on:
workflow_dispatch:
inputs:
tag:
description: "Tag for the Docker image"
description: "Tag for the Many-Linux Docker image"
required: true
default: "latest"

jobs:
login:
runs-on: ubuntu-latest
strategy:
matrix:
arch:
- os: ubuntu-latest
type: x86_64
- os: ubuntu-24.04-arm
type: aarch64
runs-on: ${{ matrix.arch.os }}
steps:
- name: Check out
uses: actions/checkout@v4
Expand All @@ -32,6 +38,8 @@ jobs:
uses: docker/build-push-action@v6
with:
context: docker
file: docker/Dockerfile_manylinux_2_28_x86_64
file: docker/Dockerfile_manylinux_2_34_${{ matrix.arch.type }}
push: true
tags: ghcr.io/virtualcell/manylinux_2_28_x86_64:${{ github.event.inputs.tag }}
tags: |
ghcr.io/virtualcell/manylinux_2_34_${{ matrix.arch.type }}:${{ github.event.inputs.tag }}
ghcr.io/virtualcell/manylinux_2_34_${{ matrix.arch.type }}:latest
30 changes: 26 additions & 4 deletions .github/workflows/on-release-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,14 @@ jobs:
build:
strategy:
matrix:
os: [macos-15-intel, windows-latest, ubuntu-latest, macos-15]
os:
[
macos-15-intel,
windows-latest,
ubuntu-latest,
ubuntu-24.04-arm,
macos-15,
]
fail-fast: false
runs-on: ${{ matrix.os }}
defaults:
Expand Down Expand Up @@ -45,15 +52,30 @@ jobs:

- name: Set MACOSX_DEPLOYMENT_TARGET used by cibuildwheel
if: ${{ startsWith(matrix.os, 'macos') }}
run: echo "MACOSX_DEPLOYMENT_TARGET=15.0" >> $GITHUB_ENV
run: |
echo "MACOSX_DEPLOYMENT_TARGET=13.0" >> $GITHUB_ENV
echo "NATIVE_IMAGE_OPTIONS=--native-compiler-options=-mmacosx-version-min=13.0 -H:NativeLinkerOption=-mmacosx-version-min=13.0" >> $GITHUB_ENV

- name: Set cibuildwheel archs
if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
ARCH=$(uname -m)
echo "ARCH_DEF=$ARCH" >> $GITHUB_ENV

- name: Run cibuildwheel
uses: pypa/cibuildwheel@v3.4.0
if: ${{ startsWith(matrix.os, 'ubuntu') }}
env:
CIBW_BUILD: "cp311-*${{ env.ARCH_DEF }} cp312-*${{ env.ARCH_DEF }} cp313-*${{ env.ARCH_DEF }} cp314-*${{ env.ARCH_DEF }}"
# CIBW_BUILD_VERBOSITY_LINUX: 2

- name: Run cibuildwheel
if: ${{ !startsWith(matrix.os, 'ubuntu') }}
run: |
pip install cibuildwheel
cibuildwheel --debug-traceback --output-dir wheelhouse
env:
CIBW_BUILD_VERBOSITY_LINUX: 2

CIBW_BUILD: "cp311-* cp312-* cp313-* cp314-*"
- name: Copy wheels to dist directory
run: |
mkdir -p dist
Expand Down
26 changes: 26 additions & 0 deletions docker/Dockerfile_manylinux_2_34_aarch64
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM quay.io/pypa/manylinux_2_34_aarch64

ARG GRAALVM_VERSION=23.0.2
ARG GRAALVM_BUILD=7.1
ARG GRAALVM_ARCH=aarch64
ARG MAVEN_VERSION=3.9.15

# install graalvm community edition
RUN cd /opt && \
curl -L -o graalvm.tar.gz https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${GRAALVM_VERSION}/graalvm-community-jdk-${GRAALVM_VERSION}_linux-${GRAALVM_ARCH}_bin.tar.gz && \
tar -xzf graalvm.tar.gz
ENV GRAALVM_HOME=/opt/graalvm-community-openjdk-${GRAALVM_VERSION}+${GRAALVM_BUILD}
ENV JAVA_HOME=${GRAALVM_HOME}
ENV PATH=${GRAALVM_HOME}/bin:$PATH

# install Poetry
RUN dnf install python3.13 -y
RUN ln -s /usr/local/bin/python3.13 /usr/local/bin/python3
RUN (curl -sSL https://install.python-poetry.org | python3 -) || ( echo "" && echo "" && echo "" && echo 'LogContents:' && cat /poetry-installer-error-*.log && exit 1)
ENV PATH=~/.local/bin:$PATH

# Install Maven

RUN cd /opt && curl -L -o apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz && ls && tar -xzvf apache-maven.tar.gz
ENV MAVEN_HOME=/opt/apache-maven-${MAVEN_VERSION}
ENV PATH=${MAVEN_HOME}/bin:$PATH
26 changes: 26 additions & 0 deletions docker/Dockerfile_manylinux_2_34_x86_64
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM quay.io/pypa/manylinux_2_34_x86_64

ARG GRAALVM_VERSION=23.0.2
ARG GRAALVM_BUILD=7.1
ARG GRAALVM_ARCH=x64
ARG MAVEN_VERSION=3.9.15

# install graalvm community edition
RUN cd /opt && \
curl -L -o graalvm.tar.gz https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${GRAALVM_VERSION}/graalvm-community-jdk-${GRAALVM_VERSION}_linux-${GRAALVM_ARCH}_bin.tar.gz && \
tar -xzf graalvm.tar.gz
ENV GRAALVM_HOME=/opt/graalvm-community-openjdk-${GRAALVM_VERSION}+${GRAALVM_BUILD}
ENV JAVA_HOME=${GRAALVM_HOME}
ENV PATH=${GRAALVM_HOME}/bin:$PATH

# install Poetry
RUN dnf install python3.13 -y
RUN ln -s /usr/local/bin/python3.13 /usr/local/bin/python3
RUN (curl -sSL https://install.python-poetry.org | python3 -) || ( echo "" && echo "" && echo "" && echo 'LogContents:' && cat /poetry-installer-error-*.log && exit 1)
ENV PATH=~/.local/bin:$PATH

# Install Maven

RUN cd /opt && curl -L -o apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz && ls && tar -xzvf apache-maven.tar.gz
ENV MAVEN_HOME=/opt/apache-maven-${MAVEN_VERSION}
ENV PATH=${MAVEN_HOME}/bin:$PATH
22 changes: 12 additions & 10 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "libvcell"
version = "0.0.15"
version = "0.0.15.2"
description = "This is a python package which wraps a subset of VCell Java code as a native python package."
authors = ["Jim Schaff <schaff@uchc.edu>", "Ezequiel Valencia <evalencia@uchc.edu>"]
repository = "https://github.com/virtualcell/libvcell"
Expand Down Expand Up @@ -40,15 +40,17 @@ mkdocstrings = {extras = ["python"], version = "^0.27.0"}

[tool.cibuildwheel]
build-frontend = "pip"
build = "cp311-* cp312-* cp313-*"
manylinux-x86_64-image = "ghcr.io/virtualcell/manylinux_2_28_x86_64:0.0.1"
skip = "cp311-musllinux_x86_64 cp312-musllinux_x86_64 cp313-musllinux_x86_64"

[tool.cibuildwheel.linux]
archs = ["x86_64"]

[tool.cibuildwheel.windows]
archs = ["AMD64"]
manylinux-x86_64-image = "ghcr.io/virtualcell/manylinux_2_34_x86_64:latest"
manylinux-pypy_x86_64-image = "ghcr.io/virtualcell/manylinux_2_34_x86_64:latest"
manylinux-aarch64-image = "ghcr.io/virtualcell/manylinux_2_34_aarch64:latest"
manylinux-pypy_aarch64-image = "ghcr.io/virtualcell/manylinux_2_34_aarch64:latest"
skip = "*-musllinux* *i686 *ppc64le *s390x *armv7l *riscv64"

#[tool.cibuildwheel.linux]
#archs = ["x86_64"]
#
#[tool.cibuildwheel.windows]
#archs = ["AMD64"]

[tool.setuptools.package-data]
libvcell = ["lib/*"]
Expand Down
Loading