Skip to content

Commit ae27696

Browse files
committed
Update system packages according to Sage recommendations
1 parent 0ee23b4 commit ae27696

File tree

1 file changed

+204
-69
lines changed

1 file changed

+204
-69
lines changed

contrib/vm/container_manager.py

+204-69
Original file line numberDiff line numberDiff line change
@@ -53,70 +53,208 @@
5353
]
5454

5555
# Packages to be installed in the base container
56-
packages = """
57-
automake
58-
bison
59-
build-essential
60-
dvipng
61-
epstool
62-
fig2dev
63-
gettext
64-
gfortran
65-
git
66-
gnuplot
67-
imagemagick
68-
ipset
69-
iptables
70-
libcairo2-dev
71-
libffi-dev
72-
libfile-slurp-perl
73-
libisl-dev
74-
libjson-perl
75-
libmongodb-perl
76-
libopenmpi3
77-
libperl-dev
78-
libproj-dev
79-
libsnappy-dev
80-
libsvg-perl
81-
libsystemd-dev
82-
libterm-readkey-perl
83-
libterm-readline-gnu-perl
84-
libxml-libxslt-perl
85-
libxml-writer-perl
86-
m4
87-
nginx
88-
ninja-build
89-
npm
90-
pandoc
91-
pari-gp2c
92-
php8.1-fpm
93-
proj-bin
94-
python3-requests
95-
rsyslog-relp
96-
ssh
97-
texlive
98-
texlive-latex-extra
99-
tk-dev
100-
unattended-upgrades
101-
unzip
102-
wget
103-
""".split()
104-
# Due to (other's) bugs, some packages cannot be installed during installation.
105-
# Let's also use it to separate "standard tools" and "extra stuff".
106-
packages_later = """
107-
ffmpeg
108-
graphviz
109-
libgeos-dev
110-
libhdf5-dev
111-
libnetcdf-dev
112-
libopenmpi-dev
113-
libxml2-dev
114-
libxslt1-dev
115-
macaulay2
116-
octave
117-
octave-econometrics
118-
octave-statistics
119-
""".split()
56+
system_packages = [
57+
# SageMath prerequisites as of Sage 9.7
58+
'bc',
59+
'binutils',
60+
'bzip2',
61+
'ca-certificates',
62+
'cliquer',
63+
'cmake',
64+
'curl',
65+
'ecl',
66+
'eclib-tools',
67+
'fflas-ffpack',
68+
'flintqs',
69+
'g++',
70+
'gcc',
71+
'gengetopt',
72+
'gfan',
73+
'gfortran',
74+
'glpk-utils',
75+
'gmp-ecm',
76+
'lcalc',
77+
'libatomic-ops-dev',
78+
'libboost-dev',
79+
'libbraiding-dev',
80+
'libbrial-dev',
81+
'libbrial-groebner-dev',
82+
'libbz2-dev',
83+
'libcdd-dev',
84+
'libcdd-tools',
85+
'libcliquer-dev',
86+
'libcurl4-openssl-dev',
87+
'libec-dev',
88+
'libecm-dev',
89+
'libffi-dev',
90+
'libflint-arb-dev',
91+
'libflint-dev',
92+
'libfplll-dev',
93+
'libfreetype6-dev',
94+
'libgc-dev',
95+
'libgd-dev',
96+
'libgf2x-dev',
97+
'libgiac-dev',
98+
'libgivaro-dev',
99+
'libglpk-dev',
100+
'libgmp-dev',
101+
'libgsl-dev',
102+
'libhomfly-dev',
103+
'libiml-dev',
104+
'liblfunction-dev',
105+
'liblinbox-dev',
106+
'liblrcalc-dev',
107+
'liblzma-dev',
108+
'libm4ri-dev',
109+
'libm4rie-dev',
110+
'libmpc-dev',
111+
'libmpfi-dev',
112+
'libmpfr-dev',
113+
'libncurses5-dev',
114+
'libntl-dev',
115+
'libopenblas-dev',
116+
'libpari-dev',
117+
'libpcre3-dev',
118+
'libplanarity-dev',
119+
'libppl-dev',
120+
'libprimesieve-dev',
121+
'libpython3-dev',
122+
'libqhull-dev',
123+
'libreadline-dev',
124+
'librw-dev',
125+
'libsingular4-dev',
126+
'libsqlite3-dev',
127+
'libssl-dev',
128+
'libsuitesparse-dev',
129+
'libsymmetrica2-dev',
130+
'libz-dev',
131+
'libzmq3-dev',
132+
'libzn-poly-dev',
133+
'm4',
134+
'make',
135+
'nauty',
136+
'ninja-build',
137+
'openssl',
138+
'palp',
139+
'pari-doc',
140+
'pari-elldata',
141+
'pari-galdata',
142+
'pari-galpol',
143+
'pari-gp2c',
144+
'pari-seadata',
145+
'patch',
146+
'perl',
147+
'pkg-config',
148+
'planarity',
149+
'ppl-dev',
150+
'python3',
151+
'python3-distutils',
152+
'python3-venv',
153+
'r-base-dev',
154+
'r-cran-lattice',
155+
'singular',
156+
'singular-doc',
157+
'sqlite3',
158+
'sympow',
159+
'tachyon',
160+
'tar',
161+
'tox',
162+
'xcas',
163+
'xz-utils',
164+
# SageMath development
165+
'autoconf',
166+
'automake',
167+
'git',
168+
'gpgconf',
169+
'libtool',
170+
'openssh',
171+
'openssh-client',
172+
'pkg-config',
173+
# SageMath recommendations
174+
'default-jdk',
175+
'dvipng',
176+
'ffmpeg',
177+
'imagemagick',
178+
'latexmk',
179+
'libavdevice-dev',
180+
'pandoc',
181+
'tex-gyre',
182+
'texlive-fonts-recommended',
183+
'texlive-lang-cyrillic',
184+
'texlive-lang-english',
185+
'texlive-lang-european',
186+
'texlive-lang-french',
187+
'texlive-lang-german',
188+
'texlive-lang-italian',
189+
'texlive-lang-japanese',
190+
'texlive-lang-polish',
191+
'texlive-lang-portuguese',
192+
'texlive-lang-spanish',
193+
'texlive-latex-extra',
194+
'texlive-xetex',
195+
# SageMath optional
196+
'4ti2',
197+
'clang',
198+
'coinor-cbc',
199+
'coinor-libcbc-dev',
200+
'graphviz',
201+
'libfile-slurp-perl',
202+
'libgraphviz-dev',
203+
'libigraph-dev',
204+
'libisl-dev',
205+
'libjson-perl',
206+
'libmongodb-perl',
207+
'libnauty-dev',
208+
'libperl-dev',
209+
'libpolymake-dev',
210+
'libsvg-perl',
211+
'libterm-readkey-perl',
212+
'libterm-readline-gnu-perl',
213+
'libxml-libxslt-perl',
214+
'libxml-writer-perl',
215+
'libxml2-dev',
216+
'lrslib',
217+
'pari-gp2c',
218+
'pdf2svg',
219+
'polymake',
220+
'texinfo',
221+
# SageMathCell
222+
'bison',
223+
'build-essential',
224+
'epstool',
225+
'fig2dev',
226+
'gettext',
227+
'gnuplot',
228+
'ipset',
229+
'iptables',
230+
'libcairo2-dev',
231+
'libgeos-dev',
232+
'libhdf5-dev',
233+
'libnetcdf-dev',
234+
'libopenmpi-dev',
235+
'libopenmpi3',
236+
'libproj-dev',
237+
'libsnappy-dev',
238+
'libsystemd-dev',
239+
'libxslt1-dev',
240+
'macaulay2',
241+
'nginx',
242+
'npm',
243+
'octave',
244+
'octave-econometrics',
245+
'octave-statistics',
246+
'php8.1-fpm',
247+
'proj-bin',
248+
'python3-requests',
249+
'rsyslog-relp',
250+
'ssh',
251+
'texlive',
252+
'tk-dev',
253+
'tmpreaper',
254+
'unattended-upgrades',
255+
'unzip',
256+
'wget',
257+
]
120258

121259
# Optional Sage packages to be installed
122260
sage_optional_packages = [
@@ -699,15 +837,12 @@ def create(self):
699837
os.environ.pop("HTTP_PROXY")
700838

701839
self.update()
702-
log.info("installing packages")
703-
self.inside("apt install -y " + " ".join(packages))
704840
self.inside("/usr/sbin/deluser ubuntu --remove-home")
705-
log.info("installing later packages")
706-
self.inside("apt install -y " + " ".join(packages_later))
707841
# Need to preseed or there will be a dialog
708842
self.inside(communicate, "/usr/bin/debconf-set-selections",
709843
"tmpreaper tmpreaper/readsecurity note")
710-
self.inside("apt install -y tmpreaper")
844+
log.info("installing packages")
845+
self.inside("apt install -y " + " ".join(system_packages))
711846

712847
def destroy(self):
713848
r"""

0 commit comments

Comments
 (0)