comparison bin/fpkg @ 95:e8c422379abb

Do package checks only for jails with compatible (i.e. "equal") userland versions with the host
author Franz Glasner <fzglas.hg@dom66.de>
date Thu, 12 Sep 2019 09:34:02 +0200
parents c95726f83f84
children 252223b1cff6
comparison
equal deleted inserted replaced
94:c9fb9e920a32 95:e8c422379abb
66 66
67 : ${AUDIT_FLAGS:=-Fr} 67 : ${AUDIT_FLAGS:=-Fr}
68 : ${UPDATE_FLAGS:=} 68 : ${UPDATE_FLAGS:=}
69 : ${UPGRADE_FLAGS:=} 69 : ${UPGRADE_FLAGS:=}
70 : ${SIGN:='===> '} 70 : ${SIGN:='===> '}
71 : ${SKIPSIGN:='-----> '}
72
73
74 has_same_userland_version() {
75 : 'Check whether the jail `_jail` has the same FreeBSD userland version
76 as the host the the current process runs.
77
78 Args:
79 _jail: the running jail to check for
80
81 Returns:
82 0 if the userland versions match, 1 otherwise
83
84 '
85 local _jail _host_version _jail_version
86
87 _jail="$1"
88
89 _host_version=$(/bin/freebsd-version -u) || exit 1
90 _jail_version=$(jexec -l "${_jail}" /bin/freebsd-version -u) || exit 1
91 if [ "${_host_version%%-*}" = "${_jail_version%%-*}" ]; then
92 return 0
93 fi
94 return 1
95 }
71 96
72 97
73 command_audit() { 98 command_audit() {
74 : 'Do a local `pkg audit -Fr` and also for all running jails 99 : 'Do a local `pkg audit -Fr` and also for all running jails
75 100
77 echo "${SIGN}LOCALHOST:" 102 echo "${SIGN}LOCALHOST:"
78 pkg audit ${AUDIT_FLAGS} 103 pkg audit ${AUDIT_FLAGS}
79 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do 104 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
80 echo "" 105 echo ""
81 echo "${SIGN}JAIL: ${_j}" 106 echo "${SIGN}JAIL: ${_j}"
82 pkg -j "${_j}" audit ${AUDIT_FLAGS} 107 if has_same_userland_version "${_j}"; then
108 pkg -j "${_j}" audit ${AUDIT_FLAGS}
109 else
110 echo "${SKIPSIGN}SKIPPED because of different userland"
111 fi
83 done 112 done
84 } 113 }
85 114
86 115
87 command_update() { 116 command_update() {
91 echo "${SIGN}HOST:" 120 echo "${SIGN}HOST:"
92 pkg update ${UPDATE_FLAGS} 121 pkg update ${UPDATE_FLAGS}
93 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do 122 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
94 echo "" 123 echo ""
95 echo "${SIGN}JAIL: ${_j}" 124 echo "${SIGN}JAIL: ${_j}"
96 pkg -j "${_j}" update ${UPDATE_FLAGS} 125 if has_same_userland_version "${_j}"; then
126 pkg -j "${_j}" update ${UPDATE_FLAGS}
127 else
128 echo "${SKIPSIGN}SKIPPED because of different userland"
129 fi
97 done 130 done
98 } 131 }
99 132
100 133
101 command_upgrade() { 134 command_upgrade() {
105 echo "${SIGN}HOST:" 138 echo "${SIGN}HOST:"
106 pkg upgrade ${UPGRADE_FLAGS} 139 pkg upgrade ${UPGRADE_FLAGS}
107 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do 140 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
108 echo "" 141 echo ""
109 echo "${SIGN}JAIL: ${_j}" 142 echo "${SIGN}JAIL: ${_j}"
110 pkg -j "${_j}" upgrade ${UPGRADE_FLAGS} 143 if has_same_userland_version "${_j}"; then
144 pkg -j "${_j}" upgrade ${UPGRADE_FLAGS}
145 else
146 echo "${SKIPSIGN}SKIPPED because of different userland"
147 fi
111 done 148 done
112 } 149 }
113 150
114 151
115 command_upgrade_check() { 152 command_upgrade_check() {
119 echo "${SIGN}HOST:" 156 echo "${SIGN}HOST:"
120 pkg upgrade -n ${UPGRADE_FLAGS} 157 pkg upgrade -n ${UPGRADE_FLAGS}
121 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do 158 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
122 echo "" 159 echo ""
123 echo "${SIGN}JAIL: ${_j}" 160 echo "${SIGN}JAIL: ${_j}"
124 pkg -j "${_j}" upgrade -n ${UPGRADE_FLAGS} 161 if has_same_userland_version "${_j}"; then
162 pkg -j "${_j}" upgrade -n ${UPGRADE_FLAGS}
163 else
164 echo "${SKIPSIGN}SKIPPED because of different userland"
165 fi
125 done 166 done
126 } 167 }
127 168
128 169
129 # 170 #