• Bug#1109584: git-debpush: no way to control since-version

    From Colin Watson@21:1/5 to All on Sun Jul 20 14:50:01 2025
    Package: git-debpush
    Version: 13.9
    Severity: wishlist

    For -backports uploads, I normally prefer to retain only the
    backports-specific changelog entry for the most recent round of
    backports, in order to avoid cluttering the changelog with lots of
    entries that just say "Rebuild for bookworm-backports". I accept that
    this may be a personal quirk, but https://backports.debian.org/Contribute/#index3h2 seems to at least
    suggest it, and I don't think it's terribly unusual.

    However, this caused git-debpush to fail with "error: missing field
    Version in parsed changelog". I retried with "dgit -v0.11.1
    push-source" and that worked fine, but git-debpush seems to have no
    equivalent option. Perhaps one could be added?

    Thanks,

    --
    Colin Watson (he/him) [[email protected]]

    Return-path: <[email protected]>
    X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on
    riva.rosewood.vpn.ucam.org
    X-Spam-Level:
    X-Spam-Status: No, score=-1.7 required=4.5 tests=BAYES_00,DKIM_INVALID,
    DKIM_SIGNED,DMARC_MISSING,RCVD_IN_DNSWL_BLOCKED autolearn=no
    autolearn_force=no version=4.0.1
    Envelope-to: cjwatson@localhost
    Delivery-date: Sun, 20 Jul 2025 13:32:48 +0100
    Received: from localhost ([127.0.0.1] helo=riva.rosewood.vpn.ucam.org)
    by riva.rosewood.vpn.ucam.org with esmtp (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1udTDk-007AoY-0Z
    for cjwatson@localhost;
    Sun, 20 Jul 2025 13:32:48 +0100
    Received: from imap.dovecot.chiark.greenend.org.uk [2a00:1098:86:130::1]
    by riva.rosewood.vpn.ucam.org with IMAP (fetchmail-6.4.37)
    for <cjwatson@localhost> (single-drop); Sun, 20 Jul 2025 13:32:48 +0100 (BST)
    Received: from master.debian.org ([82.195.75.110])
    by chiark.greenend.org.uk (Debian Exim 4.94.2 #2) with esmtp
    (return-path [email protected])
    id 1udTBu-0006Q7-TT
    for [email protected]; Sun, 20 Jul 2025 13:30:55 +0100 X-SAUCE-SA-Score: -0.8/-l
    Received: from master.debian.org ([82.195.75.110])
    by chiark.greenend.org.uk (SAUCE v0.9.0)
    with esmtp id sauce-943-1753014-1; 20 Jul 2025 12:30:54 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org;
    s=smtpauto.master; h=Date:Message-Id:Reply-To:CC:To:Content-Transfer-Encoding
    :Content-Type:MIME-Version:Subject:From:Content-ID:Content-Description:
    In-Reply-To:References; bh=ZBgw2FE8/kzdTwOJ+MbgeUToEt4/KAZ+fM/t6i3aJiU=; b=OK
    BH63O+9WryJifecQC7DFWmjgDbIfRcYz822t9NrI3p3veyNPeCt50ndvZ0fyQ2hVHCHiXIaFx+hDQ
    X3V/EBQEv40sovVPoXvJeUuISEqYZpwsOEbStksBbiMIMyBH0aWIvHE8OlhdSpfGf/VKkcGwgyals
    +uLe8GQO2jGd1Z1QBk49FIjtyR0sjzXY37kqXu7gRnjL0TBYnZcqZNhozPMJtpUIdBV11TCRbdXlz
    249oPvKxzboVl42v3+52mWhOJ8oZhTZOnGBJhwBme3fpqQ62L/I/OAD7+Rtz2Tak7Huy+8f9XS6pu
    KU0PMg3HAtGfMEmCQlA4l/0Fkc37/1eQ==;
    Received: from cjwatson by master.debian.org with local (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1udTBu-002eiS-2B
    for [email protected];
    Sun, 20 Jul 2025 12:30:54 +0000
    Received: from mitropoulos.debian.org ([2001:648:2ffc:deb:216:61ff:fe9d:958d]:38642)
    from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=mitropoulos.debian.org,EMAIL=[email protected] (verified)
    by master.debian.org with esmtps (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
    (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1udTBv-002eiM-1i
    for [email protected];
    Sun, 20 Jul 2025 12:30:54 +0000
    Received: from tag2upload-oracle-01.debian.org ([2a02:16a8:dc41:100::247]:53052)
    from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=tag2upload-oracle-01.debian.org,EMAIL=[email protected] (verified)
    by mitropoulos.debian.org with esmtps (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
    (Exim 4.94.2)
    (envelope-from <[email protected]>)
    id 1udTBt-00GpWG-KJ
    for [email protected]; Sun, 20 Jul 2025 12:30:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org;
    s=smtpauto.tag2upload-oracle-01; h=Date:Message-Id:Reply-To:CC:To:
    Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:From:Content-ID:
    Content-Description:In-Reply-To:References;
    bh=ZBgw2FE8/kzdTwOJ+MbgeUToEt4/KAZ+fM/t6i3aJiU=; b=haeNZdnp8xJy1+zc6MIvh8raug
    riNLqbPWgDikP9pnv42lQa7INXTs644wv0w2iqXGGRVbhjFyfwCu7qaoDYfzKpv1JRrQZg5yLOdc7
    sHZ4XfChtyxadCrV9Z6BMaJ8WovPIOJ4yiO5sSpQb0fFFstanN9bg9gMRMWdjlbodr1I3OcqnkFTm
    fIHie1HW74mxfyLMwBdzUTIGlbU4aXgmLVfmfl9AnW4SxeZ5lk6kbccO6eLlAggimF7Pxa11XmFV3
    ogbRCvRMUZzmb0exDAa6x8kMcN4uZ7a0Tcsdihvh7J3a60IxecxMOS4t3wce+O+khqkw2emx7mIx1
    gCIJYZOQ==;
    Received: from tag2upload-oracle by tag2upload-oracle-01.debian.org with local (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1udTBt-000XpP-0G;
    Sun, 20 Jul 2025 12:30:53 +0000
    From: Debian tag2upload service <[email protected]>
    Subject: [tag2upload 312] failed, debusine 0.11.3~bpo12+1
    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary=66d10b612108a4102e03f57de0d10eecbb868389f043f2ed45b9c16f860d849a
    Content-Transfer-Encoding: 8bit
    X-Debian-Tag2upload-Distro: debian
    X-Debian-Tag2upload-JobId: 312
    X-Debian-Tag2upload-Url: https://salsa.debian.org/freexian-team/debusine.git X-Debian-Tag2upload-Status: irrecoverable
    X-Debian-Tag2upload-Package: debusine
    To: Colin Watson <[email protected]>
    CC: [email protected]
    Reply-To: [email protected], Colin Watson <[email protected]> Message-Id: <[email protected]>
    Date: Sun, 20 Jul 2025 12:30:53 +0000
    Delivered-To: [email protected]

    --66d10b612108a4102e03f57de0d10eecbb868389f043f2ed45b9c16f860d849a Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Content-Disposition: inline

    job id: 312
    url: https://salsa.debian.org/freexian-team/debusine.git
    tag: debian/0.11.3_bpo12+1
    preparing
    tag signature verified
    tag parsed ok
    source: debusine
    version: 0.11.3~bpo12+1
    tag signer authorised for package
    source code fetched
    changelog parsed ok
    target: debian bookworm-backports
    no upstream tag/commit specified, not considering orig(s)
    processing failed with error exit status 255

    --66d10b612108a4102e03f57de0d10eecbb868389f043f2ed45b9c16f860d849a Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Content-Disposition: inline; filename="t2u_312_log.txt"
    Content-Description: processing log

    oracle$ dgit --version
    dgit version git:404893db0674ae2c85f6b0574bc4fb4595c2ba02
    # builder: oracle$ ./ssh-builder '[email protected]' ...
    builder$ dgit --version
    dgit version 13.9

    builder:work$ git fetch origin --no-tags 'refs/tags/debian/0.11.3_bpo12+1:refs/tags/debian/0.11.3_bpo12+1'
    From https://salsa.debian.org/freexian-team/debusine
    * [new tag] debian/0.11.3_bpo12+1 -> debian/0.11.3_bpo12+1
    # [ok]

    builder:work$ git checkout -q 'refs/tags/debian/0.11.3_bpo12+1'
    # [ok]
    # source code fetched
    # changelog parsed ok
    # target: debian bookworm-backports
    # no upstream tag/commit specified, not considering orig(s)

    oracle$ dgit -wn -pdebusine --build-products-dir=../bpd --force-uploading-source-only --ssh=./ssh-builder --dgit=dgit -k374D8CE4DB96E9CBD4C0972A606D084E4683C079 --dput:-u --package=debusine --expect-suite=bookworm-backports '--expect-version=0.11.3~bpo12+
    1' --tag2upload-builder-mode --split-view=always --new --trust-changelog '--t2u-control-add=Git-Tag-Tagger=Colin Watson <[email protected]>' '--t2u-control-add=Git-Tag-Info=tag=4c9a56de3c13dcca2015c888849cb672c4583fde fp=
    ac0a4ff12611b6fccf01c111393587d97d86500b' rpush-source '[email protected]:/tmp/autopkgtest-virt-docker.shared.8a1jh06_/downtmp/work'

    canonical suite name is bookworm-backports
    dpkg-source: warning: --include-removal is not a valid option for Dpkg::Source::Package::V3::Native
    dpkg-source: warning: --no-preparation is not a valid option for Dpkg::Source::Package::V3::Native
    dpkg-source: info: using options from work/debian/source/options: --extend-diff-ignore=^[^/]*[.]egg-info/ --tar-ignore=.coverage --tar-ignore=.mypy_cache --tar-ignore=.tox --tar-ignore=build --tar-ignore=docs/_build
    dpkg-source: info: using source format '3.0 (native)'
    dpkg-source: info: building debusine in debusine_0.11.3~bpo12+1.tar.xz dpkg-source: info: building debusine in debusine_0.11.3~bpo12+1.dsc
    changelog will contain changes since 0.11.1~bpo12+1
    Copying debian/0.11.3_bpo12+1 to depth 1
    From file:///tmp/autopkgtest-virt-docker.shared.8a1jh06_/downtmp/work/.git/dgit/unpack/work
    * [new tag] debian/0.11.3_bpo12+1 -> debian/0.11.3_bpo12+1
    Re-packing ... packed 0 objects not required for --audit
    Starting compression ... done
    Appending 'debusine_0.11.3~bpo12+1.git.tar.xz devel optional' to debian/files
    dpkg-genchanges: warning: 'since' option specifies non-existing version '0.11.1~bpo12+1'
    dpkg-genchanges: warning: use newest entry that is earlier than the one specified
    dpkg-genchanges: warning: package python3-debusine in control file but not in files list
    dpkg-genchanges: warning: package python3-debusine-server in control file but not in files list
    dpkg-genchanges: warning: package python3-debusine-signing in control file but not in files list
    dpkg-genchanges: warning: package debusine-server in control file but not in files list
    dpkg-genchanges: warning: package debusine-client in control file but not in files list
    dpkg-genchanges: warning: package debusine-worker in control file but not in files list
    dpkg-genchanges: warning: package debusine-signing in control file but not in files list
    dpkg-genchanges: warning: package debusine-doc in control file but not in files list
    dpkg-genchanges: info: including full source code in upload
    last upload to archive: specified git info (debian)
    Checking package changelog for archive version 0.11.1~bpo12+1 ... dpkg-parsechangelog: warning: 'from' option specifies non-existing version '0.11.1~bpo12+1'
    dpkg-parsechangelog: warning: use oldest entry that is later than the one specified
    dpkg-parsechangelog: warning: 'to' option specifies non-existing version '0.11.1~bpo12+1'
    dpkg-parsechangelog: warning: use newest entry that is earlier than the one specified

    dgit (build host): error: dgit (build host): error: missing field Version in parsed changelog
    dgit (build host): Perhaps debian/changelog does not mention 0.11.1~bpo12+1 ? dgit: failed command: ./ssh-builder '[email protected]' 'dgit -wn -pdebusine --build-products-dir=../bpd --force-uploading-source-only --ssh=./ssh-builder --dgit=dgit -k374D8CE4DB96E9CBD4C0972A606D084E4683C079 --dput:-u -
    -package=debusine --expect-suite=bookworm-backports '\''--expect-version=0.11.3~bpo12+1'\'' --tag2upload-builder-mode --split-view=always --new --overwrite '\''--t2u-control-add=Git-Tag-Tagger=Colin Watson <[email protected]>'\'' '\''--t2u-control-add=
    Git-Tag-Info=tag=4c9a56de3c13dcca2015c888849cb672c4583fde fp=ac0a4ff12611b6fccf01c111393587d97d86500b'\'' remote-push-source-build-host 2 /tmp/autopkgtest-virt-docker.shared.8a1jh06_/downtmp/work '\''7,6,5,4'\'''

    dgit: error: subprocess failed with error exit status 253
    ! Push failed, while preparing your push.
    ! You can retry the push, after fixing the problem, if you like.
    t2u processor [dgit-repos-server]: failed command: dgit -wn -pdebusine --build-products-dir=../bpd --force-uploading-source-only --ssh=./ssh-builder --dgit=dgit -k374D8CE4DB96E9CBD4C0972A606D084E4683C079 --dput:-u --package=debusine --expect-suite=
    bookworm-backports '--expect-version=0.11.3~bpo12+1' --tag2upload-builder-mode --split-view=always --new --trust-changelog '--t2u-control-add=Git-Tag-Tagger=Colin Watson <[email protected]>' '--t2u-control-add=Git-Tag-Info=tag=
    4c9a56de3c13dcca2015c888849cb672c4583fde fp=ac0a4ff12611b6fccf01c111393587d97d86500b' rpush-source '[email protected]:/tmp/autopkgtest-virt-docker.shared.8a1jh06_/downtmp/work'

    t2u processor [dgit-repos-server]: error: subprocess failed with error exit status 255

    --66d10b612108a4102e03f57de0d10eecbb868389f043f2ed45b9c16f860d849a Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Content-Disposition: attachment; filename="t2u_312_tag.txt" Content-Description: input git tag

    object a20f867f56e7928fd80de2eab1caedf3a0242b5b
    type commit
    tag debian/0.11.3_bpo12+1
    tagger Colin Watson <[email protected]> 1753014598 +0200

    debusine release 0.11.3~bpo12+1 for bookworm-backports

    [dgit distro=debian split]
    [dgit please-upload source=debusine version=0.11.3~bpo12+1]
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCAAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmh84UYACgkQOTWH2X2G UAt7sxAAiRzEiBh1CCPMouBmuZO1FyqSlt+tCI3PdnSS24YuzMiTHvfREuZJ2K92 tmwOVLI3ZuSr0qXdEzL0mByV2rz7ouFFm57TBE0Yt4zOzyfelAiRSlakLCGSKJfa aNvv9lBy69CnzNnRYaO7XUf5oJlkfDUr28YBMwqBLCzzKOSaTBam4Fe/z5Lydzc5 F0gvXwugBH7eqe14mI1W4mk7R9wcoyUf8o1N2CrZPdEVTvSLWtiihMogvmLjfr7I QmEA3gXCnaGP85elrYkd0y190HOI03w2p+cl8ZVut/S+vKoeZ73y0/z550mO4FY4 RK73XvWbk2hQDqgxBPVHpfsTJm/Uuu6PMVYeyLGJnVHsN556dm3JpKzcSeBX80OZ GRp/aQgXy/M//qK3Cc2DaO/LA2INr1iDL/JFWr6/iGvCJ8TyNM3QQf45L5/sSX11 TXNmkSPWwoyJ3OQS3djmW2kc22m9umiWbi5P2Mij6VnozGaMmYASFJwuC3ifkL4R XGcDKHrSD2IFCGguMWEFc8Hz1mmJ+ObijIxxLLl6G87ZeqArKk6l4onV6hXNIL5j Z7He+NrfmEXVhI5YrNV6fjJNwJhBLevJRzzUIj+pC+3qQB6XJ4cf2ZogOMh8MlKE TvLVxZts3Wi6aV9+gUfFPnDp60p8XjR9tSrPi4KN6XoPmhO7Bhk=
    =rUx2
    -----END PGP SIGNATURE-----

    --66d10b612108a4102e03f57de0d10eecbb868389f043f2ed45b9c16f860d849a Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Content-Disposition: attachment; filename="ssh-builder"
    Content-Description: ssh wrapper to access builder

    #!/bin/sh
    # ** autogenerated for t2u job 312 **
    # by dgit-repos-server tag2upload_hide_builder_rune_in_attachment.
    #
    # ssh wrapper, embodying runes to to enter builder VM from the builder host.
    # See TAG2UPLOAD-DESIGN.txt.

    set -e
    host="$1"; shift
    exec ssh -oBatchMode=yes "$host" 'podman exec -i 387e0d4006d87f74be9dd03ef0815ed30cab7c38159e7bcb215d792da6d0ac1f env -i bash -c '\''set -a; [ -r /etc/environment ] && . /etc/environment 2>/dev/null || true; [ -r /etc/default/locale ] && . /etc/default/
    locale 2>/dev/null || true; [ -r /etc/profile ] && . /etc/profile 2>/dev/null || true; set +a;"$@"; RC=$?; [ $RC != 255 ] || RC=253; set -e;myout=$(readlink /proc/$$/fd/1);myerr=$(readlink /proc/$$/fd/2);myout="${myout/[/'\'''\\''\\''\'''\'''\\''\\''\''[}
    "; myout="${myout/]/'\'''\\''\\''\'''\'''\\''\\''\'']}";myerr="${myerr/[/'\'''\\''\\''\'''\'''\\''\\''\''[}"; myerr="${myerr/]/'\'''\\''\\''\'''\'''\\''\\''\'']}";PS=$(ls -l /proc/[0-9]*/fd/* 2>/dev/null | sed -nr '\'''\\''\'''\'''\'''\\''\\''\''#('\'''\\
    ''\'''\''"$myout"'\'''\\''\'''\''|'\'''\\''\'''\''"$myerr"'\'''\\''\'''\'')# { s#^.*/proc/([0-9]+)/.*$#'\'''\\''\\''\''1#; p}'\'''\\''\'''\''|sort -u);KILL="";for pid in $PS; do [ $pid -ne $$ ] && [ $pid -ne $PPID ] || continue; KILL="$KILL $pid";
    done;[ -z "$KILL" ] || kill -9 $KILL >/dev/null 2>&1 || true;exit $RC'\'' -- su - builder -- -ec '\''exec "$@";x'\'' --' "$@"

    --66d10b612108a4102e03f57de0d10eecbb868389f043f2ed45b9c16f860d849a--

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Colin Watson on Sun Jul 20 15:10:02 2025
    Hello,

    On Sun 20 Jul 2025 at 01:39pm +01, Colin Watson wrote:

    Package: git-debpush
    Version: 13.9
    Severity: wishlist

    For -backports uploads, I normally prefer to retain only the backports-specific changelog entry for the most recent round of backports, in order to avoid cluttering the changelog with lots of entries that just say "Rebuild for bookworm-backports". I accept that this may be a personal quirk,
    but https://backports.debian.org/Contribute/#index3h2 seems to at least suggest it, and I don't think it's terribly unusual.

    However, this caused git-debpush to fail with "error: missing field Version in
    parsed changelog". I retried with "dgit -v0.11.1 push-source" and that worked
    fine, but git-debpush seems to have no equivalent option. Perhaps one could be added?

    We should definitely support not including the old backports entries as
    lots of people do backports that way, and it's a reasonable workflow.

    I think we should avoid burdening the user with having to pass a -v
    option. This should be handled automatically.

    Ian, what about a more limited version of #1106266 that applies only to
    certain suites where overwriting is normal, such as backports?

    --
    Sean Whitton

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQJNBAEBCgA3FiEEm5FwB64DDjbk/CSLaVt65L8GYkAFAmh86UkZHHNwd2hpdHRv bkBzcHdoaXR0b24ubmFtZQAKCRBpW3rkvwZiQGeRD/sFYXU7ZP97MQo2UaMCeM6g xqI0v25Svu87j1S9pYg6RJjX84paiCMODUWGUOMpy684tUirTWQEBvw1wRZ83lSI MBa0132cjBDv3gR38jW2QMlDEUr5d2JUcVgjcGMwH41Cp5XyoZfbd2EADQWiprqn O8gHEDvbYjTJnxSMpP/Zx+LPRxbBfXVI469pOGqqS9YqJUNqKrsnJEqJ4tNAE3SU oFx6Q3/S/+isygrNapHvIujKSkXuf2FT6LB9qGN/CN7N7qdEgXJaSV1R5cvSNZQM 6qwa+CVx21L0gw6X5PCKDny1LACR8Hx5vF93YV3vWJh5pmWw1gEoQczTLpBb3DSb ZfGgcyfYzZaAyWR5OKaesx54NFheiqR29LRztZOxAcNsFZZrRmXxzPhIFK2vlBu3 egscVXGRri8rWur3xtS5d3PgSk0nQdpblrY2ckvj2L3SYCe4b15EDja1XfNtfkfX 8rKDJ3GLwqaj2CyVLGcyrOiZGbNSTxuW7+d3THgUPRfeWEoeWT/KRIhS92R8ze3f muMEXYAjgdisXaOHfkhudvzkrjNUpRhdBWiKg5mTrwmSizirB6BXgpsKFzQbSJFv 9148lENQ1AOaPQAge+zMqXLJwAGWmkejCqTReXZQ7vtFpbGRgjES9mVUpB3L52Kr pLhKMX4vDuNseUD9y8/szw==IBVo
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Us
  • From Ian Jackson@21:1/5 to All on Sat Aug 2 17:40:01 2025
    We discussed IRL the handling of backport and -v versions.

    There are *two* things we are trying to do with the previous version informatiion:

    * Calculate the -v option to pass to dpkg-parsechangelog.
    (With a normal upload this is the version currently present in the
    target suite.)

    * Perform the overwrkte check: we normally insist (with
    --trust-changelog eg in t2u) that the version currently present
    in the target suite, is mentioned in *this* upload's changelog.

    Backports may be based on the previous backport (merge workflow) or
    may be re-created afresh from the parent suite (restart workflow).

    We think this can be supported with the following behavioural change
    in dgit:

    * Backports suites are special (and known via the configuration).

    * When uploading to backports, check our changelog (of the thing
    we're uploading) for *either*
    - the current version in the parent suite
    - the current version in the backport suite

    * Whichever of these exists and is most recent in our changelog,
    should be used for dpkg-parsechangelog -v. It should appear
    because otherwise we'll be failing the --trust-changelog check.

    * With --overwrite=SPECIFIC-VERSION, it is ok to specify either of
    those versions as SPECIFIC-VERSION. We might the user (who isn't
    using t2u) to specify -v.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)