Commit b3a714f1 authored by Vitaly Lipatov's avatar Vitaly Lipatov

backported to p8 as 1.9.4-alt0.M80P.1 (with rpmbph script)

parents edc6ef46 53bedc7b
/etc/eepm.conf конфиг
FIXME: epm-install need realpath, missed on some systems FIXME: epm-install need realpath, missed on some systems
Lock a Specific Package Lock a Specific Package
......
...@@ -116,10 +116,6 @@ if distro altlinux-release ; then ...@@ -116,10 +116,6 @@ if distro altlinux-release ; then
elif has Citron ; then DISTRIB_RELEASE="2.4" elif has Citron ; then DISTRIB_RELEASE="2.4"
fi fi
elif [ `uname -o` = "Cygwin" ] ; then
DISTRIB_ID="Cygwin"
DISTRIB_RELEASE="all"
elif distro gentoo-release ; then elif distro gentoo-release ; then
DISTRIB_ID="Gentoo" DISTRIB_ID="Gentoo"
MAKEPROFILE=$(readlink $ROOTDIR/etc/portage/make.profile 2>/dev/null) || MAKEPROFILE=$(readlink $ROOTDIR/etc/make.profile) MAKEPROFILE=$(readlink $ROOTDIR/etc/portage/make.profile 2>/dev/null) || MAKEPROFILE=$(readlink $ROOTDIR/etc/make.profile)
...@@ -281,7 +277,7 @@ elif [ `uname` = "SunOS" ] ; then ...@@ -281,7 +277,7 @@ elif [ `uname` = "SunOS" ] ; then
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
# fixme: can we detect by some file? # fixme: can we detect by some file?
elif [ `uname` = "Darwin" ] ; then elif [ `uname -s 2>/dev/null` = "Darwin" ] ; then
DISTRIB_ID="MacOS" DISTRIB_ID="MacOS"
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
...@@ -295,6 +291,10 @@ elif [ `uname` = "Linux" ] && [ -x $ROOTDIR/system/bin/getprop ] ; then ...@@ -295,6 +291,10 @@ elif [ `uname` = "Linux" ] && [ -x $ROOTDIR/system/bin/getprop ] ; then
DISTRIB_ID="Android" DISTRIB_ID="Android"
DISTRIB_RELEASE=$(getprop | awk -F": " '/build.version.release/ { print $2 }' | tr -d '[]') DISTRIB_RELEASE=$(getprop | awk -F": " '/build.version.release/ { print $2 }' | tr -d '[]')
elif [ `uname -o 2>/dev/null` = "Cygwin" ] ; then
DISTRIB_ID="Cygwin"
DISTRIB_RELEASE="all"
# try use standart LSB info by default # try use standart LSB info by default
elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then
# use LSB # use LSB
......
...@@ -24,7 +24,8 @@ __epm_autoremove_altrpm() ...@@ -24,7 +24,8 @@ __epm_autoremove_altrpm()
assure_exists /etc/buildreqs/files/ignore.d/apt-scripts apt-scripts assure_exists /etc/buildreqs/files/ignore.d/apt-scripts apt-scripts
info info
info "Removing all non -devel/-debuginfo libs packages not need by anything..." info "Removing all non -devel/-debuginfo libs packages not need by anything..."
[ -n "$force" ] || info "You can run with --force for more deep removing" #[ -n "$force" ] || info "You can run with --force for more deep removing"
local force=force
local flag= local flag=
local libexclude='^lib' local libexclude='^lib'
...@@ -34,7 +35,7 @@ __epm_autoremove_altrpm() ...@@ -34,7 +35,7 @@ __epm_autoremove_altrpm()
showcmd "apt-cache list-nodeps | grep -- \"$libexclude\"" showcmd "apt-cache list-nodeps | grep -- \"$libexclude\""
pkgs=$(apt-cache list-nodeps | grep -- "$libexclude" \ pkgs=$(apt-cache list-nodeps | grep -- "$libexclude" \
| grep -E -v -- "-(devel|debuginfo)$" \ | grep -E -v -- "-(devel|debuginfo)$" \
| grep -E -v -- "-(util|tool|plugin|daemon)" \ | grep -E -v -- "-(util|utils|tool|tools|plugin|daemon|help)$" \
| sed -e "s/\.32bit$//g" \ | sed -e "s/\.32bit$//g" \
| grep -E -v -- "^(libsystemd|libreoffice|libnss|libvirt-client|libvirt-daemon|eepm)" ) | grep -E -v -- "^(libsystemd|libreoffice|libnss|libvirt-client|libvirt-daemon|eepm)" )
[ -n "$pkgs" ] && sudocmd rpm -v -e $pkgs && flag=1 [ -n "$pkgs" ] && sudocmd rpm -v -e $pkgs && flag=1
......
...@@ -60,7 +60,7 @@ case $PMTYPE in ...@@ -60,7 +60,7 @@ case $PMTYPE in
sudocmd pkg check -d -a sudocmd pkg check -d -a
;; ;;
homebrew) homebrew)
sudocmd brew doctor docmd brew doctor
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
......
...@@ -120,6 +120,9 @@ __epm_filelist_name() ...@@ -120,6 +120,9 @@ __epm_filelist_name()
assure_exists equery assure_exists equery
CMD="equery files" CMD="equery files"
;; ;;
homebrew)
CMD="brew list"
;;
pkgng) pkgng)
CMD="pkg info -l" CMD="pkg info -l"
;; ;;
......
...@@ -146,7 +146,7 @@ epm_install_names() ...@@ -146,7 +146,7 @@ epm_install_names()
return ;; return ;;
homebrew) homebrew)
# FIXME: sudo and quote # FIXME: sudo and quote
__separate_sudocmd "brew install" "brew upgrade" $@ SUDO= __separate_sudocmd "brew install" "brew upgrade" $@
return ;; return ;;
ipkg) ipkg)
[ -n "$force" ] && force=-force-depends [ -n "$force" ] && force=-force-depends
...@@ -241,6 +241,10 @@ epm_ni_install_names() ...@@ -241,6 +241,10 @@ epm_ni_install_names()
xbps) xbps)
sudocmd xbps-install -y $@ sudocmd xbps-install -y $@
return ;; return ;;
homebrew)
# FIXME: sudo and quote
SUDO= __separate_sudocmd "brew install" "brew upgrade" $@
return ;;
#android) #android)
# sudocmd pm install $@ # sudocmd pm install $@
# return ;; # return ;;
...@@ -491,6 +495,10 @@ epm_print_install_command() ...@@ -491,6 +495,10 @@ epm_print_install_command()
xbps) xbps)
echo "xbps-install -y $@" echo "xbps-install -y $@"
;; ;;
homebrew)
# FIXME: sudo and quote
echo "brew install $@"
;;
*) *)
fatal "Have no suitable appropriate install command for $PMTYPE" fatal "Have no suitable appropriate install command for $PMTYPE"
......
...@@ -128,7 +128,7 @@ case $PMTYPE in ...@@ -128,7 +128,7 @@ case $PMTYPE in
fi fi
;; ;;
homebrew) homebrew)
CMD="brew list $pkg_filenames" docmd brew list | xargs -n1 echo
;; ;;
ipkg) ipkg)
CMD="ipkg list" CMD="ipkg list"
...@@ -174,7 +174,7 @@ case $PMTYPE in ...@@ -174,7 +174,7 @@ case $PMTYPE in
;; ;;
esac esac
docmd $CMD | __fopfn docmd $CMD | __fo_pfn
# FIXME: we print empty lines, but will lost error status # FIXME: we print empty lines, but will lost error status
} }
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2012, 2013, 2015 Etersoft # Copyright (C) 2012, 2013, 2015, 2016 Etersoft
# Copyright (C) 2012, 2013, 2015 Vitaly Lipatov <lav@etersoft.ru> # Copyright (C) 2012, 2013, 2015, 2016 Vitaly Lipatov <lav@etersoft.ru>
# #
# This program is free software: you can redistribute it and/or modify # 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 # it under the terms of the GNU Affero General Public License as published by
...@@ -186,7 +186,7 @@ __epm_query_name() ...@@ -186,7 +186,7 @@ __epm_query_name()
CMD="conary query" CMD="conary query"
;; ;;
homebrew) homebrew)
warning "fix query" docmd brew info "$1" >/dev/null 2>/dev/null && echo "$1" && return
return 1 return 1
;; ;;
# TODO: need to print name if exists # TODO: need to print name if exists
...@@ -228,7 +228,7 @@ __epm_query_shortname() ...@@ -228,7 +228,7 @@ __epm_query_shortname()
CMD="conary query" CMD="conary query"
;; ;;
homebrew) homebrew)
warning "fix query" docmd brew info "$1" >/dev/null 2>/dev/null && echo "$1" && return
return 1 return 1
;; ;;
# TODO: need to print name if exists # TODO: need to print name if exists
......
...@@ -123,7 +123,7 @@ epm_remove_names() ...@@ -123,7 +123,7 @@ epm_remove_names()
sudocmd /usr/sbin/slackpkg remove $@ sudocmd /usr/sbin/slackpkg remove $@
return ;; return ;;
homebrew) homebrew)
sudocmd brew remove $@ docmd brew remove $@
return ;; return ;;
aptcyg) aptcyg)
sudocmd apt-cyg remove $@ sudocmd apt-cyg remove $@
......
...@@ -516,5 +516,5 @@ is_active_systemd() ...@@ -516,5 +516,5 @@ is_active_systemd()
[ -d "$SYSTEMD_CGROUP_DIR" ] || return [ -d "$SYSTEMD_CGROUP_DIR" ] || return
a= mountpoint -q "$SYSTEMD_CGROUP_DIR" || return a= mountpoint -q "$SYSTEMD_CGROUP_DIR" || return
# some hack # some hack
pidof systemd >/dev/null ps ax | grep -q systemd >/dev/null
} }
...@@ -49,7 +49,7 @@ __query_package_hl_url() ...@@ -49,7 +49,7 @@ __query_package_hl_url()
# http://petstore.swagger.io/?url=http://packages.altlinux.org/api/docs # http://petstore.swagger.io/?url=http://packages.altlinux.org/api/docs
epm assure curl || return 1 epm assure curl || return 1
showcmd curl "$PAOAPI/srpms/$1" showcmd curl "$PAOAPI/srpms/$1"
curl -s --header "Accept: application/json" "$PAOAPI/srpms/$1" | grep '"url"' | sed -e 's|.*"url":"||g' | sed -e 's|".*||g' a= curl -s --header "Accept: application/json" "$PAOAPI/srpms/$1" | grep '"url"' | sed -e 's|.*"url":"||g' | sed -e 's|".*||g'
return 0 return 0
;; ;;
esac esac
......
...@@ -75,7 +75,7 @@ case $PMTYPE in ...@@ -75,7 +75,7 @@ case $PMTYPE in
sudocmd packdcl detect # get packages from MSI database sudocmd packdcl detect # get packages from MSI database
;; ;;
homebrew) homebrew)
sudocmd brew update docmd brew update
;; ;;
ipkg) ipkg)
sudocmd ipkg update sudocmd ipkg update
......
...@@ -81,7 +81,7 @@ epm_upgrade() ...@@ -81,7 +81,7 @@ epm_upgrade()
;; ;;
homebrew) homebrew)
#CMD="brew upgrade" #CMD="brew upgrade"
sudocmd "brew upgrade `brew outdated`" docmd "brew upgrade `brew outdated`"
return return
;; ;;
ipkg) ipkg)
......
...@@ -130,7 +130,7 @@ $(get_help HELPOPT) ...@@ -130,7 +130,7 @@ $(get_help HELPOPT)
print_version() print_version()
{ {
echo "Service manager version @VERSION@" echo "Service manager version @VERSION@"
echo "Running on $($DISTRVENDOR)" echo "Running on $($DISTRVENDOR) with $SERVICETYPE"
echo "Copyright (c) Etersoft 2012, 2013, 2016" echo "Copyright (c) Etersoft 2012, 2013, 2016"
echo "This program may be freely redistributed under the terms of the GNU AGPLv3." echo "This program may be freely redistributed under the terms of the GNU AGPLv3."
} }
......
/bin/echo
coreutils
eepm
file
findutils
grep
less
procps
rpm
sed
sudo
termutils
which
#!/bin/sh #!/bin/sh
/usr/lib/rpm/shell.req bin/epm-* | sort -u /usr/lib/rpm/shell.req bin/epm-* | sort -u | tee ./check_eepm.log
git diff ./check_eepm.log
# This spec is backported to ALTLinux p8 automatically by rpmbph script from etersoft-build-utils. # This spec is backported to ALTLinux p8 automatically by rpmbph script from etersoft-build-utils.
# #
Name: eepm Name: eepm
Version: 1.9.3 Version: 1.9.4
Release: alt0.M80P.1 Release: alt0.M80P.1
Summary: Etersoft EPM package manager Summary: Etersoft EPM package manager
...@@ -52,6 +52,7 @@ ln -s serv %buildroot%_sysconfdir/bash_completion.d/cerv ...@@ -52,6 +52,7 @@ ln -s serv %buildroot%_sysconfdir/bash_completion.d/cerv
# shebang.req.files # shebang.req.files
chmod a+x %buildroot%_datadir/%name/{serv-,epm-}* chmod a+x %buildroot%_datadir/%name/{serv-,epm-}*
chmod a+x %buildroot%_datadir/%name/tools_*
%files %files
%doc README TODO LICENSE %doc README TODO LICENSE
...@@ -67,9 +68,15 @@ chmod a+x %buildroot%_datadir/%name/{serv-,epm-}* ...@@ -67,9 +68,15 @@ chmod a+x %buildroot%_datadir/%name/{serv-,epm-}*
%_sysconfdir/bash_completion.d/cerv %_sysconfdir/bash_completion.d/cerv
%changelog %changelog
* Wed Aug 24 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.3-alt0.M80P.1 * Fri Sep 23 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.4-alt0.M80P.1
- backport to ALTLinux p8 (by rpmbph script) - backport to ALTLinux p8 (by rpmbph script)
* Fri Sep 23 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.4-alt1
- distr_info: fix checking on MacOS
- brew fixes
- autoremove: enable deep remove by default
- small fixes
* Wed Aug 24 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.3-alt1 * Wed Aug 24 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.3-alt1
- implement cross install for rpm and deb packages - implement cross install for rpm and deb packages
- serv: add runit support (Void Linux) - serv: add runit support (Void Linux)
......
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2012-2014 Etersoft # Copyright (C) 2012-2016 Etersoft
# Copyright (C) 2012-2014 Vitaly Lipatov <lav@etersoft.ru> # Copyright (C) 2012-2016 Vitaly Lipatov <lav@etersoft.ru>
# #
# This program is free software: you can redistribute it and/or modify # 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 # it under the terms of the GNU Affero General Public License as published by
...@@ -17,10 +17,12 @@ ...@@ -17,10 +17,12 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
PROGDIR=$(dirname $0) PROGDIR=$(dirname "$0")
PROGNAME=$(basename "$0")
[ "$PROGDIR" = "." ] && PROGDIR=$(pwd) [ "$PROGDIR" = "." ] && PROGDIR=$(pwd)
if [ "$0" = "/dev/stdin" ] || [ "$0" = "sh" ] ; then if [ "$0" = "/dev/stdin" ] || [ "$0" = "sh" ] ; then
PROGDIR="" PROGDIR=""
PROGNAME=""
fi fi
# will replaced to /usr/share/eepm during install # will replaced to /usr/share/eepm during install
...@@ -209,6 +211,12 @@ store_output() ...@@ -209,6 +211,12 @@ store_output()
#return $PIPESTATUS #return $PIPESTATUS
} }
showcmd_store_output()
{
showcmd "$@"
store_output "$@"
}
clean_store_output() clean_store_output()
{ {
rm -f $RC_STDOUT $RC_STDOUT.pipestatus rm -f $RC_STDOUT $RC_STDOUT.pipestatus
...@@ -216,7 +224,8 @@ clean_store_output() ...@@ -216,7 +224,8 @@ clean_store_output()
epm() epm()
{ {
$PROGDIR/epm $@ [ -n "$PROGNAME" ] || fatal "Can't use epm call from the piped script"
$PROGDIR/$PROGNAME $@
} }
fatal() fatal()
...@@ -479,6 +488,9 @@ case $DISTRNAME in ...@@ -479,6 +488,9 @@ case $DISTRNAME in
TinyCoreLinux) TinyCoreLinux)
CMD="tce" CMD="tce"
;; ;;
VoidLinux)
CMD="xbps"
;;
*) *)
fatal "Have no suitable DISTRNAME $DISTRNAME" fatal "Have no suitable DISTRNAME $DISTRNAME"
;; ;;
...@@ -503,26 +515,27 @@ is_active_systemd() ...@@ -503,26 +515,27 @@ is_active_systemd()
epm_addrepo() epm_addrepo()
{ {
local repo="$(eval echo $quoted_args)"
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists apt-repo assure_exists apt-repo
sudocmd apt-repo add "$pkg_filenames" sudocmd apt-repo add "$repo"
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
info "You need manually add repo to /etc/apt/sources.list" info "You need manually add repo to /etc/apt/sources.list"
;; ;;
yum-rpm) yum-rpm)
assure_exists yum-utils assure_exists yum-utils
sudocmd yum-config-manager --add-repo "$pkg_filenames" sudocmd yum-config-manager --add-repo "$repo"
;; ;;
urpm-rpm) urpm-rpm)
sudocmd urpmi.addmedia "$pkg_filenames" sudocmd urpmi.addmedia "$repo"
;; ;;
zypper-rpm) zypper-rpm)
sudocmd zypper ar "$pkg_filenames" sudocmd zypper ar "$repo"
;; ;;
emerge) emerge)
sudocmd layman -a $"pkg_filenames" sudocmd layman -a "$repo"
;; ;;
pacman) pacman)
info "You need manually add repo to /etc/pacman.conf" info "You need manually add repo to /etc/pacman.conf"
...@@ -530,7 +543,7 @@ case $PMTYPE in ...@@ -530,7 +543,7 @@ case $PMTYPE in
#sudocmd repo-add $pkg_filenames #sudocmd repo-add $pkg_filenames
;; ;;
npackd) npackd)
sudocmd npackdcl add-repo --url="$pkg_filenames" sudocmd npackdcl add-repo --url="$repo"
;; ;;
slackpkg) slackpkg)
info "You need manually add repo to /etc/slackpkg/mirrors" info "You need manually add repo to /etc/slackpkg/mirrors"
...@@ -735,6 +748,9 @@ case $PMTYPE in ...@@ -735,6 +748,9 @@ case $PMTYPE in
local PKGLIST=$(zypper packages --orphaned | tail -n +5 | cut -d \| -f 3 | sort -u) local PKGLIST=$(zypper packages --orphaned | tail -n +5 | cut -d \| -f 3 | sort -u)
sudocmd zypper remove --clean-deps $PKGLIST sudocmd zypper remove --clean-deps $PKGLIST
;; ;;
xbps)
CMD="xbps-remove -o"
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -750,7 +766,8 @@ __epm_autoremove_altrpm() ...@@ -750,7 +766,8 @@ __epm_autoremove_altrpm()
assure_exists /etc/buildreqs/files/ignore.d/apt-scripts apt-scripts assure_exists /etc/buildreqs/files/ignore.d/apt-scripts apt-scripts
info info
info "Removing all non -devel/-debuginfo libs packages not need by anything..." info "Removing all non -devel/-debuginfo libs packages not need by anything..."
[ -n "$force" ] || info "You can run with --force for more deep removing" #[ -n "$force" ] || info "You can run with --force for more deep removing"
local force=force
local flag= local flag=
local libexclude='^lib' local libexclude='^lib'
...@@ -760,7 +777,7 @@ __epm_autoremove_altrpm() ...@@ -760,7 +777,7 @@ __epm_autoremove_altrpm()
showcmd "apt-cache list-nodeps | grep -- \"$libexclude\"" showcmd "apt-cache list-nodeps | grep -- \"$libexclude\""
pkgs=$(apt-cache list-nodeps | grep -- "$libexclude" \ pkgs=$(apt-cache list-nodeps | grep -- "$libexclude" \
| grep -E -v -- "-(devel|debuginfo)$" \ | grep -E -v -- "-(devel|debuginfo)$" \
| grep -E -v -- "-(util|tool|plugin|daemon)" \ | grep -E -v -- "-(util|utils|tool|tools|plugin|daemon|help)$" \
| sed -e "s/\.32bit$//g" \ | sed -e "s/\.32bit$//g" \
| grep -E -v -- "^(libsystemd|libreoffice|libnss|libvirt-client|libvirt-daemon|eepm)" ) | grep -E -v -- "^(libsystemd|libreoffice|libnss|libvirt-client|libvirt-daemon|eepm)" )
[ -n "$pkgs" ] && sudocmd rpm -v -e $pkgs && flag=1 [ -n "$pkgs" ] && sudocmd rpm -v -e $pkgs && flag=1
...@@ -852,6 +869,9 @@ case $PMTYPE in ...@@ -852,6 +869,9 @@ case $PMTYPE in
local PKGLIST=$(zypper packages --unneeded | tail -n +5 | cut -d \| -f 3 | sort -u) local PKGLIST=$(zypper packages --unneeded | tail -n +5 | cut -d \| -f 3 | sort -u)
sudocmd zypper remove --clean-deps $PKGLIST sudocmd zypper remove --clean-deps $PKGLIST
;; ;;
xbps)
CMD="xbps-remove -O"
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -1004,7 +1024,7 @@ case $PMTYPE in ...@@ -1004,7 +1024,7 @@ case $PMTYPE in
sudocmd pkg check -d -a sudocmd pkg check -d -a
;; ;;
homebrew) homebrew)
sudocmd brew doctor docmd brew doctor
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
...@@ -1240,6 +1260,9 @@ case $PMTYPE in ...@@ -1240,6 +1260,9 @@ case $PMTYPE in
pkgng) pkgng)
sudocmd pkg clean -a sudocmd pkg clean -a
;; ;;
xbps)
sudocmd xbps-remove -O
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -1563,9 +1586,15 @@ __epm_filelist_name() ...@@ -1563,9 +1586,15 @@ __epm_filelist_name()
assure_exists equery assure_exists equery
CMD="equery files" CMD="equery files"
;; ;;
homebrew)
CMD="brew list"
;;
pkgng) pkgng)
CMD="pkg info -l" CMD="pkg info -l"
;; ;;
xbps)
CMD="xbps-query -f"
;;
aptcyg) aptcyg)
docmd apt-cyg listfiles $@ | sed -e "s|^|/|g" docmd apt-cyg listfiles $@ | sed -e "s|^|/|g"
return return
...@@ -1682,6 +1711,9 @@ case $PMTYPE in ...@@ -1682,6 +1711,9 @@ case $PMTYPE in
pkgng) pkgng)
docmd pkg info $pkg_names docmd pkg info $pkg_names
;; ;;
xbps)
docmd xbps-query --show $pkg_names
;;
homebrew) homebrew)
docmd brew info $pkg_names docmd brew info $pkg_names
;; ;;
...@@ -1818,7 +1850,7 @@ epm_install_names() ...@@ -1818,7 +1850,7 @@ epm_install_names()
return ;; return ;;
homebrew) homebrew)
# FIXME: sudo and quote # FIXME: sudo and quote
__separate_sudocmd "brew install" "brew upgrade" $@ SUDO= __separate_sudocmd "brew install" "brew upgrade" $@
return ;; return ;;
ipkg) ipkg)
[ -n "$force" ] && force=-force-depends [ -n "$force" ] && force=-force-depends
...@@ -1842,6 +1874,9 @@ epm_install_names() ...@@ -1842,6 +1874,9 @@ epm_install_names()
aptcyg) aptcyg)
sudocmd apt-cyg install $@ sudocmd apt-cyg install $@
return ;; return ;;
xbps)
sudocmd xbps-install $@
return ;;
*) *)
fatal "Have no suitable install command for $PMTYPE" fatal "Have no suitable install command for $PMTYPE"
;; ;;
...@@ -1906,6 +1941,13 @@ epm_ni_install_names() ...@@ -1906,6 +1941,13 @@ epm_ni_install_names()
tce) tce)
sudocmd tce-load -wi $@ sudocmd tce-load -wi $@
return ;; return ;;
xbps)
sudocmd xbps-install -y $@
return ;;
homebrew)
# FIXME: sudo and quote
SUDO= __separate_sudocmd "brew install" "brew upgrade" $@
return ;;
#android) #android)
# sudocmd pm install $@ # sudocmd pm install $@
# return ;; # return ;;
...@@ -1941,8 +1983,11 @@ __epm_check_if_try_install_deb() ...@@ -1941,8 +1983,11 @@ __epm_check_if_try_install_deb()
local TDIR=$(mktemp -d) local TDIR=$(mktemp -d)
cd $TDIR cd $TDIR
for pkg in $debpkgs ; do for pkg in $debpkgs ; do
showcmd alien -r -k --scripts "$pkg" # TODO: fakeroot for non ALT?
# TODO: need check for return status showcmd_store_output alien -r -k --scripts "$pkg" || fatal
local RPMCONVERTED=$(grep "rpm generated" $RC_STDOUT | sed -e "s| generated||g")
clean_store_output
epm install $RPMCONVERTED
done done
rm -f $TDIR/* rm -f $TDIR/*
rmdir $TDIR/ rmdir $TDIR/
...@@ -1962,12 +2007,16 @@ __epm_check_if_try_install_rpm() ...@@ -1962,12 +2007,16 @@ __epm_check_if_try_install_rpm()
[ -n "$rpmpkgs" ] || return 1 [ -n "$rpmpkgs" ] || return 1
assure_exists alien assure_exists alien
assure_exists fakeroot
local TDIR=$(mktemp -d) local TDIR=$(mktemp -d)
cd $TDIR cd $TDIR
for pkg in $rpmpkgs ; do for pkg in $rpmpkgs ; do
showcmd alien -d -k --scripts "$pkg" showcmd_store_output fakeroot alien -d -k --scripts "$pkg"
# TODO: need check for return status clean_store_output
local DEBCONVERTED=$(grep "deb generated" $RC_STDOUT | sed -e "s| generated||g")
clean_store_output
epm install $DEBCONVERTED
done done
rm -f $TDIR/* rm -f $TDIR/*
rmdir $TDIR/ rmdir $TDIR/
...@@ -1992,7 +2041,7 @@ epm_install_files() ...@@ -1992,7 +2041,7 @@ epm_install_files()
if ! is_dirpath "$@" || [ "$(get_package_type "$@")" = "rpm" ] ; then if ! is_dirpath "$@" || [ "$(get_package_type "$@")" = "rpm" ] ; then
sudocmd rpm -Uvh $force $nodeps $@ && return sudocmd rpm -Uvh $force $nodeps $@ && return
local RES=$? local RES=$?
# TODO: check rpm result code and convert it to compatible format if possible
__epm_check_if_rpm_already_installed $@ && return __epm_check_if_rpm_already_installed $@ && return
# if run with --nodeps, do not fallback on hi level # if run with --nodeps, do not fallback on hi level
...@@ -2143,6 +2192,14 @@ epm_print_install_command() ...@@ -2143,6 +2192,14 @@ epm_print_install_command()
tce) tce)
echo "tce-load -wi $@" echo "tce-load -wi $@"
;; ;;
xbps)
echo "xbps-install -y $@"
;;
homebrew)
# FIXME: sudo and quote
echo "brew install $@"
;;
*) *)
fatal "Have no suitable appropriate install command for $PMTYPE" fatal "Have no suitable appropriate install command for $PMTYPE"
;; ;;
...@@ -2165,14 +2222,8 @@ download_pkg_urls() ...@@ -2165,14 +2222,8 @@ download_pkg_urls()
done done
} }
__use_url_install()
__handle_pkg_urls()
{ {
[ -n "$pkg_urls" ] || return
# TODO: do it correcly
to_remove_pkg_files=
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# ALT Linux really? # ALT Linux really?
...@@ -2194,10 +2245,23 @@ __handle_pkg_urls() ...@@ -2194,10 +2245,23 @@ __handle_pkg_urls()
# pkg_names="$pkg_names $pkg_urls" # pkg_names="$pkg_names $pkg_urls"
# ;; # ;;
*) *)
# use workaround with eget: download and put in pkg_files return 1
download_pkg_urls
;; ;;
esac esac
return 0
}
__handle_pkg_urls()
{
[ -n "$pkg_urls" ] || return
# TODO: do it correctly
to_remove_pkg_files=
if [ "$(get_package_type "$pkg")" != $PKGFORMAT ] || ! __use_url_install ; then
# use workaround with eget: download and put in pkg_files
download_pkg_urls
fi
pkg_urls= pkg_urls=
} }
...@@ -2413,6 +2477,11 @@ __aptcyg_print_full() ...@@ -2413,6 +2477,11 @@ __aptcyg_print_full()
echo "$1-$VERSION" echo "$1-$VERSION"
} }
__fo_pfn()
{
grep -v "^$" | grep -- "$pkg_filenames"
}
epm_packages() epm_packages()
{ {
local CMD local CMD
...@@ -2420,23 +2489,28 @@ epm_packages() ...@@ -2420,23 +2489,28 @@ epm_packages()
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# FIXME: strong equal
CMD="rpm -qa $pkg_filenames" CMD="rpm -qa $pkg_filenames"
[ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames" [ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames"
;; docmd $CMD
return ;;
*-dpkg) *-dpkg)
# FIXME: strong equal
#CMD="dpkg -l $pkg_filenames" #CMD="dpkg -l $pkg_filenames"
CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}-\${Version}\n $pkg_filenames" CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}-\${Version}\n $pkg_filenames"
[ -n "$short" ] && CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}\n $pkg_filenames" [ -n "$short" ] && CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}\n $pkg_filenames"
docmd $CMD | grep "^i" | sed -e "s|.* ||g" showcmd $CMD
return $CMD | grep "^i" | sed -e "s|.* ||g" | __fo_pfn
;; return ;;
snappy) snappy)
CMD="snappy info" CMD="snappy info"
;; ;;
yum-rpm|urpm-rpm|zypper-rpm|dnf-rpm) yum-rpm|urpm-rpm|zypper-rpm|dnf-rpm)
# FIXME: strong equal
CMD="rpm -qa $pkg_filenames" CMD="rpm -qa $pkg_filenames"
[ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames" [ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames"
;; docmd $CMD
return ;;
emerge) emerge)
CMD="qlist -I -C" CMD="qlist -I -C"
# print with colors for console output # print with colors for console output
...@@ -2444,26 +2518,27 @@ case $PMTYPE in ...@@ -2444,26 +2518,27 @@ case $PMTYPE in
;; ;;
pkgsrc) pkgsrc)
CMD="pkg_info" CMD="pkg_info"
docmd $CMD | sed -e "s| .*||g" showcmd $CMD
return $CMD | sed -e "s| .*||g" | __fo_pfn
;; return ;;
pkgng) pkgng)
if [ -n "$pkg_filenames" ] ; then if [ -n "$pkg_filenames" ] ; then
CMD="pkg info -E $pkg_filenames" CMD="pkg info -E $pkg_filenames"
else else
CMD="pkg info" CMD="pkg info"
fi fi
showcmd $CMD
if [ -n "$short" ] ; then if [ -n "$short" ] ; then
docmd $CMD | sed -e "s| .*||g" | sed -e "s|-[0-9].*||g" $CMD | sed -e "s| .*||g" | sed -e "s|-[0-9].*||g" | __fo_pfn
else else
docmd $CMD | sed -e "s| .*||g" $CMD | sed -e "s| .*||g" | __fo_pfn
fi fi
return return ;;
;;
pacman) pacman)
CMD="pacman -Qs $pkg_filenames" CMD="pacman -Qs $pkg_filenames"
showcmd $CMD
if [ -n "$short" ] ; then if [ -n "$short" ] ; then
docmd $CMD | sed -e "s| .*||g" -e "s|.*/||g" | grep -v "^$" $CMD | sed -e "s| .*||g" -e "s|.*/||g" | __fo_pfn
return return
fi fi
;; ;;
...@@ -2483,12 +2558,12 @@ case $PMTYPE in ...@@ -2483,12 +2558,12 @@ case $PMTYPE in
# FIXME: does not work for libjpeg-v8a # FIXME: does not work for libjpeg-v8a
# TODO: remove last 3 elements (if arch is second from the last?) # TODO: remove last 3 elements (if arch is second from the last?)
# FIXME this hack # FIXME this hack
docmd ls -1 /var/log/packages/ | sed -e "s|-[0-9].*||g" | sed -e "s|libjpeg-v8a.*|libjpeg|g" docmd ls -1 /var/log/packages/ | sed -e "s|-[0-9].*||g" | sed -e "s|libjpeg-v8a.*|libjpeg|g" | __fo_pfn
return return
fi fi
;; ;;
homebrew) homebrew)
CMD="brew list $pkg_filenames" docmd brew list | xargs -n1 echo
;; ;;
ipkg) ipkg)
CMD="ipkg list" CMD="ipkg list"
...@@ -2502,9 +2577,20 @@ case $PMTYPE in ...@@ -2502,9 +2577,20 @@ case $PMTYPE in
guix) guix)
CMD="guix package -I" CMD="guix package -I"
;; ;;
xbps)
CMD="xbps-query -l"
showcmd $CMD
if [ -n "$short" ] ; then
$CMD | sed -e "s|^ii ||g" -e "s| .*||g" -e "s|\(.*\)-.*|\1|g" | __fo_pfn
else
$CMD | sed -e "s|^ii ||g" -e "s| .*||g" | __fo_pfn
fi
return 0
;;
android) android)
CMD="pm list packages" CMD="pm list packages"
docmd $CMD | sed -e "s|^package:||g" showcmd $CMD
$CMD | sed -e "s|^package:||g" | __fo_pfn
return return
;; ;;
aptcyg) aptcyg)
...@@ -2523,7 +2609,7 @@ case $PMTYPE in ...@@ -2523,7 +2609,7 @@ case $PMTYPE in
;; ;;
esac esac
docmd $CMD docmd $CMD | __fo_pfn
} }
...@@ -2875,16 +2961,18 @@ _get_grep_exp() ...@@ -2875,16 +2961,18 @@ _get_grep_exp()
_shortquery_via_packages_list() _shortquery_via_packages_list()
{ {
local res=0 local res=1
local grepexp local grepexp
local firstpkg=$1 local firstpkg=$1
shift shift
grepexp=$(_get_grep_exp $firstpkg) grepexp=$(_get_grep_exp $firstpkg)
# TODO: we miss status due grep
# Note: double call due stderr redirect
# Note: we use short=1 here due grep by ^name$ # Note: we use short=1 here due grep by ^name$
# separate first line for print out command # separate first line for print out command
short=1 pkg_filenames=$firstpkg epm_packages | grep -- "$grepexp" || res=1 short=1 pkg_filenames=$firstpkg epm_packages | grep -- "$grepexp" && res=0 || res=1
local pkg local pkg
for pkg in "$@" ; do for pkg in "$@" ; do
...@@ -2897,16 +2985,19 @@ _shortquery_via_packages_list() ...@@ -2897,16 +2985,19 @@ _shortquery_via_packages_list()
_query_via_packages_list() _query_via_packages_list()
{ {
local res=0 local res=1
local grepexp local grepexp
local firstpkg=$1 local firstpkg=$1
shift shift
grepexp=$(_get_grep_exp $firstpkg) grepexp=$(_get_grep_exp $firstpkg)
# TODO: we miss status due grep
# TODO: grep correctly
# Note: double call due stderr redirect
# Note: we use short=1 here due grep by ^name$ # Note: we use short=1 here due grep by ^name$
# separate first line for print out command # separate first line for print out command
short=1 pkg_filenames=$firstpkg epm_packages | grep -q -- "$grepexp" && quiet=1 pkg_filenames=$firstpkg epm_packages || res=1 short=1 pkg_filenames=$firstpkg epm_packages | grep -q -- "$grepexp" && quiet=1 pkg_filenames=$firstpkg epm_packages && res=0 || res=1
local pkg local pkg
for pkg in "$@" ; do for pkg in "$@" ; do
...@@ -3059,7 +3150,7 @@ __epm_query_shortname() ...@@ -3059,7 +3150,7 @@ __epm_query_shortname()
CMD="conary query" CMD="conary query"
;; ;;
homebrew) homebrew)
warning "fix query" docmd brew info "$1" >/dev/null 2>/dev/null && echo "$1" && return
return 1 return 1
;; ;;
# TODO: need to print name if exists # TODO: need to print name if exists
...@@ -3188,6 +3279,10 @@ __do_query() ...@@ -3188,6 +3279,10 @@ __do_query()
ipkg) ipkg)
CMD="ipkg files" CMD="ipkg files"
;; ;;
xbps)
# FIXME: maybe it is search file?
CMD="xbps-query -o"
;;
aptcyg) aptcyg)
#CMD="apt-cyg packageof" #CMD="apt-cyg packageof"
# do not realized locally # do not realized locally
...@@ -3389,7 +3484,7 @@ __replace_alt_version_in_repo() ...@@ -3389,7 +3484,7 @@ __replace_alt_version_in_repo()
#echo "Upgrading $DISTRNAME from $1 to $2 ..." #echo "Upgrading $DISTRNAME from $1 to $2 ..."
docmd apt-repo list | sed -e "s|\($1\)|{\1}->{$2}|g" | egrep --color -- "$1" docmd apt-repo list | sed -e "s|\($1\)|{\1}->{$2}|g" | egrep --color -- "$1"
# ask and replace only we will have changes # ask and replace only we will have changes
if apt-repo list | egrep -q -- "$1" ; then if a= apt-repo list | egrep -q -- "$1" ; then
confirm "Are these correct changes? [y/N]" || fatal "Exiting" confirm "Are these correct changes? [y/N]" || fatal "Exiting"
__replace_text_in_alt_repo "/^ *#/! s!$1!$2!g" __replace_text_in_alt_repo "/^ *#/! s!$1!$2!g"
fi fi
...@@ -3701,11 +3796,14 @@ epm_remove_names() ...@@ -3701,11 +3796,14 @@ epm_remove_names()
sudocmd /usr/sbin/slackpkg remove $@ sudocmd /usr/sbin/slackpkg remove $@
return ;; return ;;
homebrew) homebrew)
sudocmd brew remove $@ docmd brew remove $@
return ;; return ;;
aptcyg) aptcyg)
sudocmd apt-cyg remove $@ sudocmd apt-cyg remove $@
return ;; return ;;
xbps)
sudocmd xbps remove -R $@
return ;;
ipkg) ipkg)
sudocmd ipkg $(subst_option force -force-depends) remove $@ sudocmd ipkg $(subst_option force -force-depends) remove $@
return ;; return ;;
...@@ -3748,6 +3846,9 @@ epm_remove_nonint() ...@@ -3748,6 +3846,9 @@ epm_remove_nonint()
ipkg) ipkg)
sudocmd ipkg -force-defaults remove $@ sudocmd ipkg -force-defaults remove $@
return ;; return ;;
xbps)
sudocmd xbps remove -y $@
return ;;
esac esac
return 5 return 5
} }
...@@ -3782,6 +3883,9 @@ epm_print_remove_command() ...@@ -3782,6 +3883,9 @@ epm_print_remove_command()
aptcyg) aptcyg)
echo "apt-cyg remove $@" echo "apt-cyg remove $@"
;; ;;
xbps)
echo "xbps remove -y $@"
;;
*) *)
fatal "Have no suitable appropriate remove command for $PMTYPE" fatal "Have no suitable appropriate remove command for $PMTYPE"
;; ;;
...@@ -3851,6 +3955,9 @@ epm_remove_old_kernels() ...@@ -3851,6 +3955,9 @@ epm_remove_old_kernels()
Gentoo) Gentoo)
sudocmd emerge -P gentoo-sources sudocmd emerge -P gentoo-sources
return ;; return ;;
VoidLinux)
sudocmd vkpurge rm all
return ;;
esac esac
case $PMTYPE in case $PMTYPE in
...@@ -3864,32 +3971,33 @@ epm_remove_old_kernels() ...@@ -3864,32 +3971,33 @@ epm_remove_old_kernels()
epm_removerepo() epm_removerepo()
{ {
local repo="$(eval echo $quoted_args)"
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists apt-repo assure_exists apt-repo
sudocmd apt-repo rm "$quoted_args" sudocmd apt-repo rm "$repo"
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
info "You need remove repo from /etc/apt/sources.list" info "You need remove repo from /etc/apt/sources.list"
;; ;;
yum-rpm) yum-rpm)
assure_exists yum-utils assure_exists yum-utils
sudocmd yum-config-manager --disable "$pkg_filenames" sudocmd yum-config-manager --disable "$repo"
;; ;;
urpm-rpm) urpm-rpm)
sudocmd urpmi.removemedia "$pkg_filenames" sudocmd urpmi.removemedia "$repo"
;; ;;
zypper-rpm) zypper-rpm)
sudocmd zypper removerepo "$pkg_filenames" sudocmd zypper removerepo "$repo"
;; ;;
emerge) emerge)
sudocmd layman "-d$pkg_filenames" sudocmd layman "-d$repo"
;; ;;
pacman) pacman)
info "You need remove repo from /etc/pacman.conf" info "You need remove repo from /etc/pacman.conf"
;; ;;
npackd) npackd)
sudocmd npackdcl remove-repo --url="$pkg_filenames" sudocmd npackdcl remove-repo --url="$repo"
;; ;;
slackpkg) slackpkg)
info "You need remove repo from /etc/slackpkg/mirrors" info "You need remove repo from /etc/slackpkg/mirrors"
...@@ -3969,14 +4077,18 @@ case $PMTYPE in ...@@ -3969,14 +4077,18 @@ case $PMTYPE in
__fix_apt_sources_list /etc/apt/sources.list __fix_apt_sources_list /etc/apt/sources.list
__fix_apt_sources_list /etc/apt/sources.list.d/*.list __fix_apt_sources_list /etc/apt/sources.list.d/*.list
docmd apt-repo list docmd apt-repo list
# FIXME: what the best place?
# rebuild rpm database # rebuild rpm database
#sudocmd rm -fv /var/lib/rpm/__db* #sudocmd rm -fv /var/lib/rpm/__db*
#sudocmd rpm --rebuilddb #sudocmd rpm --rebuilddb
;; ;;
yum-rpm|dnf-rpm) yum-rpm|dnf-rpm)
sudocmd rm -fv /var/lib/rpm/__db* # FIXME: what the best place?
sudocmd rpm --rebuilddb #sudocmd rm -fv /var/lib/rpm/__db*
#sudocmd rpm --rebuilddb
;;
xbps)
sudocmd xbps-pkgdb -a
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
...@@ -4028,6 +4140,9 @@ case $PMTYPE in ...@@ -4028,6 +4140,9 @@ case $PMTYPE in
docmd eselect profile list docmd eselect profile list
docmd layman -L docmd layman -L
;; ;;
xbps)
docmd xbps-query -L
;;
pacman) pacman)
docmd grep -v -- "^#\|^$" /etc/pacman.conf docmd grep -v -- "^#\|^$" /etc/pacman.conf
;; ;;
...@@ -4128,6 +4243,9 @@ case $PMTYPE in ...@@ -4128,6 +4243,9 @@ case $PMTYPE in
#CMD="pkg rquery '%dn-%dv'" #CMD="pkg rquery '%dn-%dv'"
CMD="pkg info -d" CMD="pkg info -d"
;; ;;
xbps)
CMD="xbps-query -x"
;;
aptcyg) aptcyg)
#CMD="apt-cyg depends" #CMD="apt-cyg depends"
# print show version # print show version
...@@ -4232,6 +4350,9 @@ case $PMTYPE in ...@@ -4232,6 +4350,9 @@ case $PMTYPE in
aptcyg) aptcyg)
CMD="apt-cyg searchall" CMD="apt-cyg searchall"
;; ;;
xbps)
CMD="xbps-query -s"
;;
*) *)
fatal "Have no suitable search command for $PMTYPE" fatal "Have no suitable search command for $PMTYPE"
;; ;;
...@@ -4369,6 +4490,9 @@ case $PMTYPE in ...@@ -4369,6 +4490,9 @@ case $PMTYPE in
ipkg) ipkg)
CMD="ipkg search" CMD="ipkg search"
;; ;;
xbps)
CMD="xbps-query -Ro"
;;
aptcyg) aptcyg)
docmd apt-cyg searchall $(echo " $pkg_filenames" | sed -e "s| /| |g") docmd apt-cyg searchall $(echo " $pkg_filenames" | sed -e "s| /| |g")
return return
...@@ -4701,7 +4825,7 @@ case $PMTYPE in ...@@ -4701,7 +4825,7 @@ case $PMTYPE in
sudocmd packdcl detect # get packages from MSI database sudocmd packdcl detect # get packages from MSI database
;; ;;
homebrew) homebrew)
sudocmd brew update docmd brew update
;; ;;
ipkg) ipkg)
sudocmd ipkg update sudocmd ipkg update
...@@ -4716,6 +4840,9 @@ case $PMTYPE in ...@@ -4716,6 +4840,9 @@ case $PMTYPE in
aptcyg) aptcyg)
sudocmd apt-cyg update sudocmd apt-cyg update
;; ;;
xbps)
sudocmd xbps-install -S
;;
*) *)
fatal "Have no suitable update command for $PMTYPE" fatal "Have no suitable update command for $PMTYPE"
;; ;;
...@@ -4788,7 +4915,7 @@ epm_upgrade() ...@@ -4788,7 +4915,7 @@ epm_upgrade()
;; ;;
homebrew) homebrew)
#CMD="brew upgrade" #CMD="brew upgrade"
sudocmd "brew upgrade `brew outdated`" docmd "brew upgrade `brew outdated`"
return return
;; ;;
ipkg) ipkg)
...@@ -4804,6 +4931,9 @@ epm_upgrade() ...@@ -4804,6 +4931,9 @@ epm_upgrade()
docmd_foreach "epm install" $(short=1 epm packages) docmd_foreach "epm install" $(short=1 epm packages)
return return
;; ;;
xbps)
CMD="xbps-install -Su"
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -4867,6 +4997,9 @@ case $PMTYPE in ...@@ -4867,6 +4997,9 @@ case $PMTYPE in
aptcyg) aptcyg)
CMD="apt-cyg rdepends" CMD="apt-cyg rdepends"
;; ;;
xbps)
CMD="xbps-query -X"
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -4918,8 +5051,8 @@ docmd $CMD $pkg ...@@ -4918,8 +5051,8 @@ docmd $CMD $pkg
internal_distr_info() internal_distr_info()
{ {
# Author: Vitaly Lipatov <lav@etersoft.ru> # Author: Vitaly Lipatov <lav@etersoft.ru>
# 2007, 2009, 2010, 2012 (c) Etersoft # 2007, 2009, 2010, 2012, 2016 (c) Etersoft
# 2007 Public domain # 2007-2016 Public domain
# Detect the distro and version # Detect the distro and version
# Welcome to send updates! # Welcome to send updates!
...@@ -4950,6 +5083,7 @@ rpmvendor() ...@@ -4950,6 +5083,7 @@ rpmvendor()
[ "$DISTRIB_ID" = "AstraLinux" ] && echo "astra" && return [ "$DISTRIB_ID" = "AstraLinux" ] && echo "astra" && return
[ "$DISTRIB_ID" = "LinuxXP" ] && echo "lxp" && return [ "$DISTRIB_ID" = "LinuxXP" ] && echo "lxp" && return
[ "$DISTRIB_ID" = "TinyCoreLinux" ] && echo "tcl" && return [ "$DISTRIB_ID" = "TinyCoreLinux" ] && echo "tcl" && return
[ "$DISTRIB_ID" = "VoidLinux" ] && echo "void" && return
echo "$DISTRIB_ID" | tr "[A-Z]" "[a-z]" echo "$DISTRIB_ID" | tr "[A-Z]" "[a-z]"
} }
...@@ -4973,6 +5107,7 @@ pkgtype() ...@@ -4973,6 +5107,7 @@ pkgtype()
android) echo "apk" ;; android) echo "apk" ;;
alpine) echo "apk" ;; alpine) echo "apk" ;;
tinycorelinux) echo "tcz" ;; tinycorelinux) echo "tcz" ;;
voidlinux) echo "xbps" ;;
cygwin) echo "tar.xz" ;; cygwin) echo "tar.xz" ;;
debian|ubuntu|mint|runtu|mcst|astra) echo "deb" ;; debian|ubuntu|mint|runtu|mcst|astra) echo "deb" ;;
alt|asplinux|suse|mandriva|rosa|mandrake|pclinux|sled|sles) alt|asplinux|suse|mandriva|rosa|mandrake|pclinux|sled|sles)
...@@ -5032,10 +5167,6 @@ if distro altlinux-release ; then ...@@ -5032,10 +5167,6 @@ if distro altlinux-release ; then
elif has Citron ; then DISTRIB_RELEASE="2.4" elif has Citron ; then DISTRIB_RELEASE="2.4"
fi fi
elif [ `uname -o` = "Cygwin" ] ; then
DISTRIB_ID="Cygwin"
DISTRIB_RELEASE="all"
elif distro gentoo-release ; then elif distro gentoo-release ; then
DISTRIB_ID="Gentoo" DISTRIB_ID="Gentoo"
MAKEPROFILE=$(readlink $ROOTDIR/etc/portage/make.profile 2>/dev/null) || MAKEPROFILE=$(readlink $ROOTDIR/etc/make.profile) MAKEPROFILE=$(readlink $ROOTDIR/etc/portage/make.profile 2>/dev/null) || MAKEPROFILE=$(readlink $ROOTDIR/etc/make.profile)
...@@ -5065,6 +5196,11 @@ elif distro os-release && which tce-ab 2>/dev/null >/dev/null ; then ...@@ -5065,6 +5196,11 @@ elif distro os-release && which tce-ab 2>/dev/null >/dev/null ; then
DISTRIB_ID="TinyCoreLinux" DISTRIB_ID="TinyCoreLinux"
DISTRIB_RELEASE="$VERSION_ID" DISTRIB_RELEASE="$VERSION_ID"
elif distro os-release && which xbps-query 2>/dev/null >/dev/null ; then
. $ROOTDIR/etc/os-release
DISTRIB_ID="VoidLinux"
DISTRIB_RELEASE="Live"
elif distro arch-release ; then elif distro arch-release ; then
DISTRIB_ID="ArchLinux" DISTRIB_ID="ArchLinux"
DISTRIB_RELEASE="2010" DISTRIB_RELEASE="2010"
...@@ -5192,7 +5328,7 @@ elif [ `uname` = "SunOS" ] ; then ...@@ -5192,7 +5328,7 @@ elif [ `uname` = "SunOS" ] ; then
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
# fixme: can we detect by some file? # fixme: can we detect by some file?
elif [ `uname` = "Darwin" ] ; then elif [ `uname -s 2>/dev/null` = "Darwin" ] ; then
DISTRIB_ID="MacOS" DISTRIB_ID="MacOS"
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
...@@ -5206,6 +5342,10 @@ elif [ `uname` = "Linux" ] && [ -x $ROOTDIR/system/bin/getprop ] ; then ...@@ -5206,6 +5342,10 @@ elif [ `uname` = "Linux" ] && [ -x $ROOTDIR/system/bin/getprop ] ; then
DISTRIB_ID="Android" DISTRIB_ID="Android"
DISTRIB_RELEASE=$(getprop | awk -F": " '/build.version.release/ { print $2 }' | tr -d '[]') DISTRIB_RELEASE=$(getprop | awk -F": " '/build.version.release/ { print $2 }' | tr -d '[]')
elif [ `uname -o 2>/dev/null` = "Cygwin" ] ; then
DISTRIB_ID="Cygwin"
DISTRIB_RELEASE="all"
# try use standart LSB info by default # try use standart LSB info by default
elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then
# use LSB # use LSB
...@@ -5251,7 +5391,7 @@ case $1 in ...@@ -5251,7 +5391,7 @@ case $1 in
exit 0 exit 0
;; ;;
-V) -V)
echo "20120519" echo "20160822"
exit 0 exit 0
;; ;;
*) *)
...@@ -5379,7 +5519,7 @@ $(get_help HELPOPT) ...@@ -5379,7 +5519,7 @@ $(get_help HELPOPT)
print_version() print_version()
{ {
echo "EPM package manager version 1.9.1" echo "EPM package manager version 1.9.3"
echo "Running on $($DISTRVENDOR) ('$PMTYPE' package manager uses '$PKGFORMAT' package format)" echo "Running on $($DISTRVENDOR) ('$PMTYPE' package manager uses '$PKGFORMAT' package format)"
echo "Copyright (c) Etersoft 2012-2016" echo "Copyright (c) Etersoft 2012-2016"
echo "This program may be freely redistributed under the terms of the GNU AGPLv3." echo "This program may be freely redistributed under the terms of the GNU AGPLv3."
...@@ -5407,9 +5547,7 @@ pkg_names= ...@@ -5407,9 +5547,7 @@ pkg_names=
pkg_urls= pkg_urls=
quoted_args= quoted_args=
progname="${0##*/}" case $PROGNAME in
case $progname in
epmi) epmi)
epm_cmd=install epm_cmd=install
;; ;;
...@@ -5454,12 +5592,17 @@ case $progname in ...@@ -5454,12 +5592,17 @@ case $progname in
;; ;;
epm|upm|eepm) epm|upm|eepm)
;; ;;
epm.sh)
;;
*) *)
# epm by default # epm by default
# fatal "Unknown command: $progname" # fatal "Unknown command: $progname"
;; ;;
esac esac
# was called with alias name
[ -n "$epm_cmd" ] && PROGNAME="epm"
check_command() check_command()
{ {
# do not override command # do not override command
...@@ -5715,7 +5858,7 @@ pkg_filenames=$(strip_spaces "$pkg_files $pkg_names") ...@@ -5715,7 +5858,7 @@ pkg_filenames=$(strip_spaces "$pkg_files $pkg_names")
if [ -z "$epm_cmd" ] ; then if [ -z "$epm_cmd" ] ; then
print_version print_version
echo echo
fatal "Run $ $progname --help for get help" fatal "Run $ $PROGNAME --help for get help"
fi fi
# Use eatmydata for write specific operations # Use eatmydata for write specific operations
......
...@@ -204,6 +204,12 @@ store_output() ...@@ -204,6 +204,12 @@ store_output()
#return $PIPESTATUS #return $PIPESTATUS
} }
showcmd_store_output()
{
showcmd "$@"
store_output "$@"
}
clean_store_output() clean_store_output()
{ {
rm -f $RC_STDOUT $RC_STDOUT.pipestatus rm -f $RC_STDOUT $RC_STDOUT.pipestatus
...@@ -211,7 +217,8 @@ clean_store_output() ...@@ -211,7 +217,8 @@ clean_store_output()
epm() epm()
{ {
$PROGDIR/epm $@ [ -n "$PROGNAME" ] || fatal "Can't use epm call from the piped script"
$PROGDIR/$PROGNAME $@
} }
fatal() fatal()
...@@ -474,6 +481,9 @@ case $DISTRNAME in ...@@ -474,6 +481,9 @@ case $DISTRNAME in
TinyCoreLinux) TinyCoreLinux)
CMD="tce" CMD="tce"
;; ;;
VoidLinux)
CMD="xbps"
;;
*) *)
fatal "Have no suitable DISTRNAME $DISTRNAME" fatal "Have no suitable DISTRNAME $DISTRNAME"
;; ;;
...@@ -518,6 +528,9 @@ serv_common() ...@@ -518,6 +528,9 @@ serv_common()
sudocmd systemctl "$@" $SERVICE sudocmd systemctl "$@" $SERVICE
fi fi
;; ;;
runit)
sudocmd sv $SERVICE "$@"
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -532,7 +545,7 @@ serv_disable() ...@@ -532,7 +545,7 @@ serv_disable()
local SERVICE="$1" local SERVICE="$1"
is_service_running $1 && { serv_stop $1 || return ; } is_service_running $1 && { serv_stop $1 || return ; }
is_service_autostart $1 || { echo "Service $1 already disabled for startup" && return ; } is_service_autostart $1 || { info "Service $1 already disabled for startup" && return ; }
case $SERVICETYPE in case $SERVICETYPE in
service-chkconfig|service-upstart) service-chkconfig|service-upstart)
...@@ -548,6 +561,9 @@ serv_disable() ...@@ -548,6 +561,9 @@ serv_disable()
systemd) systemd)
sudocmd systemctl disable $1 sudocmd systemctl disable $1
;; ;;
runit)
sudocmd rm -fv /var/service/$SERVICE
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -561,7 +577,7 @@ __serv_enable() ...@@ -561,7 +577,7 @@ __serv_enable()
{ {
local SERVICE="$1" local SERVICE="$1"
is_service_autostart $1 && echo "Service $1 already enabled for startup" && return is_service_autostart $1 && info "Service $1 is already enabled for startup" && return
case $SERVICETYPE in case $SERVICETYPE in
service-chkconfig) service-chkconfig)
...@@ -582,6 +598,11 @@ __serv_enable() ...@@ -582,6 +598,11 @@ __serv_enable()
systemd) systemd)
sudocmd systemctl enable $1 sudocmd systemctl enable $1
;; ;;
runit)
epm assure $SERVICE
[ -r "/etc/sv/$SERVICE" ] || fatal "Can't find /etc/sv/$SERVICE"
sudocmd ln -s /etc/sv/$SERVICE /var/service/
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -593,7 +614,8 @@ serv_enable() ...@@ -593,7 +614,8 @@ serv_enable()
{ {
__serv_enable "$1" || return __serv_enable "$1" || return
# start if need # start if need
is_service_running $1 || serv_start $1 || return is_service_running $1 && info "Service $1 is already running" && return
serv_start $1
} }
# File bin/serv-list: # File bin/serv-list:
...@@ -694,7 +716,8 @@ serv_reload() ...@@ -694,7 +716,8 @@ serv_reload()
sudocmd systemctl reload $SERVICE "$@" sudocmd systemctl reload $SERVICE "$@"
;; ;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" info "Fallback to restart..."
serv_restart "$SERVICE" "$@"
;; ;;
esac esac
} }
...@@ -721,6 +744,9 @@ serv_restart() ...@@ -721,6 +744,9 @@ serv_restart()
systemd) systemd)
sudocmd systemctl restart $SERVICE "$@" sudocmd systemctl restart $SERVICE "$@"
;; ;;
runit)
sudocmd sv restart "$SERVICE"
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -748,6 +774,9 @@ serv_start() ...@@ -748,6 +774,9 @@ serv_start()
systemd) systemd)
sudocmd systemctl start "$SERVICE" "$@" sudocmd systemctl start "$SERVICE" "$@"
;; ;;
runit)
sudocmd sv up "$SERVICE"
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -774,6 +803,9 @@ is_service_running() ...@@ -774,6 +803,9 @@ is_service_running()
systemd) systemd)
$SUDO systemctl status $1 >/dev/null $SUDO systemctl status $1 >/dev/null
;; ;;
runit)
$SUDO sv status "$SERVICE" >/dev/null
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -800,6 +832,9 @@ is_service_autostart() ...@@ -800,6 +832,9 @@ is_service_autostart()
systemd) systemd)
$SUDO systemctl is-enabled $1 $SUDO systemctl is-enabled $1
;; ;;
runit)
test -L /var/service/$SERVICE
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -827,6 +862,9 @@ serv_status() ...@@ -827,6 +862,9 @@ serv_status()
systemd) systemd)
sudocmd systemctl status $SERVICE "$@" sudocmd systemctl status $SERVICE "$@"
;; ;;
runit)
sudocmd sv status "$SERVICE"
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -854,6 +892,9 @@ serv_stop() ...@@ -854,6 +892,9 @@ serv_stop()
systemd) systemd)
sudocmd systemctl stop $SERVICE "$@" sudocmd systemctl stop $SERVICE "$@"
;; ;;
runit)
sudocmd sv down "$SERVICE"
;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" fatal "Have no suitable command for $SERVICETYPE"
;; ;;
...@@ -869,19 +910,13 @@ serv_try_restart() ...@@ -869,19 +910,13 @@ serv_try_restart()
shift shift
case $SERVICETYPE in case $SERVICETYPE in
service-chkconfig|service-upstart)
is_service_running $SERVICE || return 0
docmd serv $SERVICE restart "$@"
;;
service-initd|service-update)
is_service_running $SERVICE || return 0
sudocmd $INITDIR/$SERVICE restart "$@"
;;
systemd) systemd)
sudocmd systemctl try-restart $SERVICE "$@" sudocmd systemctl try-restart $SERVICE "$@"
;; ;;
*) *)
fatal "Have no suitable command for $SERVICETYPE" info "Fallback to restart..."
is_service_running $SERVICE || { info "Service $SERVICE is not running, restart skipping…" ; return 0 ; }
serv_restart "$SERVICE" "$@"
;; ;;
esac esac
} }
...@@ -922,8 +957,8 @@ _print_additional_usage ...@@ -922,8 +957,8 @@ _print_additional_usage
internal_distr_info() internal_distr_info()
{ {
# Author: Vitaly Lipatov <lav@etersoft.ru> # Author: Vitaly Lipatov <lav@etersoft.ru>
# 2007, 2009, 2010, 2012 (c) Etersoft # 2007, 2009, 2010, 2012, 2016 (c) Etersoft
# 2007 Public domain # 2007-2016 Public domain
# Detect the distro and version # Detect the distro and version
# Welcome to send updates! # Welcome to send updates!
...@@ -954,6 +989,7 @@ rpmvendor() ...@@ -954,6 +989,7 @@ rpmvendor()
[ "$DISTRIB_ID" = "AstraLinux" ] && echo "astra" && return [ "$DISTRIB_ID" = "AstraLinux" ] && echo "astra" && return
[ "$DISTRIB_ID" = "LinuxXP" ] && echo "lxp" && return [ "$DISTRIB_ID" = "LinuxXP" ] && echo "lxp" && return
[ "$DISTRIB_ID" = "TinyCoreLinux" ] && echo "tcl" && return [ "$DISTRIB_ID" = "TinyCoreLinux" ] && echo "tcl" && return
[ "$DISTRIB_ID" = "VoidLinux" ] && echo "void" && return
echo "$DISTRIB_ID" | tr "[A-Z]" "[a-z]" echo "$DISTRIB_ID" | tr "[A-Z]" "[a-z]"
} }
...@@ -977,6 +1013,7 @@ pkgtype() ...@@ -977,6 +1013,7 @@ pkgtype()
android) echo "apk" ;; android) echo "apk" ;;
alpine) echo "apk" ;; alpine) echo "apk" ;;
tinycorelinux) echo "tcz" ;; tinycorelinux) echo "tcz" ;;
voidlinux) echo "xbps" ;;
cygwin) echo "tar.xz" ;; cygwin) echo "tar.xz" ;;
debian|ubuntu|mint|runtu|mcst|astra) echo "deb" ;; debian|ubuntu|mint|runtu|mcst|astra) echo "deb" ;;
alt|asplinux|suse|mandriva|rosa|mandrake|pclinux|sled|sles) alt|asplinux|suse|mandriva|rosa|mandrake|pclinux|sled|sles)
...@@ -1036,10 +1073,6 @@ if distro altlinux-release ; then ...@@ -1036,10 +1073,6 @@ if distro altlinux-release ; then
elif has Citron ; then DISTRIB_RELEASE="2.4" elif has Citron ; then DISTRIB_RELEASE="2.4"
fi fi
elif [ `uname -o` = "Cygwin" ] ; then
DISTRIB_ID="Cygwin"
DISTRIB_RELEASE="all"
elif distro gentoo-release ; then elif distro gentoo-release ; then
DISTRIB_ID="Gentoo" DISTRIB_ID="Gentoo"
MAKEPROFILE=$(readlink $ROOTDIR/etc/portage/make.profile 2>/dev/null) || MAKEPROFILE=$(readlink $ROOTDIR/etc/make.profile) MAKEPROFILE=$(readlink $ROOTDIR/etc/portage/make.profile 2>/dev/null) || MAKEPROFILE=$(readlink $ROOTDIR/etc/make.profile)
...@@ -1069,6 +1102,11 @@ elif distro os-release && which tce-ab 2>/dev/null >/dev/null ; then ...@@ -1069,6 +1102,11 @@ elif distro os-release && which tce-ab 2>/dev/null >/dev/null ; then
DISTRIB_ID="TinyCoreLinux" DISTRIB_ID="TinyCoreLinux"
DISTRIB_RELEASE="$VERSION_ID" DISTRIB_RELEASE="$VERSION_ID"
elif distro os-release && which xbps-query 2>/dev/null >/dev/null ; then
. $ROOTDIR/etc/os-release
DISTRIB_ID="VoidLinux"
DISTRIB_RELEASE="Live"
elif distro arch-release ; then elif distro arch-release ; then
DISTRIB_ID="ArchLinux" DISTRIB_ID="ArchLinux"
DISTRIB_RELEASE="2010" DISTRIB_RELEASE="2010"
...@@ -1196,7 +1234,7 @@ elif [ `uname` = "SunOS" ] ; then ...@@ -1196,7 +1234,7 @@ elif [ `uname` = "SunOS" ] ; then
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
# fixme: can we detect by some file? # fixme: can we detect by some file?
elif [ `uname` = "Darwin" ] ; then elif [ `uname -s 2>/dev/null` = "Darwin" ] ; then
DISTRIB_ID="MacOS" DISTRIB_ID="MacOS"
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
...@@ -1210,6 +1248,10 @@ elif [ `uname` = "Linux" ] && [ -x $ROOTDIR/system/bin/getprop ] ; then ...@@ -1210,6 +1248,10 @@ elif [ `uname` = "Linux" ] && [ -x $ROOTDIR/system/bin/getprop ] ; then
DISTRIB_ID="Android" DISTRIB_ID="Android"
DISTRIB_RELEASE=$(getprop | awk -F": " '/build.version.release/ { print $2 }' | tr -d '[]') DISTRIB_RELEASE=$(getprop | awk -F": " '/build.version.release/ { print $2 }' | tr -d '[]')
elif [ `uname -o 2>/dev/null` = "Cygwin" ] ; then
DISTRIB_ID="Cygwin"
DISTRIB_RELEASE="all"
# try use standart LSB info by default # try use standart LSB info by default
elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then
# use LSB # use LSB
...@@ -1255,7 +1297,7 @@ case $1 in ...@@ -1255,7 +1297,7 @@ case $1 in
exit 0 exit 0
;; ;;
-V) -V)
echo "20120519" echo "20160822"
exit 0 exit 0
;; ;;
*) *)
...@@ -1403,6 +1445,9 @@ case $DISTRNAME in ...@@ -1403,6 +1445,9 @@ case $DISTRNAME in
Fedora|LinuxXP|ASPLinux|CentOS|RHEL|Scientific) Fedora|LinuxXP|ASPLinux|CentOS|RHEL|Scientific)
CMD="service-chkconfig" CMD="service-chkconfig"
;; ;;
VoidLinux)
CMD="runit"
;;
Slackware) Slackware)
CMD="service-initd" CMD="service-initd"
;; ;;
...@@ -1433,6 +1478,7 @@ ANYSERVICE=$(which anyservice 2>/dev/null) ...@@ -1433,6 +1478,7 @@ ANYSERVICE=$(which anyservice 2>/dev/null)
is_anyservice() is_anyservice()
{ {
[ -n "$ANYSERVICE" ] || return [ -n "$ANYSERVICE" ] || return
[ -n "$1" ] || return
# check if anyservice is exists and checkd returns true # check if anyservice is exists and checkd returns true
$ANYSERVICE "$1" checkd 2>/dev/null $ANYSERVICE "$1" checkd 2>/dev/null
} }
...@@ -1452,7 +1498,7 @@ $(get_help HELPOPT) ...@@ -1452,7 +1498,7 @@ $(get_help HELPOPT)
print_version() print_version()
{ {
echo "Service manager version 1.9.1" echo "Service manager version 1.9.3"
echo "Running on $($DISTRVENDOR)" echo "Running on $($DISTRVENDOR)"
echo "Copyright (c) Etersoft 2012, 2013, 2016" echo "Copyright (c) Etersoft 2012, 2013, 2016"
echo "This program may be freely redistributed under the terms of the GNU AGPLv3." echo "This program may be freely redistributed under the terms of the GNU AGPLv3."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment