issue1440.sh
1 #! /usr/bin/env atf-sh 2 3 . $(atf_get_srcdir)/test_environment.sh 4 5 6 # https://github.com/freebsd/pkg/issues/1440 7 #pkgA 8 # - pkgB 9 # - pkgC 10 # - pkgD 11 #1. Two repos (repoA and repoB) with same set of packages. pkgA for repoA and repoB have different options set. 12 # repoB has prio 100, so all packages must be prefered from this one. 13 #2. On upgrade pkg wants to reinstall pkgA due options changed from repoA which is wrong. 14 15 tests_init \ 16 issue1440 17 18 issue1440_body() { 19 20 touch pkgA.file 21 touch pkgB.file 22 touch pkgC.file 23 touch pkgD.file 24 25 cat << EOF > pkgA.ucl 26 name: pkgA 27 origin: misc/pkgA 28 version: "1.0" 29 maintainer: test 30 categories: [test] 31 comment: a test 32 www: http://test 33 prefix: /usr/local 34 desc: <<EOD 35 Yet another test 36 EOD 37 options: { 38 APNG: "on", 39 PNGTEST: "on" 40 } 41 deps: { 42 pkgB: { 43 origin: "misc/pkgB", 44 version: "1.0" 45 } 46 } 47 files: { 48 ${TMPDIR}/pkgA.file: "", 49 } 50 EOF 51 52 cat << EOF > pkgB.ucl 53 name: pkgB 54 origin: misc/pkgB 55 version: "1.0" 56 maintainer: test 57 categories: [test] 58 comment: a test 59 www: http://test 60 prefix: /usr/local 61 desc: <<EOD 62 Yet another test 63 EOD 64 deps: { 65 pkgC: { 66 origin: "misc/pkgC", 67 version: "1.0" 68 } 69 } 70 71 files: { 72 ${TMPDIR}/pkgB.file: "", 73 } 74 EOF 75 76 cat << EOF > pkgC.ucl 77 name: pkgC 78 origin: misc/pkgC 79 version: "1.0" 80 maintainer: test 81 categories: [test] 82 comment: a test 83 www: http://test 84 prefix: /usr/local 85 desc: <<EOD 86 Yet another test 87 EOD 88 deps: { 89 pkgD: { 90 origin: "misc/pkgD", 91 version: "1.0" 92 } 93 } 94 files: { 95 ${TMPDIR}/pkgC.file: "", 96 } 97 EOF 98 99 100 cat << EOF > pkgD.ucl 101 name: pkgD 102 origin: misc/pkgD 103 version: "1.0" 104 maintainer: test 105 categories: [test] 106 comment: a test 107 www: http://test 108 prefix: /usr/local 109 desc: <<EOD 110 Yet another test 111 EOD 112 files: { 113 ${TMPDIR}/pkgD.file: "", 114 } 115 EOF 116 117 mkdir reposconf 118 cat << EOF > reposconf/repos.conf 119 repoA: { 120 url: file://${TMPDIR}/repoA, 121 enabled: true 122 } 123 repoB: { 124 url: file://${TMPDIR}/repoB, 125 priority: 100, 126 enabled: true 127 } 128 129 EOF 130 131 for p in pkgA pkgB pkgC pkgD; do 132 atf_check \ 133 -o ignore \ 134 -e empty \ 135 -s exit:0 \ 136 pkg create -o ${TMPDIR}/repoA -M ./${p}.ucl 137 done 138 139 atf_check \ 140 -o inline:"Creating repository in ${TMPDIR}/repoA: done\nPacking files for repository: done\n" \ 141 -e empty \ 142 -s exit:0 \ 143 pkg repo -o ${TMPDIR}/repoA ${TMPDIR}/repoA 144 145 cat << EOF > pkgA.ucl 146 name: pkgA 147 origin: misc/pkgA 148 version: "1.0" 149 maintainer: test 150 categories: [test] 151 comment: a test 152 www: http://test 153 prefix: /usr/local 154 desc: <<EOD 155 Yet another test 156 EOD 157 options: { 158 APNG: "off", 159 PNGTEST: "on" 160 } 161 deps: { 162 pkgB: { 163 origin: "misc/pkgB", 164 version: "1.0" 165 } 166 } 167 files: { 168 ${TMPDIR}/pkgA.file: "", 169 } 170 EOF 171 172 for p in pkgA pkgB pkgC pkgD; do 173 atf_check \ 174 -o ignore \ 175 -e empty \ 176 -s exit:0 \ 177 pkg create -o ${TMPDIR}/repoB -M ./${p}.ucl 178 done 179 180 181 atf_check \ 182 -o inline:"Creating repository in ${TMPDIR}/repoB: done\nPacking files for repository: done\n" \ 183 -e empty \ 184 -s exit:0 \ 185 pkg repo -o ${TMPDIR}/repoB ${TMPDIR}/repoB 186 187 188 189 OUTPUT_CASE1="Updating repoA repository catalogue... 190 ${JAILED}Fetching meta.conf: done 191 ${JAILED}Fetching data: done 192 Processing entries: done 193 repoA repository update completed. 4 packages processed. 194 Updating repoB repository catalogue... 195 ${JAILED}Fetching meta.conf: done 196 ${JAILED}Fetching data: done 197 Processing entries: done 198 repoB repository update completed. 4 packages processed. 199 All repositories are up to date. 200 Checking integrity... done (0 conflicting) 201 The following 4 package(s) will be affected (of 0 checked): 202 203 New packages to be INSTALLED: 204 pkgA: 1.0 [repoB] 205 pkgB: 1.0 [repoB] 206 pkgC: 1.0 [repoB] 207 pkgD: 1.0 [repoB] 208 209 Number of packages to be installed: 4 210 ${JAILED}[1/4] Installing pkgD-1.0... 211 ${JAILED}[1/4] Extracting pkgD-1.0: done 212 ${JAILED}[2/4] Installing pkgC-1.0... 213 ${JAILED}[2/4] Extracting pkgC-1.0: done 214 ${JAILED}[3/4] Installing pkgB-1.0... 215 ${JAILED}[3/4] Extracting pkgB-1.0: done 216 ${JAILED}[4/4] Installing pkgA-1.0... 217 ${JAILED}[4/4] Extracting pkgA-1.0: done 218 " 219 220 atf_check \ 221 -o inline:"${OUTPUT_CASE1}" \ 222 -s exit:0 \ 223 pkg -o REPOS_DIR="${TMPDIR}/reposconf" -o PKG_CACHEDIR="${TMPDIR}" install -y pkgA 224 225 226 227 OUTPUT_CASE2="Updating repoA repository catalogue... 228 repoA repository is up to date. 229 Updating repoB repository catalogue... 230 repoB repository is up to date. 231 All repositories are up to date. 232 Checking for upgrades (1 candidates): done 233 Processing candidates (1 candidates): done 234 Checking integrity... done (0 conflicting) 235 Your packages are up to date. 236 " 237 atf_check \ 238 -o inline:"${OUTPUT_CASE2}" \ 239 -e empty \ 240 -s exit:0 \ 241 pkg -o REPOS_DIR="${TMPDIR}/reposconf" -o PKG_CACHEDIR="${TMPDIR}" upgrade -y 242 243 }