# #
###############################################################################
-AC_PREREQ([2.64])
+AC_PREREQ([2.69])
AC_INIT([pakfire],
- [0.9.27],
+ [0.9.28],
[info@ipfire.org],
[pakfire],
- [http://git.ipfire.org/?p=pakfire.git;a=summary])
+ [https://git.ipfire.org/?p=pakfire.git;a=summary])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
])
+# Online Tests
+AC_ARG_ENABLE([online-tests],
+ AS_HELP_STRING(
+ [--enable-online-tests],
+ [enable tests that require internet access @<:@default=disabled@:>@]
+ ), [], [enable_online_tests=no]
+)
+AS_IF([test "x$enable_online_tests" = "xyes"], [
+ AC_DEFINE(ENABLE_ONLINE_TESTS, [1], [Online Tests])
+])
+
+# Man Pages
+
+have_man_pages=no
+AC_ARG_ENABLE(man_pages, AS_HELP_STRING([--disable-man-pages],
+ [do not install man pages]))
+AS_IF([test "x$enable_man_pages" != xno], [have_man_pages=yes])
+AM_CONDITIONAL(ENABLE_MAN_PAGES, [test "x$have_man_pages" = "xyes"])
+
+AC_PATH_PROG([XSLTPROC], [xsltproc])
+
+AC_CHECK_PROGS(ASCIIDOC, [asciidoc])
+if test "${have_man_pages}" = "yes" && test -z "${ASCIIDOC}"; then
+ AC_MSG_ERROR([Required program 'asciidoc' not found])
+fi
+
# pkg-config
PKG_PROG_PKG_CONFIG
# This makes sure pkg.m4 is available.
# C Compiler
AC_PROG_CC
-AC_PROG_CC_C99
-AC_PROG_CC_C_O
-AC_PROG_GCC_TRADITIONAL
-AC_OPENMP
CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
- -pipe \
-Wall \
- -Wextra \
- -Wno-inline \
- -Wundef \
- "-Wformat=2 -Wformat-security -Wformat-nonliteral" \
- -Wno-unused-parameter \
- -Wno-unused-result \
- -fno-strict-aliasing \
- -ffunction-sections \
- -fdata-sections \
- -fstack-protector-all \
- --param=ssp-buffer-size=4])
+ -Wchar-subscripts \
+ -Wformat-security \
+ -Wmissing-declarations \
+ -Wmissing-prototypes \
+ -Wnested-externs \
+ -Wpointer-arith \
+ -Wshadow \
+ -Wsign-compare \
+ -Wstrict-prototypes \
+ -Wtype-limits \
+])
# Enable -fanalyzer if requested
AC_ARG_ENABLE([analyzer],
CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-fanalyzer])
)
-AC_SUBST([OUR_CFLAGS], $with_cflags)
+# Enable -fno-semantic-interposition (if available)
+CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-fno-semantic-interposition])
+CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [-fno-semantic-interposition])
-AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*],
- [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
- -Wp,-D_FORTIFY_SOURCE=2])],
- [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
AC_SUBST([OUR_CPPFLAGS], $with_cppflags)
-
-CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
- -Wl,--as-needed \
- -Wl,--no-undefined \
- -Wl,--gc-sections \
- -Wl,-z,relro \
- -Wl,-z,now])
+AC_SUBST([OUR_CFLAGS], $with_cflags)
AC_SUBST([OUR_LDFLAGS], $with_ldflags)
+# C Types
+AC_TYPE_INT64_T
+AC_TYPE_INTMAX_T
+AC_TYPE_INTPTR_T
+AC_TYPE_MODE_T
+AC_TYPE_OFF_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_TYPE_SSIZE_T
+AC_TYPE_UID_T
+AC_TYPE_UINT64_T
+
# Bison
AC_PROG_YACC
AC_CHECK_LIB([m], [round])
AC_CHECK_HEADERS([ \
- ctypes.h \
+ ctype.h \
+ dirent.h \
+ errno.h \
fcntl.h \
+ fnmatch.h \
+ fts.h \
+ ftw.h \
+ glob.h \
+ grp.h \
+ libgen.h \
+ libintl.h \
+ linux/capability.h \
+ linux/limits.h \
+ linux/magic.h \
+ linux/sched.h \
math.h \
+ pwd.h \
regex.h \
sched.h \
+ signal.h \
stdarg.h \
+ stdint.h \
+ stdio.h \
stdlib.h \
string.h \
syslog.h \
+ sys/capability.h \
sys/epoll.h \
+ sys/file.h \
+ sys/ioctl.h \
+ sys/mount.h \
sys/personality.h \
+ sys/prctl.h \
+ sys/random.h \
+ sys/resource.h \
+ sys/sendfile.h \
sys/stat.h \
- unistd.h
+ sys/sysmacros.h \
+ sys/types.h \
+ sys/user.h \
+ sys/utsname.h \
+ sys/vfs.h \
+ sys/wait.h \
+ time.h \
+ unistd.h \
+ utime.h
])
AC_CHECK_FUNCS([ \
- assert \
+ asprintf \
epoll_ctl \
epoll_create1 \
epoll_wait \
+ flock \
fnctl \
+ fts_close \
+ fts_open \
+ fts_read \
+ getpid \
+ glob \
+ nftw \
+ openlog \
personality \
+ prctl \
+ remove \
secure_getenv \
+ sendfile \
+ snprintf \
strcmp \
strdup \
+ syslog \
qsort \
- unshare
+ uname \
+ unlink \
+ vasprintf \
+ vsnprintf
])
# Python Stuff
-AM_PATH_PYTHON([3.7])
+AM_PATH_PYTHON([3.6])
+
+AX_PYTHON_MODULE([cpuinfo], [fatal])
+AX_PYTHON_MODULE([kerberos], [fatal])
+AX_PYTHON_MODULE([psutil], [fatal])
+AX_PYTHON_MODULE([setproctitle], [fatal])
+AX_PYTHON_MODULE([systemd], [fatal])
+AX_PYTHON_MODULE([tornado], [fatal])
# Libraries we depend on
-PKG_CHECK_MODULES([ARCHIVE], [libarchive >= 3.3.3])
+PKG_CHECK_MODULES([ARCHIVE], [libarchive >= 3.4.0])
+PKG_CHECK_MODULES([CAP], [libcap])
PKG_CHECK_MODULES([CURL], [libcurl])
+PKG_CHECK_MODULES([ELF], [libelf])
+PKG_CHECK_MODULES([GPGME], [gpgme >= 1.6.0])
PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}-embed],
[], [PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}])])
-PKG_CHECK_MODULES([JSON_C], [json-c])
+PKG_CHECK_MODULES([JSON_C], [json-c >= 0.15])
PKG_CHECK_MODULES([LZMA], [liblzma])
+PKG_CHECK_MODULES([MAGIC], [libmagic])
+PKG_CHECK_MODULES([MOUNT], [mount])
PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.1.1])
PKG_CHECK_MODULES([PCRE2], [libpcre2-8])
+PKG_CHECK_MODULES([SECCOMP], [libseccomp])
PKG_CHECK_MODULES([SOLV], [libsolv >= 0.7.5])
PKG_CHECK_MODULES([SQLITE3], [sqlite3])
PKG_CHECK_MODULES([SYSTEMD], [libsystemd],
PKG_CHECK_MODULES([UUID], [uuid])
PKG_CHECK_MODULES([ZSTD], [libzstd])
-AM_PATH_GPGME([1.6.0], [], [AC_MSG_ERROR([*** GPGME not found])])
-
AC_ARG_WITH([systemdsystemunitdir],
AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
[], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir"])
-AC_DEFINE_UNQUOTED([PAKFIRE_CONFIG_PATH], ["${sysconfdir}/${PACKAGE_NAME}"],
+AC_DEFINE_UNQUOTED([PAKFIRE_CONFIG_DIR], ["${sysconfdir}/${PACKAGE_NAME}"],
[The path where Pakfire stores configuration files])
-AC_DEFINE_UNQUOTED([PAKFIRE_CACHE_PATH], ["/var/cache/${PACKAGE_NAME}"],
- [The path where Pakfire stores temporary data])
+AC_DEFINE_UNQUOTED([PAKFIRE_CACHE_DIR], ["/var/cache/${PACKAGE_NAME}"],
+ [The path where Pakfire caches downloaded data])
AC_DEFINE_UNQUOTED([PAKFIRE_PRIVATE_DIR], ["/var/lib/${PACKAGE_NAME}"],
[The path where Pakfire stores its private data])
AC_DEFINE_UNQUOTED([PAKFIRE_SCRIPTS_DIR], ["${PREFIX}/lib/${PACKAGE_NAME}"],
[The path where Pakfire stores its scripts])
+AC_DEFINE_UNQUOTED([PAKFIRE_TMP_DIR], ["/var/tmp"],
+ [The path where Pakfire stores temporary data])
AC_CONFIG_FILES([
Makefile
$PACKAGE_NAME $VERSION
Debug: ${enable_debug}
+ Online Tests: ${enable_online_tests}
- CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
+ CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
PYTHON_CFLAGS: ${PYTHON_DEVEL_CFLAGS}
PYTHON_LIBS: ${PYTHON_DEVEL_LIBS}