Commit f3078c84 authored by Vitaly Lipatov's avatar Vitaly Lipatov

commit packed 3.52.7

parent 3a928395
...@@ -33,7 +33,7 @@ SHAREDIR=$PROGDIR ...@@ -33,7 +33,7 @@ SHAREDIR=$PROGDIR
# will replaced with /etc/eepm during install # will replaced with /etc/eepm during install
CONFIGDIR=$PROGDIR/../etc CONFIGDIR=$PROGDIR/../etc
EPMVERSION="3.52.6" EPMVERSION="3.52.7"
# package, single (file), pipe, git # package, single (file), pipe, git
EPMMODE="package" EPMMODE="package"
...@@ -393,9 +393,12 @@ set_sudo() ...@@ -393,9 +393,12 @@ set_sudo()
# if input is a console # if input is a console
if inputisatty && isatty && isatty2 ; then if inputisatty && isatty && isatty2 ; then
if ! $SUDO_CMD -l >/dev/null ; then if ! $SUDO_CMD -n true ; then
[ "$nofail" = "nofail" ] || SUDO="fatal 'Can't use sudo (only passwordless sudo is supported in non interactive using). Please run epm under root.'" info "Please enter sudo user password to use sudo in the current session."
return "$SUDO_TESTED" if ! $SUDO_CMD -l >/dev/null ; then
[ "$nofail" = "nofail" ] || SUDO="fatal 'Can't use sudo (only passwordless sudo is supported in non interactive using). Please run epm under root.'"
return "$SUDO_TESTED"
fi
fi fi
else else
# use sudo if one is tuned and tuned without password # use sudo if one is tuned and tuned without password
...@@ -760,11 +763,16 @@ __epm_check_if_package_from_repo() ...@@ -760,11 +763,16 @@ __epm_check_if_package_from_repo()
#vendor="$(epm print field Vendor for "$pkg" 2>/dev/null))" #vendor="$(epm print field Vendor for "$pkg" 2>/dev/null))"
#[ "$vendor" = "ALT Linux Team" ] || return #[ "$vendor" = "ALT Linux Team" ] || return
local distribution="$(epm print field Distribution for "$pkg" 2>/dev/null))" local distribution
distribution="$(epm print field Distribution for "$pkg" 2>/dev/null )"
echo "$distribution" | grep -q "^ALT" || return echo "$distribution" | grep -q "^ALT" || return
local sig
sig="$(epm print field sigpgp for "$pkg" 2>/dev/null )"
[ "$sig" = "(none)" ] && return 1
# FIXME: how to check if the package is from ALT repo (verified)? # FIXME: how to check if the package is from ALT repo (verified)?
local release="$(epm print release from package "$pkg" 2>/dev/null)" local release="$(epm print release from package "$pkg" 2>/dev/null )"
echo "$release" | grep -q "^alt" || return echo "$release" | grep -q "^alt" || return
return 0 return 0
...@@ -5546,7 +5554,7 @@ __epm_play_list() ...@@ -5546,7 +5554,7 @@ __epm_play_list()
echo "$i" echo "$i"
if [ -n "$extra" ] ; then if [ -n "$extra" ] ; then
for j in $(__run_script "$i" "--product-alternatives") ; do for j in $(__run_script "$i" "--product-alternatives") ; do
echo " $i $j" echo " $i=$j"
done done
fi fi
done done
...@@ -5560,7 +5568,7 @@ __epm_play_list() ...@@ -5560,7 +5568,7 @@ __epm_play_list()
printf "%-20s - %s\n" "$i" "$desc" printf "%-20s - %s\n" "$i" "$desc"
if [ -n "$extra" ] ; then if [ -n "$extra" ] ; then
for j in $(__run_script "$i" "--product-alternatives") ; do for j in $(__run_script "$i" "--product-alternatives") ; do
printf " %-20s - %s\n" "$i $j" "$desc" printf " %-20s - %s\n" "$i=$j" "$desc"
done done
fi fi
done done
...@@ -5697,6 +5705,7 @@ __epm_play_initialize_ipfs() ...@@ -5697,6 +5705,7 @@ __epm_play_initialize_ipfs()
if [ ! -r "$EGET_IPFS_DB" ] ; then if [ ! -r "$EGET_IPFS_DB" ] ; then
sudorun touch "$EGET_IPFS_DB" >&2 sudorun touch "$EGET_IPFS_DB" >&2
sudorun chmod -v a+rw "$EGET_IPFS_DB" >&2 sudorun chmod -v a+rw "$EGET_IPFS_DB" >&2
# TODO: update this DB every time when changed (and get from IPFS as sign it works.)
# get initial db from server # get initial db from server
local URL="https://eepm.ru/app-versions" local URL="https://eepm.ru/app-versions"
info "Initialize IPFS DB in $EGET_IPFS_DB file and fill it with data from $URL/eget-ipfs-db.txt" info "Initialize IPFS DB in $EGET_IPFS_DB file and fill it with data from $URL/eget-ipfs-db.txt"
...@@ -7263,6 +7272,10 @@ get_fix_release_pkg() ...@@ -7263,6 +7272,10 @@ get_fix_release_pkg()
echo "apt-conf-$TO" echo "apt-conf-$TO"
# apt-conf-sisyphus and apt-conf-branch conflicts # apt-conf-sisyphus and apt-conf-branch conflicts
epm installed apt-conf-branch && echo "apt-conf-branch-" epm installed apt-conf-branch && echo "apt-conf-branch-"
#for i in apt apt-rsync libapt libpackagekit-glib librpm7 packagekit rpm synaptic realmd libldap2 ; do
# epm installed $i && echo "$i"
#done
else else
epm installed apt-conf-branch && echo "apt-conf-branch" && epm installed apt-conf-sisyphus && echo "apt-conf-sisyphus-" epm installed apt-conf-branch && echo "apt-conf-branch" && epm installed apt-conf-sisyphus && echo "apt-conf-sisyphus-"
fi fi
...@@ -8318,6 +8331,7 @@ __epm_have_repack_rule() ...@@ -8318,6 +8331,7 @@ __epm_have_repack_rule()
# skip repacking on non ALT systems # skip repacking on non ALT systems
[ "$BASEDISTRNAME" = "alt" ] || return 1 [ "$BASEDISTRNAME" = "alt" ] || return 1
# skip for packages built with repack
local packager="$(epm print field Packager for "$1" 2>/dev/null)" local packager="$(epm print field Packager for "$1" 2>/dev/null)"
[ "$packager" = "EPM <support@etersoft.ru>" ] && return 1 [ "$packager" = "EPM <support@etersoft.ru>" ] && return 1
[ "$packager" = "EPM <support@eepm.ru>" ] && return 1 [ "$packager" = "EPM <support@eepm.ru>" ] && return 1
...@@ -8607,7 +8621,7 @@ __fix_spec() ...@@ -8607,7 +8621,7 @@ __fix_spec()
# FIXME: where is a source of the bug with empty Summary? # FIXME: where is a source of the bug with empty Summary?
subst "s|Summary: *$|Summary: $pkgname (was empty Summary after alien)|" $spec subst "s|Summary: *$|Summary: $pkgname (was empty Summary after alien)|" $spec
subst "s|^\(Version: .*\)~.*|\1|" $spec subst "s|^\(Version: .*\)~.*|\1|" $spec
subst "s|^Release: |Release: alt1.repacked.with.epm.|" $spec subst "s|^Release: |Release: epm1.repacked.|" $spec
subst "s|^Distribution:.*||" $spec subst "s|^Distribution:.*||" $spec
subst "s|^\((Converted from a\) \(.*\) \(package.*\)|(Repacked from binary \2 package with epm $EPMVERSION)\n\1 \2 \3|" $spec subst "s|^\((Converted from a\) \(.*\) \(package.*\)|(Repacked from binary \2 package with epm $EPMVERSION)\n\1 \2 \3|" $spec
#" hack for highlight #" hack for highlight
...@@ -10173,6 +10187,55 @@ __epm_restore_nupkg() ...@@ -10173,6 +10187,55 @@ __epm_restore_nupkg()
docmd epm install $ilist docmd epm install $ilist
} }
__epm_print_meson_list()
{
local reqmacro="$1"
local req_file="$2"
local l
while read name sign ver other ; do
# gtk4-wayland
# gtk4 >= 4.6
[ -n "$other" ] && continue
if [ -n "$dryrun" ] ; then
local pi=''
pi="$reqmacro pkgconfig($name)"
[ -n "$sign" ] && pi="$pi $sign $ver"
echo "$pi"
continue
else
local pi="pkgconfig($name)"
fi
[ -n "$name" ] || continue
ilist="$ilist $pi"
done < $req_file
[ -n "$dryrun" ] || echo "$ilist"
}
__epm_restore_meson()
{
local req_file="$1"
if [ -n "$dryrun" ] ; then
local lt=$(mktemp)
echo
__epm_restore_print_comment "$req_file" " dependency"
grep "dependency(" $req_file | sed -e 's|.*dependency(||' -e 's|).*||' -e 's|, required.*||' -e 's|, version:||' -e "s|'||g" >$lt
__epm_print_meson_list "BuildRequires:" $lt
rm -f $lt
return
fi
info "Install requirements from $req_file ..."
local lt=$(mktemp)
grep "dependency(" $req_file | sed -e 's|.*dependency(||' -e 's|).*||' -e 's|, required.*||' -e 's|, version:||' -e "s|'||g" >$lt
ilist="$ilist $(__epm_print_meson_list "" $lt)"
rm -f $lt
docmd epm install $ilist
}
__epm_restore_npm() __epm_restore_npm()
{ {
local req_file="$1" local req_file="$1"
...@@ -10293,6 +10356,9 @@ __epm_restore_by() ...@@ -10293,6 +10356,9 @@ __epm_restore_by()
package.json) package.json)
[ -s "$req_file" ] && __epm_restore_npm "$req_file" [ -s "$req_file" ] && __epm_restore_npm "$req_file"
;; ;;
meson.build)
[ -s "$req_file" ] && __epm_restore_meson "$req_file"
;;
Makefile.PL) Makefile.PL)
[ -s "$req_file" ] && __epm_restore_perl "$req_file" [ -s "$req_file" ] && __epm_restore_perl "$req_file"
;; ;;
...@@ -10327,7 +10393,7 @@ epm_restore() ...@@ -10327,7 +10393,7 @@ epm_restore()
# if run with empty args # if run with empty args
for i in requirements.txt requirements/default.txt requirements_dev.txt requirements-dev.txt requirements/dev.txt dev-requirements.txt \ for i in requirements.txt requirements/default.txt requirements_dev.txt requirements-dev.txt requirements/dev.txt dev-requirements.txt \
requirements-test.txt requirements_test.txt requirements/test.txt test-requirements.txt requirements/coverage.txt \ requirements-test.txt requirements_test.txt requirements/test.txt test-requirements.txt requirements/coverage.txt \
Gemfile requires.txt package.json setup.py python_dependencies.py Makefile.PL \ Gemfile requires.txt package.json setup.py python_dependencies.py Makefile.PL meson.build \
*.sln *.csproj ; do *.sln *.csproj ; do
__epm_restore_by $i __epm_restore_by $i
done done
...@@ -11331,6 +11397,132 @@ epm_stats() ...@@ -11331,6 +11397,132 @@ epm_stats()
docmd $CMD "$@" docmd $CMD "$@"
} }
# File bin/epm-status:
epm_status_original()
{
local pkg="$1"
#is_installed $pkg || fatal "FIXME: implemented for installed packages as for now"
case $DISTRNAME in
ALTLinux|ALTServer)
#[ "$(epm print field Vendor for package $pkg)" = "ALT Linux Team" ] && return
epm_status_repacked $pkg && return 1
__epm_check_if_package_from_repo $pkg && return
;;
*)
fatal "Unsupported $DISTRNAME"
;;
esac
return 1
}
epm_status_repacked()
{
local pkg="$1"
#is_installed $pkg || fatal "FIXME: implemented for installed packages as for now"
case $BASEDISTRNAME in
alt)
local packager="$(epm print field Packager for "$1" 2>/dev/null)"
[ "$packager" = "EPM <support@etersoft.ru>" ] && return 0
[ "$packager" = "EPM <support@eepm.ru>" ] && return 0
;;
*)
fatal "Unsupported $DISTRNAME"
;;
esac
return 1
}
epm_status_thirdpart()
{
local pkg="$1"
#is_installed $pkg || fatal "FIXME: implemented for installed packages as for now"
case $BASEDISTRNAME in
alt)
## FIXME: some repo packages have wrong Packager
#local packager="$(epm print field Packager for "$1" 2>/dev/null)"
#echo "$packager" && grep -q "altlinux" && return 0
#echo "$packager" && grep -q "basealt" && return 0
local distribution
distribution="$(epm print field Distribution for "$pkg" 2>/dev/null )"
echo "$distribution" | grep -q "^ALT" || return 0
;;
*)
fatal "Unsupported $DISTRNAME"
;;
esac
return 1
}
epm_status_help()
{
cat <<EOF
epm status - check status of the package and return result via exit code
Usage: epm status [options] <package>
Options:
--installed check if <package> is installed
--original check if <package> is from distro repo
--thirdpart check if <package> from a third part source (didn't packed for this distro)
--repacked check if <package> was repacked with epm repack
EOF
}
epm_status()
{
local option="$1"
if [ -z "$1" ] ; then
epm_status_help >&2
exit 1
fi
shift
# TODO: allow both option
case "$option" in
-h|--help)
epm_status_help
return
;;
--installed)
is_installed "$@"
return
;;
--original)
epm_status_original "$@"
return
;;
--thirdpart)
epm_status_thirdpart "$@"
return
;;
--repacked)
epm_status_repacked "$@"
return
;;
*)
fatal "Unknown option $option, use epm status --help to get info"
;;
esac
epm_status_help >&2
fatal "Run with appropriate option"
}
# File bin/epm-tool: # File bin/epm-tool:
epm_tool_help() epm_tool_help()
...@@ -15528,20 +15720,15 @@ check_command() ...@@ -15528,20 +15720,15 @@ check_command()
installed) # HELPCMD: check presence of package(s) (like -q with --quiet) installed) # HELPCMD: check presence of package(s) (like -q with --quiet)
epm_cmd=installed epm_cmd=installed
;; ;;
status) # HELPCMD: get status of package(s) (see epm status --help)
epm_cmd=status
;;
-sf|sf|filesearch|search-file) # HELPCMD: search in which package a file is included -sf|sf|filesearch|search-file) # HELPCMD: search in which package a file is included
epm_cmd=search_file epm_cmd=search_file
;; ;;
-ql|ql|filelist|get-files) # HELPCMD: print package file list -ql|ql|filelist|get-files) # HELPCMD: print package file list
epm_cmd=filelist epm_cmd=filelist
;; ;;
check|fix|verify) # HELPCMD: check local package base integrity and fix it
epm_cmd=check
direct_args=1
;;
dedup) # HELPCMD: remove unallowed duplicated pkgs (after upgrade crash)
epm_cmd=dedup
direct_args=1
;;
-cl|cl|changelog) # HELPCMD: show changelog for package -cl|cl|changelog) # HELPCMD: show changelog for package
epm_cmd=changelog epm_cmd=changelog
;; ;;
...@@ -15612,6 +15799,14 @@ check_command() ...@@ -15612,6 +15799,14 @@ check_command()
epm_cmd=repo epm_cmd=repo
direct_args=1 direct_args=1
;; ;;
check|fix|verify) # HELPCMD: check local package base integrity and fix it
epm_cmd=check
direct_args=1
;;
dedup) # HELPCMD: remove unallowed duplicated pkgs (after upgrade crash)
epm_cmd=dedup
direct_args=1
;;
full-upgrade) # HELPCMD: update all system packages and kernel full-upgrade) # HELPCMD: update all system packages and kernel
epm_cmd=full_upgrade epm_cmd=full_upgrade
direct_args=1 direct_args=1
......
...@@ -368,9 +368,12 @@ set_sudo() ...@@ -368,9 +368,12 @@ set_sudo()
# if input is a console # if input is a console
if inputisatty && isatty && isatty2 ; then if inputisatty && isatty && isatty2 ; then
if ! $SUDO_CMD -l >/dev/null ; then if ! $SUDO_CMD -n true ; then
[ "$nofail" = "nofail" ] || SUDO="fatal 'Can't use sudo (only passwordless sudo is supported in non interactive using). Please run epm under root.'" info "Please enter sudo user password to use sudo in the current session."
return "$SUDO_TESTED" if ! $SUDO_CMD -l >/dev/null ; then
[ "$nofail" = "nofail" ] || SUDO="fatal 'Can't use sudo (only passwordless sudo is supported in non interactive using). Please run epm under root.'"
return "$SUDO_TESTED"
fi
fi fi
else else
# use sudo if one is tuned and tuned without password # use sudo if one is tuned and tuned without password
...@@ -735,11 +738,16 @@ __epm_check_if_package_from_repo() ...@@ -735,11 +738,16 @@ __epm_check_if_package_from_repo()
#vendor="$(epm print field Vendor for "$pkg" 2>/dev/null))" #vendor="$(epm print field Vendor for "$pkg" 2>/dev/null))"
#[ "$vendor" = "ALT Linux Team" ] || return #[ "$vendor" = "ALT Linux Team" ] || return
local distribution="$(epm print field Distribution for "$pkg" 2>/dev/null))" local distribution
distribution="$(epm print field Distribution for "$pkg" 2>/dev/null )"
echo "$distribution" | grep -q "^ALT" || return echo "$distribution" | grep -q "^ALT" || return
local sig
sig="$(epm print field sigpgp for "$pkg" 2>/dev/null )"
[ "$sig" = "(none)" ] && return 1
# FIXME: how to check if the package is from ALT repo (verified)? # FIXME: how to check if the package is from ALT repo (verified)?
local release="$(epm print release from package "$pkg" 2>/dev/null)" local release="$(epm print release from package "$pkg" 2>/dev/null )"
echo "$release" | grep -q "^alt" || return echo "$release" | grep -q "^alt" || return
return 0 return 0
...@@ -2614,7 +2622,7 @@ print_version() ...@@ -2614,7 +2622,7 @@ print_version()
local on_text="(host system)" local on_text="(host system)"
local virt="$($DISTRVENDOR -i)" local virt="$($DISTRVENDOR -i)"
[ "$virt" = "(unknown)" ] || [ "$virt" = "(host system)" ] || on_text="(under $virt)" [ "$virt" = "(unknown)" ] || [ "$virt" = "(host system)" ] || on_text="(under $virt)"
echo "Service manager version 3.52.6 https://wiki.etersoft.ru/Epm" echo "Service manager version 3.52.7 https://wiki.etersoft.ru/Epm"
echo "Running on $($DISTRVENDOR -e) $on_text with $SERVICETYPE" echo "Running on $($DISTRVENDOR -e) $on_text with $SERVICETYPE"
echo "Copyright (c) Etersoft 2012-2021" echo "Copyright (c) Etersoft 2012-2021"
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