mirror of
https://github.com/xroche/httrack.git
synced 2026-06-21 01:28:35 +03:00
Compare commits
10 Commits
release/3.
...
3.49.8-2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fdb243e5a2 | ||
|
|
f8546e146d | ||
|
|
b7f602f2eb | ||
|
|
550100b56a | ||
|
|
33ddb27243 | ||
|
|
4606dfbf66 | ||
|
|
a6f1b9a3dd | ||
|
|
fb35d6a0f1 | ||
|
|
8a270fec03 | ||
|
|
0cbd5279f2 |
13
debian/changelog
vendored
13
debian/changelog
vendored
@@ -1,3 +1,16 @@
|
||||
httrack (3.49.8-2) unstable; urgency=medium
|
||||
|
||||
* Rename libhttrack2 to libhttrack3 to follow the SONAME, which the 3.49.8
|
||||
ABI bump moved to libhttrack.so.3 (package-name-doesnt-match-sonames). In
|
||||
3.49.8-1 the libhttrack2.files glob still matched .so.2, so the runtime
|
||||
libraries fell through into the httrack package and libhttrack2 shipped no
|
||||
library. The new .files uses a .so.3* wildcard so a future SONAME bump no
|
||||
longer silently misplaces the libraries. New binary package, via NEW.
|
||||
* Drop the stale debian/libhttrack-swf1.files: the swf module is no longer
|
||||
built and no libhttrack-swf1 package exists.
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Sat, 20 Jun 2026 14:42:13 +0200
|
||||
|
||||
httrack (3.49.8-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release: HTTPS-proxy CONNECT tunnelling and wider srcset
|
||||
|
||||
6
debian/control
vendored
6
debian/control
vendored
@@ -58,13 +58,13 @@ Description: webhttrack common files
|
||||
This package is the common files of webhttrack, website copier and
|
||||
mirroring utility
|
||||
|
||||
Package: libhttrack2
|
||||
Package: libhttrack3
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Section: libs
|
||||
Replaces: libhttrack1
|
||||
Conflicts: libhttrack1
|
||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
||||
Replaces: libhttrack2, httrack (<< 3.49.8-2~)
|
||||
Breaks: libhttrack2, httrack (<< 3.49.8-2~)
|
||||
Description: Httrack website copier library
|
||||
This package is the library part of httrack, website copier and mirroring
|
||||
utility
|
||||
|
||||
2
debian/libhttrack-swf1.files
vendored
2
debian/libhttrack-swf1.files
vendored
@@ -1,2 +0,0 @@
|
||||
usr/lib/*/libhtsswf.so.1.0.0
|
||||
usr/lib/*/libhtsswf.so.1
|
||||
5
debian/libhttrack2.files
vendored
5
debian/libhttrack2.files
vendored
@@ -1,5 +0,0 @@
|
||||
usr/lib/*/libhttrack.so.2.0.49
|
||||
usr/lib/*/libhttrack.so.2
|
||||
usr/lib/*/libhtsjava.so.2.0.49
|
||||
usr/lib/*/libhtsjava.so.2
|
||||
usr/share/httrack/templates
|
||||
3
debian/libhttrack2.lintian-overrides
vendored
3
debian/libhttrack2.lintian-overrides
vendored
@@ -1,3 +0,0 @@
|
||||
# The shared libraries ship without a versioned symbols control file (ABI is
|
||||
# tracked via the SONAME and a strict =version dependency, see debian/rules).
|
||||
libhttrack2: no-symbols-control-file usr/lib/*
|
||||
3
debian/libhttrack3.files
vendored
Normal file
3
debian/libhttrack3.files
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
usr/lib/*/libhttrack.so.3*
|
||||
usr/lib/*/libhtsjava.so.3*
|
||||
usr/share/httrack/templates
|
||||
3
debian/libhttrack3.lintian-overrides
vendored
Normal file
3
debian/libhttrack3.lintian-overrides
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# The shared libraries ship without a versioned symbols control file (ABI is
|
||||
# tracked via the SONAME plus a >= upstream-version dependency, see debian/rules).
|
||||
libhttrack3: no-symbols-control-file usr/lib/*
|
||||
2
debian/rules
vendored
2
debian/rules
vendored
@@ -135,7 +135,7 @@ binary-arch: build install
|
||||
dh_makeshlibs -a -X/usr/lib/$(DEB_HOST_MULTIARCH)/httrack/libtest --version-info
|
||||
dh_installdeb -a
|
||||
# we depend on the current version (ABI may change)
|
||||
dh_shlibdeps -a -ldebian/libhttrack2/usr/lib/$(DEB_HOST_MULTIARCH)
|
||||
dh_shlibdeps -a -ldebian/libhttrack3/usr/lib/$(DEB_HOST_MULTIARCH)
|
||||
dh_gencontrol -a
|
||||
dh_md5sums -a
|
||||
dh_builddeb -a
|
||||
|
||||
152
tools/mk-sbuild-chroot.sh
Executable file
152
tools/mk-sbuild-chroot.sh
Executable file
@@ -0,0 +1,152 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Bootstrap an sbuild chroot for the clean-room build gate (mkdeb.sh --sbuild).
|
||||
#
|
||||
# Uses the rootless unshare backend: no root, no schroot daemon. It builds a
|
||||
# minimal buildd chroot tarball into ~/.cache/sbuild/<dist>-<arch>.tar.zst, where
|
||||
# sbuild --dist=<dist> finds it automatically in unshare mode.
|
||||
#
|
||||
# Usage:
|
||||
# tools/mk-sbuild-chroot.sh [options]
|
||||
#
|
||||
# Options:
|
||||
# -d, --dist DIST suite to bootstrap (default: unstable)
|
||||
# -a, --arch ARCH architecture (default: dpkg --print-architecture)
|
||||
# -m, --mirror URL apt mirror (default: http://deb.debian.org/debian)
|
||||
# --components LIST comma-separated components (default: main)
|
||||
# -f, --force rebuild even if the tarball already exists
|
||||
# --write-sbuildrc add "$chroot_mode = 'unshare';" to ~/.sbuildrc if absent
|
||||
# -h, --help show this help
|
||||
#
|
||||
# One-time setup; refresh later with sbuild-update or by rerunning with --force.
|
||||
# Requires mmdebstrap and the uidmap tools (newuidmap) for the unshare backend.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
readonly PROGNAME=${0##*/}
|
||||
|
||||
die() {
|
||||
printf '%s: error: %s\n' "$PROGNAME" "$*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
info() {
|
||||
printf '==> %s\n' "$*" >&2
|
||||
}
|
||||
|
||||
usage() {
|
||||
sed -n '2,/^set -euo/{/^set -euo/!p}' "$0" | sed 's/^# \{0,1\}//'
|
||||
}
|
||||
|
||||
need() {
|
||||
local tool
|
||||
for tool in "$@"; do
|
||||
command -v "$tool" >/dev/null 2>&1 || die "required tool not found: $tool"
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
local dist=unstable
|
||||
local arch=""
|
||||
local mirror=http://deb.debian.org/debian
|
||||
local components=main
|
||||
local force=0
|
||||
local write_sbuildrc=0
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-d | --dist)
|
||||
[[ $# -ge 2 ]] || die "missing argument for $1"
|
||||
dist=$2
|
||||
shift 2
|
||||
;;
|
||||
-a | --arch)
|
||||
[[ $# -ge 2 ]] || die "missing argument for $1"
|
||||
arch=$2
|
||||
shift 2
|
||||
;;
|
||||
-m | --mirror)
|
||||
[[ $# -ge 2 ]] || die "missing argument for $1"
|
||||
mirror=$2
|
||||
shift 2
|
||||
;;
|
||||
--components)
|
||||
[[ $# -ge 2 ]] || die "missing argument for $1"
|
||||
components=$2
|
||||
shift 2
|
||||
;;
|
||||
-f | --force)
|
||||
force=1
|
||||
shift
|
||||
;;
|
||||
--write-sbuildrc)
|
||||
write_sbuildrc=1
|
||||
shift
|
||||
;;
|
||||
-h | --help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
die "unknown option: $1 (try --help)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
need mmdebstrap dpkg
|
||||
# Unshare needs the setuid uid/gid mappers; mmdebstrap fails cryptically without.
|
||||
command -v newuidmap >/dev/null 2>&1 ||
|
||||
die "newuidmap not found; install the uidmap package for the unshare backend"
|
||||
|
||||
# Unshare maps a whole UID range, not just the caller's: the base install
|
||||
# creates system users, and without an /etc/subuid+subgid range the install
|
||||
# crashes (dpkg SIGSEGV) instead of erroring cleanly. Root uses mode=root and
|
||||
# needs no range.
|
||||
if [[ $(id -u) -ne 0 ]]; then
|
||||
local me
|
||||
me=$(id -un)
|
||||
if ! grep -qs "^$me:" /etc/subuid || ! grep -qs "^$me:" /etc/subgid; then
|
||||
# Suggest a range starting past every allocation in either file.
|
||||
local start
|
||||
start=$(awk -F: '{e = $2 + $3; if (e > m) m = e} END {print (m ? m : 100000)}' \
|
||||
/etc/subuid /etc/subgid 2>/dev/null)
|
||||
die "no /etc/subuid+subgid range for $me; the unshare backend needs one:
|
||||
sudo usermod --add-subuids $start-$((start + 65535)) --add-subgids $start-$((start + 65535)) $me"
|
||||
fi
|
||||
fi
|
||||
|
||||
: "${arch:=$(dpkg --print-architecture)}"
|
||||
local cache=$HOME/.cache/sbuild
|
||||
local tarball=$cache/${dist}-${arch}.tar.zst
|
||||
|
||||
if [[ -e $tarball && $force -eq 0 ]]; then
|
||||
info "chroot already exists: $tarball (use --force to rebuild)"
|
||||
else
|
||||
info "bootstrapping $dist/$arch chroot into $tarball"
|
||||
mkdir -p "$cache"
|
||||
mmdebstrap --variant=buildd --arch="$arch" --components="$components" \
|
||||
"$dist" "$tarball" "$mirror"
|
||||
info "chroot ready: $tarball"
|
||||
fi
|
||||
|
||||
local rc=$HOME/.sbuildrc
|
||||
local mode_line="\$chroot_mode = 'unshare';"
|
||||
# shellcheck disable=SC2016 # $chroot_mode is literal regex text, not a shell var.
|
||||
if grep -qsE '^[[:space:]]*\$chroot_mode[[:space:]]*=.*unshare' "$rc"; then
|
||||
: # already configured (active, non-commented line)
|
||||
elif [[ $write_sbuildrc -eq 1 ]]; then
|
||||
info "enabling the unshare backend in $rc"
|
||||
printf '%s\n' "$mode_line" >>"$rc"
|
||||
else
|
||||
cat >&2 <<EOF
|
||||
==> To use this chroot without passing --chroot-mode each time, add to $rc:
|
||||
$mode_line
|
||||
(or rerun with --write-sbuildrc). Then verify with:
|
||||
sbuild --dist=$dist path/to/package.dsc
|
||||
and build the release gate with:
|
||||
tools/mkdeb.sh --source-only --sbuild
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -23,8 +23,17 @@
|
||||
# -s, --source-only build only the source package
|
||||
# -u, --unsigned do not sign anything (implies no release sigs)
|
||||
# --no-release-artifacts skip the orig tarball .asc/.md5/.sha1
|
||||
# --sbuild additionally build the .dsc in a clean sbuild
|
||||
# chroot as a from-scratch verification gate
|
||||
# -h, --help show this help
|
||||
#
|
||||
# --sbuild reproduces the buildd environment: it builds the source package in a
|
||||
# minimal chroot holding only the declared Build-Depends, so an FTBFS or a
|
||||
# missing dependency fails here instead of on the archive's buildds (which, with
|
||||
# a source-only upload, are otherwise the first clean build). It needs an sbuild
|
||||
# chroot for the changelog's distribution; create one once with the companion
|
||||
# tools/mk-sbuild-chroot.sh (rootless unshare backend).
|
||||
#
|
||||
# SOURCE_DATE_EPOCH is honored for reproducible output.
|
||||
|
||||
set -euo pipefail
|
||||
@@ -60,6 +69,7 @@ main() {
|
||||
local source_only=0
|
||||
local unsigned=0
|
||||
local release_artifacts=1
|
||||
local sbuild=0
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
@@ -85,6 +95,10 @@ main() {
|
||||
release_artifacts=0
|
||||
shift
|
||||
;;
|
||||
--sbuild)
|
||||
sbuild=1
|
||||
shift
|
||||
;;
|
||||
-h | --help)
|
||||
usage
|
||||
exit 0
|
||||
@@ -96,6 +110,7 @@ main() {
|
||||
done
|
||||
|
||||
need git autoreconf debuild dcmd
|
||||
[[ $sbuild -eq 1 ]] && need sbuild dpkg-parsechangelog
|
||||
if [[ $unsigned -eq 0 ]]; then
|
||||
need gpg
|
||||
[[ -n $key ]] || die "no signing key (pass --key or set DEBSIGN_KEYID, or use --unsigned)"
|
||||
@@ -179,6 +194,30 @@ main() {
|
||||
[[ ${#changes[@]} -ge 1 ]] || die "debuild produced no .changes file"
|
||||
dcmd cp -- "${changes[@]}" "$outdir/"
|
||||
|
||||
# Clean-room build gate: rebuild the source package in a minimal chroot that
|
||||
# holds only the declared Build-Depends, the same way the buildds will. An
|
||||
# undeclared dependency or any FTBFS aborts the release here instead of
|
||||
# surfacing after a source-only upload. Logs and clean-built debs land in
|
||||
# $outdir/sbuild for inspection.
|
||||
if [[ $sbuild -eq 1 ]]; then
|
||||
local -a dscs
|
||||
shopt -s nullglob
|
||||
dscs=("$scratch"/*.dsc)
|
||||
shopt -u nullglob
|
||||
[[ ${#dscs[@]} -ge 1 ]] || die "no .dsc to sbuild"
|
||||
|
||||
local dist
|
||||
dist=$(cd "$scratch/httrack-$ver" && dpkg-parsechangelog -S Distribution)
|
||||
[[ $dist == UNRELEASED ]] && dist=unstable
|
||||
|
||||
info "clean-room build with sbuild (dist $dist)"
|
||||
local sbdir=$outdir/sbuild
|
||||
rm -rf -- "$sbdir"
|
||||
mkdir -p "$sbdir"
|
||||
(cd "$sbdir" && sbuild --dist="$dist" -- "${dscs[0]}")
|
||||
info "sbuild clean-room build passed; logs in $sbdir"
|
||||
fi
|
||||
|
||||
# Release artifacts for the upstream tarball (detached sig + checksums).
|
||||
if [[ $release_artifacts -eq 1 && $unsigned -eq 0 ]]; then
|
||||
info "signing upstream tarball"
|
||||
|
||||
Reference in New Issue
Block a user