sqlite_authors: add missing expansion
[sqlite-export.git] / build
blob61215366c3de37888800f4e856d997e090daae4f
1 #!/bin/sh
3 set -e
5 [ "$1" != "-h" ] || {
6 echo "Usage: build [fossil configure options]"
7 echo " e.g.: ./build CPPFLAGS=-DFOSSIL_OMIT_DELTA_CKSUM_TEST --with-openssl=/usr/local"
8 exit 0
11 mydir="$(cd "$(dirname "$0")" && pwd)"
12 cd "$mydir"
14 CURLOPT="--fail --location --connect-timeout 15 --speed-limit 10240"
15 CURLOPT0="$CURLOPT -H 'User-Agent:'"
17 getmd5()
19 openssl dgst -md5 < "$1" 2>/dev/null | sed -e 's/^[^ ][^ ]* //'
22 getsha1()
24 openssl dgst -sha1 < "$1" 2>/dev/null | sed -e 's/^[^ ][^ ]* //'
27 FS210='https://fossil-scm.org/index.html/uv/fossil-src-2.1.tar.gz'
28 FS210_O='fossil-src-2.1.tar.gz'
29 FS210_D='fossil-2.1'
30 FS210_MD5='9f32b23cecb092d42cdf11bf003ebf8d'
31 FS210_SHA1='7c7387efb4c0016de6e836dba6f7842246825678'
33 GEX='https://repo.or.cz/git-export-filter.git'
34 GEX_D='git-export-filter.git'
36 for util in curl openssl sed tar patch make git; do
37 if ! command -v $util > /dev/null; then
38 echo Missing $util >&2
39 exit 1
41 done
43 check_hashes() {
44 checkmd5="$(getmd5 "$1")"
45 checksha1="$(getsha1 "$1")"
46 bad=
47 if [ "$FS210_MD5" != "$checkmd5" ]; then
48 bad=1
49 echo "Wrong md5 checksum $checkmd5 (expected $FS210_MD5) for $1" >&2
51 if [ "$FS210_SHA1" != "$checksha1" ]; then
52 bad=1
53 echo "Wrong sha1 checksum $checksha1 (expected $FS210_SHA1) for $1" >&2
55 if [ -n "$bad" ]; then
56 echo "Checksum verifcation failed for $1" >&2
57 return 1
59 return 0
62 if [ -r "archives/$FS210_O" ] && check_hashes "archives/$FS210_O"; then
63 FS210_O="archives/$FS210_O"
64 else
65 if ! [ -r "$FS210_O" ]; then
66 echo "Downloading $FS210 to $FS210_O" >&2
67 eval "curl $CURLOPT0 -o '$FS210_O' '$FS210'"
69 check_hashes "$FS210_O" || exit 1
72 if ! [ -r "$FS210_D/Makefile" ]; then
73 echo "Extracting $FS210_O" >&2
74 rm -rf "$FS210_D"
75 tar -xzf "$FS210_O"
77 if ! [ -r "$FS210_D/Makefile.in" ]; then
78 echo "Failed to extract $FS210_O" >&2
79 exit 1
81 if ! [ -r "$FS210_D/.patched" ]; then
82 echo "Patching $FS210_D" >&2
83 (cd "$FS210_D" && patch -p1 < ../patches/export_c_patch_diff.txt)
84 test $? -eq 0
85 # NOTE: The topo patch makes the result GPL'd
86 (cd "$FS210_D" && patch -p1 < ../patches/export_topo_patch_diff.txt)
87 test $? -eq 0
88 patch -f "$FS210_D/VERSION" < patches/VERSION_patch_diff.txt
89 touch "$FS210_D/.patched"
91 if ! [ -x "$FS210_D/fossil" ]; then
92 echo "Building $FS210_D/fossil" >&2
93 cd "$FS210_D"
94 ./configure "$@"
95 make
96 cd "$mydir"
98 if ! [ -x "$FS210_D/fossil" ]; then
99 echo "Failed to build $FS210_D/fossil" >&2
100 exit 1
103 if ! [ -r "$GEX_D/Makefile" ]; then
104 echo "Cloning $GEX" >&2
105 rm -rf "$GEX_D"
106 git clone "$GEX" "$GEX_D"
108 if ! [ -r "$GEX_D/.git/HEAD" ]; then
109 echo "Failed to clone $GEX" >&2
110 exit 1
112 if ! [ -x "$GEX_D/git-export-filter" ]; then
113 echo "Building $GEX_D/git-export-filter" >&2
114 cd "$GEX_D"
115 make
116 cd "$mydir"
118 if ! [ -x "$GEX_D/git-export-filter" ]; then
119 echo "Failed to build $GEX_D/git-export-filter" >&2
120 exit 1
123 if ! [ -x "./fossil" ]; then
124 rm -f ./fossil
125 ln -s "$FS210_D/fossil" ./fossil
127 if ! [ -x "./git-export-filter" ]; then
128 rm -f ./git-export-filter
129 ln -s "$GEX_D/git-export-filter" ./git-export-filter
132 echo ''
133 ./fossil version
134 ./git-export-filter --version
135 echo ''
137 echo "Ready to run import script" >&2
138 exit 0