#!/bin/sh # # Copyright (C) 2023 Etersoft # Copyright (C) 2023 Vitaly Lipatov <lav@etersoft.ru> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # load_helper epm-sh-altlinux __epm_repo_pkgadd_alt() { local archlist="i586 x86_64 aarch64 noarch" local REPO_DIR="$1" shift [ -d "$REPO_DIR" ] || fatal 'Can'\''t find repo dir $REPO_DIR.' # default name REPO_NAME="addon" # detect if already exists for arch in $archlist ; do local rd="$(echo $REPO_DIR/$arch/RPMS.*)" [ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break done [ -n "$1" ] || fatal "Missed package name" while [ -s "$1" ] ; do arch="$(epm print arch from filename "$1")" || fatal # arch hack (it is better to repack firstly) [ "$arch" = "i686" ] && arch="i586" [ "$arch" = "i386" ] && arch="i586" [ -d $REPO_DIR/$arch/RPMS.$REPO_NAME ] || fatal epm checkpkg "$1" || fatal cp -v "$1" $REPO_DIR/$arch/RPMS.$REPO_NAME || fatal shift done } __epm_repo_pkgdel_alt() { local archlist="i586 x86_64 aarch64 noarch" local REPO_DIR="$1" shift [ -d "$REPO_DIR" ] || fatal 'Can'\''t find repo dir $REPO_DIR.' [ -n "$1" ] || fatal "Missed package name" # default name REPO_NAME="addon" # detect if already exists for arch in $archlist ; do local rd="$(echo $REPO_DIR/$arch/RPMS.*)" [ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break done while [ -s "$1" ] ; do for arch in $archlist ; do local rd="$REPO_DIR/$arch/RPMS.$REPO_NAME" [ -d $REPO_DIR/$arch/RPMS.$REPO_NAME ] || continue for i in $rd/$1* ; do [ "$1" = "$(epm print name for package $i)" ] || continue rm -v $rd/$1* done done shift done } __epm_repo_pkgupdate_alt() { local dir="$1" shift for i in "$@" ; do pkg="$(epm print name for package $i)" || fatal __epm_repo_pkgdel_alt "$dir" $pkg done __epm_repo_pkgadd_alt "$dir" "$@" } epm_repo_pkgadd() { case $PMTYPE in apt-rpm) __epm_repo_pkgadd_alt "$@" ;; *) fatal 'Have no suitable command for $PMTYPE' ;; esac } epm_repo_pkgupdate() { case $PMTYPE in apt-rpm) __epm_repo_pkgupdate_alt "$@" ;; *) fatal 'Have no suitable command for $PMTYPE' ;; esac } epm_repo_pkgdel() { case $PMTYPE in apt-rpm) __epm_repo_pkgdel_alt "$@" ;; *) fatal 'Have no suitable command for $PMTYPE' ;; esac } # call with packages to put to $put_to_repo epm_put_to_repo() { epm_repo_pkgupdate "$put_to_repo" "$@" }