This repository has been archived by the owner on Oct 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 60
/
autogen.sh
executable file
·116 lines (99 loc) · 3.39 KB
/
autogen.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/bin/bash
set -e
lark_version=1.1.9
while [[ "$#" -gt 0 ]]; do
case $1 in
--clean)
clean=yes
;;
--no-lark)
lark_no_install=yes
;;
--rm-lark)
lark_shovel=yes
;;
*)
help=yes
;;
esac
shift
done
if [[ $help ]]; then
cat <<EOF
Usage:
$ ./autogen.sh [OPTIONS]
Remove and rebuild Autotools files (./configure and friends). This script is
intended for developers; end users typically do not need it.
Options:
--clean remove only; do not rebuild
--help print this help and exit
--no-lark don't install bundled Lark (minimal support; see docs)
--rm-lark delete Lark (and then reinstall if not --clean or --no-lark)
EOF
exit 0
fi
cat <<EOF
Removing and (maybe) rebuilding "configure" and friends.
NOTE 1: This script is intended for developers. End users typically do not
need it.
NOTE 2: Incomprehensible error messages about undefined macros can appear
below. This is usually caused by missing Autotools components.
See the install instructions for details on both.
EOF
cd "$(dirname "$0")"
set -x
# Remove all derived files if we can. Note that if you enabled maintainer mode
# in configure, this will run configure before cleaning.
[[ -f Makefile ]] && make maintainer-clean
# “maintainer-clean” target doesn't remove configure and its dependencies,
# apparently by design [1], so delete those manually.
#
# [1]: https://www.gnu.org/prep/standards/html_node/Standard-Targets.html
rm -Rf Makefile.in \
./*/Makefile.in \
aclocal.m4 \
bin/config.h.in \
build-aux \
configure
# Remove Lark if requested or the installed version does not match.
lark_found=$( shopt -s nullglob; \
echo lib/lark*.dist-info | sed -E 's/^.*-([0-9.]+)\..*$/\1/' )
if [[ $lark_found && $lark_found != "$lark_version" ]]; then
lark_shovel=yes
fi
if [[ $lark_shovel ]]; then
rm -Rf lib/lark lib/lark-stubs lib/lark*.dist-info lib/lark*.egg-info
fi
# Create configure and friends.
if [[ -z $clean ]]; then
autoreconf --force --install -Wall -Werror
if [[ ! -e lib/lark && ! $lark_no_install ]]; then
# Install Lark only if its directory doesn’t exist, to avoid excess
# re-downloads.
pip3 --isolated install \
--target=lib --ignore-installed "lark==${lark_version}"
# Lark doesn’t honor --no-compile, so remove the .pyc files manually.
rm lib/lark/__pycache__/*.pyc
rmdir lib/lark/__pycache__
rm lib/lark/*/__pycache__/*.pyc
rmdir lib/lark/*/__pycache__
# Also remove Lark’s installer stuff.
rm lib/lark/__pyinstaller/*.py
rmdir lib/lark/__pyinstaller
# Some versions of pip install this file, while others don’t [1]. We
# don’t care about it, so remove it to avoid Make errors if it’s
# listed in Makefile.am and then an older pip is used to build.
# [1]: https://github.com/pypa/pip/pull/8026
rm -f lib/lark-${lark_version}.dist-info/REQUESTED
fi
if [[ -e lib/lark \
&& ! -e lib/lark-${lark_version}.dist-info/INSTALLER ]]; then
set +x
echo 'error: Embedded Lark is broken.' 2>&1
echo 'hint: Install "wheel" and then re-run with "--rm-lark"?' 2>&1
exit 1
fi
set +x
echo
echo 'Done. Now you can "./configure".'
fi