aboutsummaryrefslogtreecommitdiffstats

mkhint

Manage hint files for slackrepo scripts. Updates version strings and download checksums, or creates new hint files from repository .info files.

Installation

Script

sudo cp mkhint /usr/local/bin/mkhint

Bash Completion

sudo cp mkhint.bash-completion /etc/bash-completion.d/mkhint

Configuration

Edit the paths at the top of mkhint to match your setup (lines 16–17):

REPO_DIR="/var/lib/sbopkg/SBo-danix/"      # Repository containing .info files
HINT_DIR="/etc/slackrepo/SBo-danix/hintfiles/"  # Directory where .hint files are stored

Keep the same paths in sync in mkhint.bash-completion (lines 8–9).

Usage

Update an existing hint file

Updates the package version, downloads the archive, and recalculates the MD5 checksums:

mkhint --hintfile mypackage --version 2.0.1
mkhint -f mypackage -v 2.0.1

Replaces the old version string with 2.0.1 everywhere in mypackage.hint, re-downloads the URLs from DOWNLOAD and DOWNLOAD_x86_64, and updates MD5SUM and MD5SUM_x86_64. Backs up the old file to mypackage.hint.bak first.

URLs set to UNSUPPORTED or UNTESTED are skipped.

Update and add NODOWNLOAD

Downloads and recalculates checksums, then appends NODOWNLOAD=yes to tell slackrepo to skip checksum verification at build time:

mkhint -f mypackage -v 2.0.1 -N
mkhint --hintfile mypackage --version 2.0.1 --no-dl

Create a new hint file from .info

Copies the corresponding .info file as a template, removes PRGNAM, HOMEPAGE, MAINTAINER, EMAIL, comments out REQUIRES, and sets ARCH to x86_64. If -v is given, the version string is updated and checksums are recalculated:

mkhint --new mypackage            # copy .info as-is, keep VERSION from .info
mkhint -n mypackage -v 1.2.3     # copy .info, update version + recalculate md5
mkhint -n mypackage -v 1.2.3 -N  # same, also add NODOWNLOAD=yes
mkhint -n mypackage -N           # copy .info, add NODOWNLOAD=yes, no downloads

If no .info file exists in REPO_DIR, a skeleton hint with empty variables is created instead.

If the hint file already exists it is backed up and a fresh empty skeleton is written.

Multiline DOWNLOAD

Some packages have multiple download URLs on continuation lines:

DOWNLOAD="https://example.com/foo-1.0.tar.gz \
    https://example.com/extra-data.tar.gz"
MD5SUM="aabbcc... \
    ddeeff..."

When updating a hint with multiline DOWNLOAD, mkhint:

  • Always re-downloads the first URL (version changed → new content)
  • Prompts interactively for each continuation URL — enter a new URL or leave blank to keep the current one
  • Only re-downloads continuation URLs that were changed; unchanged URLs keep their existing md5

List hint files

mkhint --list
mkhint -l

Delete a hint file

Removes the hint file and its .bak backup if present:

mkhint --delete mypackage
mkhint -d pkg1 pkg2 pkg3

Clean backup files

Removes all .bak files from HINT_DIR:

mkhint --clean
mkhint -c

Help

mkhint --help
mkhint -h

Exit Codes

Code Meaning
0 Success
1 Invalid arguments
2 File not found
3 File already exists (unused — backup logic replaces this)
4 wget not available

Hint File Variables

Variable Description
VERSION Package version
ARCH Architecture (x86_64)
DOWNLOAD Download URL for generic/32-bit build
MD5SUM MD5 checksum of the generic archive
DOWNLOAD_x86_64 Download URL for x86_64-specific build
MD5SUM_x86_64 MD5 checksum of the x86_64 archive
NODOWNLOAD Set to yes to skip download/checksum verification in slackrepo

Notes

  • Hint files are backed up to .bak before any modification.
  • If DOWNLOAD or DOWNLOAD_x86_64 is UNSUPPORTED or UNTESTED, that URL is skipped and its MD5SUM is left unchanged.
  • --no-dl / -N does not skip downloads — it downloads and recalculates checksums as normal, then appends NODOWNLOAD=yes to the hint file.
  • Bash completion for -f/--hintfile, -n/--new, and -d/--delete autocompletes package names from their respective directories. Short flags (-v, -f, -n, -l, -c, -d, -N, -h) are also completed.