Commit a1107eb8 authored by Vitaly Lipatov's avatar Vitaly Lipatov

backported to p7 as 1.5.1-alt0.M70P.1 (with rpmbph script)

parents 8a3a474d fbe7c2f5
......@@ -297,7 +297,8 @@ check_option()
check_filenames()
{
local opt="$1"
if [ -f "$opt" ] && echo $opt | grep -q "\." ; then
# files can be with full path or have extension via .
if [ -f "$opt" ] && echo "$opt" | grep -q "[/\.]" ; then
pkg_files="$pkg_files $opt"
else
pkg_names="$pkg_names $opt"
......
......@@ -26,7 +26,7 @@ epm_Install()
local names="$(echo $pkg_names | filter_out_installed_packages)"
local files="$(echo $pkg_files | filter_out_installed_packages)"
[ -z "$files$names" ] && echo "Skip empty install list" && return 22
[ -z "$files$names" ] && info "Install: Skip empty install list." && return 22
# do update only if really need install something
case $PMTYPE in
......
......@@ -25,10 +25,10 @@ case $PMTYPE in
sudocmd apt-repo add $pkg_filenames
;;
apt-dpkg|aptitude-dpkg)
echo "You need manually add repo to /etc/apt/sources.list"
info "You need manually add repo to /etc/apt/sources.list"
;;
yum-rpm)
echo "You need manually add repo to /etc/yum.repos.d/"
info "You need manually add repo to /etc/yum.repos.d/"
;;
urpm-rpm)
sudocmd urpmi.addmedia $pkg_filenames
......@@ -40,7 +40,7 @@ case $PMTYPE in
sudocmd layman -a $pkg_filenames
;;
pacman)
echo "You need manually add repo to /etc/pacman.conf"
info "You need manually add repo to /etc/pacman.conf"
# Only for alone packages:
#sudocmd repo-add $pkg_filenames
;;
......@@ -48,7 +48,7 @@ case $PMTYPE in
sudocmd npackdcl add-repo --url=$pkg_filenames
;;
slackpkg)
echo "You need manually add repo to /etc/slackpkg/mirrors"
info "You need manually add repo to /etc/slackpkg/mirrors"
;;
*)
fatal "Have no suitable command for $PMTYPE"
......
......@@ -36,14 +36,14 @@ __epm_assure()
if __check_command_in_path "$1" >/dev/null ; then
if [ -n "$verbose" ] ; then
local compath="$(__check_command_in_path "$1")"
echo "Command $1 is exists: $compath"
info "Command $1 is exists: $compath"
epm qf "$compath"
fi
return
fi
# TODO: use package name normalization
echo "Install appropriate package for $1 command..."
info "Installing appropriate package for $1 command..."
local PACKAGE="$2"
[ -n "$PACKAGE" ] || PACKAGE="$1"
......@@ -58,7 +58,7 @@ __epm_assure()
epm_assure()
{
[ -n "$pkg_filenames" ] || fatal "Run assure without params"
[ -n "$pkg_filenames" ] || fatal "Assure: Missing params. Check $0 --help for info."
# use helper func for extract separate params
__epm_assure $pkg_filenames
......
......@@ -22,8 +22,8 @@ __epm_autoremove_altrpm()
local pkg
local flag=
load_helper epm-packages
echo
echo "Just remove all non -devel libs packages not need by anything"
info
info "Just removing all non -devel libs packages not need by anything"
for pkg in $(short=1 pkg_filenames= epm_packages | grep -- "^lib" | grep -v -- "-devel$" | grep -v -- ^libreoffice ) ; do
sudocmd rpm -v -e $pkg && flag=1
done
......
......@@ -104,7 +104,7 @@ __epm_changelog_unlocal_names()
epm_changelog()
{
[ -n "$pkg_filenames" ] || fatal "Run changelog without params"
[ -n "$pkg_filenames" ] || fatal "Changelog: Missing package(s) name"
__epm_changelog_files $pkg_files
......
......@@ -21,7 +21,10 @@ __is_repo_info_download()
{
case $PMTYPE in
apt-*)
test -r /var/cache/apt/pkgcache.bin || return
if [ -r /var/cache/apt ] ; then
# FIXME: only if root permissions
test -r /var/cache/apt/pkgcache.bin || return
fi
;;
*)
;;
......
......@@ -37,11 +37,8 @@ check_pkg_integrity()
true
;;
*)
assure_exists erc
docmd erc test "$PKG" && return
which erc >/dev/null 2>/dev/null && fatal "Check failed."
fatal "Install erc package for file package."
# TODO
epm install erc
;;
esac
}
......@@ -70,12 +67,12 @@ esac
epm_checkpkg()
{
if [ -n "$pkg_names" ] ; then
echo "Suggest $pkg_names are names of installed packages"
info "Suggest $pkg_names are name(s) of installed packages"
__epm_check_installed_pkg $pkg_names
return
fi
[ -n "$pkg_files" ] || fatal "Run without names"
[ -n "$pkg_files" ] || fatal "Checkpkg: missing file or package name(s)"
local pkg
for pkg in $pkg_files ; do
check_pkg_integrity $pkg || fatal "Broken package $pkg"
......
......@@ -51,6 +51,6 @@ case $PMTYPE in
fatal "Have no suitable command for $PMTYPE"
;;
esac
echo "It is recommend to run 'epm autoremove' also"
info "It is recommend to run 'epm autoremove' also"
}
......@@ -98,7 +98,7 @@ docmd $CMD $pkg_names
epm_conflicts()
{
[ -n "$pkg_filenames" ] || fatal "Run query without names"
[ -n "$pkg_filenames" ] || fatal "Conflicts: Missing package(s) name"
epm_conflicts_files
epm_conflicts_names
}
......@@ -135,7 +135,7 @@ __epm_filelist_name()
epm_filelist()
{
[ -n "$pkg_filenames" ] || fatal "Run query without names"
[ -n "$pkg_filenames" ] || fatal "Filelist: missing package(s) name"
__epm_filelist_file $pkg_files || return
......
......@@ -33,7 +33,7 @@ __epm_info_rpm_low()
epm_info()
{
[ -n "$pkg_filenames" ] || fatal "Run info without names"
[ -n "$pkg_filenames" ] || fatal "Info: missing package(s) name"
case $PMTYPE in
apt-rpm)
......
......@@ -152,7 +152,7 @@ epm_install_names()
__separate_sudocmd "guix package -i" "guix package -i" $@
return ;;
android)
warning "We have no idea how to use package repository, ever if it is F-Droid."
fatal "We still have no idea how to use package repository, ever if it is F-Droid."
return ;;
*)
fatal "Have no suitable install command for $PMTYPE"
......@@ -369,12 +369,12 @@ epm_install()
return
fi
[ -n "$pkg_files$pkg_names" ] || { echo "Skip empty install list" ; return 22 ; }
[ -z "$pkg_files$pkg_names" ] && info "Skip empty install list" && return 22
local names="$(echo $pkg_names | filter_out_installed_packages)"
local files="$(echo $pkg_files | filter_out_installed_packages)"
[ -z "$files$names" ] && echo "Skip empty install list" && return 22
[ -z "$files$names" ] && info "Skip empty install list" && return 22
# it is useful for first time running
update_repo_if_needed
......
......@@ -19,7 +19,7 @@
epm_kernel_update()
{
echo "Start update system kernel to the latest version"
info "Starting update system kernel to the latest version"
case $DISTRNAME in
ALTLinux)
......
......@@ -73,7 +73,7 @@ case $PMTYPE in
apt-dpkg)
# FIXME: need fix for a few names case
if is_installed $pkg_names ; then
echo "Please inform the author how to get provides from dpkg"
info "Please inform the author how to get provides from dpkg"
fi
# CMD="rpm -q --provides"
#else
......@@ -93,7 +93,8 @@ docmd $CMD $pkg_names
epm_provides()
{
[ -n "$pkg_filenames" ] || fatal "Run query without names"
[ -n "$pkg_filenames" ] || fatal "Provides: missing package(s) name"
epm_provides_files
epm_provides_names
}
......@@ -176,7 +176,7 @@ separate_installed()
epm_query()
{
[ -n "$pkg_filenames" ] || fatal "Run query without names"
[ -n "$pkg_filenames" ] || fatal "Query: missing package(s) name"
__epm_query_file $pkg_files || return
......
......@@ -33,7 +33,7 @@ __do_query_real_file()
else
TOFILE=`which $1 2>/dev/null || echo $1`
if [ "$TOFILE" != "$1" ] ; then
echo "Note: $1 is placed as $TOFILE"
info "Note: $1 is placed as $TOFILE"
fi
fi
......@@ -41,10 +41,11 @@ __do_query_real_file()
if [ -L "$TOFILE" ] ; then
__do_query $TOFILE
LINKTO=`readlink "$TOFILE"`
echo "Note: $TOFILE is link to $LINKTO"
info "Note: $TOFILE is link to $LINKTO"
__do_query_real_file "$LINKTO"
fi
FULLFILEPATH=`realpath $TOFILE`
FULLFILEPATH="$TOFILE"
}
dpkg_print_name_version()
......@@ -141,6 +142,7 @@ epm_query_file()
{
# in short mode print handle only real names and do short output
# TODO: move to separate command?
# FIXME: it is possible use query
if [ -n "$short" ] ; then
[ -n "$pkg_files" ] || fatal "Run query without file names (needed path to files)"
__do_short_query $pkg_files
......
......@@ -66,7 +66,7 @@ epm_reinstall_files()
epm_reinstall()
{
[ -n "$pkg_filenames" ] || fatal "Run install without packages"
[ -n "$pkg_filenames" ] || fatal "Reinstall: missing package(s) name."
epm_reinstall_names $pkg_names
epm_reinstall_files $pkg_files
......
......@@ -19,8 +19,8 @@
epm_release_upgrade()
{
echo "Start upgrade whole system to the next release"
echo "Check also http://wiki.etersoft.ru/Admin/UpdateLinux"
info "Starting upgrade whole system to the next release"
info "Check also http://wiki.etersoft.ru/Admin/UpdateLinux"
case $PMTYPE in
apt-rpm)
......
......@@ -197,7 +197,7 @@ epm_remove()
# get full package name(s) from the package file(s)
[ -n "$pkg_files" ] && pkg_names="$pkg_names $(epm query $pkg_files)"
[ -n "$pkg_names" ] || fatal "Run remove without args"
[ -n "$pkg_names" ] || fatal "Remove: missing package(s) name."
epm_remove_low $pkg_names && return
# get package name for hi level package management command (with version if supported and if possible)
......
......@@ -25,10 +25,10 @@ case $PMTYPE in
sudocmd apt-repo rm $pkg_filenames
;;
apt-dpkg|aptitude-dpkg)
echo "You need remove repo from /etc/apt/sources.list"
info "You need remove repo from /etc/apt/sources.list"
;;
yum-rpm)
echo "You need remove repo from /etc/yum.repos.d/"
info "You need remove repo from /etc/yum.repos.d/"
;;
urpm-rpm)
sudocmd urpmi.removemedia $pkg_filenames
......@@ -40,13 +40,13 @@ case $PMTYPE in
sudocmd layman -d$pkg_filenames
;;
pacman)
echo "You need remove repo from /etc/pacman.conf"
info "You need remove repo from /etc/pacman.conf"
;;
npackd)
sudocmd npackdcl remove-repo --url=$pkg_filenames
;;
slackpkg)
echo "You need remove repo from /etc/slackpkg/mirrors"
info "You need remove repo from /etc/slackpkg/mirrors"
;;
*)
fatal "Have no suitable command for $PMTYPE"
......
......@@ -23,7 +23,9 @@ epm_requires_files()
{
[ -n "$pkg_files" ] || return
case $(get_package_type $pkg_files) in
local PKGTYPE="$(case $(get_package_type $pkg_files))"
case "$PKGTYPE" in
rpm)
docmd rpm -q --requires -p $pkg_files
;;
......@@ -31,7 +33,7 @@ epm_requires_files()
a= docmd dpkg -I $pkg_files | grep "^ *Depends:" | sed "s|^ *Depends:||g"
;;
*)
fatal "Have no suitable command for $PMTYPE"
fatal "Have no suitable command for $PKGTYPE"
;;
esac
}
......@@ -92,7 +94,7 @@ docmd $CMD $pkg_names
epm_requires()
{
[ -n "$pkg_filenames" ] || fatal "Run query without names"
[ -n "$pkg_filenames" ] || fatal "Requires: missing package(s) name"
epm_requires_files
epm_requires_names
}
......@@ -148,7 +148,7 @@ __epm_search_make_grep()
epm_search()
{
[ -n "$pkg_filenames" ] || fatal "Please, use search with some argument"
[ -n "$pkg_filenames" ] || fatal "Search: missing search argument(s)"
# it is useful for first time running
update_repo_if_needed
......
......@@ -21,10 +21,12 @@
# https://bugzilla.altlinux.org/show_bug.cgi?id=14449
local_content_search()
{
# TODO: use global get_sysarch function
local SYSARCH
SYSARCH=$(uname -m)
[ "$SYSARCH" = "x86_64" ] || SYSARCH=i586
# FIXME: use config or/and web url
local REPODIR=/var/ftp/pub/ALTLinux/Sisyphus
local CI=$REPODIR/$SYSARCH/base/contents_index
local CINOA=$REPODIR/noarch/base/contents_index
......@@ -43,7 +45,7 @@ local_content_search()
epm_search_file()
{
local CMD
[ -n "$pkg_filenames" ] || fatal "Run search without names"
[ -n "$pkg_filenames" ] || fatal "Search file: missing file name(s)"
case $PMTYPE in
apt-rpm)
......
#!/bin/sh
#
# Copyright (C) 2012 Etersoft
# Copyright (C) 2012 Vitaly Lipatov <lav@etersoft.ru>
# Copyright (C) 2012, 2014 Etersoft
# Copyright (C) 2012, 2014 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
......@@ -96,18 +96,12 @@ echon()
# Used DISTRNAME
set_target_pkg_env()
{
[ -n "$DISTRNAME" ] || fatal "Run set_target_pkg_env without DISTRNAME"
[ -n "$DISTRNAME" ] || fatal "Missing DISTRNAME in set_target_pkg_env."
PKGFORMAT=$($DISTRVENDOR -p "$DISTRNAME")
PKGVENDOR=$($DISTRVENDOR -s "$DISTRNAME")
RPMVENDOR=$($DISTRVENDOR -n "$DISTRNAME")
}
# for systems without realpath command
realpath()
{
readlink -f "$@"
}
# Print command line and run command line
showcmd()
{
......@@ -237,6 +231,19 @@ warning()
fi
}
info()
{
[ -n "$quiet" ] && return
# print message to stderr if stderr forwarded to (a file)
if isatty2 ; then
isatty || return 0
echo "$@"
else
echo "$@" >&2
fi
}
set_sudo()
{
SUDO=""
......@@ -261,33 +268,29 @@ set_eatmydata()
# use if possible
which eatmydata >/dev/null 2>/dev/null || return
SUDO="$SUDO eatmydata"
isatty && echo "Uwaga! eatmydata is installed, we will use it for disable all sync operations." >&2
info "Uwaga! eatmydata is installed, we will use it for disable all sync operations."
return 0
}
assure_exists()
#
__get_package_for_command()
{
PATH=$PATH:/sbin:/usr/sbin which $1 2>/dev/null >/dev/null && return
echo "Install appropriate package for $1 command..."
case $1 in
case "$1" in
equery|revdep-rebuild)
epm install gentoolkit
;;
apt-repo)
epm install apt-repo
;;
apt-file)
epm install apt-file
echo 'gentoolkit'
;;
update-kernel|remove-old-kernels)
epm install update-kernel
;;
*)
fatal "Internal error: Unknown binary $1 to check if exists"
echo 'update-kernel'
;;
esac
}
assure_exists()
{
load_helper epm-assure
__epm_assure "$1" $(__get_package_for_command "$1")
}
# improve
get_package_type()
{
......
......@@ -83,10 +83,9 @@ EOF
;;
zypper-rpm)
if ! __use_zypper_dry_run >/dev/null ; then
echo "zypper is too old: does not support --dry-run"
return
fatal "zypper is too old: does not support --dry-run"
fi
CMD="zypper --non-interactive install"
CMD="zypper --non-interactive install --dry-run"
;;
emerge)
local res=0
......@@ -117,7 +116,7 @@ EOF
pkg_filenames="$pkg-[0-9]" epm_search | grep -E "(installed|upgrade)" && continue
pkg_filenames="$pkg" epm_search | grep -E "(installed|upgrade)" && continue
res=1
echo "Does not found in repository."
info "Package '$pkg' does not found in repository."
done
return $res ;;
*)
......@@ -130,16 +129,16 @@ EOF
epm_simulate()
{
[ -z "$pkg_filenames" ] && echo "Skip empty list" && return 22
[ -z "$pkg_filenames" ] && info "Simulate: Skip empty list" && return 22
local filenames="$(echo $pkg_filenames | filter_out_installed_packages)"
[ -z "$filenames" ] && echo "All packages are already installed" && return 0
[ -z "$filenames" ] && info "Simulate: All packages are already installed" && return 0
_epm_do_simulate $filenames
local RES=$?
if [ -z "$quiet" ] ; then
[ "$RES" = 0 ] && echo "Result: $filenames package(s) CAN BE installed" || echo "Result: There are PROBLEMS with install some package(s)"
[ "$RES" = 0 ] && info "Simulate result: $filenames package(s) CAN BE installed" || info "Simulate result: There are PROBLEMS with install some package(s)"
fi
return $RES
}
......
......@@ -21,7 +21,7 @@
epm_update()
{
echo "Run command for update remote package repository database"
info "Running command for update remote package repository database"
case $PMTYPE in
apt-rpm)
......
......@@ -26,7 +26,7 @@ epm_upgrade()
# it is useful for first time running
update_repo_if_needed
echo "Run command for upgrade packages"
info "Running command for upgrade packages"
case $PMTYPE in
apt-rpm|apt-dpkg)
......
......@@ -20,7 +20,7 @@
epm_whatdepends()
{
local CMD
[ -n "$pkg_filenames" ] || fatal "Run query without names"
[ -n "$pkg_filenames" ] || fatal "Whatdepends: missing package(s) name"
# by package name
case $PMTYPE in
......
......@@ -20,7 +20,7 @@
epm_whatprovides()
{
local CMD
[ -n "$pkg_filenames" ] || fatal "Run query without names"
[ -n "$pkg_filenames" ] || fatal "Whatprovides: missing package(s) name"
# by package name
case $PMTYPE in
......
# This spec is backported to ALTLinux p7 automatically by rpmbph script. Do not edit it.
#
Name: eepm
Version: 1.5.0
Version: 1.5.1
Release: alt0.M70P.1
Summary: Etersoft EPM package manager
......@@ -66,9 +66,15 @@ chmod a+x %buildroot%_datadir/%name/{serv-,epm-}*
%_sysconfdir/bash_completion.d/cerv
%changelog
* Wed Feb 26 2014 Vitaly Lipatov <lav@altlinux.ru> 1.5.0-alt0.M70P.1
* Wed Mar 05 2014 Vitaly Lipatov <lav@altlinux.ru> 1.5.1-alt0.M70P.1
- backport to ALTLinux p7 (by rpmbph script)
* Wed Mar 05 2014 Vitaly Lipatov <lav@altlinux.ru> 1.5.1-alt1
- epm: check real file detection
- checkpkg: use assure for erc
- simulate: add missed --dry-run for zypper
- epm-check_updated: fix if perms is unsufficient
* Wed Feb 26 2014 Vitaly Lipatov <lav@altlinux.ru> 1.5.0-alt1
- distr_info: add Android detection
- add initial android support
......
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