Magellan Linux

Annotation of /branches/mage-next/src/up2date/up2date.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2607 - (hide annotations) (download)
Tue Mar 4 14:57:09 2014 UTC (10 years, 2 months ago) by niro
File size: 5423 byte(s)
-mage use of common.functions.sh
1 niro 2582 #!/bin/bash
2    
3 niro 2591 die() { echo "Error: $@"; exit 1; }
4 niro 2582
5 niro 2591 # include all needed files
6     [ -f /etc/mage.rc.global ] && source /etc/mage.rc.global || die "/etc/mage.rc.global missing"
7     [ -f ${MAGERC} ] && source ${MAGERC} || die "Your ${MAGERC} is missing. Aborting."
8 niro 2607 # overrides die() function
9     [ -f ${MLIBDIR}/common.functions.sh ] && source ${MLIBDIR}/common.functions.sh || die "common mage functions missing"
10 niro 2591 [ -f ${MLIBDIR}/mage4.functions.sh ] && source ${MLIBDIR}/mage4.functions.sh || die "mage functions missing"
11     [ -f ${MLIBDIR}/smage2.functions.sh ] && source ${MLIBDIR}/smage2.functions.sh || die "smage functions missing"
12     [ -f /etc/up2date.conf ] && source /etc/up2date.conf || die "/etc/up2date.conf missing"
13 niro 2582
14 niro 2591 # respect repos from env or load repos from config file
15     if [[ -z ${REPOS} ]] && [[ -n ${SMAGE_REPOS} ]]
16     then
17     REPOS="${SMAGE_REPOS}"
18     fi
19     # sane default
20     : ${REPOS="${SMAGESCRIPTSDIR}/core ${SMAGESCRIPTSDIR}/extras ${SMAGESCRIPTSDIR}/nonfree ${SMAGESCRIPTSDIR}/todo"}
21    
22     # always be silent
23     SILENT=1
24     FVERBOSE=off
25 niro 2582
26 niro 2591 # load all up2date includes
27     for inc in ${MLIBDIR}/up2date/*.sh
28     do
29     source ${inc}
30     done
31 niro 2582
32     updatecmd()
33     {
34     local uppver
35     local useragent
36     [[ ! -z ${UP2USERAGENT} ]] && useragent="-useragent '${UP2USERAGENT}'"
37    
38     uppver=$(lynx -connect_timeout=${LYNX_CONNECT_TIMEOUT} -read_timeout=${LYNX_READ_TIMEOUT} -dump "${useragent}" $@)
39     if [[ $? -ne 0 ]]
40     then
41     echo "Error connecting '$@'"
42     sleep 1
43     return 1
44     fi
45    
46     if [[ ! -z ${UP2SUBSTITUTE} ]]
47     then
48     echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g"
49     else
50     echo "${uppver}"
51     fi
52     }
53    
54     updateme()
55     {
56     local smage="$1"
57     local ONLY_PRINT_UPSTREAM
58    
59     if [[ $1 = --upstream ]] || [[ $1 = -u ]]
60     then
61     if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]]
62     then
63     echo "you must give me a smagefile."
64     exit 1
65     fi
66     ONLY_PRINT_UPSTREAM=1
67     smage="$2"
68     fi
69    
70     local PNAME
71     local PCATEGORIE
72     local PCAT
73     local PVER
74     local UP2DATE
75     local UP2PVER
76     local UP2TARBALL
77     local UP2SUBDIR
78     local UP2SUBSTITUTE
79     local UP2USERAGENT
80     local UP2EXCLUDE
81     local UP2SEPERATOR
82     local UP2OPTS
83     local UPSTREAM_PVER
84    
85     PNAME="$(get_value_from_magefile PNAME ${smage})"
86     PCATEGORIE="$(get_value_from_magefile PCATEGORIE ${smage})"
87     PCAT="$(get_value_from_magefile PCAT ${smage})"
88     PVER="$(get_value_from_magefile PVER ${smage})"
89     UP2PVER="$(get_value_from_magefile UP2PVER ${smage})"
90     UP2TARBALL="$(get_value_from_magefile UP2TARBALL ${smage})"
91     UP2SUBDIR="$(get_value_from_magefile UP2SUBDIR ${smage})"
92     UP2SUBSTITUTE="$(get_value_from_magefile UP2SUBSTITUTE ${smage})"
93     UP2USERAGENT="$(get_value_from_magefile UP2USERAGENT ${smage})"
94     UP2EXCLUDE="$(get_value_from_magefile UP2EXCLUDE ${smage})"
95     UP2SEPERATOR="$(get_value_from_magefile UP2SEPERATOR ${smage})"
96     UP2OPTS="$(get_value_from_magefile UP2OPTS ${smage})"
97    
98     [[ -z ${UP2PVER} ]] && UP2PVER="${PVER}"
99    
100     UP2DATE=$(get_value_from_magefile UP2DATE ${smage})
101    
102     if [[ -z ${UP2DATE} ]]
103     then
104     continue
105     fi
106    
107     UPSTREAM_PVER=$(eval "${UP2DATE}")
108     if [[ ${ONLY_PRINT_UPSTREAM} = 1 ]]
109     then
110     echo "${UPSTREAM_PVER}"
111     else
112     local retval
113 niro 2591 retval=$(${MLIBDIR}/vercomp "${UP2PVER}" "${UPSTREAM_PVER}")
114 niro 2582 [ ${retval} -eq 0 ] && echo -e "${PNAME}: ${COLGREEN}'${UP2PVER}' = '${UPSTREAM_PVER}'${COLDEFAULT}"
115     [ ${retval} -lt 0 ] && echo -e "${PNAME}: ${COLRED}'${UP2PVER}' < '${UPSTREAM_PVER}'${COLDEFAULT}"
116     [ ${retval} -gt 0 ] && echo -e "${PNAME}: ${COLYELLOW}'${UP2PVER}' > '${UPSTREAM_PVER}'${COLDEFAULT}"
117     fi
118     }
119    
120     updateall()
121     {
122     #local REPOS
123     local PACKAGE
124     local smage
125     local repo
126     local UP2DATE_SLEEP_COUNT=15
127     local UP2DATE_SLEEP_TIMEOUT=3
128     local ONLY_PRINT_UPSTREAM=0
129 niro 2591 local c
130 niro 2582
131     PACKAGE="*"
132     [[ ! -z $1 ]] && PACKAGE="$1"
133    
134     if [[ $1 = --upstream ]] || [[ $1 = -u ]]
135     then
136     if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]]
137     then
138     echo "you must give me a smagefile."
139     exit 1
140     fi
141     updateme $1 $2
142     return 0
143     fi
144    
145     ##############################################################################
146     # recurse all depends if requested
147     #
148     if [[ $1 = --depend ]] || [[ $1 = -d ]]
149     then
150     if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]]
151     then
152     echo "you must give me a smagefile."
153     exit 1
154     fi
155    
156     SMAGEFILE="$2"
157     PACKAGE="$(magename2pname ${SMAGEFILE})"
158    
159     echo "processing '${SMAGEFILE}' ..."
160     echo "running dependency checks for package '${PACKAGE}'..."
161    
162     DEPEND=$(get_value_from_magefile DEPEND ${SMAGEFILE})
163     SDEPEND=$(get_value_from_magefile SDEPEND ${SMAGEFILE})
164    
165     declare -i c=0
166     while read sign dep
167     do
168     case ${dep} in
169     "") continue;;
170     esac
171    
172     # sleep every 15 packages for 5 seconds
173     (( c++ ))
174     if [[ ${c} -eq ${UP2DATE_SLEEP_COUNT} ]]
175     then
176     declare -i c=0
177     echo "DEBUG: Sleep Count (${UP2DATE_SLEEP_COUNT}x) reached, sleeping for ${UP2DATE_SLEEP_TIMEOUT} seconds ..."
178     sleep ${UP2DATE_SLEEP_TIMEOUT}
179     fi
180     #echo "debug: ${dep}"
181     updateme "$(dep2pname ${dep})"
182     done << EOF
183     ${DEPEND}
184     ${SDEPEND}
185     EOF
186     fi
187     #
188     # eof recurse
189     ##############################################################################
190    
191     for repo in ${REPOS}
192     do
193     # exclude not existing
194     [[ ${PACKAGE} != \* ]] && [[ ! -d ${repo}/${PACKAGE} ]] && continue
195    
196     declare -i c=0
197     for smage in ${repo}/${PACKAGE}/*.smage2
198     do
199     updateme ${smage}
200    
201     # sleep every 15 packages for 5 seconds
202     (( c++ ))
203     if [[ ${c} -eq ${UP2DATE_SLEEP_COUNT} ]]
204     then
205     declare -i c=0
206     echo "DEBUG: Sleep Count (${UP2DATE_SLEEP_COUNT}x) reached, sleeping for ${UP2DATE_SLEEP_TIMEOUT} seconds ..."
207     sleep ${UP2DATE_SLEEP_TIMEOUT}
208     fi
209     done
210     done
211     }
212    
213     updateall $@