Skip to main content

livecheck

Python versions PyPI - Version GitHub tag (with filter) License GitHub commits since latest release (by SemVer including pre-releases) CodeQL QA Tests Coverage Status Dependabot Documentation Status mypy uv pytest Ruff Downloads Stargazers pre-commit.ci status Prettier

@Tatsh Buy Me A Coffee Libera.Chat Mastodon Follow Patreon

Tool for overlays to update ebuilds. Inspired by the MacPorts port subcommand of the same name and nvchecker.

Internal workings

The script uses the first URL of the ebuild using the SRC_URI variable to search for new versions, using logic for github, PyPI, PECL or if it is configured in the livecheck.json file within the same package directory. The ebuild is automatically updated if --auto-update is passed.

It is recommended to use OAuth tokens for both Github and GitLab to avoid rate limiting problems with the REST API. Use your secret storage to store github.com, bitbucket.org or gitlab.com tokens with the livecheck user. See keyring to manage tokens.

Example: storing credentials

secret-tool store --label="Password for 'livecheck' on 'bitbucket.org'" service bitbucket.org username livecheck

Installation

On Gentoo, add my overlay and install:

eselect overlay enable tatsh-overlay
emerge --sync
emerge livecheck

Command line usage

Usage: livecheck [OPTIONS] [PACKAGE_NAMES]...

Options:
  -a, --auto-update            Rename and modify ebuilds.
  -d, --debug                  Enable debug logging.
  -D, --development            Include development packages.
  --dist-github-release TEXT   GitHub release tag to upload vendor dist
                               archives under.
  --dist-github-repository TEXT
                               GitHub `owner/repo` to upload vendor dist
                               archives to as release assets.
  --dist-force-upload          Force rebuild and re-upload of vendor dist
                               archives even when present.
  -e, --exclude TEXT           Exclude package(s) from updates.
  -g, --git                    Use git and pkgdev to make changes.
  -H, --hook-dir               Run a hook directory scripts with various parameters.
  -k, --keep-old               Keep old ebuild versions.
  -p, --progress               Enable progress logging.
  --package-manager [npm|pnpm|yarn]
                               Package manager to use for Node.js packages.
  -W, --working-dir DIRECTORY  Working directory. Should be a port tree root.
  --help                       Show this message and exit.

Uploading vendor dist archives to GitHub releases

When --auto-update regenerates a vendor archive (Composer, Go modules, Maven, Node modules, or NuGet packages), the file is normally written only into DISTDIR. Pass both --dist-github-repository owner/repo and --dist-github-release tag to additionally publish the archive as an asset of that release. Per-package overrides may also be set in livecheck.json with the keys dist_github_repository and dist_github_release.

By default the asset is skipped entirely (no rebuild, no upload) if a release asset with the expected filename is already present; pass --dist-force-upload to rebuild and replace it. When the release does not exist, livecheck creates it as a draft and logs a warning instructing you to publish it from the GitHub UI so Portage can fetch the assets.

[!IMPORTANT] Do not enable immutable releases on the destination repository. Replacing an existing asset requires deleting the previous one, which is forbidden once a release is marked immutable, and the upload step will fail.

Heuristic update detection

This package can do automated lookups based on commonly used hosts. Currently:

  • Bitbucket
  • Davinci products
  • Github archives
  • Github commit hashes
  • Github releases
  • GitLab releases
  • Hex-Rays for IDA Free
  • JetBrains products
  • NuGet
  • PECL
  • Packages from Yarn and NPM
  • Perl CPAN
  • PyPI
  • Raphnet
  • Repology
  • RubyGems
  • SourceHut releases / commit hashes
  • SourceForge

This works as long as the version system is usable with Portage's version comparison function. For anything else, see Package configuration.

Package configuration

For packages that will not work with heuristic checking, a configuration file named livecheck.json can be placed in the directory alongside the ebuild.

Configuration keys

  • branch - string- The GitHub branch name to use for commits.
  • composer_packages - boolean - Download composer vendor modules.
  • composer_path - path - Where is 'composer.json' located (need composer_packages).
  • dist_github_release - string - Per-package override for --dist-github-release.
  • dist_github_repository - string - Per-package override for --dist-github-repository (owner/repo).
  • dotnet_packages - boolean - Build a NuGet packages vendor archive (-nuget.tar.xz).
  • dotnet_project - path - Project or solution file (.csproj / .sln) used by dotnet restore.
  • maven_packages - boolean - Download Maven dependencies.
  • maven_path - path - Where is 'pom.xml' located (need maven_packages).
  • development - bool - Include development packages.
  • gomodule_packages - boolean - Download go vendor modules.
  • gomodule_path - path - Where is 'go.mod' located (need gomodule_packages).
  • jetbrains_packages - boolean - Update internal ID.
  • keep_old - boolean - Keep old ebuild versions.
  • no_auto_update - boolean - Do not allow auto-updating of this package.
  • nodejs_packages - boolean - Download nodejs node_modules.
  • nodejs_path - path - Where is 'package.json' located (need nodejs_packages).
  • nodejs_package_manager - string - Package manager to use for Node.js packages [npm|pnpm|yarn] (defaults to npm)
  • sha_source- string - Url to get the sha value.
  • stable_version- string - Regular expression to determine if it is a stable version.
  • sync_version - string - Category and ebuild with version to sync.
  • transformation_function - string - Function to use to transform the version string. Currently only dotize is supported. Others are for internal use.
  • type - string - Only one none, davinci, regex, directory, changelog, commit, repology or checksum.

Use the pattern to adjust the version using a regular expression:

  • pattern_version - string - The pattern string.
  • replace_version - string - The replacement string.

Only when type is regex, directory, or changelog:

  • url - URL of the document or directory listing to scan for versions. Required.

Example for type changelog:

{
  "type": "changelog",
  "url": "https://raw.githubusercontent.com/standard/standard/refs/heads/master/CHANGELOG.md"
}

Only when type is regex:

  • regex - string - The regular expression to use. Required.

Only when type is repology:

  • package - string - The package to search in repology. Required.

Hook directory

The hooks directory structure is subdivided into actions, currently post and pre. Within each action directory there can be several scripts that are executed in order by name.

Arguments

  • Root portage directory, e.g. /var/db/repos/gentoo.
  • Category and package name, e.g. dev-lang/php.
  • Previous version, e.g. 8.2.32-r2.
  • New version, e.g. 8.2.33.
  • SHA hash of the old version. Optional.
  • SHA hash of the new version. Optional.
  • Date associated with the hash. Optional.

Development use

Creating new downloads

There are 2 types of downloads: file and latest commit (currently only Git is supported) and this is evident from the first download URL of the ebuild itself.

  • To download a file, a search is performed by version/tag, and optionally you can include the commit of said version, including all the results in a list so that the highest one can be selected, according to the search criteria or limit.

  • To locate the last commit of an ebuild, we need the SHA of the commit and the date. This is necessary to be able to adjust the name of the ebuild using the a.b.c_pYYYYMMDD version as a scheme. If a different SHA is detected the version is updated.

Set up PYTHONPATH

As root, set the environment variable PYTHONPATH to include where the livecheck module is located. Use python -m livecheck instead of livecheck to execute commands.

With a virtualenv

Run uv sync --all-groups --all-extras to set up a virtualenv.

Fully copy /etc/portage to the root of your virtualenv. Then you must fix make.profile. Also consider making changes in repos.conf if necessary.

Example:

. .venv/bin/activate
uv pip install keyrings-alt
sudo cp -R /etc/portage "${VIRTUAL_ENV}/etc/"
sudo chown -R "${USER}:" "${VIRTUAL_ENV}/etc/portage"
ln -sf "$(readlink -f /etc/portage/make.profile)" "${VIRTUAL_ENV}/etc/portage/make.profile"

Metadata

Release files for livecheck 0.2.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for livecheck 0.2.7
File Size Uploaded
livecheck-0.2.7.tar.gz 130.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for livecheck 0.2.7
File Interpreter ABI Platform
livecheck-0.2.7-py3-none-any.whl Python 3 none any Details

Total release size: 218.5 kB

Release files / livecheck-0.2.7.tar.gz

Download URL livecheck-0.2.7.tar.gz
Size 130.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0ed70d67c27305c8fbe0f836b3064c3fd2c89ff7693ed004fa441952d5f18988
BLAKE2b-256 checksum
How to use checksums
c6ce42d90c472e92e6727e90848435be3b99dea1c63db8278fda281c173e12e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / livecheck-0.2.7-py3-none-any.whl

Download URL livecheck-0.2.7-py3-none-any.whl
Size 88.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
18f05df06f58a17efa44907ec734c0c79386bda27abde7ce0413e14d5e0e0a61
BLAKE2b-256 checksum
How to use checksums
218d6728a4572a569b6a4f17bbb82808f77c3faf3897e20fbab7631dc188cb47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.8

2 release files

This release

0.2.7 This release

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.13

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page