Skip to content

Commit

Permalink
Merge pull request #9 from gadgetron/hansenms/conda-build
Browse files Browse the repository at this point in the history
Adding conda build and publish
  • Loading branch information
hansenms authored Aug 31, 2022
2 parents 57dfba0 + 4edc37b commit e321113
Show file tree
Hide file tree
Showing 11 changed files with 206 additions and 5 deletions.
39 changes: 39 additions & 0 deletions .github/workflows/gadgetron_python_conda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
on:
pull_request:
branches:
- master
release:
types:
- created

jobs:
build-conda-packages:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
- uses: conda-incubator/setup-miniconda@e81abac10ce2c37423b54eae5af93aa3b4d3475c
with:
activate-environment: ismrmrd-python-build
environment-file: conda/environment.yml
python-version: 3.9
auto-activate-base: false
- name: Build conda package
shell: bash -l {0}
working-directory: conda
run: |
./package.sh
echo "Packages built: $(find build_pkg -name gadgetron-python*.tar.bz2)"
- name: Push conda package
shell: bash -l {0}
if: ${{ github.event_name == 'release' }}
env:
ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }}
working-directory: conda
run: |
for p in $(find build_pkg -name gadgetron-python*.tar.bz2)
do
./publish_package.sh -u gadgetron -t "$ANACONDA_TOKEN" -p "$p"
done
3 changes: 3 additions & 0 deletions conda/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
build_pkg/
.pytest_cache/
__pycache__/
5 changes: 5 additions & 0 deletions conda/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

set -euo pipefail

pip install .
3 changes: 3 additions & 0 deletions conda/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
python:
- 3.9
- 3.10
7 changes: 7 additions & 0 deletions conda/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
name: gadgetron-python-build
channels:
- conda-forge
dependencies:
- conda-build
- anaconda-client

32 changes: 32 additions & 0 deletions conda/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{% set data = load_setup_py_data() %}

package:
name: gadgetron-python
version: {{ data.get('version') }}

source:
path: ../

requirements:
build:
- python {{ python }}
- ismrmrd-python>=1.12.5
- numpy>=1.22.0
- pyFFTW>=0.11
- multimethod>=1.0

run:
- python
- numpy>=1.22.0
- pyFFTW>=0.11
- multimethod>=1.0
- ismrmrd-python>=1.12.5

about:
home: https://github.com/gadgetron/gadgetron-python
license: MIT
summary: 'Python interface for Gadgetron'
description: |
Interface and utilities for the writing Gadgetron applications in Python.
dev_url: https://github.com/gadgetron/gadgetron-python
doc_url: https://github.com/gadgetron/gadgetron-python
25 changes: 25 additions & 0 deletions conda/package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash
set -euo pipefail

usage()
{
cat << EOF
Builds the gadgetron-python conda package.
Usage: $0
EOF
}

output_path="$(dirname "$0")/build_pkg"

# Build up channel directives
channels=(
conda-forge
ismrmrd
)

channel_directives=$(printf -- "-c %s " "${channels[@]}")

mkdir -p "$output_path"
bash -c "conda build --no-anaconda-upload --output-folder $output_path $channel_directives $(dirname "$0")"
77 changes: 77 additions & 0 deletions conda/publish_package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#!/bin/bash
set -euo pipefail

usage()
{
cat << EOF
Publishes a conda package.
Usage: $0 [options]
Options:
-p|--package_path <path> Path to the package (tar.gz) to push
-u|--user <user> Anaconda.org channeluser or organization
-t|--token <token> Token for uploading to anaconda.org
-f|--force Force push even if package exists
-h| --help Brings up this menu
EOF
}

while [[ $# -gt 0 ]]; do
key="$1"

case $key in
-p|--package_path)
package_path="$2"
shift
shift
;;
-u|--user)
user="$2"
shift
shift
;;
-t|--token)
token="$2"
shift
shift
;;
--force)
force=1
shift
;;
-h|--help)
usage
exit
;;
*)
echo "ERROR: unknown option \"$key\""
usage
exit 1
;;
esac
done

if [[ -z "${package_path:-}" ]]; then
echo "You cannot push to anaconda without a package"
echo "Please supply a package path with the --package_path argument"
exit 1
fi
if [[ -z "${token:-}" ]]; then
echo "You cannot push to anaconda without a token"
echo "Please supply a token with the --token argument"
exit 1
fi
if [[ -z "${user:-}" ]]; then
echo "You cannot push to anaconda without a user"
echo "Please supply a user with the --user argument"
exit 1
fi

force_directive="--skip-existing"
if [[ -n ${force:-} ]]; then
force_directive="--force"
fi

anaconda -t "$token" upload -u "$user" $force_directive "$package_path"
10 changes: 10 additions & 0 deletions conda/run_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import sys

def ensure_importable():
try:
import gadgetron
except ModuleNotFoundError or ImportError as ee:
print('This dummy test script can only run if gadgetron is importable : {0}'.format(ee.msg), file=sys.stderr)
exit(1)

ensure_importable()
4 changes: 2 additions & 2 deletions gadgetron/version.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

major = 1
minor = 3
build = 6
minor = 4
build = 0

version = f"{major}.{minor}.{build}"
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
author_email='[email protected]',
description='',
install_requires=[
'numpy>=1.15.1',
'ismrmrd>=1.6.2',
'numpy>=1.22',
'ismrmrd>=1.12.5',
'pyFFTW>=0.11',
'multimethod >= 1.0'
'multimethod>=1.0'
]
)

0 comments on commit e321113

Please sign in to comment.