mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-12-22 15:03:34 +07:00
9a769172c3
This reverts commit aa417a4d83
.
Preface: The kmod+tmpfiles static dev-node creation requires two commands to
be executed at runtime -- it is not something that will automatically occur
without a system's setup being explicitly designed or changed so that these
commands are executed.
Preface2: In order for the kmod+tmpfiles static dev-node creation to work
properly, that -must- be executed at startup before {systemd-,}udevd starts.
The reason for this is because udevd will only set permissions on those files
at startup, and so if udevd starts beforehand then these nodes will exist with
permissions that are (probably) too restrictive.
The function in udevd which creates static-nodes is non-fatal and only updates
mtime on the devnodes if they already exist. As such, if a system is configured
to execute kmod+tmpfiles to create static-nodes, because that must occur first,
eudev's udevd will not conflict. Also, if a system does not execute kmod+tmpfiles,
then eudev will still create the static devnodes, even if kmod-14 or higher is
installed.
There *may* be a conflict if kmod+tmpfiles is executed after udevd starts, but
as per "preface2" this is not a supported configuration.
Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
383 lines
13 KiB
Plaintext
383 lines
13 KiB
Plaintext
|
|
AC_PREREQ([2.68])
|
|
AC_INIT([eudev],[1.2],[https://github.com/gentoo/eudev/issues])
|
|
AC_SUBST(UDEV_VERSION, 205)
|
|
AC_CONFIG_SRCDIR([src/udev/udevd.c])
|
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
AC_SYS_LARGEFILE
|
|
AC_PREFIX_DEFAULT([/usr])
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_CONFIG_HEADERS([config.h])
|
|
|
|
AM_INIT_AUTOMAKE([foreign 1.11])
|
|
AM_SILENT_RULES([yes])
|
|
|
|
LT_PREREQ(2.2)
|
|
LT_INIT
|
|
|
|
# Checks for programs.
|
|
AC_PROG_MKDIR_P
|
|
AC_PROG_LN_S
|
|
AC_PROG_SED
|
|
AC_PROG_GREP
|
|
AC_PROG_AWK
|
|
|
|
AC_PROG_CC_C99
|
|
AS_IF([test "x$ac_cv_prog_cc_c99" = "xno"], [
|
|
AC_MSG_ERROR([no C99 compiler found, $PACKAGE requires a C99 compiler.])
|
|
])
|
|
|
|
AC_PROG_CXX
|
|
AC_PROG_CPP
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
|
|
AC_PATH_PROG([M4], [m4])
|
|
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
|
|
|
# Checks for header files.
|
|
AC_CHECK_HEADERS(
|
|
[arpa/inet.h fcntl.h inttypes.h langinfo.h limits.h locale.h \
|
|
netinet/in.h sys/ioctl.h sys/mount.h \
|
|
sys/param.h sys/socket.h sys/statvfs.h sys/time.h sys/vfs.h syslog.h \
|
|
termios.h unistd.h],
|
|
[],
|
|
[AC_MSG_ERROR([*** POSIX header not found])]
|
|
)
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_TYPE_UID_T
|
|
AC_C_INLINE
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_PID_T
|
|
AC_CHECK_MEMBERS([struct stat.st_rdev])
|
|
AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at, accept4, mkostemp], [], [], [[#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <sys/mount.h>
|
|
#include <fcntl.h>
|
|
#include <sys/socket.h>]])
|
|
|
|
|
|
# Checks for library functions.
|
|
AC_FUNC_CHOWN
|
|
AC_FUNC_FORK
|
|
AC_FUNC_FSEEKO
|
|
AC_FUNC_GETGROUPS
|
|
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
|
|
AC_HEADER_MAJOR
|
|
AC_FUNC_MKTIME
|
|
AC_FUNC_MMAP
|
|
|
|
AC_CHECK_FUNCS(
|
|
[alarm dup2 ftruncate localtime_r mempcpy \
|
|
mkdir munmap nl_langinfo rmdir setlocale socket stpcpy \
|
|
uname],
|
|
[],
|
|
[AC_MSG_ERROR([*** POSIX function not found])]
|
|
)
|
|
AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([*** POSIX librt not found])])
|
|
AC_SEARCH_LIBS([sqrt], [m], [], [AC_MSG_ERROR([*** POSIX libm not found])])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# TODO: the old python checks are irrelevant, but we do need python and perl for tests
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Set paths here
|
|
|
|
AC_ARG_WITH(
|
|
[rootprefix],
|
|
[AS_HELP_STRING(
|
|
[--with-rootprefix=DIR],
|
|
[rootfs directory prefix for config files and kernel modules])],
|
|
[],
|
|
[with_rootprefix="\${prefix}"]
|
|
)
|
|
|
|
AC_ARG_WITH(
|
|
[rootlibdir],
|
|
[AS_HELP_STRING(
|
|
[--with-rootlibdir=DIR],
|
|
[Root directory for libraries necessary for boot])],
|
|
[],
|
|
[with_rootlibdir=${libdir}]
|
|
)
|
|
|
|
AC_ARG_ENABLE(
|
|
[split-usr],
|
|
[AS_HELP_STRING(
|
|
[--enable-split-usr],
|
|
[Include hard-coded default search paths in / and /usr])],
|
|
[],
|
|
[AS_IF(
|
|
[test "x${ac_default_prefix}" != "x${with_rootprefix}" && test "x${with_rootprefix}" != "x\${prefix}"],
|
|
[enable_split_usr=yes],
|
|
[enable_split_usr=no])]
|
|
)
|
|
|
|
AS_IF(
|
|
[test "x${enable_split_usr}" = "xyes"],
|
|
[AC_DEFINE(HAVE_SPLIT_USR, 1, [Define to include hard-coded default search paths in / and /usr])]
|
|
)
|
|
|
|
# Configured paths
|
|
AC_SUBST([rootprefix], [$with_rootprefix])
|
|
AC_SUBST([rootlibdir], [$with_rootlibdir])
|
|
AC_SUBST([udevlibexecdir], [${rootprefix}/lib/udev])
|
|
|
|
# sysconfdir paths
|
|
AC_SUBST([udevconfdir],[${sysconfdir}/udev])
|
|
AC_SUBST([udevconffile],[${udevconfdir}/udev.conf])
|
|
AC_SUBST([udevhwdbdir],[${udevconfdir}/hwdb.d])
|
|
AC_SUBST([udevhwdbbin],[${udevconfdir}/hwdb.bin])
|
|
|
|
# udevlibexecdir paths
|
|
AC_SUBST([udevkeymapdir],[${udevlibexecdir}/keymaps])
|
|
AC_SUBST([udevkeymapforceredir],[${udevkeymapdir}/force-release])
|
|
AC_SUBST([udevrulesdir],[${udevlibexecdir}/rules.d])
|
|
|
|
# pkgconfigdir paths
|
|
AC_SUBST([pkgconfiglibdir], [${libdir}/pkgconfig])
|
|
AC_SUBST([sharepkgconfigdir],[${datadir}/pkgconfig])
|
|
|
|
# gudev paths
|
|
AC_SUBST([libgudev_includedir],[${includedir}/gudev-1.0/gudev])
|
|
|
|
# introspection paths
|
|
AC_SUBST([girdir], [${datadir}/gir-1.0])
|
|
AC_SUBST([typelibsdir], [${libdir}/girepository-1.0])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
GOBJECT_INTROSPECTION_CHECK([1.31.1])
|
|
AM_CONDITIONAL([HAVE_INTROSPECTION], [test "$enable_introspection" = "yes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_blkid=no
|
|
AC_ARG_ENABLE(blkid, AS_HELP_STRING([--disable-blkid], [Disable optional blkid support]))
|
|
if test "x$enable_blkid" != "xno"; then
|
|
PKG_CHECK_MODULES([BLKID], [blkid >= 2.20],
|
|
[AC_DEFINE(HAVE_BLKID, 1, [Define if blkid is available]) have_blkid=yes], have_blkid=no)
|
|
if test "x$have_blkid" = xno -a "x$enable_blkd" = xyes; then
|
|
AC_MSG_ERROR([*** blkid support requested but not found])
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL(HAVE_BLKID, [test "x$have_blkid" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_selinux=no
|
|
AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [Disable optional SELINUX support]))
|
|
if test "x$enable_selinux" != "xno"; then
|
|
PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.1.9],
|
|
[AC_DEFINE(HAVE_SELINUX, 1, [Define if SELinux is available]) have_selinux=yes], have_selinux=no)
|
|
if test "x$have_selinux" = xno -a "x$enable_selinux" = xyes; then
|
|
AC_MSG_ERROR([*** SELinux support requested but libraries not found])
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
|
|
if test "x${have_selinux}" != xno ; then
|
|
sushell=/sbin/sushell
|
|
else
|
|
sushell=/bin/bash
|
|
fi
|
|
AC_SUBST(sushell)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
AC_CHECK_DECL([unshare],
|
|
[AC_DEFINE(HAVE_UNSHARE, 1, [Define if unshare is declared])],
|
|
[AC_CHECK_DECL([SYS_unshare],
|
|
[ ] ,
|
|
[AC_MSG_ERROR([*** unshare nor SYS_unshare found.])],
|
|
[#include <syscall.h>])],
|
|
[#include <sched.h>])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_WITH(firmware-path,
|
|
AS_HELP_STRING([--with-firmware-path=DIR[[[:DIR[...]]]]],
|
|
[Firmware search path (default="")]),
|
|
[], [with_firmware_path=""])
|
|
OLD_IFS=$IFS
|
|
IFS=:
|
|
for i in $with_firmware_path; do
|
|
if test "x${FIRMWARE_PATH}" = "x"; then
|
|
FIRMWARE_PATH="\\\"${i}/\\\""
|
|
else
|
|
FIRMWARE_PATH="${FIRMWARE_PATH}, \\\"${i}/\\\""
|
|
fi
|
|
done
|
|
IFS=$OLD_IFS
|
|
AC_SUBST(FIRMWARE_PATH)
|
|
AS_IF([test "x${FIRMWARE_PATH}" != "x"], [ AC_DEFINE(HAVE_FIRMWARE, 1, [Define if FIRMWARE is available]) ])
|
|
AM_CONDITIONAL(ENABLE_FIRMWARE, [test "x${FIRMWARE_PATH}" != "x"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_ENABLE([gudev],
|
|
AS_HELP_STRING([--disable-gudev], [disable Gobject libudev support @<:@default=enabled@:>@]),
|
|
[], [enable_gudev=yes])
|
|
AS_IF([test "x$enable_gudev" = "xyes"], [ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0]) ])
|
|
AM_CONDITIONAL([ENABLE_GUDEV], [test "x$enable_gudev" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_ENABLE([keymap],
|
|
AS_HELP_STRING([--disable-keymap], [disable keymap fixup support @<:@default=enabled@:>@]),
|
|
[], [enable_keymap=yes])
|
|
|
|
if test "x$enable_keymap" = "xyes"; then
|
|
AC_PATH_TOOL(GPERF, gperf)
|
|
if test -z "$GPERF" ; then
|
|
AC_MSG_ERROR([*** gperf not found])
|
|
fi
|
|
AC_DEFINE([ENABLE_KEYMAP], [1], [Define if we are enabling rule generator])
|
|
fi
|
|
|
|
AM_CONDITIONAL([ENABLE_KEYMAP], [test "x$enable_keymap" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
GTK_DOC_CHECK([1.18],[--flavour no-tmpl])
|
|
AM_CONDITIONAL([ENABLE_GTK_DOC],[test "x$enable_gtk_doc" = "xyes"])
|
|
|
|
AS_IF([test "x$enable_gtk_doc" = "xyes" -a "x$XSLTPROC" = x], [
|
|
AC_MSG_ERROR([*** GTK doc requested but xsltproc not found])
|
|
])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
have_manpages=no
|
|
AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
|
|
AS_IF([test "x$enable_manpages" != xno], [
|
|
AS_IF([test "x$enable_manpages" = xyes -a "x$XSLTPROC" = x], [
|
|
AC_MSG_ERROR([*** Manpages requested but xsltproc not found])
|
|
])
|
|
AS_IF([test "x$XSLTPROC" != x], [have_manpages=yes])
|
|
])
|
|
AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
AC_ARG_ENABLE(modules, [AS_HELP_STRING([--disable-modules], [Disable loadable module support @<:@default=enabled@:>@])], [], [enable_modules=yes])
|
|
AC_ARG_ENABLE(libkmod, [AS_HELP_STRING([--enable-libkmod], [Enable module loading through kmod @<:@default=disabled@:>@])], [], [enable_libkmod=no])
|
|
|
|
if test "x${enable_modules}" = xyes; then
|
|
|
|
AC_DEFINE([HAVE_MODULES], [1], [Define if we support loading modules])
|
|
|
|
AS_IF([test "x${enable_libkmod}" = xyes],
|
|
[AC_CHECK_LIB([kmod], [main],
|
|
[PKG_CHECK_MODULES(KMOD, [libkmod >= 5])
|
|
AC_SUBST([LIBKMOD], ["-lkmod"])
|
|
AC_DEFINE([HAVE_LIBKMOD], [1],
|
|
[Define if you have libkmod])
|
|
],
|
|
[AC_MSG_FAILURE(
|
|
[--enable-libkmod was given, but test for kmod failed])],
|
|
[-lkmod])])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_MODULES], [test "x${enable_modules}" = xyes])
|
|
AM_CONDITIONAL([HAVE_LIBKMOD], [test "x${enable_libkmod}" = xyes])
|
|
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
AC_ARG_WITH([modprobe],
|
|
[AS_HELP_STRING([--with-modprobe=modprobe],
|
|
[specify location of modprobe when -- @<:@default=$sbindir/modprobe@:>@])],
|
|
[],
|
|
[with_modprobe="${sbindir}/modprobe"])
|
|
|
|
AC_SUBST([MODPROBE], ["${with_modprobe}"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# rule-generator - persistent network and optical device rule generator
|
|
# ------------------------------------------------------------------------------
|
|
AC_ARG_ENABLE([rule-generator],
|
|
AS_HELP_STRING([--enable-rule-generator], [enable legacy persistent network, cdrom support]),
|
|
[], [enable_rule_generator=no])
|
|
|
|
if test "x${enable_rule_generator}" != xno; then
|
|
AC_DEFINE([ENABLE_RULE_GENERATOR], [1], [Define if we are enabling rule generator])
|
|
fi
|
|
|
|
AM_CONDITIONAL([ENABLE_RULE_GENERATOR], [test "x$enable_rule_generator" = xyes])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
docs/Makefile
|
|
docs/gudev/Makefile
|
|
docs/gudev/version.xml
|
|
docs/libudev/Makefile
|
|
docs/libudev/version.xml
|
|
hwdb/Makefile
|
|
man/Makefile
|
|
rules/Makefile
|
|
rule_generator/Makefile
|
|
rule_generator/write_cd_rules
|
|
rule_generator/write_net_rules
|
|
src/Makefile
|
|
src/accelerometer/Makefile
|
|
src/ata_id/Makefile
|
|
src/cdrom_id/Makefile
|
|
src/collect/Makefile
|
|
src/mtd_probe/Makefile
|
|
src/scsi_id/Makefile
|
|
src/v4l_id/Makefile
|
|
src/gudev/Makefile
|
|
src/gudev/gudev-1.0.pc
|
|
src/libudev/Makefile
|
|
src/libudev/libudev.pc
|
|
src/udev/Makefile
|
|
src/udev/udev.pc
|
|
test/Makefile])
|
|
|
|
AC_OUTPUT
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
AC_MSG_RESULT([
|
|
prefix: ${prefix}
|
|
exec_prefix: ${exec_prefix}
|
|
sysconfdir: ${sysconfdir}
|
|
datadir: ${datadir}
|
|
includedir: ${includedir}
|
|
libdir: ${libdir}
|
|
|
|
rootprefix: ${rootprefix}
|
|
rootlibdir: ${rootlibdir}
|
|
udevlibexecdir: ${udevlibexecdir}
|
|
datarootdir: ${datarootdir}
|
|
|
|
udevconfdir: ${udevconfdir}
|
|
udevconffile: ${udevconffile}
|
|
udevhwdbdir: ${udevhwdbdir}
|
|
udevhwdbbin: ${udevhwdbbin}
|
|
udevkeymapdir: ${udevkeymapdir}
|
|
udevkeymapforceredir: ${udevkeymapforceredir}
|
|
udevrulesdir: ${udevrulesdir}
|
|
|
|
pkgconfiglibdir: ${libdir}/pkgconfig
|
|
sharepkgconfigdir ${datadir}/pkgconfig
|
|
|
|
libgudev_includedir ${includedir}/gudev-1.0/gudev
|
|
|
|
girdir ${datadir}/gir-1.0
|
|
typelibsdir ${libdir}/girepository-1.0
|
|
])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
dnl Set configured scripts executable
|
|
if test -f src/keymap/check-keymaps.sh; then
|
|
chmod +x src/keymap/check-keymaps.sh
|
|
fi
|
|
|
|
if test -f src/keymap/keyboard-force-release.sh; then
|
|
chmod +x src/keymap/keyboard-force-release.sh
|
|
fi
|
|
|