1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/sh
# Copyright (C) 2016, 2020, 2023 Etersoft
# Copyright (C) 2016 Danil Mikhailov <danil@etersoft.ru>
# Copyright (C) 2016, 2020, 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-install
# default repo
EPM_KORINF_REPO_URL="https://updates.etersoft.ru/pub/Korinf"
__epm_korinf_site_mask() {
local MASK="$1"
local archprefix=""
# short hack to install needed package
rhas "$MASK" "[-_]" || MASK="${MASK}[-_][0-9]"
# set arch for Korinf compatibility
[ "$DISTRARCH" = "x86_64" ] && archprefix="x86_64/"
local URL="$EPM_KORINF_REPO_URL/$archprefix$DISTRNAME/$DISTRVERSION"
if ! eget --check "$URL" ; then
tURL="$EPM_KORINF_REPO_URL/$archprefix$BASEDISTRNAME/$DISTRREPONAME"
docmd eget --check "$tURL" && URL="$tURL"
fi
eget --list --latest "$URL/$MASK*.$PKGFORMAT"
}
__epm_korinf_list() {
local MASK="$1"
MASK="$(__epm_korinf_site_mask "$MASK")"
showcmd eget --list "$MASK"
eget --list "$MASK" | sort
}
__epm_korinf_install() {
local pkg pkgurl
local pkg_urls=''
for pkgurl in $* ; do
pkg="$(__epm_korinf_site_mask "$pkgurl")"
[ -n "$pkg" ] || fatal "Can't get package url from $pkgurl"
[ -n "$pkg_urls" ] && pkg_urls="$pkg_urls $pkg" || pkg_urls="$pkg"
done
# due Error: Can't use epm call from the piped script
#epm install $(__epm_korinf_site_mask "$PACKAGE")
pkg_names='' pkg_files='' epm_install
}
__epm_korinf_install_eepm()
{
if [ "$BASEDISTRNAME" = "alt" ] && [ "$DISTRVERSION" != "Sisyphus" ] && [ "$EPMMODE" = "package" ] ; then
if epm status --original eepm ; then
warning "Using external (Korinf) repo is forbidden for stable ALT branch $DISTRVERSION."
info "Check https://bugzilla.altlinux.org/44314 for reasons."
info "You can install eepm package from Korinf manually, check instruction at https://eepm.ru"
info ""
info "Trying update eepm from the stable ALT repository ..."
docmd epm install eepm
return
fi
fi
# enable interactive for install eepm from console
if inputisatty && [ "$EPMMODE" != "pipe" ] ; then
[ -n "$non_interactive" ] || interactive="--interactive"
else
[ -n "$interactive" ] || non_interactive="--auto"
fi
# as now, can't install one package from task (and old apt-repo can't install one package)
if false && [ "$BASEDISTRNAME" = "alt" ] && [ -z "$direct" ] ; then
local task="$(docmd eget -O- https://eepm.ru/vendor/alt/task)"
if [ -n "$task" ] ; then
docmd epm install $task
return
else
info "Can't get actual task for ALT, fallback to Korinf"
fi
fi
pkg_list="eepm"
# TODO: reenable eepm-repack build
# don't lose epm-repack if installed
# is_installed epm-repack && pkg_list="$pkg_list eepm-repack"
# enable scripts to resolve dependencies with apt
scripts='--scripts' __epm_korinf_install $pkg_list
}
epm_epm_install_help()
{
echo "epm ei [URL] [packages] - install packages from EPM based Korinf repository"
get_help HELPCMD $SHAREDIR/epm-epm_install
cat <<EOF
Default Korinf repository: $EPM_KORINF_REPO_URL
Examples:
epm ei [epm|eepm] - install latest eepm (default action)
epm ei <package1> [<package2>...] - install package(s) from default Korinf repo
epm http://someurl.ru <package> - install package(s) from a repo defined by URL
epm --list <package mask> - list available packages by mask
EOF
}
epm_epm_install()
{
if is_url "$1" ; then
EPM_KORINF_REPO_URL="$1"
info "Using $EPM_KORINF_REPO_URL repo ..."
shift
fi
case "$1" in
""|epm|eepm)
# install epm by default
__epm_korinf_install_eepm
return
;;
-h|--help) # HELPCMD: help
epm_epm_install_help
return
;;
--list) # HELPCMD: list only packages
shift
__epm_korinf_list "$1"
return
;;
esac
__epm_korinf_install "$@"
}