From 26afb658fb6dc645ff3c7f07c6f4139883b5034b Mon Sep 17 00:00:00 2001 From: Julian Keck <julian.keck9@kit.edu> Date: Tue, 2 Apr 2024 12:30:46 +0200 Subject: [PATCH] ADD initial ci for debian --- .gitlab-ci.yml | 22 ++++++ debian/changelog | 5 ++ debian/control | 27 ++++++++ debian/patches/01-initial-patch | 69 +++++++++++++++++++ debian/patches/series | 1 + debian/python3-netdb-client.lintian-overrides | 1 + debian/rules | 12 ++++ debian/source.lintian-overrides | 3 + debian/source/format | 1 + debian/upstream/metadata | 3 + 10 files changed, 144 insertions(+) create mode 100644 debian/changelog create mode 100644 debian/control create mode 100644 debian/patches/01-initial-patch create mode 100644 debian/patches/series create mode 100644 debian/python3-netdb-client.lintian-overrides create mode 100644 debian/rules create mode 100644 debian/source.lintian-overrides create mode 100644 debian/source/format create mode 100644 debian/upstream/metadata diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ead9577..e4fd69c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,3 +50,25 @@ build: only: - main - devel + +debian: + stage: build + resource_group: deb-${CI_COMMIT_BRANCH} # this prevents parallel (potentially racy) pipeline runs + script: + - apt-get install -y --no-install-recommends build-essential cdbs devscripts equivs fakeroot debhelper curl unzip + - curl https://gitlab.kit.edu/api/v4/projects/170104/jobs/artifacts/debian/download?job=build | funzip /dev/stdin > api-generator.deb + - apt-get install -yf ./api-generator.deb + - rm ./api-generator.deb + - export PROJECT_ROOT=$(pwd) + - mkdir /tmp/build/ + - cp -r . /tmp/build/netdb_client + - cd /tmp/build/netdb_client/ + - mk-build-deps -ir -t "apt-get -o Debug::pkgProblemResolver=yes -y --no-install-recommends" + - debuild -b -uc -us + - cp /tmp/build/*.deb $PROJECT_ROOT + artifacts: + paths: + - ./*.deb + expire_in: 7 days + only: + - debian diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..9d06a4e --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +netdb-client (0.1-1) UNRELEASED; urgency=medium + + * Initial release. + + -- Julian Keck <julian.keck9@kit.edu> Thu, 28 Mar 2024 09:45:10 +0100 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..4e225ec --- /dev/null +++ b/debian/control @@ -0,0 +1,27 @@ +Source: netdb-client +Maintainer: Julian Keck <julian.keck9@kit.edu> +Section: python +Priority: optional +Build-Depends: + debhelper-compat (= 13), + dh-python, + python3-all, + python3-setuptools, + python3-semver, + python3-wheel, + python3-requests, + aptitude +Standards-Version: 4.6.2 +Homepage: https://gitlab.kit.edu/scc-net/netvs/netdb-client +Vcs-Git: https://gitlab.kit.edu/scc-net/netvs/netdb-client.git +Vcs-Browser: https://gitlab.kit.edu/scc-net/netvs/netdb-client +Rules-Requires-Root: no + +Package: python3-netdb-client +Architecture: all +Multi-Arch: foreign +Depends: + ${misc:Depends}, + ${python3:Depends} +Description: TODO Better description + Bla bla blablabl jasfasd a diff --git a/debian/patches/01-initial-patch b/debian/patches/01-initial-patch new file mode 100644 index 0000000..cfc0b2b --- /dev/null +++ b/debian/patches/01-initial-patch @@ -0,0 +1,69 @@ +--- a/setup.py ++++ b/setup.py +@@ -4,12 +4,34 @@ + import os + import requests + import semver ++ ++ ++# True: a is larger ++def cmp_semver(a, b) -> bool: ++ for k in ['major', 'minor', 'patch', 'prerelease', 'build']: ++ if a[k] > b[k]: ++ return True ++ if b[k] > a[k]: ++ return False ++ return True ++ ++def semver_str(sv) -> str: ++ result = "" ++ if "major" in sv and sv["major"] is not None: ++ result += str(sv["major"]) ++ if "minor" in sv and sv["minor"] is not None: ++ result += str(sv["minor"]) ++ if "patch" in sv and sv["patch"] is not None: ++ result += "." + str(sv["patch"]) ++ if "prerelease" in sv and sv["prerelease"] is not None: ++ result += "-" + str(sv["prerelease"]) ++ return result.lstrip(".").lstrip("-").rstrip(".").rstrip("-") + +-vers = requests.get(f"{os.environ.get('NETDB_SCHEME', 'https')}://{os.environ.get('NETDB_ENDPOINT')}").json()[0] ++vers = requests.get(f"{os.environ.get('NETDB_SCHEME', 'https')}://{os.environ.get('NETDB_ENDPOINT')}", proxies={os.environ.get('NETDB_SCHEME', 'https'): ''}).json()[0] + largest_ver = None + for v in vers: +- sem_v = semver.Version.parse(v['numeric']) +- if largest_ver is None or largest_ver < sem_v: ++ sem_v = semver.parse(v['numeric']) ++ if largest_ver is None or cmp_semver(sem_v, largest_ver): + largest_ver = sem_v + + latest_previous_util_version = os.environ.get('LATEST_UTIL_VERSION', None) +@@ -19,14 +41,16 @@ + post_version = None + + def get_gen_version(): +- ver = subprocess.run(["pip freeze | grep net_api_generator"], shell=True, text=True, check=True, capture_output=True).stdout +- return ver.split('@')[-1][:12] ++ ver = subprocess.run(["aptitude show python3-net-api-generator | grep Version"], shell=True, text=True, check=True, capture_output=True).stdout ++ return ver.split(': ')[-1] + + class APIGenBuild(build_py): + def run(self): + build_versions = [f'{v["major"]}.{v["minor"]}' for v in vers] +- default_version = f'{largest_ver.major}.{largest_ver.minor}' ++ default_version = f'{largest_ver["major"]}.{largest_ver["minor"]}' + environ = os.environ.copy() ++ environ['http_proxy'] = "" ++ environ['https_proxy'] = "" + for version in build_versions: + target_dir = os.path.join(self.build_lib, 'netdb_client', f"api{version.replace('.', '')}") + self.mkpath(target_dir) +@@ -47,7 +71,7 @@ + + setup( + name='netdb_client', +- version=f'{str(largest_ver)}{".post" + str(post_version) if post_version is not None else ""}{".dev1" if os.environ.get("CI_COMMIT_BRANCH", "local") == "devel" else ""}+{util_version}', ++ version=f'{semver_str(largest_ver)}{".post" + semver_str(post_version) if post_version is not None else ""}{".dev1" if os.environ.get("CI_COMMIT_BRANCH", "local") == "devel" else ""}+{util_version}', + author='NETVS-Team <netvs@scc.kit.edu>', + description='This is a meta package to install the automatically generated NET-API definitions for the currently supported API versions.', + url='https://git.scc.kit.edu/scc-net/net-suite/netdb-client-lib', diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..00ec204 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +01-initial-patch diff --git a/debian/python3-netdb-client.lintian-overrides b/debian/python3-netdb-client.lintian-overrides new file mode 100644 index 0000000..e646f24 --- /dev/null +++ b/debian/python3-netdb-client.lintian-overrides @@ -0,0 +1 @@ +initial-upload-closes-no-bugs diff --git a/debian/rules b/debian/rules new file mode 100644 index 0000000..bf9e2ec --- /dev/null +++ b/debian/rules @@ -0,0 +1,12 @@ +#!/usr/bin/make -f + +export PYBUILD_NAME=netdb-client +export PYBUILD_TEST_PYTEST=0 +export NETDB_ENDPOINT=api.netdb.scc.kit.edu +export https_proxy="" +export http_proxy="" + +BUILD_DATE = $(shell LC_ALL=C date -u "+%B %d, %Y" -d "@$(SOURCE_DATE_EPOCH)") + +%: + dh $@ --with python3 --buildsystem=pybuild diff --git a/debian/source.lintian-overrides b/debian/source.lintian-overrides new file mode 100644 index 0000000..cb5ab09 --- /dev/null +++ b/debian/source.lintian-overrides @@ -0,0 +1,3 @@ +missing-prerequisite-for-pyproject-backend +debian-watch-file-is-missing +very-long-line-length-in-source-file diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 0000000..419e843 --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,3 @@ +Bug-Database: https://gitlab.kit.edu/scc-net/netvs/netdb-client/-/issues +Bug-Submit: https://gitlab.kit.edu/scc-net/netvs/netdb-client/-/issues +Repository: https://gitlab.kit.edu/scc-net/netvs/netdb-client -- GitLab