Packaging details, some for Linux

This commit is contained in:
Wolfgang Hommel
2013-10-27 11:33:16 +01:00
parent 2d0cc5d86b
commit 04ae576541
8 changed files with 212 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
# Maintainer: Robert Orzanna <orschiro@gmail.com>
_pkgbasename=libfaketime
pkgname=lib32-$_pkgbasename
pkgver=0.9.5
pkgrel=1
pkgdesc='Report fake dates and times to programs without having to change the system-wide time.'
arch=('x86_64')
url='http://www.code-wizards.com/projects/libfaketime/'
license=('GPL2')
source=("http://www.code-wizards.com/projects/${_pkgbasename}/${_pkgbasename}-${pkgver}.tar.gz"
'lib32.patch')
md5sums=('89b5c71e6c6a93b1c6feba374ac37719'
'0a01f842df4c8acbd2b081be046e8d67')
build() {
cd "${_pkgbasename}-${pkgver}"
patch -p1 -i ../lib32.patch
make
}
package() {
cd "${_pkgbasename}-${pkgver}"
make PREFIX=/usr DESTDIR="${pkgdir}" install
}

View File

@@ -0,0 +1,30 @@
Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
On i386 systems, for some reason if i do not clean up this extra -lrt, i get the following error:
[...]
make[1]: Entering directory `/home/dkg/src/faketime/faketime/src'
cc -o libfaketime.o -c -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=gnu99 -Wall -Wextra -Werror -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'/usr/local'"' -DLIBDIRNAME='"'/lib/faketime'"' -DMULTI_ARCH libfaketime.c
cc -o libfaketime.so.1 -Wl,-soname,libfaketime.so.1 -Wl,-z,relro -Wl,--version-script=libfaketime.map -lrt -shared libfaketime.o -ldl -lm -lpthread -lrt
libfaketime.o: In function `ft_cleanup':
/home/dkg/src/faketime/faketime/src/libfaketime.c:1277: multiple definition of `timer_gettime'
/home/dkg/src/faketime/faketime/src/libfaketime.c:1277: multiple definition of `timer_settime'
collect2: error: ld returned 1 exit status
make[1]: *** [libfaketime.so.1] Error 1
[...]
I confess i don't really understand why removing this would fix
things, but i also don't see the need to have multiple attempts to
link to librt.
--- a/src/Makefile
+++ b/src/Makefile
@@ -69,7 +69,7 @@
CFLAGS += -std=gnu99 -Wall -Wextra -Werror -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"'
LIB_LDFLAGS += -shared
-LDFLAGS += -Wl,--version-script=libfaketime.map -lrt
+LDFLAGS += -Wl,--version-script=libfaketime.map
LDADD += -ldl -lm -lpthread -lrt
SRC = libfaketime.c

View File

@@ -0,0 +1,40 @@
Source: faketime
Section: utils
Priority: extra
Maintainer: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Build-Depends:
debhelper (>= 9),
dh-exec (>= 0.3)
Standards-Version: 3.9.4
Homepage: http://www.code-wizards.com/projects/libfaketime/
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/faketime.git
Vcs-Git: git://anonscm.debian.org/collab-maint/faketime.git
Package: faketime
Architecture: any
Pre-Depends: multiarch-support
Depends: ${shlibs:Depends}, ${misc:Depends}, libfaketime (= ${binary:Version})
Multi-Arch: foreign
Description: report faked system time to programs
The Fake Time Preload Library (FTPL, a.k.a. libfaketime) intercepts
various system calls which programs use to retrieve the current date
and time. It can then report faked dates and times (as specified by
you, the user) to these programs. This means you can modify the
system time a program sees without having to change the time
system-wide. FTPL allows you to specify both absolute dates (e.g.,
2004-01-01) and relative dates (e.g., 10 days ago).
Package: libfaketime
Architecture: any
Pre-Depends: multiarch-support
Multi-Arch: same
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: report faked system time to programs
The Fake Time Preload Library (FTPL, a.k.a. libfaketime) intercepts
various system calls which programs use to retrieve the current date
and time. It can then report faked dates and times (as specified by
you, the user) to these programs. This means you can modify the
system time a program sees without having to change the time
system-wide. FTPL allows you to specify both absolute dates (e.g.,
2004-01-01) and relative dates (e.g., 10 days ago).

View File

@@ -0,0 +1,29 @@
From: Gerardo Malazdrewicz <gerardo@malazdrewicz.com.ar>
To: 699559@bugs.debian.org
Subject: Avoiding loop (very dirty patch)
Date: Tue, 26 Mar 2013 01:18:05 +0100
[Message part 1 (text/plain, inline)]
Attached patch works for me, but it is very very dirty.
Possibly side effects.
Alternative seems to be to protect the call to real_clock_gettime so it is
executed just once (to validate the parameters). Subsequent calls are not
needed (parameters have been validated).
Thanks,
Gerardo
--- a/src/libfaketime.c
+++ b/src/libfaketime.c
@@ -1380,7 +1380,7 @@ void __attribute__ ((constructor)) ftpl_init(void)
real_clock_get_time = dlsym(RTLD_NEXT, "clock_get_time");
real_clock_gettime = apple_clock_gettime;
#else
- real_clock_gettime = dlsym(RTLD_NEXT, "clock_gettime");
+ real_clock_gettime = dlsym(RTLD_NEXT, "__clock_gettime");
#ifdef FAKE_TIMERS
real_timer_settime_22 = dlvsym(RTLD_NEXT, "timer_settime","GLIBC_2.2");
real_timer_settime_233 = dlvsym(RTLD_NEXT, "timer_settime","GLIBC_2.3.3");

View File

@@ -0,0 +1,3 @@
#!/usr/bin/dh-exec
src/libfaketime.so.1 usr/lib/${DEB_HOST_MULTIARCH}/faketime/
src/libfaketimeMT.so.1 usr/lib/${DEB_HOST_MULTIARCH}/faketime/

17
packaging/Linux/Debian/rules Executable file
View File

@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
# Date: Tue, 26 Aug 2008 14:24:50 -0400
export DEB_CFLAGS_MAINT_APPEND=-DMULTI_ARCH
# make sure dh_makeshlibs does not modify post{inst,rm} scripts:
# (avoids lintian's postinst-has-useless-call-to-ldconfig)
override_dh_makeshlibs:
dh_makeshlibs --noscripts
override_dh_installchangelogs:
dh_installchangelogs NEWS
%:
PREFIX=/usr dh $@

View File

@@ -0,0 +1,13 @@
diff --git a/src/libfaketime.c b/src/libfaketime.c
index 3ec372b..f70283b 100644
--- a/src/libfaketime.c
+++ b/src/libfaketime.c
@@ -1380,7 +1380,7 @@ void __attribute__ ((constructor)) ftpl_init(void)
real_clock_get_time = dlsym(RTLD_NEXT, "clock_get_time");
real_clock_gettime = apple_clock_gettime;
#else
- real_clock_gettime = dlsym(RTLD_NEXT, "clock_gettime");
+ real_clock_gettime = dlsym(RTLD_NEXT, "__clock_gettime");
#ifdef FAKE_TIMERS
real_timer_settime_22 = dlvsym(RTLD_NEXT, "timer_settime","GLIBC_2.2");
real_timer_settime_233 = dlvsym(RTLD_NEXT, "timer_settime","GLIBC_2.3.3");

View File

@@ -0,0 +1,55 @@
Summary: Manipulate system time per process for testing purposes
Name: libfaketime
Version: 0.9.5
Release: 4%{?dist}
License: GPLv2+
Url: http://www.code-wizards.com/projects/%{name}/
Source: http://www.code-wizards.com/projects/%{name}/%{name}-%{version}.tar.gz
Group: System Environment/Libraries
Patch1: libfaketime-0.9.5-fix-infinite-recursion-on-real_clock_gettime.patch
%description
libfaketime intercepts various system calls which programs use to
retrieve the current date and time. It can then report faked dates and
times (as specified by you, the user) to these programs. This means you
can modify the system time a program sees without having to change the
time system- wide.
%prep
%setup -q
%patch1 -p1
# work around from upstream for autodetecting glibc version bug on i686
sed -i -e 's/__asm__(".symver timer_gettime_22/\/\/__asm__(".symver timer_gettime_22/' src/libfaketime.c
sed -i -e 's/__asm__(".symver timer_settime_22/\/\/__asm__(".symver timer_settime_22/' src/libfaketime.c
%build
cd src ; CFLAGS="$RPM_OPT_FLAGS -Wno-strict-aliasing" make %{?_smp_mflags} \
PREFIX="%{_prefix}" LIBDIRNAME="/%{_lib}/faketime" all
%check
make %{?_smp_mflags} -C test all
%install
make PREFIX="%{_prefix}" DESTDIR=%{buildroot} LIBDIRNAME="/%{_lib}/faketime" install
rm -r %{buildroot}/%{_docdir}/faketime
%files
%{_bindir}/faketime
%{_libdir}/faketime/libfaketime*so.*
%doc README COPYING NEWS README README.developers
%{_mandir}/man1/*
%changelog
* Tue Oct 15 2013 Paul Wouters <pwouters@redhat.com> - 0.9.5-4
- Infinite recursion patch is still needed, make test causes
segfaults otherwise.
* Mon Oct 14 2013 Paul Wouters <pwouters@redhat.com> - 0.9.5-3
- Work around from upstream for autodetecting glibc version bug on i686
* Mon Oct 14 2013 Paul Wouters <pwouters@redhat.com> - 0.9.5-2
- Remove use of ifarch for _lib macro for multilib
* Sun Oct 13 2013 Paul Wouters <pwouters@redhat.com> - 0.9.5-1
- Initial package