-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlib32-find_updates
More file actions
executable file
·102 lines (90 loc) · 2.52 KB
/
Copy pathlib32-find_updates
File metadata and controls
executable file
·102 lines (90 loc) · 2.52 KB
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
#!/bin/bash
#Finding updates to lib32 packages
#For archlinux system
WORKING_DIRECTORY="/var/lib/pacman/sync"
USE_LOCAL_DATABASE=1;
#For non-archlinux systems
#WORKING_DIRECTORY="/home/user/lib32"
#USE_LOCAL_DATABASE=0;
#MIRROR="http://mir.archlinux.fr"
#extract pkgver from lib32-package-pkgver-pkgrel format
get_pkgver(){
echo $1 | rev | awk -F"-" '{print $2}' | rev;
}
#extract pkgrel from lib32-package-pkgver-pkgrel format
get_pkgrel(){
echo $1 | rev | awk -F"-" '{print $1}' | rev;
}
#extract pkgname from lib32-package-pkgver-pkgrel
get_pkgname(){
source_string=$1;
substring="-$2-$3";
echo ${source_string%$substring};
}
#check version between lib32-package and package.
# $_pkgver is the version from core/extra
# $_pkgrel is the version from core/extra
check_all(){
if [ $_pkgver != $pkgver ];then
echo "$pkgname $_pkgver new $pkgver is old";
else
if [ $_pkgrel != $pkgrel ];then
if [[ $_pkgrel == *.* || $pkgrel == *.* ]] ; then
continue; #ignore packages that have . in pkgrel
else
echo "$pkgname $_pkgrel is newrel $pkgrel is old";
fi
fi
fi
}
#find package in core/extra
#return 1 if the package is not found
#return 0 succes
find_package(){
_pkgname=${1#"lib32-"};
#testing first core
if [ $_pkgname = "nas" ]; then
result=$(ls -1 "$WORKING_DIRECTORY/community" | grep ^$_pkgname -m1);
else
result=$(ls -1 "$WORKING_DIRECTORY/core" | grep ^$_pkgname -m1);
if [ -z $result ]; then
result=$(ls -1 "$WORKING_DIRECTORY/extra" | grep ^$_pkgname -m1);
if [ -z $result ]; then
return 1; #package not found;
fi
fi
fi
_pkgver=$(get_pkgver $result);
_pkgrel=$(get_pkgrel $result);
return 0; #sucess
}
extract_database(){
#clean working directory
rm -rf "$WORKING_DIRECTORY"/*
mkdir "$WORKING_DIRECTORY"/{core,extra,community}
for repo in core extra community; do
wget "$MIRROR/$repo/os/x86_64/$repo.db.tar.gz" -q -P "$WORKING_DIRECTORY/$repo"
tar xzf "$WORKING_DIRECTORY/$repo/$repo.db.tar.gz" -C "$WORKING_DIRECTORY/$repo"
done
}
if [ ! -d "$WORKING_DIRECTORY" ]; then
echo "Working directory doesn't exist"
exit
fi
if [ $USE_LOCAL_DATABASE -eq 0 ];then
extract_database;
fi
list=$(ls -1 "$WORKING_DIRECTORY/community/" | grep ^lib32-)
#MAIN
for i in $list; do
pkgver=$(get_pkgver $i);
pkgrel=$(get_pkgrel $i);
pkgname=$(get_pkgname $i $pkgver $pkgrel);
find_package $pkgname;
return_val=$?
if [ $return_val -eq 0 ];then
check_all;
else
echo "$pkgname not found!!";
fi
done