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

PEP621 and hatch scripts #202

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
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
3 changes: 3 additions & 0 deletions .git_archival.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node: $Format:%H$
node-date: $Format:%cI$
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.git_archival.txt export-subst
27 changes: 10 additions & 17 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,21 @@
name: release
name: 🚀 Release

on:
release:
types: [published]
workflow_dispatch:
inputs:
ref:
description: 'Tag to release'
required: true

jobs:
release:
name: 🚀 Release
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/fmf
permissions:
id-token: write # For pypi-publish
steps:
- uses: actions/checkout@v2
if: ${{ github.event_name == 'release' }}
- uses: actions/checkout@v2
if: ${{ github.event_name == 'workflow_dispatch' }}
with:
ref: ${{ github.event.inputs.ref }}
- name: Create dist
run: make wheel
- uses: actions/checkout@v4
- name: Build package
run: pipx hatch build
LecrisUT marked this conversation as resolved.
Show resolved Hide resolved
- name: Publish to PyPI
LecrisUT marked this conversation as resolved.
Show resolved Hide resolved
uses: pypa/gh-action-pypi-publish@release/v1
with:
LecrisUT marked this conversation as resolved.
Show resolved Hide resolved
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
10 changes: 0 additions & 10 deletions .packit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,6 @@ synced_files:
upstream_package_name: fmf
downstream_package_name: fmf

actions:
create-archive:
- make tarball
get-current-version:
- make version

srpm_build_deps:
- make
- python3-docutils

jobs:
- job: copr_build
trigger: pull_request
Expand Down
1 change: 0 additions & 1 deletion MANIFEST.in

This file was deleted.

39 changes: 13 additions & 26 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
# Prepare variables
TMP = $(CURDIR)/tmp
VERSION = $(shell grep ^Version fmf.spec | sed 's/.* //')
COMMIT = $(shell git rev-parse --short HEAD)
REPLACE_VERSION = "s/running from the source/$(VERSION) ($(COMMIT))/"
VERSION = $(hatch version)
PACKAGE = fmf-$(VERSION)
FILES = LICENSE README.rst \
Makefile fmf.spec setup.py \
examples fmf bin tests
Makefile fmf.spec pyproject.toml \
examples fmf tests

# Define special targets
all: docs packages
Expand All @@ -19,35 +17,25 @@ tmp:

# Run the test suite, optionally with coverage
test: tmp
pytest tests/unit -c tests/unit/pytest.ini
hatch run test:unit
smoke: tmp
pytest tests/unit/test_smoke.py -c tests/unit/pytest.ini
hatch run test:smoke
coverage: tmp
coverage run --source=fmf,bin -m py.test -c tests/unit/pytest.ini tests
coverage report
coverage annotate
hatch run cov:cov


# Build documentation, prepare man page
docs: man
cd docs && make html
man: source
hatch run docs:html
man:
cp docs/header.txt $(TMP)/man.rst
tail -n+7 README.rst >> $(TMP)/man.rst
rst2man $(TMP)/man.rst > $(TMP)/$(PACKAGE)/fmf.1


# RPM packaging
source: clean tmp
mkdir -p $(TMP)/SOURCES
mkdir -p $(TMP)/$(PACKAGE)
cp -a $(FILES) $(TMP)/$(PACKAGE)
sed -i $(REPLACE_VERSION) $(TMP)/$(PACKAGE)/fmf/__init__.py
tarball: source man
cd $(TMP) && tar cfz SOURCES/$(PACKAGE).tar.gz $(PACKAGE)
@echo ./tmp/SOURCES/$(PACKAGE).tar.gz
version:
@echo "$(VERSION)"
tarball: man
hatch build -t sdist
rpm: tarball
rpmbuild --define '_topdir $(TMP)' -bb fmf.spec
srpm: tarball
Expand All @@ -57,10 +45,9 @@ packages: rpm srpm

# Python packaging
wheel:
python setup.py bdist_wheel
python3 setup.py bdist_wheel
upload:
twine upload dist/*.whl
hatch build -t wheel
upload: wheel tarball
hatch publish
martinhoyer marked this conversation as resolved.
Show resolved Hide resolved


# Vim tags and cleanup
Expand Down
40 changes: 0 additions & 40 deletions bin/fmf

This file was deleted.

80 changes: 36 additions & 44 deletions fmf.spec
Original file line number Diff line number Diff line change
@@ -1,79 +1,71 @@
Name: fmf
Version: 1.4.1
Release: 1%{?dist}
Name: fmf
Version: 0.0.0
Release: 1%{?dist}

LecrisUT marked this conversation as resolved.
Show resolved Hide resolved
Summary: Flexible Metadata Format
License: GPLv2+
BuildArch: noarch
Summary: Flexible Metadata Format
License: GPL-2.0-or-later
BuildArch: noarch

URL: https://github.com/psss/fmf
Source0: https://github.com/psss/fmf/releases/download/%{version}/fmf-%{version}.tar.gz
URL: https://github.com/teemtee/fmf
Source: %{pypi_source fmf}

# Main fmf package requires the Python module
Requires: python%{python3_pkgversion}-%{name} == %{version}-%{release}
BuildRequires: python3-devel
BuildRequires: python3dist(docutils)
BuildRequires: git-core
Requires: git-core

%py_provides python3-fmf

%description
The fmf Python module and command line tool implement a flexible
format for defining metadata in plain text files which can be
stored close to the source code. Thanks to hierarchical structure
with support for inheritance and elasticity it provides an
efficient way to organize data into well-sized text documents.
This package contains the command line tool.

%?python_enable_dependency_generator


%package -n python%{python3_pkgversion}-%{name}
Summary: %{summary}
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-setuptools
BuildRequires: python%{python3_pkgversion}-pytest
BuildRequires: python%{python3_pkgversion}-ruamel-yaml
BuildRequires: python%{python3_pkgversion}-filelock
BuildRequires: python%{python3_pkgversion}-jsonschema
BuildRequires: git-core
%{?python_provide:%python_provide python%{python3_pkgversion}-%{name}}
Requires: git-core

%description -n python%{python3_pkgversion}-%{name}
The fmf Python module and command line tool implement a flexible
format for defining metadata in plain text files which can be
stored close to the source code. Thanks to hierarchical structure
with support for inheritance and elasticity it provides an
efficient way to organize data into well-sized text documents.
This package contains the Python 3 module.
%prep
%autosetup -p1 -n fmf-%{version}


%prep
%autosetup
%generate_buildrequires
%if 0%{?el9}
export SETUPTOOLS_SCM_PRETEND_VERSION="%{version}"
%endif
%pyproject_buildrequires -x tests %{?epel:-w}


%build
%py3_build
%if 0%{?el9}
export SETUPTOOLS_SCM_PRETEND_VERSION="%{version}"
%endif
%pyproject_wheel
cp docs/header.txt man.rst
tail -n+7 README.rst >> man.rst
rst2man man.rst > fmf.1


%install
%py3_install
%pyproject_install
%pyproject_save_files fmf

mkdir -p %{buildroot}%{_mandir}/man1
install -pm 644 fmf.1* %{buildroot}%{_mandir}/man1


%check
%{__python3} -m pytest -vv -c tests/unit/pytest.ini -m 'not web'

%pyproject_check_import

%{!?_licensedir:%global license %%doc}

%files
%files -f %{pyproject_files}
%{_mandir}/man1/*
%{_bindir}/%{name}
%doc README.rst examples
# Epel9 does not tag the license file in pyproject_files as a license. Manually install it in this case
%if 0%{?el9}
LecrisUT marked this conversation as resolved.
Show resolved Hide resolved
%license LICENSE

LecrisUT marked this conversation as resolved.
Show resolved Hide resolved
%files -n python%{python3_pkgversion}-%{name}
%{python3_sitelib}/%{name}/
%{python3_sitelib}/%{name}-*.egg-info
%license LICENSE
%endif


%changelog
Expand Down
15 changes: 9 additions & 6 deletions fmf/__init__.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
""" Flexible Metadata Format """

# Version is replaced before building the package
__version__ = 'running from the source'
from __future__ import annotations

import importlib.metadata

from fmf.base import Tree
from fmf.context import Context
from fmf.utils import filter

__version__ = importlib.metadata.version("fmf")

__all__ = [
"Context",
"Tree",
"filter",
]

from fmf.base import Tree
from fmf.context import Context
from fmf.utils import filter
9 changes: 9 additions & 0 deletions fmf/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,3 +209,12 @@ def main(arguments=None, path=None):
""" Parse options, do what is requested """
parser = Parser(arguments, path)
return parser.output


def cli_entry():
try:
main()
except fmf.utils.GeneralError as error:
if "--debug" not in sys.argv:
fmf.utils.log.error(error)
raise
Loading
Loading