]> git.ipfire.org Git - pakfire.git/blame - configure.ac
jail: Implement configuring timeouts for commands
[pakfire.git] / configure.ac
CommitLineData
b55979b4
MT
1###############################################################################
2# #
3# Pakfire - The IPFire package management system #
4# Copyright (C) 2013 Pakfire development team #
5# #
6# This program is free software: you can redistribute it and/or modify #
7# it under the terms of the GNU General Public License as published by #
8# the Free Software Foundation, either version 3 of the License, or #
9# (at your option) any later version. #
10# #
11# This program is distributed in the hope that it will be useful, #
12# but WITHOUT ANY WARRANTY; without even the implied warranty of #
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14# GNU General Public License for more details. #
15# #
16# You should have received a copy of the GNU General Public License #
17# along with this program. If not, see <http://www.gnu.org/licenses/>. #
18# #
19###############################################################################
20
7af48a1e 21AC_PREREQ([2.69])
b55979b4
MT
22
23AC_INIT([pakfire],
6d3d31c5 24 [0.9.28],
b55979b4
MT
25 [info@ipfire.org],
26 [pakfire],
6d3d31c5 27 [https://git.ipfire.org/?p=pakfire.git;a=summary])
b55979b4
MT
28
29AC_CONFIG_MACRO_DIR([m4])
30AC_CONFIG_HEADERS([config.h])
31AC_CONFIG_AUX_DIR([build-aux])
32
33AC_USE_SYSTEM_EXTENSIONS
34AC_SYS_LARGEFILE
35AC_PREFIX_DEFAULT([/usr])
36
37AM_INIT_AUTOMAKE([
38 foreign
39 1.11
40 -Wall
41 -Wno-portability
42 silent-rules
43 tar-pax
44 subdir-objects
45])
46AM_SILENT_RULES([yes])
47LT_PREREQ(2.2)
48LT_INIT([disable-static])
49
50IT_PROG_INTLTOOL([0.40.0])
51
b5da7e9a
MT
52XGETTEXT="${XGETTEXT} --keyword=_:1,2 --keyword=N_:1,2 --no-location"
53
b55979b4
MT
54GETTEXT_PACKAGE=pakfire
55AC_SUBST(GETTEXT_PACKAGE)
56
57AC_PROG_LN_S
58AC_PROG_MKDIR_P
59AC_PROG_SED
60
a5fc19b7
MT
61AC_ARG_ENABLE([debug],
62 AS_HELP_STRING([--enable-debug], [enable debug messages @<:@default=disabled@:>@]),
63 [], [enable_debug=no])
64AS_IF([test "x$enable_debug" = "xyes"], [
65 AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
66])
67
5f14f4ce
MT
68# Online Tests
69AC_ARG_ENABLE([online-tests],
70 AS_HELP_STRING(
71 [--enable-online-tests],
72 [enable tests that require internet access @<:@default=disabled@:>@]
73 ), [], [enable_online_tests=no]
74)
75AS_IF([test "x$enable_online_tests" = "xyes"], [
76 AC_DEFINE(ENABLE_ONLINE_TESTS, [1], [Online Tests])
77])
78
d6962dba
MT
79# Man Pages
80
81have_man_pages=no
82AC_ARG_ENABLE(man_pages, AS_HELP_STRING([--disable-man-pages],
83 [do not install man pages]))
84AS_IF([test "x$enable_man_pages" != xno], [have_man_pages=yes])
85AM_CONDITIONAL(ENABLE_MAN_PAGES, [test "x$have_man_pages" = "xyes"])
86
87AC_PATH_PROG([XSLTPROC], [xsltproc])
88
89AC_CHECK_PROGS(ASCIIDOC, [asciidoc])
90if test "${have_man_pages}" = "yes" && test -z "${ASCIIDOC}"; then
91 AC_MSG_ERROR([Required program 'asciidoc' not found])
92fi
93
b55979b4
MT
94# pkg-config
95PKG_PROG_PKG_CONFIG
96# This makes sure pkg.m4 is available.
97m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
98
99# C Compiler
599fd61d 100AC_PROG_CC
b55979b4
MT
101
102CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
b55979b4 103 -Wall \
a3c50656
MT
104 -Wchar-subscripts \
105 -Wformat-security \
106 -Wmissing-declarations \
107 -Wmissing-prototypes \
108 -Wnested-externs \
109 -Wpointer-arith \
110 -Wshadow \
111 -Wsign-compare \
112 -Wstrict-prototypes \
113 -Wtype-limits \
114])
9413f094
MT
115
116# Enable -fanalyzer if requested
117AC_ARG_ENABLE([analyzer],
118 AS_HELP_STRING([--enable-analyzer], [enable static analyzer (-fanalyzer) @<:@default=disabled@:>@]),
119 [], [enable_analyzer=no])
120AS_IF([test "x$enable_analyzer" = "xyes"],
121 CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-fanalyzer])
31c03998 122)
9413f094 123
c5781c8f 124# Enable -fno-semantic-interposition (if available)
cd2b5647
MT
125CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-fno-semantic-interposition])
126CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [-fno-semantic-interposition])
c5781c8f
MT
127
128AC_SUBST([OUR_CPPFLAGS], $with_cppflags)
129AC_SUBST([OUR_CFLAGS], $with_cflags)
b55979b4
MT
130AC_SUBST([OUR_LDFLAGS], $with_ldflags)
131
b23cd304
MT
132# C Types
133AC_TYPE_INT64_T
134AC_TYPE_INTMAX_T
135AC_TYPE_INTPTR_T
136AC_TYPE_MODE_T
137AC_TYPE_OFF_T
138AC_TYPE_PID_T
139AC_TYPE_SIZE_T
140AC_TYPE_SSIZE_T
141AC_TYPE_UID_T
142AC_TYPE_UINT64_T
143
201c0ac0 144# Bison
dee8ae80 145AC_PROG_YACC
dbcf80a3
MT
146
147if test -z "${ac_cv_prog_YACC}"; then
148 echo "*** Error: No suitable bison/yacc found. ***"
149 echo " Please install the 'bison' package."
150 exit 1
151fi
201c0ac0
MT
152
153# Flex
73e181f6
MT
154AM_PROG_LEX
155
dbcf80a3
MT
156if test -z "${ac_cv_prog_LEX}"; then
157 echo "*** Error: No suitable flex/lex found. ***"
158 echo " Please install the 'flex' package."
159 exit 1
160fi
161
221cc3ce
MT
162AC_C_CONST
163AC_CHECK_LIB([m], [round])
164
165AC_CHECK_HEADERS([ \
280ffaee 166 ctype.h \
e44d46cd
MT
167 dirent.h \
168 errno.h \
31f64b2c 169 fcntl.h \
e44d46cd
MT
170 fnmatch.h \
171 fts.h \
172 ftw.h \
173 glob.h \
174 grp.h \
175 libgen.h \
176 libintl.h \
d40cf8d4 177 linux/capability.h \
e44d46cd
MT
178 linux/limits.h \
179 linux/magic.h \
180 linux/sched.h \
221cc3ce 181 math.h \
e44d46cd 182 pwd.h \
0ba52fbe 183 regex.h \
d0759555 184 sched.h \
e44d46cd 185 signal.h \
5f548bf0 186 stdarg.h \
e44d46cd
MT
187 stdint.h \
188 stdio.h \
221cc3ce
MT
189 stdlib.h \
190 string.h \
5f548bf0 191 syslog.h \
d40cf8d4 192 sys/capability.h \
31f64b2c 193 sys/epoll.h \
b5cc6424 194 sys/file.h \
e44d46cd
MT
195 sys/ioctl.h \
196 sys/mount.h \
9dd163f4 197 sys/personality.h \
d40cf8d4 198 sys/prctl.h \
e44d46cd
MT
199 sys/random.h \
200 sys/resource.h \
285b2758 201 sys/sendfile.h \
221cc3ce 202 sys/stat.h \
e44d46cd
MT
203 sys/sysmacros.h \
204 sys/types.h \
205 sys/user.h \
206 sys/utsname.h \
207 sys/vfs.h \
208 sys/wait.h \
209 time.h \
210 unistd.h \
211 utime.h
221cc3ce
MT
212])
213
214AC_CHECK_FUNCS([ \
e44d46cd 215 asprintf \
31f64b2c
MT
216 epoll_ctl \
217 epoll_create1 \
218 epoll_wait \
b5cc6424 219 flock \
31f64b2c 220 fnctl \
e44d46cd
MT
221 fts_close \
222 fts_open \
223 fts_read \
224 getpid \
225 glob \
226 nftw \
227 openlog \
9dd163f4 228 personality \
d40cf8d4 229 prctl \
e44d46cd 230 remove \
5f548bf0 231 secure_getenv \
285b2758 232 sendfile \
e44d46cd 233 snprintf \
221cc3ce 234 strcmp \
d0759555 235 strdup \
e44d46cd 236 syslog \
2b04f43c 237 qsort \
e44d46cd
MT
238 uname \
239 unlink \
240 vasprintf \
241 vsnprintf
221cc3ce
MT
242])
243
8e4ddb5f 244# Python Stuff
9861f185 245AM_PATH_PYTHON([3.6])
8e4ddb5f 246
9f020984 247AX_PYTHON_MODULE([cpuinfo], [fatal])
6284f1f2 248AX_PYTHON_MODULE([kerberos], [fatal])
da170b36 249AX_PYTHON_MODULE([psutil], [fatal])
cb7def8a 250AX_PYTHON_MODULE([setproctitle], [fatal])
09ccdffa
MT
251AX_PYTHON_MODULE([systemd], [fatal])
252AX_PYTHON_MODULE([tornado], [fatal])
a40b356c 253
8e4ddb5f 254# Libraries we depend on
dc69c071 255PKG_CHECK_MODULES([ARCHIVE], [libarchive >= 3.4.0])
e85ac87d 256PKG_CHECK_MODULES([CAP], [libcap])
9d017afc 257PKG_CHECK_MODULES([CURL], [libcurl])
8ee0d8e7 258PKG_CHECK_MODULES([GPGME], [gpgme >= 1.6.0])
a5180a26
MT
259PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}-embed],
260 [], [PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}])])
705a7c99 261PKG_CHECK_MODULES([JSON_C], [json-c >= 0.15])
b55979b4 262PKG_CHECK_MODULES([LZMA], [liblzma])
629f8824 263PKG_CHECK_MODULES([MOUNT], [mount])
36230729 264PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.1.1])
ae83d808 265PKG_CHECK_MODULES([PCRE2], [libpcre2-8])
c10adb37 266PKG_CHECK_MODULES([SECCOMP], [libseccomp])
113a6d68 267PKG_CHECK_MODULES([SOLV], [libsolv >= 0.7.5])
26affd69 268PKG_CHECK_MODULES([SQLITE3], [sqlite3])
eba8ae92
MT
269PKG_CHECK_MODULES([SYSTEMD], [libsystemd],
270 [AC_DEFINE([HAVE_SYSTEMD], [1], [Use systemd])])
df552c32 271PKG_CHECK_MODULES([UUID], [uuid])
2f5d648d 272PKG_CHECK_MODULES([ZSTD], [libzstd])
b55979b4
MT
273
274AC_ARG_WITH([systemdsystemunitdir],
275 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
276 [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
277AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
278AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir"])
279
3f559dd0 280AC_DEFINE_UNQUOTED([PAKFIRE_CONFIG_DIR], ["${sysconfdir}/${PACKAGE_NAME}"],
54bf8fba 281 [The path where Pakfire stores configuration files])
3f559dd0 282AC_DEFINE_UNQUOTED([PAKFIRE_CACHE_DIR], ["/var/cache/${PACKAGE_NAME}"],
93d45f3c 283 [The path where Pakfire caches downloaded data])
9ad608aa
MT
284AC_DEFINE_UNQUOTED([PAKFIRE_PRIVATE_DIR], ["/var/lib/${PACKAGE_NAME}"],
285 [The path where Pakfire stores its private data])
8d0f3a35
MT
286AC_DEFINE_UNQUOTED([PAKFIRE_SCRIPTS_DIR], ["${PREFIX}/lib/${PACKAGE_NAME}"],
287 [The path where Pakfire stores its scripts])
6bf2cf50 288AC_DEFINE_UNQUOTED([PAKFIRE_TMP_DIR], ["/var/tmp"],
93d45f3c 289 [The path where Pakfire stores temporary data])
9ad608aa 290
b55979b4
MT
291AC_CONFIG_FILES([
292 Makefile
293 po/Makefile.in
b55979b4
MT
294 src/pakfire/__version__.py
295])
296
297AC_OUTPUT
298AC_MSG_RESULT([
299 $PACKAGE_NAME $VERSION
300
a5fc19b7 301 Debug: ${enable_debug}
5f14f4ce 302 Online Tests: ${enable_online_tests}
a5fc19b7 303
b55979b4 304 CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
cd2b5647 305 CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
b55979b4
MT
306 LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
307 PYTHON_CFLAGS: ${PYTHON_DEVEL_CFLAGS}
308 PYTHON_LIBS: ${PYTHON_DEVEL_LIBS}
309])