hal: add stub module that loads module-udev-detect instead of module-hal-detect

This adds module-hal-detect-compat.c which when enabled will be compiled
into a module module-hal-detect which simply loads module-udev-detect.

The purpose of this is to allow easy upgrading without breaking
default.pa. Distributions are recommended to enable this to easy
upgrades from HAL versions of PA to udev versions.
This commit is contained in:
Lennart Poettering 2009-08-11 23:04:35 +02:00
parent ebe35968d7
commit c904f97e2d
3 changed files with 124 additions and 1 deletions

View file

@ -1118,6 +1118,28 @@ AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1])
AC_DEFINE([LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE], 1, [I know the API is subject to change.])
#### HAL compat support (optional) ####
AC_ARG_ENABLE([hal-compat],
AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support]),
[
case "${enableval}" in
yes) halcompat=yes ;;
no) halcompat=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-hal-compat) ;;
esac
],
[halcompat=auto])
if test "x${halcompat}" != xno -a "x$HAVE_HAL" = "x0" -a "x$HAVE_UDEV" = "x1" ; then
HAVE_HAL_COMPAT=1
AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.])
else
HAVE_HAL_COMPAT=0
fi
AC_SUBST(HAVE_HAL_COMPAT)
AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1])
#### BlueZ support (optional) ####
AC_ARG_ENABLE([bluez],
@ -1441,6 +1463,11 @@ if test "x$HAVE_UDEV" = "x1" ; then
ENABLE_UDEV=yes
fi
ENABLE_HAL_COMPAT=no
if test "x$HAVE_HAL_COMPAT" = "x1" ; then
ENABLE_HAL_COMPAT=yes
fi
ENABLE_TCPWRAP=no
if test "x${LIBWRAP_LIBS}" != x ; then
ENABLE_TCPWRAP=yes
@ -1507,6 +1534,7 @@ echo "
Enable LIRC: ${ENABLE_LIRC}
Enable HAL: ${ENABLE_HAL}
Enable udev: ${ENABLE_UDEV}
Enable HAL->udev compat: ${ENABLE_HAL_COMPAT}
Enable BlueZ: ${ENABLE_BLUEZ}
Enable TCP Wrappers: ${ENABLE_TCPWRAP}
Enable libsamplerate: ${ENABLE_LIBSAMPLERATE}

View file

@ -1120,6 +1120,11 @@ modlibexec_LTLIBRARIES += \
module-hal-detect.la
endif
if HAVE_HAL_COMPAT
modlibexec_LTLIBRARIES += \
module-hal-detect.la
endif
if HAVE_UDEV
modlibexec_LTLIBRARIES += \
module-udev-detect.la
@ -1576,10 +1581,16 @@ module_jack_source_la_LDFLAGS = $(MODULE_LDFLAGS)
module_jack_source_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_jack_source_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS)
if HAVE_HAL_COMPAT
module_hal_detect_la_SOURCES = modules/module-hal-detect-compat.c
module_hal_detect_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_hal_detect_la_CFLAGS = $(AM_CFLAGS)
else
module_hal_detect_la_SOURCES = modules/module-hal-detect.c
module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_hal_detect_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS)
endif
module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
module_udev_detect_la_SOURCES = modules/module-udev-detect.c
module_udev_detect_la_LDFLAGS = $(MODULE_LDFLAGS)

View file

@ -0,0 +1,84 @@
/***
This file is part of PulseAudio.
Copyright 2009 Lennart Poettering
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <pulse/xmalloc.h>
#include <pulsecore/module.h>
#include <pulsecore/modargs.h>
#include <pulsecore/log.h>
#include <pulsecore/core-util.h>
#include "module-hal-detect-symdef.h"
PA_MODULE_AUTHOR("Lennart Poettering");
PA_MODULE_DESCRIPTION("Compatibility module");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!");
static const char* const valid_modargs[] = {
"api",
"tsched",
"subdevices",
NULL,
};
int pa__init(pa_module*m) {
pa_modargs *ma = NULL;
pa_bool_t tsched = TRUE;
pa_module *n;
char *t;
pa_assert(m);
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
pa_log("Failed to parse module arguments");
goto fail;
}
if (pa_modargs_get_value_boolean(ma, "tsched", &tsched) < 0) {
pa_log("tsched= expects boolean arguments");
goto fail;
}
pa_log_warn("We will now load module-udev-detect. Please make sure to remove module-hal-detect from your configuration.");
t = pa_sprintf_malloc("tsched=%s", pa_yes_no(tsched));
n = pa_module_load(m->core, "module-udev-detect", t);
pa_xfree(t);
if (n)
pa_module_unload_request(m, TRUE);
pa_modargs_free(ma);
return n ? 0 : -1;
fail:
if (ma)
pa_modargs_free(ma);
return -1;
}