19
19
# Use the newest version we find
20
20
if [ -z " $PYTHON " ]; then
21
21
for i in 12 11 10; do
22
- command -v " python3.$i " && PYTHON=" python3.$i " && break
22
+ command -v " python3.$i " && PYTHON=" python3.$i " & > /dev/null & & break
23
23
done
24
24
fi
25
25
if [ -z " $PYTHON " ]; then
@@ -35,166 +35,63 @@ Linux)
35
35
. /etc/os-release
36
36
OS=$( echo $NAME | tr -d ' ' )
37
37
fi
38
+ # rpm/dnf is the default, to reduce repetition in the case statement
39
+ has_pkg=" rpm --whatprovides"
40
+ install_pkg=" sudo dnf install -y"
38
41
case " $OS " in
39
42
Ubuntu|Debian|LinuxMint)
40
43
deps=(qemu-utils python3-dev libssl-dev python3-pip python3-wheel $PYTHON -venv libev-dev libvirt-dev libffi-dev libyaml-dev)
41
- for package in ${deps[@]} ; do
42
- if [ " $( dpkg --status -- $package | sed -n ' s/^Status: //p' ) " != " install ok installed" ]; then
43
- # add a space after old values
44
- missing=" ${missing: +$missing } $package "
45
- fi
46
- done
47
- if [ -n " $missing " ]; then
48
- echo " $0 : missing required packages:" 1>&2
49
- echo " $missing "
50
- if [ " $install " = true ]; then
51
- echo " Updating metadata..."
52
- sudo apt-get update
53
- echo " Installing missing packages..."
54
- sudo apt-get -y install $missing
55
- else
56
- echo " Please install missing packages or run './bootstrap install' if you have sudo"
57
- echo " sudo apt-get -y install $missing "
58
- exit 1
59
- fi
60
- fi
44
+ has_pkg=" dpkg -C"
45
+ install_pkg=" sudo apt install -y"
61
46
;;
62
47
RedHatEnterpriseWorkstation|RedHatEnterpriseServer|RedHatEnterprise|CentOS)
63
48
deps=(python39-pip python39-devel mariadb-devel libev-devel libvirt-devel libffi-devel)
64
- for package in ${deps[@]} ; do
65
- if ! rpm -q --whatprovides $package ; then
66
- missing=" ${missing: +$missing } $package "
67
- fi
68
- done
69
- if [ -n " $missing " ]; then
70
- echo " $0 : missing required packages:" 1>&2
71
- echo " $missing "
72
- if [ " $install " = true ]; then
73
- echo " Installing missing packages..."
74
- sudo yum -y install $missing
75
- else
76
- echo " Please install missing packages or run './bootstrap install' if you have sudo"
77
- echo " sudo yum -y install $missing "
78
- exit 1
79
- fi
80
- fi
81
49
;;
82
50
CentOSStream)
83
- PYTHON=python3.12
51
+ PYTHON=python3.12
84
52
deps=($PYTHON -pip $PYTHON -devel)
85
- for package in ${deps[@]} ; do
86
- if ! rpm -q --whatprovides $package ; then
87
- missing=" ${missing: +$missing } $package "
88
- fi
89
- done
90
- if [ -n " $missing " ]; then
91
- echo " $0 : missing required packages:" 1>&2
92
- echo " $missing "
93
- if [ " $install " = true ]; then
94
- echo " Installing missing packages..."
95
- sudo yum -y install $missing
96
- else
97
- echo " Please install missing packages or run './bootstrap install' if you have sudo"
98
- echo " sudo yum -y install $missing "
99
- exit 1
100
- fi
101
- fi
102
53
;;
103
54
AlmaLinux|RockyLinux)
104
- PYTHON=python3.12
55
+ PYTHON=python3.12
105
56
deps=($PYTHON -pip $PYTHON -devel libev-devel libvirt-devel libffi-devel)
106
- for package in ${deps[@]} ; do
107
- if ! rpm -q --whatprovides $package ; then
108
- missing=" ${missing: +$missing } $package "
109
- fi
110
- done
111
- if [ -n " $missing " ]; then
112
- echo " $0 : missing required packages:" 1>&2
113
- echo " $missing "
114
- if [ " $install " = true ]; then
115
- echo " Installing missing packages..."
116
- sudo yum -y install $missing
117
- else
118
- echo " Please install missing packages or run './bootstrap install' if you have sudo"
119
- echo " sudo yum -y install $missing "
120
- exit 1
121
- fi
122
- fi
123
57
;;
124
58
Fedora|FedoraLinux)
125
- PYTHON=python3.12
126
- deps=($PYTHON -pip $PYTHON -devel)
59
+ PYTHON=python3.12
127
60
deps=($PYTHON -pip $PYTHON -devel libev-devel libvirt-devel libffi-devel)
128
- for package in ${deps[@]} ; do
129
- if ! rpm -q --whatprovides $package ; then
130
- missing=" ${missing: +$missing } $package "
131
- fi
132
- done
133
- fedora_release=$( lsb_release -rs)
134
- package_manager=dnf
135
- if [ $fedora_release -lt 23 ]; then
136
- package_manager=yum
137
- fi
138
- if [ -n " $missing " ]; then
139
- echo " $0 : missing required packages:" 1>&2
140
- echo " $missing "
141
- if [ " $install " = true ]; then
142
- echo " Installing missing packages..."
143
- sudo $package_manager -y install $missing
144
- else
145
- echo " Please install missing packages or run './bootstrap install' if you have sudo"
146
- echo " sudo $package_manager -y install $missing "
147
- exit 1
148
- fi
149
- fi
150
61
;;
151
62
" openSUSE project" |" SUSE LINUX" |" openSUSE" |" openSUSELeap" |" openSUSETumbleweed" )
152
- PYTHON=python3.12
153
- deps=(python312-pip python312-devel python312 libev-devel libvirt-devel libffi-devel)
154
- for package in ${deps[@]} ; do
155
- if ! rpm -q --whatprovides $package ; then
156
- if [ " $( rpm -q --whatprovides $package ) " == " no package provides $package " ]; then
157
- missing=" ${missing: +$missing } $package "
158
- fi
159
- fi
160
- done
161
- if [ -n " $missing " ]; then
162
- echo " $0 : missing required packages, please install them:" 1>&2
163
- echo " sudo zypper install $missing "
164
- exit 1
165
- fi
166
- ;;
167
- * )
168
- echo " This script does not support your Linux distribution yet. Patches encouraged!"
169
- exit 1
63
+ PYTHON=python3.12
64
+ deps=(python312-pip python312-devel python312 libev-devel libvirt-devel libffi-devel)
65
+ install_pkg=" sudo zypper install"
170
66
;;
171
67
esac
172
68
;;
69
+
173
70
Darwin)
174
- if ! brew --version & > /dev/null; then
175
- echo " You need Homebrew: http://brew.sh/"
176
- exit 1
177
- fi
178
- for keg in python libvirt libev libffi; do
179
- if brew list $keg > /dev/null 2>&1 ; then
180
- echo " Found $keg "
181
- else
182
- if [ " $install " = true ]; then
183
- brew install $keg
184
- else
185
- missing=" ${missing: +$missing } $keg "
186
- echo " Please install missing packages or run './bootstrap install':"
187
- echo " brew install $missing "
188
- exit 1
189
- fi
190
- fi
191
- done
192
- ;;
193
- * )
194
- echo " This script does not support your OS yet. Patches encouraged!"
195
- exit 1
71
+ deps=" python libvirt libev libffi"
72
+ has_pkg=" brew list"
73
+ install_pkg=" brew install"
196
74
;;
197
75
esac
76
+ for package in ${deps[@]} ; do
77
+ if ! $has_pkg $package & > /dev/null; then
78
+ # add a space after old values
79
+ missing=" ${missing: +$missing } $package "
80
+ echo missing=${missing}
81
+ fi
82
+ done
83
+ if [ -n " $missing " ]; then
84
+ echo " $0 : missing required packages:" 1>&2
85
+ echo " $missing "
86
+ if [ " $install " = true ]; then
87
+ echo " Installing missing packages..."
88
+ $install_pkg $missing
89
+ else
90
+ echo " Please install missing packages or run './bootstrap install'"
91
+ echo " $install_pkg $missing "
92
+ exit 1
93
+ fi
94
+ fi
198
95
199
96
PYTHON_BIN=$( command -v $PYTHON )
200
97
if [ -z $PYTHON_BIN -o ! -e $PYTHON_BIN -o ! -x $PYTHON_BIN ]; then
0 commit comments