diff options
Diffstat (limited to 'python/python3-libagent')
-rw-r--r-- | python/python3-libagent/480.diff | 102 | ||||
-rw-r--r-- | python/python3-libagent/README | 8 | ||||
-rw-r--r-- | python/python3-libagent/python3-libagent.SlackBuild | 86 | ||||
-rw-r--r-- | python/python3-libagent/python3-libagent.info | 10 | ||||
-rw-r--r-- | python/python3-libagent/slack-desc | 19 |
5 files changed, 225 insertions, 0 deletions
diff --git a/python/python3-libagent/480.diff b/python/python3-libagent/480.diff new file mode 100644 index 0000000000..601513ed2b --- /dev/null +++ b/python/python3-libagent/480.diff @@ -0,0 +1,102 @@ +diff --git a/libagent/age/__init__.py b/libagent/age/__init__.py +index dd2fbe66..e20cb3c4 100644 +--- a/libagent/age/__init__.py ++++ b/libagent/age/__init__.py +@@ -13,9 +13,9 @@ + import logging + import os + import sys ++from importlib import metadata + + import bech32 +-import pkg_resources + from cryptography.exceptions import InvalidTag + from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 + +@@ -150,9 +150,8 @@ def main(device_type): + p = argparse.ArgumentParser() + + agent_package = device_type.package_name() +- resources_map = {r.key: r for r in pkg_resources.require(agent_package)} +- resources = [resources_map[agent_package], resources_map['libagent']] +- versions = '\n'.join('{}={}'.format(r.key, r.version) for r in resources) ++ resources = [metadata.distribution(agent_package), metadata.distribution('libagent')] ++ versions = '\n'.join('{}={}'.format(r.metadata['Name'], r.version) for r in resources) + p.add_argument('--version', help='print the version info', + action='version', version=versions) + +diff --git a/libagent/gpg/__init__.py b/libagent/gpg/__init__.py +index 6bad4f65..4f1b166d 100644 +--- a/libagent/gpg/__init__.py ++++ b/libagent/gpg/__init__.py +@@ -17,13 +17,13 @@ + import stat + import subprocess + import sys ++from importlib import metadata + + try: + # TODO: Not supported on Windows. Use daemoniker instead? + import daemon + except ImportError: + daemon = None +-import pkg_resources + import semver + + from .. import device, formats, server, util +@@ -308,9 +308,8 @@ def main(device_type): + parser = argparse.ArgumentParser(epilog=epilog) + + agent_package = device_type.package_name() +- resources_map = {r.key: r for r in pkg_resources.require(agent_package)} +- resources = [resources_map[agent_package], resources_map['libagent']] +- versions = '\n'.join('{}={}'.format(r.key, r.version) for r in resources) ++ resources = [metadata.distribution(agent_package), metadata.distribution('libagent')] ++ versions = '\n'.join('{}={}'.format(r.metadata['Name'], r.version) for r in resources) + parser.add_argument('--version', help='print the version info', + action='version', version=versions) + +diff --git a/libagent/ssh/__init__.py b/libagent/ssh/__init__.py +index dee3ee24..14f2656d 100644 +--- a/libagent/ssh/__init__.py ++++ b/libagent/ssh/__init__.py +@@ -13,6 +13,7 @@ + import sys + import tempfile + import threading ++from importlib import metadata + + import configargparse + +@@ -21,7 +22,6 @@ + import daemon + except ImportError: + daemon = None +-import pkg_resources + + from .. import device, formats, server, util + from . import client, protocol +@@ -83,9 +83,8 @@ def create_agent_parser(device_type): + p.add_argument('-v', '--verbose', default=0, action='count') + + agent_package = device_type.package_name() +- resources_map = {r.key: r for r in pkg_resources.require(agent_package)} +- resources = [resources_map[agent_package], resources_map['libagent']] +- versions = '\n'.join('{}={}'.format(r.key, r.version) for r in resources) ++ resources = [metadata.distribution(agent_package), metadata.distribution('libagent')] ++ versions = '\n'.join('{}={}'.format(r.metadata['Name'], r.version) for r in resources) + p.add_argument('--version', help='print the version info', + action='version', version=versions) + +diff --git a/setup.py b/setup.py +index 10586f2e..4c21923a 100755 +--- a/setup.py ++++ b/setup.py +@@ -8,6 +8,7 @@ + author='Roman Zeyde', + author_email='dev@romanzey.de', + url='http://github.com/romanz/trezor-agent', ++ python_requires='>=3.8', + packages=[ + 'libagent', + 'libagent.age', diff --git a/python/python3-libagent/README b/python/python3-libagent/README new file mode 100644 index 0000000000..5933d41245 --- /dev/null +++ b/python/python3-libagent/README @@ -0,0 +1,8 @@ +This project allows you to use various hardware security devices to +operate GPG, SSH and age. Instead of keeping your key on your computer +and decrypting it with a passphrase when you want to use it, the key +is generated and stored on the device and never reaches your computer. + +You can do things like sign your emails, git commits, and software +packages, manage your passwords (with pass and passage, among others), +authenticate web tunnels and file transfers, and more. diff --git a/python/python3-libagent/python3-libagent.SlackBuild b/python/python3-libagent/python3-libagent.SlackBuild new file mode 100644 index 0000000000..9b5d2cd352 --- /dev/null +++ b/python/python3-libagent/python3-libagent.SlackBuild @@ -0,0 +1,86 @@ +#!/bin/bash + +# Slackware build script for python3-libagent + +# Copyright 2025 nomnombtc <nomnombtc@arcor.de> +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=python3-libagent +VERSION=${VERSION:-0.15.0} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +SRCNAM=libagent + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $SRCNAM-$VERSION +tar xvf $CWD/$SRCNAM-$VERSION.tar.gz +cd $SRCNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# libagent part of https://github.com/romanz/trezor-agent/pull/480 +# As side effect this fixes a runtime issue caused by pkg_resources. +patch -p1 < $CWD/480.diff + +python3 setup.py install --root=$PKG + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a \ + LICENSE README.md \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/python/python3-libagent/python3-libagent.info b/python/python3-libagent/python3-libagent.info new file mode 100644 index 0000000000..561c8dc023 --- /dev/null +++ b/python/python3-libagent/python3-libagent.info @@ -0,0 +1,10 @@ +PRGNAM="python3-libagent" +VERSION="0.15.0" +HOMEPAGE="https://github.com/romanz/trezor-agent" +DOWNLOAD="https://files.pythonhosted.org/packages/source/l/libagent/libagent-0.15.0.tar.gz" +MD5SUM="4662d86f7998877e33b1166af2b6fcf2" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="pynacl python3-configargparse python3-bech32 python3-daemon python3-semver Unidecode" +MAINTAINER="nomnombtc" +EMAIL="nomnombtc@arcor.de" diff --git a/python/python3-libagent/slack-desc b/python/python3-libagent/slack-desc new file mode 100644 index 0000000000..9c2012f578 --- /dev/null +++ b/python/python3-libagent/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +python3-libagent: python3-libagent (Hardware-based SSH/GPG/age agent) +python3-libagent: +python3-libagent: This project allows you to use various hardware security devices +python3-libagent: to operate GPG, SSH and age. Instead of keeping your key on your +python3-libagent: computer and decrypting it with a passphrase when you want to use +python3-libagent: it, the key is generated and stored on the device and never reaches +python3-libagent: your computer. +python3-libagent: +python3-libagent: Homepage: https://github.com/romanz/trezor-agent +python3-libagent: +python3-libagent: |