annotate sbin/check-ports @ 138:850ebdb132d1

Name a shared local repository: SharedLocalRepo
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 25 Oct 2019 09:24:06 +0200
parents dbbb04c46d97
children 302225cfb01b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
08cf7bf119b7 Current version of a tool to check the versions of installed ports against the source ports tree and other binary repositories
Franz Glasner <hg@dom66.de>
parents:
diff changeset
1 #!/bin/sh
79
Franz Glasner <fzglas.hg@dom66.de>
parents: 67
diff changeset
2 # -*- indent-tabs-mode: nil; -*-
86
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
3 : 'Check the version status of installed ports and compare them to
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
4 repository versions.
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
5
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
6 :Author: Franz Glasner
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
7 :Copyright: (c) 2017-2019 Franz Glasner.
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
8 All rights reserved.
99
7a064049405f Use the "Full name" in the license section
Franz Glasner <fzglas.hg@dom66.de>
parents: 94
diff changeset
9 :License: BSD 3-Clause "New" or "Revised" License.
86
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
10 See LICENSE for details.
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
11 If you cannot find LICENSE see
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
12 <https://opensource.org/licenses/BSD-3-Clause>
93
c95726f83f84 Style: :Id: -> :ID:
Franz Glasner <fzglas.hg@dom66.de>
parents: 86
diff changeset
13 :ID: @(#)@@PKGORIGIN@@ $HGid$
86
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
14
a3b9d4fe560e Provide "module" doc-strings
Franz Glasner <fzglas.hg@dom66.de>
parents: 85
diff changeset
15 '
0
08cf7bf119b7 Current version of a tool to check the versions of installed ports against the source ports tree and other binary repositories
Franz Glasner <hg@dom66.de>
parents:
diff changeset
16
130
54de2955bfa9 Put @@VERSION@@ and @@HGREVISION@@ in single quotes
Franz Glasner <fzglas.hg@dom66.de>
parents: 128
diff changeset
17 VERSION='@@VERSION@@'
17
089afc4908c0 Expand @@VERSION@@ with the package version also
Franz Glasner <hg@dom66.de>
parents: 16
diff changeset
18
14
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
19 #
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
20 # Configuration directory
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
21 #
66
1f3a64254c9c Replace @@ETCDIR@@ and @@INDEXFILE@@ dynamically at package build time
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
22 : ${CONFIGDIR:=@@ETCDIR@@}
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
23
131
993fecdf2a70 Rename etc/tools.conf to etc/pkgtools.conf.
Franz Glasner <fzglas.hg@dom66.de>
parents: 130
diff changeset
24 test -r "${CONFIGDIR}/pkgtools.conf" && . "${CONFIGDIR}/pkgtools.conf"
109
0bd594fb56f8 Read the tools.conf configuration file where appropriate
Franz Glasner <fzglas.hg@dom66.de>
parents: 108
diff changeset
25
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
26 #
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
27 # Mapping configuration: installed package name -> original package name
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
28 # Note: This is independent of any repo
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
29 #
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
30 : ${PACKAGE_MAPPING:=${CONFIGDIR}/package-mapping.conf}
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
31
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
32 #
55
97db540472bd Doc: enhanced comment
Franz Glasner <fzglas.hg@dom66.de>
parents: 52
diff changeset
33 # Local repository with non-public packages and/or ports with changed
97db540472bd Doc: enhanced comment
Franz Glasner <fzglas.hg@dom66.de>
parents: 52
diff changeset
34 # OPTIONS (i.e. not using the defaults) or forks of official packages with
136
8afc4eb30406 Docu: better comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 135
diff changeset
35 # other package names.
8afc4eb30406 Docu: better comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 135
diff changeset
36 # This repo is strictly *local* to the host and/or jail.
14
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
37 #
1
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
38 : ${LOCAL_REPO:=LocalRepo}
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
39
14
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
40 #
138
850ebdb132d1 Name a shared local repository: SharedLocalRepo
Franz Glasner <fzglas.hg@dom66.de>
parents: 137
diff changeset
41 # Shared local repository with non-public packages and/or ports with
850ebdb132d1 Name a shared local repository: SharedLocalRepo
Franz Glasner <fzglas.hg@dom66.de>
parents: 137
diff changeset
42 # changed OPTIONS (i.e. not using the defaults).
850ebdb132d1 Name a shared local repository: SharedLocalRepo
Franz Glasner <fzglas.hg@dom66.de>
parents: 137
diff changeset
43 # Contrary to LOCAL_REPO this repository may be shared.
850ebdb132d1 Name a shared local repository: SharedLocalRepo
Franz Glasner <fzglas.hg@dom66.de>
parents: 137
diff changeset
44 #
850ebdb132d1 Name a shared local repository: SharedLocalRepo
Franz Glasner <fzglas.hg@dom66.de>
parents: 137
diff changeset
45 : ${SHARED_LOCAL_REPO:=SharedLocalRepo}
850ebdb132d1 Name a shared local repository: SharedLocalRepo
Franz Glasner <fzglas.hg@dom66.de>
parents: 137
diff changeset
46
850ebdb132d1 Name a shared local repository: SharedLocalRepo
Franz Glasner <fzglas.hg@dom66.de>
parents: 137
diff changeset
47 #
136
8afc4eb30406 Docu: better comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 135
diff changeset
48 # (Shared) repository with ports with default OPTIONS (i.e. unchanged)
15
532757223c28 Handle a "FreeBSDPorts" repository also.
Franz Glasner <hg@dom66.de>
parents: 14
diff changeset
49 # but newer than the packages in the "FreeBSD" repository.
136
8afc4eb30406 Docu: better comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 135
diff changeset
50 # Can also contain non-FreeBSD *public* packages.
8afc4eb30406 Docu: better comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 135
diff changeset
51 # May be shared.
15
532757223c28 Handle a "FreeBSDPorts" repository also.
Franz Glasner <hg@dom66.de>
parents: 14
diff changeset
52 # Some sort of a fast-track repository.
532757223c28 Handle a "FreeBSDPorts" repository also.
Franz Glasner <hg@dom66.de>
parents: 14
diff changeset
53 #
23
242055572964 FIX: Variable naming
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 22
diff changeset
54 : ${LOCALBSDPORTS_REPO:=LocalBSDPorts}
59
4805789ebbb3 Style: WS
Franz Glasner <fzglas.hg@dom66.de>
parents: 58
diff changeset
55
15
532757223c28 Handle a "FreeBSDPorts" repository also.
Franz Glasner <hg@dom66.de>
parents: 14
diff changeset
56 #
14
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
57 # The official FreeBSD binary repository
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
58 #
1
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
59 : ${FREEBSD_REPO:=FreeBSD}
59
4805789ebbb3 Style: WS
Franz Glasner <fzglas.hg@dom66.de>
parents: 58
diff changeset
60
14
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
61 #
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
62 # Directly installed from ports
c0e2eb5613fe Comment on the 3 repositories handled repositories
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
63 #
1
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
64 : ${PORTS_DIRECT_INSTALLED_REPO:=unknown-repository}
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
65
64
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
66 #
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
67 # For the workaround of the bug in pkg rquery -I
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
68 #
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
69 : ${PORTSDIR:=/usr/ports}
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
70 : ${INDEXDIR:=${PORTSDIR}}
66
1f3a64254c9c Replace @@ETCDIR@@ and @@INDEXFILE@@ dynamically at package build time
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
71 : ${INDEXFILE:=@@INDEXFILE@@}
64
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
72
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
73
5
53c3500894d2 Begin a new implementation algorithm
Franz Glasner <hg@dom66.de>
parents: 4
diff changeset
74 get_remote_repo_versions() {
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
75 : 'Determine the remote repository versions of all packages in
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
76 repository `_repo`.
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
77
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
78 Args:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
79 _repo: the name of the repote repository
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
80
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
81 Returns:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
82 status 0 on success, 1 on errors
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
83
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
84 Output (Globals):
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
85 remote_versions_${_repo}: the versions of all packages in `_repo` and
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
86 their extended version status with respect to
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
87 locally installed packages
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
88
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
89 '
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
90 local _repo _data _rv
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
91
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
92 _repo=$1
0
08cf7bf119b7 Current version of a tool to check the versions of installed ports against the source ports tree and other binary repositories
Franz Glasner <hg@dom66.de>
parents:
diff changeset
93
5
53c3500894d2 Begin a new implementation algorithm
Franz Glasner <hg@dom66.de>
parents: 4
diff changeset
94 _data=$(pkg version -U -R -r ${_repo} -v)
1
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
95 _rv=$?
60
ec0cc8a8f27a Renamed remote_REPO_versions to remote_versions_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 59
diff changeset
96 eval remote_versions_${_repo}=\"\${_data}\"
1
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
97 return ${_rv}
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
98 }
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
99
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
100 get_remote_repo_data() {
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
101 : 'Get the extended package version information from the remote repository
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
102 `_repo` for package `_name`.
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
103
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
104 Args:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
105 _repo: the name of the remote repository
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
106 _name: the package name
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
107
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
108 Input (Globals):
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
109 remote_versions_${_repo}: the extended version info for *all* packages
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
110 in repo `_repo`.
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
111
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
112 Returns:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
113 status 0 on success, 1 on errors or if the package is not found
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
114 in the remote repository
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
115
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
116 Output (Globals):
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
117 remote_label_${_repo}:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
118 remote_descr_${_repo}:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
119
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
120 '
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
121 local _repo _name _rversions _rfqp _rl _rdescr
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
122
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
123 _repo=$1
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
124 _name=$2
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
125
60
ec0cc8a8f27a Renamed remote_REPO_versions to remote_versions_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 59
diff changeset
126 eval _rversions=\"\${remote_versions_${_repo}}\"
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
127 while read _rfqp _rl _rdescr ; do
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
128 if [ ${_rfqp%-*} = ${_name} ] ; then
58
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
129 eval remote_label_${_repo}=\"\${_rl}\"
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
130 eval remote_descr_${_repo}=\"\${_rdescr}\"
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
131 return 0
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
132 fi
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
133 done <<EOF884657
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
134 ${_rversions}
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
135 EOF884657
58
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
136 eval remote_label_${_repo}=""
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
137 eval remote_descr_${_repo}=""
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
138 return 1
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
139 }
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
140
5
53c3500894d2 Begin a new implementation algorithm
Franz Glasner <hg@dom66.de>
parents: 4
diff changeset
141 get_local_index_versions() {
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
142 : 'Determine the extendes versions of all packages in the local index
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
143 (ports).
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
144
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
145 Returns:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
146 status 0 on success or 1 on errors
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
147
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
148 Output (Globals):
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
149 local_index_versions:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
150
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
151 '
6
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
152 local_index_versions=$(pkg version -I -v)
1
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
153 }
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
154
56
ad454e403e24 Rename function: has now a better name
Franz Glasner <fzglas.hg@dom66.de>
parents: 55
diff changeset
155 get_repo_for_installed_package() {
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
156 : 'Determine for a package `_name` from which repository is has been
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
157 installed.
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
158
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
159 Args:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
160 _name: the name of the package to search for
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
161
102
91fb0af73fce Docu: for "get_repo_for_installed_package()()" extended
Franz Glasner <fzglas.hg@dom66.de>
parents: 101
diff changeset
162 Input (Globals):
91fb0af73fce Docu: for "get_repo_for_installed_package()()" extended
Franz Glasner <fzglas.hg@dom66.de>
parents: 101
diff changeset
163 installed_data the output of ``pkg query "%n %v %R"`` of all
91fb0af73fce Docu: for "get_repo_for_installed_package()()" extended
Franz Glasner <fzglas.hg@dom66.de>
parents: 101
diff changeset
164 installed packages
91fb0af73fce Docu: for "get_repo_for_installed_package()()" extended
Franz Glasner <fzglas.hg@dom66.de>
parents: 101
diff changeset
165
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
166 Returns:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
167 0 on success, 1 on errors or if the package is not installed
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
168
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
169 Output (Globals):
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
170 repository: the repository from which the installed packages `_name`
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
171 has been installed
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
172
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
173 '
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
174 local _name _n _v _r
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
175
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
176 _name=$1
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
177
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
178 while read _n _v _r ; do
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
179 if [ ${_name} = ${_n} ] ; then
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
180 repository=${_r}
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
181 return 0
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
182 fi
23
242055572964 FIX: Variable naming
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 22
diff changeset
183 done <<EOF223777
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
184 ${installed_data}
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
185 EOF223777
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
186 return 1
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
187 }
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
188
63
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
189 get_immediate_index_version() {
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
190 : 'Determine for package `_package` the version of the package in the
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
191 local ports index.
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
192
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
193 Args:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
194 _package: the package name to search for
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
195
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
196 Input (Globals):
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
197 INDEXDIR: the directory where to search the index file
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
198 INDEXFILE: the name of the index file
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
199
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
200 Returns:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
201 0 on success, 1 on errors or if the package is not in the index
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
202
100
a9324638b70e FIX: Style
Franz Glasner <fzglas.hg@dom66.de>
parents: 99
diff changeset
203 Output (Globals):
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
204 immediate_index_version: the version number of `_package` in the
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
205 index
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
206
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
207 '
64
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
208 local _package _line _fqpn _n _lines
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
209
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
210 _package=$1
63
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
211
64
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
212 # _val=$(pkg rquery -I "${_package}" | cut -f 1 -d '|')
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
213 # _rv=$?
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
214 # immediate_index_version=${_val##*-}
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
215 # return ${_rv}
63
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
216
64
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
217 if [ -r "${INDEXDIR}/${INDEXFILE}" ] ; then
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
218 #
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
219 # Note: Direct piping does not set immediate_index_version at return correctly
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
220 # "_line" is set correctly and parsing works, but the return 0 seems to kill
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
221 # some of the previous effects.
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
222 #
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
223 # "grep" does a fast pre-selection, reading, parsing and comparing is done for
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
224 # exact matching.
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
225 #
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
226 _lines=$(egrep '^'"${_package}" "${INDEXDIR}/${INDEXFILE}")
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
227 while read _line ; do
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
228 _fqpn="${_line%%|*}"
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
229 _n=${_fqpn%-*}
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
230 if [ "${_package}" = "${_n}" ] ; then
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
231 immediate_index_version="${_fqpn##*-}"
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
232 return 0
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
233 fi
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
234 done <<EOF1334TGH1
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
235 ${_lines}
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
236 EOF1334TGH1
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
237 fi
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
238
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
239 immediate_index_version=""
ffd5f575edd5 FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Franz Glasner <hg@dom66.de>
parents: 63
diff changeset
240 return 1
63
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
241 }
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
242
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
243 get_immediate_remote_repo_version() {
118
cf9dde7a3a0d FIX: Syntax error: there must be a word separator after the ":" command
Franz Glasner <fzglas.hg@dom66.de>
parents: 109
diff changeset
244 : 'Ask a remote repository for the version of a package.
108
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
245
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
246 Args:
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
247 _repo: the repository name
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
248 _name: the name of the package
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
249
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
250 Returns:
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
251 0 on success and other status codes otherwise
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
252
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
253 Output (Globals):
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
254 immediate_remote_repo_version_${_repo}: the version of package `_name`
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
255 in repo `_repo`
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
256
ef1551e7cb16 Docu: get_immediate_remote_repo_version() is documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 103
diff changeset
257 '
63
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
258 local _repo _name _version _rv
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
259
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
260 _repo=$1
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
261 _name=$2
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
262
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
263 _version=$(pkg rquery -U -r "${_repo}" '%v' "${_name}")
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
264 _rv=$?
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
265 eval immediate_remote_repo_version_${_repo}=\"\${_version}\"
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
266 return ${_rv}
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
267 }
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
268
7
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
269 assert_local_version() {
103
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
270 : 'Check whether an installed package `_name` has given
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
271 version `_version`.
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
272
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
273 Args:
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
274 _name: the package name
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
275 _version: the version to check for
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
276
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
277 Input (Globals):
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
278 installed_data: the output of ``pkg query "%n %v %R"`` of all
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
279 installed packages
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
280
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
281 Returns:
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
282 - 0 if the installed version of package `_name` is equal to `_version`
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
283 - 1 if the installed version of package `_name` differs from `_version`
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
284 - 2 on other errors
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
285
05058a166e6e Docu: assert_local_version() documented
Franz Glasner <fzglas.hg@dom66.de>
parents: 102
diff changeset
286 '
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
287 local _name _version _n _v _r
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
288
7
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
289 _name=$1
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
290 _version=$2
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
291
7
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
292 while read _n _v _r ; do
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
293 if [ ${_name} = ${_n} ] ; then
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
294 if [ ${_version} != ${_v} ] ; then
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
295 return 1
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
296 else
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
297 return 0
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
298 fi
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
299 fi
7
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
300 done <<EOF223
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
301 ${installed_data}
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
302 EOF223
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
303 return 2
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
304 }
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
305
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
306 get_mapping() {
101
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
307 : 'Determine whether a package `_package` is essentially the same as
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
308 another package.
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
309
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
310 Args:
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
311 _package: the new name of the package
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
312
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
313 Returns:
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
314 0 when a package mapping has been found, 1 otherwise
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
315
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
316 Output (Globals):
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
317 mapped_package_name: the name of the package on which `_package` is
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
318 based on
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
319
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
320 This command reads from the mapping database in in file
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
321 `/usr/local/etc/local-bsdtools/package-mapping.conf`.
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
322 Example::
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
323
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
324 #
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
325 # _package mapped_package_name
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
326 #
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
327 fmg-nextcloud-php71 nextcloud-php71
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
328 fmg-nextcloud-twofactor_totp-php71 nextcloud-twofactor_totp-php71
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
329
bf8f0aa3c698 Docu: get_mapping() is documented now
Franz Glasner <fzglas.hg@dom66.de>
parents: 100
diff changeset
330 '
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
331 local _package _n _mapped
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
332
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
333 _package=$1
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
334
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
335 if [ -r "${PACKAGE_MAPPING}" ] ; then
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
336 while read _n _mapped ; do
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
337 if [ "${_n}" = "${_package}" ] ; then
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
338 mapped_package_name="${_mapped}"
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
339 return 0
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
340 fi
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
341 done < ${PACKAGE_MAPPING}
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
342 fi
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
343 mapped_package_name=""
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
344 return 1
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
345 }
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
346
31
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
347 print_title() {
94
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
348 : 'Print the output title line for a package
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
349
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
350 Args:
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
351 _package: the package name
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
352 _repo: the repository name
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
353
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
354 Input (Globals).
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
355 title_printed: a global that determines if the title really needs
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
356 to be printed.
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
357
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
358 If it is an empty string the the title is
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
359 really printed and the variable is set to
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
360 "yes".
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
361
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
362 Output (Globals):
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
363 title_printed: set to "yes" if the title has been printed
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
364
c9fb9e920a32 Docu: documented many functions
Franz Glasner <fzglas.hg@dom66.de>
parents: 93
diff changeset
365 '
31
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
366 local _package _repo
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
367
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
368 _package=$1
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
369 _repo=$2
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
370 if [ -z "${title_printed}" ] ; then
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
371 echo "${_package} (${_repo})"
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
372 title_printed=yes
31
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
373 fi
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
374 }
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
375
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
376
10
f08b39dacb21 Implemented "-A" and "-a" options for printing info for all installed packages and/or with LocalRepo data
Franz Glasner <hg@dom66.de>
parents: 9
diff changeset
377 alldata_flag=""
61
26cf051f6c93 Rename alldata_REPO_flag to alldata_flag_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 60
diff changeset
378 alldata_flag_LocalBSDPorts=""
26cf051f6c93 Rename alldata_REPO_flag to alldata_flag_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 60
diff changeset
379 alldata_flag_LocalRepo=""
34
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
380 short_flag=""
9
6b77068e7ec8 Introduced option handling with getopts: implemented a "v" option (verbose)
Franz Glasner <hg@dom66.de>
parents: 8
diff changeset
381 verbose_flag=""
6b77068e7ec8 Introduced option handling with getopts: implemented a "v" option (verbose)
Franz Glasner <hg@dom66.de>
parents: 8
diff changeset
382
81
124faa20ae80 Implemented a "-V" global option to print the program's name and version number to stdout
Franz Glasner <fzglas.hg@dom66.de>
parents: 79
diff changeset
383 while getopts "VAasv" _opt ; do
10
f08b39dacb21 Implemented "-A" and "-a" options for printing info for all installed packages and/or with LocalRepo data
Franz Glasner <hg@dom66.de>
parents: 9
diff changeset
384 case ${_opt} in
81
124faa20ae80 Implemented a "-V" global option to print the program's name and version number to stdout
Franz Glasner <fzglas.hg@dom66.de>
parents: 79
diff changeset
385 V)
130
54de2955bfa9 Put @@VERSION@@ and @@HGREVISION@@ in single quotes
Franz Glasner <fzglas.hg@dom66.de>
parents: 128
diff changeset
386 echo 'check-ports v${VERSION} (rv:@@HGREVISION@@)'
81
124faa20ae80 Implemented a "-V" global option to print the program's name and version number to stdout
Franz Glasner <fzglas.hg@dom66.de>
parents: 79
diff changeset
387 exit 0
124faa20ae80 Implemented a "-V" global option to print the program's name and version number to stdout
Franz Glasner <fzglas.hg@dom66.de>
parents: 79
diff changeset
388 ;;
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
389 A)
135
8152028661c2 Comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 131
diff changeset
390 # Print for every package the status of all repositories
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
391 alldata_flag=1
61
26cf051f6c93 Rename alldata_REPO_flag to alldata_flag_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 60
diff changeset
392 alldata_flag_LocalBSDPorts=1
26cf051f6c93 Rename alldata_REPO_flag to alldata_flag_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 60
diff changeset
393 alldata_flag_LocalRepo=1
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
394 ;;
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
395 a)
135
8152028661c2 Comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 131
diff changeset
396 # Print the data of all repos that have the package
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
397 alldata_flag=1
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
398 ;;
34
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
399 s)
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
400 # "short" output: if installed from FreeBSD repo: don't
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
401 # report if only the index is newer
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
402 short_flag=1
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
403 ;;
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
404 v)
135
8152028661c2 Comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 131
diff changeset
405 #
8152028661c2 Comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 131
diff changeset
406 # Print all titles and repo of every installed package always.
8152028661c2 Comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 131
diff changeset
407 # The output of the repo status nevertheless depends on the
8152028661c2 Comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 131
diff changeset
408 # other flag settings.
8152028661c2 Comments
Franz Glasner <fzglas.hg@dom66.de>
parents: 131
diff changeset
409 #
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
410 verbose_flag=1
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
411 ;;
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
412 \?)
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
413 exit 2
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
414 ;;
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
415 *)
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
416 echo "option handling failed" >&2
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
417 exit 2
42
ace5d471abbd Code style
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
418 ;;
9
6b77068e7ec8 Introduced option handling with getopts: implemented a "v" option (verbose)
Franz Glasner <hg@dom66.de>
parents: 8
diff changeset
419 esac
12
fd56d1b7d822 Use extra flag for controlling the printing of the package title
Franz Glasner <hg@dom66.de>
parents: 11
diff changeset
420 done
9
6b77068e7ec8 Introduced option handling with getopts: implemented a "v" option (verbose)
Franz Glasner <hg@dom66.de>
parents: 8
diff changeset
421
34
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
422 if [ -n "${short_flag}" -a -n "${alldata_flag}" ]; then
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
423 echo "the -s option cannot be combined with -A or -a" >&2
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
424 exit 2
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
425 fi
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
426
7
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
427 installed_packages=$(pkg query '%n')
4
ba95569a12b1 Use standars word separators again (i.e. don't change IFS)
Franz Glasner <hg@dom66.de>
parents: 3
diff changeset
428 installed_data="$(pkg query '%n %v %R' $installed_packages)"
1
7c9ddbea00c8 Work on the check script
Franz Glasner <hg@dom66.de>
parents: 0
diff changeset
429
5
53c3500894d2 Begin a new implementation algorithm
Franz Glasner <hg@dom66.de>
parents: 4
diff changeset
430 get_remote_repo_versions ${LOCAL_REPO}
23
242055572964 FIX: Variable naming
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 22
diff changeset
431 get_remote_repo_versions ${LOCALBSDPORTS_REPO}
5
53c3500894d2 Begin a new implementation algorithm
Franz Glasner <hg@dom66.de>
parents: 4
diff changeset
432 get_remote_repo_versions ${FREEBSD_REPO}
53c3500894d2 Begin a new implementation algorithm
Franz Glasner <hg@dom66.de>
parents: 4
diff changeset
433 get_local_index_versions
6
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
434
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
435 while read lfqp llabel ldescr ; do
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
436 _installed_name=${lfqp%-*}
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
437 _installed_version=${lfqp##*-}
31
abe1659ff3c1 Refactor: a "print_title()" function which prints the title line (package and repo) if its not yet printed
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
438 title_printed=""
56
ad454e403e24 Rename function: has now a better name
Franz Glasner <fzglas.hg@dom66.de>
parents: 55
diff changeset
439 get_repo_for_installed_package ${_installed_name}
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
440 get_mapping ${_installed_name}
9
6b77068e7ec8 Introduced option handling with getopts: implemented a "v" option (verbose)
Franz Glasner <hg@dom66.de>
parents: 8
diff changeset
441 if [ -n "${verbose_flag}" ] ; then
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
442 print_title "${lfqp}" "${repository}"
9
6b77068e7ec8 Introduced option handling with getopts: implemented a "v" option (verbose)
Franz Glasner <hg@dom66.de>
parents: 8
diff changeset
443 fi
7
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
444 if ! assert_local_version ${_installed_name} ${_installed_version} ; then
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
445 echo "Assertion failed: $lfqp ${_installed_name} ${_installed_version} ${llabel}" >&2
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
446 exit 1
7
2712d249c371 Assert that the installed version number we get from "pkg query" is the same as the version in "pkg version"
Franz Glasner <hg@dom66.de>
parents: 6
diff changeset
447 fi
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
448 get_remote_repo_data ${LOCAL_REPO} ${_installed_name}
23
242055572964 FIX: Variable naming
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 22
diff changeset
449 get_remote_repo_data ${LOCALBSDPORTS_REPO} ${_installed_name}
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
450 get_remote_repo_data ${FREEBSD_REPO} ${_installed_name}
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
451 _print_detail=""
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
452 if [ -n "${mapped_package_name}" ] ; then
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
453 _print_detail=1
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
454 fi
137
dbbb04c46d97 Remove unneeded round brackets (parentheses)
Franz Glasner <fzglas.hg@dom66.de>
parents: 136
diff changeset
455 if [ -n "${alldata_flag}" ]; then
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
456 _print_detail=1
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
457 else
34
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
458 if [ -n "${short_flag}" ]; then
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
459 #
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
460 # NOTE: -s and -A/-a are incompatible: so "alldata_XXX" needs not
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
461 # to be checked!
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
462 #
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
463 case "${repository}" in
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
464 "${FREEBSD_REPO}")
58
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
465 if [ \( "${llabel}" != '<' -a "${llabel}" != '=' \) -o "${remote_label_FreeBSD}" != '=' -o "${remote_label_LocalRepo}" != '?' -o "${remote_label_LocalBSDPorts}" != '?' ]; then
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
466 _print_detail=1
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
467 fi
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
468 ;;
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
469 "${LOCAL_REPO}")
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
470 _print_detail=1
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
471 ;;
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
472 "${LOCALBSDPORTS_REPO}")
58
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
473 if [ "${llabel}" != '=' -o "${remote_label_FreeBSD}" != '>' -o "${remote_label_LocalRepo}" != '?' -o "${remote_label_LocalBSDPorts}" = '?' -o "${remote_label_LocalBSDPorts}" = '<' ]; then
50
f4352f7b5c86 When running in "-s"-mode: extra intelligence when the repo is LocalBSDPorts
Franz Glasner <hg@dom66.de>
parents: 49
diff changeset
474 _print_detail=1
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
475 fi
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
476 ;;
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
477 "${PORTS_DIRECT_INSTALLED_REPO}")
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
478 _print_detail=1
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
479 ;;
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
480 *)
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
481 echo "ERROR: unhandled repository: ${repository}" >&2
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
482 exit 1
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
483 ;;
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
484 esac
34
36a10ff20355 Implemented a -s (short) flag that filters output if the repo is FreeBSD and only the local portstree INDEX has a newer version
Franz Glasner <hg@dom66.de>
parents: 33
diff changeset
485 else
58
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
486 if [ \( \( "${llabel}" != '?' -a "${llabel}" != '=' \) -o \( "${remote_label_FreeBSD}" != '?' -a "${remote_label_FreeBSD}" != '=' \) -o \( "${remote_label_LocalBSDPorts}" != '?' -a "${remote_label_LocalBSDPorts}" != '=' \) -o \( "${remote_label_LocalRepo}" != '?' -a "${remote_label_LocalRepo}" != '=' \) \) -o \( "${repository}" = "${PORTS_DIRECT_INSTALLED_REPO}" \) ]; then
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
487 _print_detail=1
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
488 fi
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
489 fi
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
490 fi
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
491 if [ -n "${_print_detail}" ]; then
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
492 print_title "${lfqp}" "${repository}"
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
493 echo " INDEX : ${llabel} ${ldescr}"
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
494 echo " FreeBSD : ${remote_label_FreeBSD} ${remote_descr_FreeBSD}"
61
26cf051f6c93 Rename alldata_REPO_flag to alldata_flag_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 60
diff changeset
495 if [ \( -n "${alldata_flag_LocalBSDPorts}" \) -o \( "${remote_label_LocalBSDPorts}" != '?' \) ] ; then
58
28800573d702 Rename variables: the repo name in the "label" and "descr" variables at the end of the variable name
Franz Glasner <fzglas.hg@dom66.de>
parents: 56
diff changeset
496 echo " LocalBSDPorts: ${remote_label_LocalBSDPorts} ${remote_descr_LocalBSDPorts}"
51
9e131a355fbe Refactor: new -s (short-mode) implementation and new loop architecture
Franz Glasner <hg@dom66.de>
parents: 50
diff changeset
497 fi
61
26cf051f6c93 Rename alldata_REPO_flag to alldata_flag_REPO
Franz Glasner <fzglas.hg@dom66.de>
parents: 60
diff changeset
498 if [ \( -n "${alldata_flag_LocalRepo}" \) -o \( "${remote_label_LocalRepo}" != '?' \) ] ; then
62
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
499 echo " LocalRepo : ${remote_label_LocalRepo} ${remote_descr_LocalRepo}"
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
500 fi
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
501 if [ -n "${mapped_package_name}" ] ; then
6c8ee1ef9ef2 First parts of checks of forked and/or renamed packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 61
diff changeset
502 echo " ---> ${mapped_package_name}"
63
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
503 get_immediate_index_version "${mapped_package_name}"
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
504 get_immediate_remote_repo_version ${LOCAL_REPO} ${mapped_package_name}
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
505 get_immediate_remote_repo_version ${LOCALBSDPORTS_REPO} ${mapped_package_name}
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
506 get_immediate_remote_repo_version ${FREEBSD_REPO} ${mapped_package_name}
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
507 echo " INDEX : ${immediate_index_version}"
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
508 echo " FreeBSD : ${immediate_remote_repo_version_FreeBSD}"
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
509 echo " LocalBSDPorts: ${immediate_remote_repo_version_LocalBSDPorts}"
0ae7697702b3 Handling of mapped packages is basically implemented.
Franz Glasner <hg@dom66.de>
parents: 62
diff changeset
510 echo " LocalRepo : ${immediate_remote_repo_version_LocalRepo}"
32
37f003c9f4e2 untabify and comments for options
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
511 fi
8
208545b92d43 First working version: real useful output of packages differing from any repo
Franz Glasner <hg@dom66.de>
parents: 7
diff changeset
512 fi
6
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
513 done <<EOF856661111299999
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
514 ${local_index_versions}
0d9a499e89e9 More tests with regard to the new algorithm
Franz Glasner <hg@dom66.de>
parents: 5
diff changeset
515 EOF856661111299999