Skip to content

Commit

Permalink
[build] add auto pypi package build & bump ver to 3.2.1
Browse files Browse the repository at this point in the history
  • Loading branch information
the-hampel committed Mar 20, 2024
1 parent 30acad9 commit 1b3bd67
Show file tree
Hide file tree
Showing 8 changed files with 190 additions and 2 deletions.
65 changes: 65 additions & 0 deletions .github/workflows/publish-to-pypi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: PyPI

on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
- '[0-9]+.[0-9]+.[0-9]+rc[0-9]+'

jobs:
build:
name: Build distribution 📦
runs-on: ubuntu-latest
container: # we have to provide a working triqs installation to make the cmake step work
image: flatironinstitute/triqs:latest
options: --user root

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install pypa/build
run: >-
python3 -m
pip install
build toml
--user
- name: prepare python distribution
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
cmake -S . -B build/
cp build/packaging/pypi/* ./
mv build/python/triqs_hubbardI/version.py ./python/triqs_hubbardI/version.py
rm ./python/triqs_hubbardI/version.py.in
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/

publish-to-pypi:
name: Publish PyPI 🐍
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/hubbardI
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
skip-existing: true # skip if version name package already exists on pypi

5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ cmake_policy(VERSION 3.20)

# ############
# Define Project
project(triqs_hubbardI VERSION 3.2.0 LANGUAGES C CXX)
project(triqs_hubbardI VERSION 3.2.1 LANGUAGES C CXX)
get_directory_property(IS_SUBPROJECT PARENT_DIRECTORY)

# ############
Expand Down Expand Up @@ -104,6 +104,9 @@ endif()
# Additional configuration files
add_subdirectory(share)

# add packaging for automatic Versioning
add_subdirectory(packaging)

# #############
# Debian Package

Expand Down
5 changes: 5 additions & 0 deletions doc/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

# Changelog

## Version 3.2.1

hubbardI version 3.2.1 is a small update
* automatically build pypi packages

## Version 3.2.0

hubbardI version 3.2.0 is a compatibility release for TRIQS version 3.2.0
Expand Down
9 changes: 9 additions & 0 deletions packaging/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Configure the version of packaging files
configure_file(conda/meta.yaml.in conda/meta.yaml)
configure_file(conda/build.sh conda/build.sh COPYONLY)
configure_file(conda/conda_build_config.yaml conda/conda_build_config.yaml COPYONLY)
configure_file(pypi/MANIFEST.in pypi/MANIFEST.in COPYONLY)
configure_file(pypi/pyproject.toml.in pypi/pyproject.toml)
configure_file(TRIQS-hubbardI-foss-2021b.eb.in TRIQS-hubbardI-foss-2021b.eb)


58 changes: 58 additions & 0 deletions packaging/TRIQS-hubbardI-foss-2021b.eb.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
easyblock = 'CMakeMake'

name = 'TRIQS-hubbardI'
version = '@PROJECT_VERSION@'

homepage = 'https://triqs.github.io/hubbardI/'
description = """
Hubbard-I impurity solver based on the TRIQS library
"""

docurls = ['https://triqs.github.io/hubbardI/%(version_major_minor)s.x/']
software_license = 'LicenseGPLv3'

toolchain = {'name': 'foss', 'version': '2021b'}
toolchainopts = {'pic': True, 'usempi': True}

source_urls = ['https://github.com/TRIQS/hubbardI/releases/download/%(version)s/']
sources = ['hubbardI-%(version)s.tar.gz']
checksums = ['PUT HERE THE SHA256 OF THE RELEASE TARBALL']

dependencies = [
('Python', '3.9.6'),
('SciPy-bundle', '2021.10'),
('Boost', '1.77.0'),
('Clang', '13.0.1'),
('Clang-Python-bindings', '13.0.1'),
('GMP', '6.2.1'),
('HDF5', '1.10.7'),
('Mako', '1.1.4'),
('TRIQS', '3.2.0'),
('NFFT', '3.5.2')
]

builddependencies = [
('CMake', '3.22.1')
]

separate_build_dir = True

runtest = 'test'

sanity_check_paths = {
'dirs': ['lib', 'share',
'lib/python%(pyshortver)s/site-packages/triqs_hubbardI'],
}

sanity_check_commands = ["python -c 'import triqs_hubbardI'"]

modextrapaths = {
'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages/triqs_hubbardI',
'CMAKE_PREFIX_PATH': 'lib/cmake/hubbardI',
}
modextravars = {
'HUBBARDI_ROOT': '%(installdir)s',
'HUBBARDI_VERSION': '%(version)s',
}

moduleclass = 'phys'
2 changes: 1 addition & 1 deletion packaging/conda/meta.yaml → packaging/conda/meta.yaml.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% set version = "3.1.0" %}
{% set version = "@PROJECT_VERSION@" %}

package:
name: hubbardI
Expand Down
13 changes: 13 additions & 0 deletions packaging/pypi/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
prune test
prune .git
prune .github
prune doc
prune share
prune Docker
prune deps
prune packaging
prune paper
prune bin
prune build

global-exclude .clang-format .clang-tidy .dockerignore .gitignore CMakeLists.txt Jenkinsfile
35 changes: 35 additions & 0 deletions packaging/pypi/pyproject.toml.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
where = ["python"]

[project]
name = "hubbardI"
version = "@PROJECT_VERSION@"
authors = [
{ name="TRIQS", email="[email protected]" }
]
description = "Hubbard-I impurity solver based on the TRIQS library"
readme = "README.md"
keywords = ["triqs", "hhubbard-I", "impurity solver", "dmft"]
requires-python = ">=3.7"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Operating System :: OS Independent",
]
dependencies = [
"numpy",
"scipy"
]

[project.urls]
"Homepage" = "https://triqs.github.io/hartree_fock"
"Bug Tracker" = "https://github.com/triqs/hartree_fock/issues"

# in case you want an executable hook of your app
# [project.scripts]
# solid_dmft = "solid_dmft.main:main"

0 comments on commit 1b3bd67

Please sign in to comment.