From 34a0b3fd04706ffb82b5bb77c79fcb49b4300782 Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Sun, 21 Apr 2024 19:01:26 -0400 Subject: [PATCH] build: change the fallback version suffix to `+git.{sha}` Seems to be more commonly used than the current `-commit-{sha}`. Also cleanup/simplify the version handling code and fix the list of dependencies in the CI scripts. Change-Id: I438afdd31870b92c54dce30254a485ebb4667b56 --- .editorconfig | 1 + .gitignore | 27 +++++++++++++--------- .jenkins.d/00-deps.sh | 5 ++-- README.md | 4 ++-- docs/conf.py | 2 +- wscript | 54 +++++++++++++++++++++---------------------- 6 files changed, 49 insertions(+), 44 deletions(-) diff --git a/.editorconfig b/.editorconfig index 624ad9b..f9b3c4d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -26,3 +26,4 @@ trim_trailing_whitespace = true [*.{yaml,yml}] indent_style = space indent_size = 2 +trim_trailing_whitespace = true diff --git a/.gitignore b/.gitignore index 8850587..dc40a00 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,20 @@ -# Emacs +# Backup files *~ +*.bak +*.orig +*.rej + +# Waf build system +/build/ +.waf-*-*/ +.waf3-*-*/ +.lock-waf* + +# Compiled python code +__pycache__/ +*.py[cod] + +# Emacs \#*\# /.emacs.desktop /.emacs.desktop.lock @@ -15,15 +30,5 @@ .LSOverride ._* -# Waf build system -/build/ -.waf-*-*/ -.waf3-*-*/ -.lock-waf* - -# Compiled python code -__pycache__/ -*.py[cod] - # Other /VERSION.info diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh index d21e972..2bdc040 100755 --- a/.jenkins.d/00-deps.sh +++ b/.jenkins.d/00-deps.sh @@ -2,7 +2,8 @@ set -eo pipefail APT_PKGS=( - build-essential + dpkg-dev + g++ libboost-chrono-dev libboost-date-time-dev libboost-dev @@ -16,7 +17,7 @@ APT_PKGS=( libsqlite3-dev libssl-dev pkg-config - python3-minimal + python3 ) FORMULAE=(boost openssl pkg-config) PIP_PKGS=() diff --git a/README.md b/README.md index ab1585c..add9b2a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # ChronoSync: synchronization library for distributed realtime applications for NDN +![Latest version](https://img.shields.io/github/v/tag/named-data/ChronoSync?label=Latest%20version) +![Language](https://img.shields.io/badge/C%2B%2B-17-blue) [![CI](https://github.com/named-data/ChronoSync/actions/workflows/ci.yml/badge.svg)](https://github.com/named-data/ChronoSync/actions/workflows/ci.yml) [![Docs](https://github.com/named-data/ChronoSync/actions/workflows/docs.yml/badge.svg)](https://github.com/named-data/ChronoSync/actions/workflows/docs.yml) -![Language](https://img.shields.io/badge/C%2B%2B-17-blue) -![Latest version](https://img.shields.io/github/v/tag/named-data/ChronoSync?label=Latest%20version) > [!NOTE] > DEPRECATION NOTICE: ChronoSync's design is outdated. We recommend using more recent diff --git a/docs/conf.py b/docs/conf.py index 199e8d6..fbc6722 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -10,7 +10,7 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = 'ChronoSync: A Synchronization Protocol for NDN' -copyright = 'Copyright © 2012-2023 Regents of the University of California.' +copyright = 'Copyright © 2012-2024 Regents of the University of California.' author = 'Named Data Networking Project' # The short X.Y version. diff --git a/wscript b/wscript index d54af77..f21a825 100644 --- a/wscript +++ b/wscript @@ -140,43 +140,41 @@ def version(ctx): Context.g_module.VERSION_SPLIT = VERSION_BASE.split('.') # first, try to get a version string from git - gotVersionFromGit = False + version_from_git = '' try: - cmd = ['git', 'describe', '--always', '--match', f'{GIT_TAG_PREFIX}*'] - out = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout.strip() - if out: - gotVersionFromGit = True - if out.startswith(GIT_TAG_PREFIX): - Context.g_module.VERSION = out.lstrip(GIT_TAG_PREFIX) + cmd = ['git', 'describe', '--abbrev=8', '--always', '--match', f'{GIT_TAG_PREFIX}*'] + version_from_git = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout.strip() + if version_from_git: + if version_from_git.startswith(GIT_TAG_PREFIX): + Context.g_module.VERSION = version_from_git.lstrip(GIT_TAG_PREFIX) else: # no tags matched - Context.g_module.VERSION = f'{VERSION_BASE}-commit-{out}' + Context.g_module.VERSION = f'{VERSION_BASE}+git.{version_from_git}' except (OSError, subprocess.SubprocessError): pass - versionFile = ctx.path.find_node('VERSION.info') - if not gotVersionFromGit and versionFile is not None: + # fallback to the VERSION.info file, if it exists and is not empty + version_from_file = '' + version_file = ctx.path.find_node('VERSION.info') + if version_file is not None: try: - Context.g_module.VERSION = versionFile.read() - return - except EnvironmentError: - pass - - # version was obtained from git, update VERSION file if necessary - if versionFile is not None: - try: - if versionFile.read() == Context.g_module.VERSION: - # already up-to-date - return - except EnvironmentError as e: - Logs.warn(f'{versionFile} exists but is not readable ({e.strerror})') - else: - versionFile = ctx.path.make_node('VERSION.info') + version_from_file = version_file.read().strip() + except OSError as e: + Logs.warn(f'{e.filename} exists but is not readable ({e.strerror})') + if version_from_file and not version_from_git: + Context.g_module.VERSION = version_from_file + return + # update VERSION.info if necessary + if version_from_file == Context.g_module.VERSION: + # already up-to-date + return + if version_file is None: + version_file = ctx.path.make_node('VERSION.info') try: - versionFile.write(Context.g_module.VERSION) - except EnvironmentError as e: - Logs.warn(f'{versionFile} is not writable ({e.strerror})') + version_file.write(Context.g_module.VERSION) + except OSError as e: + Logs.warn(f'{e.filename} is not writable ({e.strerror})') def dist(ctx): ctx.algo = 'tar.xz'