Browse Source

Speedup update file generation by factor of 2 and more

Georgi Chorbadzhiyski 18 years ago
parent
commit
89f4a30029
1 changed files with 33 additions and 30 deletions
  1. 33
    30
      slcheck.sh

+ 33
- 30
slcheck.sh View File

@@ -1,9 +1,9 @@
1 1
 #!/bin/sh
2 2
 # SlackCheck
3 3
 #
4
-# $Id: slcheck.sh,v 1.31 2006/07/06 14:45:24 gf Exp $
4
+# $Id: slcheck.sh,v 1.32 2006/07/06 15:01:49 gf Exp $
5 5
 #
6
-# Copyright (c) 2002-2004 Georgi Chorbadzhiyski, Sofia, Bulgaria
6
+# Copyright (c) 2002-2006 Georgi Chorbadzhiyski, Sofia, Bulgaria
7 7
 # All rights reserved.
8 8
 #
9 9
 # Redistribution and use of this script, with or without modification, is
@@ -24,7 +24,7 @@
24 24
 #  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 25
 #
26 26
 
27
-echo "SlackCheck v3.50"
27
+echo "SlackCheck v3.60"
28 28
 echo
29 29
 
30 30
 cd $(dirname $0)
@@ -121,16 +121,6 @@ collect_package_lists() {
121 121
 	done
122 122
 }
123 123
 
124
-# Used by generate_upgrade_scripts()
125
-package_name() {
126
-	name=$(echo $1 | rev | cut -d- -f4- | rev)
127
-	if [ "$name" = "" ]; then
128
-		echo $1
129
-	else
130
-		echo $name
131
-	fi
132
-}
133
-
134 124
 # Generate upgrade scripts
135 125
 generate_upgrade_scripts() {
136 126
 	mkdir ${DIR_UPD} 2>/dev/null
@@ -149,12 +139,18 @@ generate_upgrade_scripts() {
149 139
 			rm ${DIR_UPD}/${FILE_UNKPACKS}${HOST}  >/dev/null 2>&1
150 140
 			rm ${DIR_UPD}/${FILE_UPDATES}${HOST}   >/dev/null 2>&1
151 141
 			rm ${DIR_UPD}/${FILE_UPDATES}${HOST}.* >/dev/null 2>&1
152
-			# For each package, hostpkg is only package name, NO directories!
153
-			cat ${DIR_PKG}/$HOST | grep -v aaa_elflibs | \
154
-			while read hostpkg; do
142
+			# Generate file with package basenames
143
+			rev < ${DIR_PKG}/$HOST | cut -d- -f4- | rev > ${DIR_UPD}/${FILE_UPDATES}${HOST}.base
144
+			paste ${DIR_PKG}/$HOST ${DIR_UPD}/${FILE_UPDATES}${HOST}.base | \
145
+			while read hostpkg basepkg
146
+			do
147
+				# aaa_elflibs should not be updated
148
+				if [ "$basepkg" = "aaa_elflibs" ]; then
149
+					continue
150
+				fi
155 151
 				# Get package from the distro packages
156 152
 				# This contains FULL directory + package name
157
-				distro_package=$(grep /`package_name $hostpkg`-[0-9] ${DIR_PKG}/${FILE_NEWEST} | head -1 2>/dev/null)
153
+				distro_package=$(grep /$basepkg-[0-9] ${DIR_PKG}/${FILE_NEWEST})
158 154
 				if [ "$distro_package" != "" ]
159 155
 				then # Host package exist in the distro packages
160 156
 					distropkg=$(basename $distro_package) # Strip directory
@@ -174,6 +170,11 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
174 170
 							echo " SAME: $hostpkg -> $distropkg ($distro_package)"
175 171
 						fi
176 172
 					fi
173
+				else # Add to unknown packages
174
+					if [ "$VERBOSE" == "1" ]; then
175
+						echo " UNKN: $hostpkg"
176
+					fi
177
+					echo "$hostpkg" >> ${DIR_UPD}/${FILE_UNKPACKS}${HOST}
177 178
 				fi
178 179
 			done
179 180
 			if [ "$VERBOSE" != "1" ]; then
@@ -199,8 +200,7 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
199 200
 			if [ -s ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs ]
200 201
 			then
201 202
 				sort ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs > ${DIR_UPD}/.${HOST}.newpkgs.tmp
202
-				cat ${DIR_UPD}/.${HOST}.newpkgs.tmp > ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs
203
-				rm ${DIR_UPD}/.${HOST}.newpkgs.tmp
203
+				mv ${DIR_UPD}/.${HOST}.newpkgs.tmp ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs
204 204
 				(echo '#!/bin/sh'
205 205
 				 echo
206 206
 				 echo "DL_HOST=\"${DL_HOST}\""
@@ -221,14 +221,14 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
221 221
 				 echo
222 222
 				 # Put glibc and elflibs updates first, otherwise
223 223
 				 # something may broke
224
+				 # workarounds
224 225
 				 cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | grep a/glibc
225 226
 				 cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | grep a/elflibs
226 227
 				 cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | grep a/pkgtools
227 228
 				 cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | \
228
-					grep -v a/glibc | \
229
-					grep -v a/elflibs | \
230
-					grep -v a/pkgtools
231
-				 # workarounds
229
+				    grep -v a/glibc | \
230
+				    grep -v a/elflibs | \
231
+				    grep -v a/pkgtools
232 232
 				 echo "PKG_SED=\"`grep sed- ${DIR_PKG}/${FILE_NEWEST} 2>/dev/null`\"";
233 233
 				 echo "PKG_COREUTILS=\"`grep coreutils- ${DIR_PKG}/${FILE_NEWEST} 2>/dev/null`\"";
234 234
 				 echo "PKG_UTEMPTER=\"`grep utempter- ${DIR_PKG}/${FILE_NEWEST} 2>/dev/null`\"";
@@ -240,6 +240,7 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
240 240
 			fi
241 241
 			# Cleanup
242 242
 			rm ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs >/dev/null 2>&1
243
+			rm ${DIR_UPD}/${FILE_UPDATES}${HOST}.base >/dev/null 2>&1
243 244
 		fi
244 245
 	done
245 246
 	echo
@@ -251,11 +252,13 @@ upgrade_machines() {
251 252
 	echo "===> Upgrating hosts..."
252 253
 	for HOST in $SLACK_HOSTS
253 254
 	do
255
+		hname=$(hostname 2>/dev/null)
256
+		hname_full=$(hostname -f 2>/dev/null)
254 257
 		if [ -f ${DIR_UPD}/${FILE_UPDATES}${HOST} ]
255 258
 		then
256 259
 			# Localhost
257
-			if [ "$HOST" == "$(hostname)" -o \
258
-			     "$HOST" == "$(hostname -f)" -o \
260
+			if [ "$HOST" == "$hname" -o \
261
+			     "$HOST" == "$hname_full" -o \
259 262
 			     "$HOST" == "localhost" ]
260 263
 			then
261 264
 				echo "  ---> $HOST (Local machine)"
@@ -380,9 +383,9 @@ echo -n "---> Hosts: "
380 383
 echo $SLACK_HOSTS
381 384
 echo
382 385
 
383
-[ "$DO_SYNC"    = "1" ] && (sync_master_list)
384
-[ "$DO_COLLECT" = "1" ] && (collect_package_lists)
385
-[ "$DO_GEN"     = "1" ] && (generate_upgrade_scripts)
386
-[ "$DO_DIST"    = "1" ] && (distribute_up_scripts)
387
-[ "$DO_UPGRADE" = "1" ] && (upgrade_machines)
386
+[ "$DO_SYNC"    = "1" ] && sync_master_list
387
+[ "$DO_COLLECT" = "1" ] && collect_package_lists
388
+[ "$DO_GEN"     = "1" ] && generate_upgrade_scripts
389
+[ "$DO_DIST"    = "1" ] && distribute_up_scripts
390
+[ "$DO_UPGRADE" = "1" ] && upgrade_machines
388 391
 

Loading…
Cancel
Save