build-sys: create "compatibility libraries" section
Compat stuff is moved to src/compat-libs/. Warnings are issued when programs are linked with the deprecated library.
This commit is contained in:
parent
242465b5bf
commit
53e856e16a
25
Makefile.am
25
Makefile.am
|
@ -4364,7 +4364,7 @@ polkitpolicy_in_files += \
|
||||||
|
|
||||||
EXTRA_DIST += \
|
EXTRA_DIST += \
|
||||||
src/login/logind-gperf.gperf \
|
src/login/logind-gperf.gperf \
|
||||||
src/login/libsystemd-login.pc.in \
|
src/compat-libs/libsystemd-login.pc.in \
|
||||||
src/login/71-seat.rules.in \
|
src/login/71-seat.rules.in \
|
||||||
src/login/73-seat-late.rules.in \
|
src/login/73-seat-late.rules.in \
|
||||||
units/systemd-logind.service.in \
|
units/systemd-logind.service.in \
|
||||||
|
@ -4527,24 +4527,27 @@ clean-python:
|
||||||
-rm -f _daemon.la id128.la _journal.la login.la _reader.la
|
-rm -f _daemon.la id128.la _journal.la login.la _reader.la
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
if ENABLE_COMPAT_LIBS
|
||||||
|
|
||||||
define generate-fake-lib
|
define generate-fake-lib
|
||||||
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
||||||
$(AM_V_GEN)sed -r -n 's/^ +(sd_.*);/void new_\1(void);\n__asm__(".symver new_\1,\1@LIBSYSTEMD_209");\nstatic void (*resolve_\1(void)) (void) {\n\treturn new_\1;\n}\nvoid \1(void) __attribute__((ifunc("resolve_\1")));\n/p' <$< >$@
|
$(AM_V_GEN)sed -r -n 's/^ +(sd_.*);/void new_\1(void);\n__asm__(".symver new_\1,\1@LIBSYSTEMD_209");\nstatic void (*resolve_\1(void)) (void) {\n\treturn new_\1;\n}\nvoid \1(void) __attribute__((ifunc("resolve_\1")));\nobsolete_lib(\1,$(notdir $(basename $<)));\n/p' <$< >$@
|
||||||
endef
|
endef
|
||||||
|
|
||||||
libsystemd_login_la_SOURCES = \
|
libsystemd_login_la_SOURCES = \
|
||||||
libsystemd-login.c \
|
libsystemd-login.c \
|
||||||
src/login/libsystemd-login.sym
|
src/compat-libs/libsystemd-login.sym
|
||||||
|
|
||||||
libsystemd_login_la_CFLAGS = \
|
libsystemd_login_la_CFLAGS = \
|
||||||
$(AM_CFLAGS) \
|
$(AM_CFLAGS) \
|
||||||
-fvisibility=default \
|
-fvisibility=default \
|
||||||
|
-imacros $(top_srcdir)/src/compat-libs/linkwarning.h \
|
||||||
-fno-lto
|
-fno-lto
|
||||||
|
|
||||||
libsystemd_login_la_LDFLAGS = \
|
libsystemd_login_la_LDFLAGS = \
|
||||||
$(AM_LDFLAGS) \
|
$(AM_LDFLAGS) \
|
||||||
-version-info $(LIBSYSTEMD_LOGIN_CURRENT):$(LIBSYSTEMD_LOGIN_REVISION):$(LIBSYSTEMD_LOGIN_AGE) \
|
-version-info $(LIBSYSTEMD_LOGIN_CURRENT):$(LIBSYSTEMD_LOGIN_REVISION):$(LIBSYSTEMD_LOGIN_AGE) \
|
||||||
-Wl,--version-script=$(top_srcdir)/src/login/libsystemd-login.sym
|
-Wl,--version-script=$(top_srcdir)/src/compat-libs/libsystemd-login.sym
|
||||||
|
|
||||||
libsystemd_login_la_LIBADD = \
|
libsystemd_login_la_LIBADD = \
|
||||||
libsystemd.la
|
libsystemd.la
|
||||||
|
@ -4552,14 +4555,14 @@ libsystemd_login_la_LIBADD = \
|
||||||
BUILT_SOURCES += \
|
BUILT_SOURCES += \
|
||||||
libsystemd-login.c
|
libsystemd-login.c
|
||||||
|
|
||||||
libsystemd-login.c: src/login/libsystemd-login.sym
|
libsystemd-login.c: src/compat-libs/libsystemd-login.sym
|
||||||
$(generate-fake-lib)
|
$(generate-fake-lib)
|
||||||
|
|
||||||
lib_LTLIBRARIES += \
|
lib_LTLIBRARIES += \
|
||||||
libsystemd-login.la
|
libsystemd-login.la
|
||||||
|
|
||||||
pkgconfiglib_DATA += \
|
pkgconfiglib_DATA += \
|
||||||
src/login/libsystemd-login.pc
|
src/compat-libs/libsystemd-login.pc
|
||||||
|
|
||||||
# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
|
# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
|
||||||
libsystemd-login-install-hook:
|
libsystemd-login-install-hook:
|
||||||
|
@ -4571,6 +4574,8 @@ libsystemd-login-uninstall-hook:
|
||||||
INSTALL_EXEC_HOOKS += libsystemd-login-install-hook
|
INSTALL_EXEC_HOOKS += libsystemd-login-install-hook
|
||||||
UNINSTALL_EXEC_HOOKS += libsystemd-login-uninstall-hook
|
UNINSTALL_EXEC_HOOKS += libsystemd-login-uninstall-hook
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
substitutions = \
|
substitutions = \
|
||||||
'|rootlibexecdir=$(rootlibexecdir)|' \
|
'|rootlibexecdir=$(rootlibexecdir)|' \
|
||||||
|
@ -5007,7 +5012,7 @@ test-libsystemd-journal-sym.c: \
|
||||||
$(generate-sym-test)
|
$(generate-sym-test)
|
||||||
|
|
||||||
test-libsystemd-login-sym.c: \
|
test-libsystemd-login-sym.c: \
|
||||||
src/login/libsystemd-login.sym \
|
src/compat-libs/libsystemd-login.sym \
|
||||||
src/systemd/sd-login.h
|
src/systemd/sd-login.h
|
||||||
$(generate-sym-test)
|
$(generate-sym-test)
|
||||||
|
|
||||||
|
@ -5059,9 +5064,13 @@ tests += \
|
||||||
test-libsystemd-daemon-sym \
|
test-libsystemd-daemon-sym \
|
||||||
test-libsystemd-id128-sym \
|
test-libsystemd-id128-sym \
|
||||||
test-libsystemd-journal-sym \
|
test-libsystemd-journal-sym \
|
||||||
test-libsystemd-login-sym \
|
|
||||||
test-libudev-sym
|
test-libudev-sym
|
||||||
|
|
||||||
|
if ENABLE_COMPAT_LIBS
|
||||||
|
tests += \
|
||||||
|
test-libsystemd-login-sym
|
||||||
|
endif
|
||||||
|
|
||||||
cppcheck:
|
cppcheck:
|
||||||
cppcheck --enable=all -q $(top_srcdir)
|
cppcheck --enable=all -q $(top_srcdir)
|
||||||
|
|
||||||
|
|
12
configure.ac
12
configure.ac
|
@ -258,6 +258,17 @@ AS_IF([test "x$enable_dbus" != "xno"], [
|
||||||
[AC_MSG_ERROR([*** dbus-1 support requested but libraries not found])])])
|
[AC_MSG_ERROR([*** dbus-1 support requested but libraries not found])])])
|
||||||
AM_CONDITIONAL(HAVE_DBUS, [test "$have_dbus" = "yes"])
|
AM_CONDITIONAL(HAVE_DBUS, [test "$have_dbus" = "yes"])
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
have_compat_libs=no
|
||||||
|
AC_ARG_ENABLE([compat_libs], AS_HELP_STRING([--enable-compat-libs],[Enable creation of compatibility libraries]),
|
||||||
|
[case "${enableval}" in
|
||||||
|
yes) have_compat_libs=yes ;;
|
||||||
|
no) have_compat_libs=no ;;
|
||||||
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-compat-libs) ;;
|
||||||
|
esac],
|
||||||
|
[have_compat_libs=no])
|
||||||
|
AM_CONDITIONAL([ENABLE_COMPAT_LIBS], [test "$have_compat_libs" = "yes"])
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
have_coverage=no
|
have_coverage=no
|
||||||
AC_ARG_ENABLE(coverage, AS_HELP_STRING([--enable-coverage], [enable test coverage]))
|
AC_ARG_ENABLE(coverage, AS_HELP_STRING([--enable-coverage], [enable test coverage]))
|
||||||
|
@ -1117,6 +1128,7 @@ AC_MSG_RESULT([
|
||||||
test coverage: ${have_coverage}
|
test coverage: ${have_coverage}
|
||||||
Split /usr: ${enable_split_usr}
|
Split /usr: ${enable_split_usr}
|
||||||
SysV compatibility: ${SYSTEM_SYSV_COMPAT}
|
SysV compatibility: ${SYSTEM_SYSV_COMPAT}
|
||||||
|
compatibility libraries: ${have_compat_libs}
|
||||||
|
|
||||||
prefix: ${prefix}
|
prefix: ${prefix}
|
||||||
rootprefix: ${with_rootprefix}
|
rootprefix: ${with_rootprefix}
|
||||||
|
|
1
src/compat-libs/.gitignore
vendored
Normal file
1
src/compat-libs/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/libsystemd-login.pc
|
|
@ -11,8 +11,8 @@ libdir=@libdir@
|
||||||
includedir=@includedir@
|
includedir=@includedir@
|
||||||
|
|
||||||
Name: systemd
|
Name: systemd
|
||||||
Description: systemd Login Utility Library
|
Description: systemd Login Utility Library deprecated compatibility library
|
||||||
URL: @PACKAGE_URL@
|
URL: @PACKAGE_URL@
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Libs: -L${libdir} -lsystemd-login
|
Libs: -L${libdir} -lsystemd
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
34
src/compat-libs/linkwarning.h
Normal file
34
src/compat-libs/linkwarning.h
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/***
|
||||||
|
This file is part of systemd, but is heavily based on
|
||||||
|
glibc's libc-symbols.h.
|
||||||
|
|
||||||
|
Copyright (C) 1995-1998,2000-2006,2008,2009 Free Software Foundation, Inc
|
||||||
|
|
||||||
|
systemd 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.
|
||||||
|
|
||||||
|
systemd 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
***/
|
||||||
|
|
||||||
|
|
||||||
|
#define __make_section_unallocated(section_string) \
|
||||||
|
asm (".section " section_string "\n\t.previous");
|
||||||
|
|
||||||
|
#define __sec_comment "\n#APP\n\t#"
|
||||||
|
|
||||||
|
#define link_warning(symbol, msg) \
|
||||||
|
__make_section_unallocated (".gnu.warning." #symbol) \
|
||||||
|
static const char __evoke_link_warning_##symbol[] \
|
||||||
|
__attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \
|
||||||
|
= msg
|
||||||
|
|
||||||
|
#define obsolete_lib(name, lib) \
|
||||||
|
link_warning(name, #name " was moved to libsystemd. Do not use " #lib ".")
|
1
src/login/.gitignore
vendored
1
src/login/.gitignore
vendored
|
@ -1,4 +1,3 @@
|
||||||
/libsystemd-login.pc
|
|
||||||
/logind-gperf.c
|
/logind-gperf.c
|
||||||
/org.freedesktop.login1.policy
|
/org.freedesktop.login1.policy
|
||||||
/71-seat.rules
|
/71-seat.rules
|
||||||
|
|
Loading…
Reference in a new issue