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
.bakbefore any modification. - If DOWNLOAD or DOWNLOAD_x86_64 is
UNSUPPORTEDorUNTESTED, that URL is skipped and its MD5SUM is left unchanged. --no-dl/-Ndoes not skip downloads — it downloads and recalculates checksums as normal, then appendsNODOWNLOAD=yesto the hint file.- Bash completion for
-f/--hintfile,-n/--new, and-d/--deleteautocompletes package names from their respective directories. Short flags (-v,-f,-n,-l,-c,-d,-N,-h) are also completed.
