Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/tests/frontend/create-parsebin.sh
2065 views
1
#! /usr/bin/env atf-sh
2
3
. $(atf_get_srcdir)/test_environment.sh
4
5
tests_init \
6
create_from_bin
7
8
genmanifest() {
9
local PKG_NAME="$1"
10
shift
11
local PKG_FLATSIZE=0
12
local PKG_FILES=""
13
local PKG_SHA256=""
14
local NL="
15
"
16
local hide_provided="$1"
17
shift
18
19
bin_meta "$1"
20
while [ -n "$1" ]; do
21
local file1="${1%#*}"
22
local file1_base=$(basename ${file1})
23
local file1_size=$(wc -c < ${file1})
24
local file1_sha=$(openssl dgst -sha256 -hex ${file1} | sed -nE 's/.*=[[:space:]]*([[:xdigit:]]+)/\1/p')
25
cp -a ${file1} ${TMPDIR}/${file1_base}
26
27
PKG_FILES="${PKG_FILES}/${file1_base}: {perm: 0644}${NL}"
28
PKG_SHA256="${PKG_SHA256}${NL} /${file1_base} = \"1\$${file1_sha}\";"
29
30
PKG_FLATSIZE=$((${PKG_FLATSIZE}+${file1_size}))
31
shift
32
done
33
34
if [ -n "${hide_provided}" ]; then
35
Xshlibs_provided=""
36
fi
37
38
cat << EOF > ${PKG_NAME}.manifest
39
name: ${PKG_NAME}
40
origin: ${PKG_NAME}
41
version: 1
42
maintainer: test
43
categories: [test]
44
comment: a test
45
www: http://test
46
prefix: /
47
desc: <<EOD
48
Yet another test
49
EOD
50
files: {
51
${PKG_FILES}
52
}
53
EOF
54
55
cat << EOF > ${PKG_NAME}.expected
56
name = "${PKG_NAME}";
57
origin = "${PKG_NAME}";
58
version = "1";
59
comment = "a test";
60
maintainer = "test";
61
www = "http://test";
62
abi = "${XABI}";
63
arch = "${XALTABI}";
64
prefix = "/";
65
flatsize = ${PKG_FLATSIZE};
66
desc = "Yet another test";
67
categories [
68
"test",
69
]
70
EOF
71
if [ -n "${Xshlibs_required}" ]; then
72
echo "shlibs_required [" >> ${PKG_NAME}.expected
73
for i in ${Xshlibs_required}; do
74
echo ${NL}" "\"$i\", >> ${PKG_NAME}.expected
75
done
76
echo "]" >> ${PKG_NAME}.expected
77
fi
78
if [ -n "${Xshlibs_provided}" ]; then
79
echo "shlibs_provided [" >> ${PKG_NAME}.expected
80
for i in ${Xshlibs_provided}; do
81
echo ${NL}" "\"$i\", >> ${PKG_NAME}.expected
82
done
83
echo "]" >> ${PKG_NAME}.expected
84
fi
85
86
if [ -n "${XFreeBSD_version}" ]; then
87
cat << EOF >> ${PKG_NAME}.expected
88
annotations {
89
FreeBSD_version = "${XFreeBSD_version}";
90
}
91
EOF
92
fi
93
94
cat << EOF >> ${PKG_NAME}.expected
95
files {${PKG_SHA256}
96
}
97
EOF
98
}
99
100
do_check() {
101
local PKG_NAME=$1
102
local file1=$(atf_get_srcdir)/$2
103
local hide_provided=$3
104
105
genmanifest ${PKG_NAME} "${hide_provided}" ${file1}
106
107
# cat ${PKG_NAME}.manifest
108
atf_check \
109
-o empty \
110
-e empty \
111
-s exit:0 \
112
pkg -o IGNORE_OSMAJOR=1 -o ABI_FILE=${file1} $hide_provided \
113
create -M ./${PKG_NAME}.manifest -r ${TMPDIR}
114
115
# cat ${PKG_NAME}.expected
116
atf_check \
117
-o file:${PKG_NAME}.expected \
118
-e empty \
119
-s exit:0 \
120
pkg info -R --raw-format=ucl -F ${PKG_NAME}-1.pkg
121
}
122
123
create_from_bin_body() {
124
for bin in \
125
freebsd-aarch64.bin freebsd-amd64.bin freebsd-armv6.bin freebsd-armv7.bin \
126
freebsd-i386.bin freebsd-powerpc.bin freebsd-powerpc64.bin freebsd-powerpc64le.bin \
127
freebsd-riscv64.bin dfly.bin linux.bin \
128
macos.bin macos106.bin macos150.bin \
129
macosfat.bin "macosfat.bin#x86_64" "macosfat.bin#aarch64" \
130
macosfatlib.bin "macosfatlib.bin#x86_64" "macosfatlib.bin#aarch64"
131
do
132
do_check testbin $bin
133
do_check testbin $bin "-o SHLIB_PROVIDE_PATHS_NATIVE=/does/not/exist"
134
do_check testbin $bin "-o SHLIB_PROVIDE_IGNORE_GLOB=*"
135
done
136
}
137
138