From ca199d112f5aa6bfd01043d04714a77df73e49c5 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Aug 26 2013 15:28:59 +0000 Subject: upstream release 1.0.1 - Rebase to current upstream release. (#888183, #914087, #925572, #992557) - Build with librsync and libcap-ng support. - Build manpages from included DocBook sources. - Disable the SELinux module, it's out of date. - Enable PIE. (#955456) - Modernize spec file. (#850154) --- diff --git a/0001-make-dist-hook-work-also-with-srcdir-builddir.patch b/0001-make-dist-hook-work-also-with-srcdir-builddir.patch new file mode 100644 index 0000000..94d5d95 --- /dev/null +++ b/0001-make-dist-hook-work-also-with-srcdir-builddir.patch @@ -0,0 +1,22 @@ +From 5abe21688caea8dcfbe1d747102e52830fa352d8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= +Date: Thu, 11 Jul 2013 15:40:13 +0200 +Subject: [PATCH 1/4] make dist-hook work also with srcdir != builddir + +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 8109f65..2e2ae6b 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -12,4 +12,4 @@ SUBDIRS = \ + compilerwrapper + + dist-hook: +- git log --date=short --pretty="format:@%cd %an <%ae> [%H]%n%n%s%n%n%e%b" | sed -e "s|^\([^@]\)|\t\1|" -e "s|^@||" >$(distdir)/ChangeLog ++ ( cd $(top_srcdir) && git log --date=short --pretty="format:@%cd %an <%ae> [%H]%n%n%s%n%n%e%b" | sed -e "s|^\([^@]\)|\t\1|" -e "s|^@||" ) >$(distdir)/ChangeLog +-- +1.8.3.1 + diff --git a/0002-handle-HOME-not-being-set.patch b/0002-handle-HOME-not-being-set.patch new file mode 100644 index 0000000..8d93985 --- /dev/null +++ b/0002-handle-HOME-not-being-set.patch @@ -0,0 +1,48 @@ +From 6f79da339b3fd946b46932d61f30a117918de7b7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= +Date: Tue, 16 Jul 2013 15:46:06 +0200 +Subject: [PATCH 2/4] handle $HOME not being set + +--- + client/main.cpp | 2 +- + daemon/main.cpp | 11 ++++++++--- + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/client/main.cpp b/client/main.cpp +index d72ce9d..638dbda 100644 +--- a/client/main.cpp ++++ b/client/main.cpp +@@ -335,7 +335,7 @@ int main(int argc, char **argv) + if (!local_daemon) + local_daemon = Service::createChannel( "/var/run/iceccd.socket" ); + +- if (!local_daemon) { ++ if (!local_daemon && getenv("HOME")) { + string path = getenv("HOME"); + path += "/.iceccd.socket"; + local_daemon = Service::createChannel( path ); +diff --git a/daemon/main.cpp b/daemon/main.cpp +index 28ec158..5d7e430 100644 +--- a/daemon/main.cpp ++++ b/daemon/main.cpp +@@ -553,9 +553,14 @@ bool Daemon::setup_listen_fds() + unlink(myaddr.sun_path); + old_umask = umask(0); + } else { // Started by user. +- strncpy(myaddr.sun_path, getenv("HOME"), sizeof(myaddr.sun_path)-1); +- strncat(myaddr.sun_path, "/.iceccd.socket", sizeof(myaddr.sun_path)-1-strlen(myaddr.sun_path)); +- unlink(myaddr.sun_path); ++ if( getenv( "HOME" )) { ++ strncpy(myaddr.sun_path, getenv("HOME"), sizeof(myaddr.sun_path)-1); ++ strncat(myaddr.sun_path, "/.iceccd.socket", sizeof(myaddr.sun_path)-1-strlen(myaddr.sun_path)); ++ unlink(myaddr.sun_path); ++ } else { ++ log_error() << "launched by user, but $HOME not set" << endl; ++ return false; ++ } + } + + if (bind(unix_listen_fd, (struct sockaddr*)&myaddr, sizeof(myaddr)) < 0) { +-- +1.8.3.1 + diff --git a/0003-Debian-and-Ubuntu-uses-docbook2x-man-instead-of-docb.patch b/0003-Debian-and-Ubuntu-uses-docbook2x-man-instead-of-docb.patch new file mode 100644 index 0000000..df08bbf --- /dev/null +++ b/0003-Debian-and-Ubuntu-uses-docbook2x-man-instead-of-docb.patch @@ -0,0 +1,39 @@ +From 059b0aaa9b54ab4a8866cdaf40eb4200a2797feb Mon Sep 17 00:00:00 2001 +From: Rodrigo Belem +Date: Mon, 8 Apr 2013 15:55:49 -0400 +Subject: [PATCH 3/4] Debian and Ubuntu uses docbook2x-man instead of + docbook-to-man + +Signed-off-by: Rodrigo Belem +(cherry picked from commit df212c10336b6369ab244d9c888263774c9087dc) +--- + configure.ac | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2a35390..3750c49 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -71,12 +71,15 @@ AC_ARG_WITH(man, + ) + AS_IF([test "x$with_man" != "xno"], [ + build_man=yes +- AC_PATH_PROG(DOCBOOK2X,[docbook-to-man]) ++ AC_PATH_PROG(DOCBOOK2X,[docbook2x-man]) + AS_IF([test -z "$DOCBOOK2X"], [ +- AC_PATH_PROG(DOCBOOK2X,[docbook2man.pl]) ++ AC_PATH_PROG(DOCBOOK2X,[docbook-to-man]) + AS_IF([test -z "$DOCBOOK2X"], [ +- AC_MSG_WARN([docbook-to-man is missing. Install docbook2X package.]) +- DOCBOOK2X='echo docbook-to-man is missing. Install docbook2X package.' ++ AC_PATH_PROG(DOCBOOK2X,[docbook2man.pl]) ++ AS_IF([test -z "$DOCBOOK2X"], [ ++ AC_MSG_WARN([docbook2x is missing. Install docbook2x package.]) ++ DOCBOOK2X='echo docbook2x is missing. Install docbook2x package.' ++ ]) + ]) + ]) + ], [build_man=no]) +-- +1.8.3.1 + diff --git a/0004-Mac-brew-has-docbook2man-instead-of-docbook-to-man.patch b/0004-Mac-brew-has-docbook2man-instead-of-docbook-to-man.patch new file mode 100644 index 0000000..fbe69fb --- /dev/null +++ b/0004-Mac-brew-has-docbook2man-instead-of-docbook-to-man.patch @@ -0,0 +1,31 @@ +From 50e25516be288526f6251502900c7cc887b40294 Mon Sep 17 00:00:00 2001 +From: Eike Ziller +Date: Tue, 18 Jun 2013 22:55:36 +0200 +Subject: [PATCH 4/4] Mac/brew has docbook2man instead of docbook-to-man + +(cherry picked from commit a40bae096bd51f328d6ff299077c5530729b0580) +--- + configure.ac | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 3750c49..e77e864 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -77,8 +77,11 @@ AS_IF([test "x$with_man" != "xno"], [ + AS_IF([test -z "$DOCBOOK2X"], [ + AC_PATH_PROG(DOCBOOK2X,[docbook2man.pl]) + AS_IF([test -z "$DOCBOOK2X"], [ +- AC_MSG_WARN([docbook2x is missing. Install docbook2x package.]) +- DOCBOOK2X='echo docbook2x is missing. Install docbook2x package.' ++ AC_PATH_PROG(DOCBOOK2X,[docbook2man]) ++ AS_IF([test -z "$DOCBOOK2X"], [ ++ AC_MSG_WARN([docbook2x is missing. Install docbook2x package.]) ++ DOCBOOK2X='echo docbook2x is missing. Install docbook2x package.' ++ ]) + ]) + ]) + ]) +-- +1.8.3.1 + diff --git a/0005-Revert-chmod-chown-envs-dir-when-preparing-this.patch b/0005-Revert-chmod-chown-envs-dir-when-preparing-this.patch new file mode 100644 index 0000000..63e9344 --- /dev/null +++ b/0005-Revert-chmod-chown-envs-dir-when-preparing-this.patch @@ -0,0 +1,66 @@ +From bade4de1155e41809205ede25ffb99211c72547c Mon Sep 17 00:00:00 2001 +From: Michal Schmidt +Date: Mon, 26 Aug 2013 17:08:52 +0200 +Subject: [PATCH 5/5] Revert "chmod/chown envs dir when preparing this" + +This reverts commit 137e683760707c690df496516432d72d8f7a81d3. +--- + daemon/environment.cpp | 7 +------ + daemon/environment.h | 2 +- + daemon/main.cpp | 2 +- + 3 files changed, 3 insertions(+), 8 deletions(-) + +diff --git a/daemon/environment.cpp b/daemon/environment.cpp +index 87a78a7..4a4ac94 100644 +--- a/daemon/environment.cpp ++++ b/daemon/environment.cpp +@@ -165,7 +165,7 @@ static bool cleanup_directory( const string& directory ) + return true; + } + +-bool cleanup_cache( const string &basedir, uid_t user_uid, gid_t user_gid ) ++bool cleanup_cache( const string &basedir ) + { + flush_debug(); + +@@ -181,11 +181,6 @@ bool cleanup_cache( const string &basedir, uid_t user_uid, gid_t user_gid ) + log_perror( "mkdir in cleanup_cache() failed" ); + return false; + } +- if ( chown( basedir.c_str(), user_uid, user_gid ) || +- chmod( basedir.c_str(), 0775 ) ) { +- log_perror( "chown/chmod in cleanup_cache() failed" ); +- return false; +- } + + return true; + } +diff --git a/daemon/environment.h b/daemon/environment.h +index 8e9361f..ecea781 100644 +--- a/daemon/environment.h ++++ b/daemon/environment.h +@@ -27,7 +27,7 @@ + #include + + class MsgChannel; +-extern bool cleanup_cache( const std::string &basedir, uid_t user_uid, gid_t user_gid ); ++extern bool cleanup_cache( const std::string &basedir ); + extern size_t setup_env_cache(const std::string &basedir, std::string &native_environment, + uid_t user_uid, gid_t user_gid, + const std::string &compiler, const std::list &extrafiles); +diff --git a/daemon/main.cpp b/daemon/main.cpp +index 5d7e430..e08b1e1 100644 +--- a/daemon/main.cpp ++++ b/daemon/main.cpp +@@ -1872,7 +1872,7 @@ int main( int argc, char ** argv ) + pidFile << dcc_master_pid << endl; + pidFile.close(); + +- if ( !cleanup_cache( d.envbasedir, d.user_uid, d.user_gid ) ) ++ if ( !cleanup_cache( d.envbasedir ) ) + return 1; + + list nl = get_netnames (200); +-- +1.8.3.1 + diff --git a/icecc-scheduler.service b/icecc-scheduler.service index fc66bb3..6f85c92 100644 --- a/icecc-scheduler.service +++ b/icecc-scheduler.service @@ -3,7 +3,7 @@ Description=Icecream distributed compiler scheduler [Service] Type=forking -ExecStart=/usr/lib/icecream/icecc-scheduler-wrapper /var/log/icecc-scheduler +ExecStart=/usr/libexec/icecc/icecc-scheduler-wrapper /var/log/icecc/scheduler.log [Install] WantedBy=multi-user.target diff --git a/iceccd.service b/iceccd.service index bf4049d..6a61dda 100644 --- a/iceccd.service +++ b/iceccd.service @@ -3,9 +3,8 @@ Description=Icecream Distributed Compiler After=network.target nss-lookup.target [Service] -Type=forking -PIDFile=/var/run/iceccd.pid -ExecStart=/usr/lib/icecream/iceccd-wrapper -d -u icecream -b /var/cache/icecream -l /var/log/iceccd +Type=simple +ExecStart=/usr/libexec/icecc/iceccd-wrapper -u icecream -b /var/cache/icecream -l /var/log/icecc/iceccd.log Nice=5 [Install] diff --git a/icecream-cleanup-conffile.patch b/icecream-cleanup-conffile.patch index 7aacedd..ddde0ff 100644 --- a/icecream-cleanup-conffile.patch +++ b/icecream-cleanup-conffile.patch @@ -17,16 +17,16 @@ Index: suse/sysconfig.icecream -# -## Type: string -## Path: Applications/icecream --## Defaut: /var/log/iceccd +-## Default: /var/log/icecream/iceccd -# -# icecream daemon log file -# --ICECREAM_LOG_FILE="/var/log/iceccd" +-ICECREAM_LOG_FILE="/var/log/icecream/iceccd" - -# -## Type: string -## Path: Applications/icecream --## Defaut: no +-## Default: no -# -# Start also the scheduler? -# @@ -35,16 +35,16 @@ Index: suse/sysconfig.icecream -# -## Type: string -## Path: Applications/icecream --## Defaut: /var/log/icecc_scheduler +-## Default: /var/log/icecream/scheduler -# -# icecream scheduler log file -# --ICECREAM_SCHEDULER_LOG_FILE="/var/log/icecc_scheduler" +-ICECREAM_SCHEDULER_LOG_FILE="/var/log/icecream/scheduler" - -# -## Type: string -## Path: Applications/icecream --## Defaut: "" +-## Default: "" -# -# Identification for the network the scheduler and daemon run on. +# Identification for the network the scheduler and daemon run on. @@ -56,7 +56,7 @@ Index: suse/sysconfig.icecream # -## Type: string -## Path: Applications/icecream --## Defaut: "" +-## Default: "" -# -# If the daemon can't find the scheduler by broadcast (e.g. because +# If the daemon can't find the scheduler by broadcast (e.g. because @@ -67,7 +67,7 @@ Index: suse/sysconfig.icecream # -## Type: integer -## Path: Applications/icecream --## Defaut: "" +-## Default: "" -# # You can overwrite here the number of jobs to run in parallel. Per -# default this depends on the number of (virtual) CPUs installed. @@ -81,7 +81,7 @@ Index: suse/sysconfig.icecream # -## Type: yesno -## Path: Applications/icecream --## Defaut: "yes" +-## Default: "yes" -# # Specifies whether jobs submitted by other nodes are allowed to run on # this one. diff --git a/icecream-rename-scheduler.patch b/icecream-rename-scheduler.patch deleted file mode 100644 index 5de7738..0000000 --- a/icecream-rename-scheduler.patch +++ /dev/null @@ -1,107 +0,0 @@ -Index: icecc-0.9.6/doc/man-scheduler.1.docbook -=================================================================== ---- icecc-0.9.6.orig/doc/man-scheduler.1.docbook -+++ icecc-0.9.6/doc/man-scheduler.1.docbook -@@ -23,13 +23,13 @@ - - - -- scheduler -+ icecc-scheduler - Icecream scheduler - - - - --scheduler -+icecc-scheduler - - - -@@ -151,7 +151,7 @@ need to run the scheduler with root righ - - - See Also --icecream, scheduler, iceccd, icemon -+icecream, icecc-scheduler, iceccd, icemon - - - -Index: icecc-0.9.6/services/Makefile.am -=================================================================== ---- icecc-0.9.6.orig/services/Makefile.am -+++ icecc-0.9.6/services/Makefile.am -@@ -11,9 +11,9 @@ ice_HEADERS = job.h comm.h - noinst_HEADERS = bench.h exitcode.h getifaddrs.h logging.h tempfile.h platform.h - icedir = $(includedir)/icecc - --sbin_PROGRAMS = scheduler --scheduler_SOURCES = scheduler.cpp --scheduler_LDADD = libicecc.la -+sbin_PROGRAMS = icecc-scheduler -+icecc_scheduler_SOURCES = scheduler.cpp -+icecc_scheduler_LDADD = libicecc.la - - pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = icecc.pc -Index: icecc-0.9.6/services/Makefile.in -=================================================================== ---- icecc-0.9.6.orig/services/Makefile.in -+++ icecc-0.9.6/services/Makefile.in -@@ -37,7 +37,7 @@ PRE_UNINSTALL = : - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --sbin_PROGRAMS = scheduler$(EXEEXT) -+sbin_PROGRAMS = icecc-scheduler$(EXEEXT) - subdir = services - DIST_COMMON = $(ice_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/icecc.pc.in -@@ -82,9 +82,9 @@ libicecc_la_LINK = $(LIBTOOL) --tag=CXX - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libicecc_la_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ - PROGRAMS = $(sbin_PROGRAMS) --am_scheduler_OBJECTS = scheduler.$(OBJEXT) --scheduler_OBJECTS = $(am_scheduler_OBJECTS) --scheduler_DEPENDENCIES = libicecc.la -+am_icecc_scheduler_OBJECTS = scheduler.$(OBJEXT) -+icecc_scheduler_OBJECTS = $(am_icecc_scheduler_OBJECTS) -+icecc_scheduler_DEPENDENCIES = libicecc.la - DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) - depcomp = $(SHELL) $(top_srcdir)/depcomp - am__depfiles_maybe = depfiles -@@ -107,8 +107,8 @@ CXXLD = $(CXX) - CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --SOURCES = $(libicecc_la_SOURCES) $(scheduler_SOURCES) --DIST_SOURCES = $(libicecc_la_SOURCES) $(scheduler_SOURCES) -+SOURCES = $(libicecc_la_SOURCES) $(icecc_scheduler_SOURCES) -+DIST_SOURCES = $(libicecc_la_SOURCES) $(icecc_scheduler_SOURCES) - DATA = $(pkgconfig_DATA) - HEADERS = $(ice_HEADERS) $(noinst_HEADERS) - ETAGS = etags -@@ -242,8 +242,8 @@ libicecc_la_CXXFLAGS = -fPIC -DPIC - ice_HEADERS = job.h comm.h - noinst_HEADERS = bench.h exitcode.h getifaddrs.h logging.h tempfile.h platform.h - icedir = $(includedir)/icecc --scheduler_SOURCES = scheduler.cpp --scheduler_LDADD = libicecc.la -+icecc_scheduler_SOURCES = scheduler.cpp -+icecc_scheduler_LDADD = libicecc.la - pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = icecc.pc - all: all-am -@@ -358,9 +358,9 @@ clean-sbinPROGRAMS: - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list --scheduler$(EXEEXT): $(scheduler_OBJECTS) $(scheduler_DEPENDENCIES) -- @rm -f scheduler$(EXEEXT) -- $(CXXLINK) $(scheduler_OBJECTS) $(scheduler_LDADD) $(LIBS) -+icecc-scheduler$(EXEEXT): $(icecc_scheduler_OBJECTS) $(icecc_scheduler_DEPENDENCIES) -+ @rm -f icecc-scheduler$(EXEEXT) -+ $(CXXLINK) $(icecc_scheduler_OBJECTS) $(icecc_scheduler_LDADD) $(LIBS) - - mostlyclean-compile: - -rm -f *.$(OBJEXT) diff --git a/icecream.csh.in b/icecream.csh.in index e861e92..c142b80 100644 --- a/icecream.csh.in +++ b/icecream.csh.in @@ -2,9 +2,9 @@ # If ccache is there, adds icecc _after_ it. # Otherwise adds icecc to the beginning. -if ( "$path" !~ *@LIBDIR@/icecc/bin* ) then +if ( "$path" !~ *@LIBEXECDIR@/icecc/bin* ) then if ( "$path" !~ *@LIBDIR@/ccache* ) then - set path = ( @LIBDIR@/icecc/bin $path ) + set path = ( @LIBEXECDIR@/icecc/bin $path ) else @ pos = 0 foreach item ( $path ) @@ -12,7 +12,7 @@ if ( "$path" !~ *@LIBDIR@/icecc/bin* ) then if ( $item == @LIBDIR@/ccache ) break end @ next_pos = $pos + 1 - set path = ( $path[1-$pos] @LIBDIR@/icecc/bin \ + set path = ( $path[1-$pos] @LIBEXECDIR@/icecc/bin \ $path[$next_pos-]) unset next_pos unset pos diff --git a/icecream.sh.in b/icecream.sh.in index d637a6a..10a78ca 100644 --- a/icecream.sh.in +++ b/icecream.sh.in @@ -3,7 +3,7 @@ # Otherwise adds icecc to the beginning. PATH=`echo $PATH | /bin/sed -e \ - '\%@LIBDIR@/icecc/bin% b - s%@LIBDIR@/ccache%&:@LIBDIR@/icecc/bin% + '\%@LIBEXECDIR@/icecc/bin% b + s%@LIBDIR@/ccache%&:@LIBEXECDIR@/icecc/bin% t - s%^%@LIBDIR@/icecc/bin:%'` + s%^%@LIBEXECDIR@/icecc/bin:%'` diff --git a/icecream.spec b/icecream.spec index 879d6ad..124fba8 100644 --- a/icecream.spec +++ b/icecream.spec @@ -1,13 +1,11 @@ -%if 0%{?el5} -# I'd need to modify the policy a bit to make it work on RHEL 5. +%global _hardened_build 1 + +# TODO: Reenable SELinux by default. It needs updating first. %bcond_with selinux -%else -%bcond_without selinux -%endif Name: icecream -Version: 0.9.7 -Release: 6%{?dist} +Version: 1.0.1 +Release: 1%{?dist} Summary: Distributed compiler Group: Development/Tools @@ -21,21 +19,27 @@ Source4: icecream.te Source5: icecream.if Source6: iceccd.service Source7: icecc-scheduler.service -# tarball extracted from http://download.opensuse.org/repositories/home:/coolo/openSUSE_Factory/src/icecream-0.9.5-3.1.src.rpm: -Source8: %{name}-manpages.tar.bz2 Source9: iceccd-wrapper Source10: icecc-scheduler-wrapper -Patch0: %{name}-rename-scheduler.patch -Patch1: %{name}-cleanup-conffile.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Patch0001: 0001-make-dist-hook-work-also-with-srcdir-builddir.patch +Patch0002: 0002-handle-HOME-not-being-set.patch +Patch0003: 0003-Debian-and-Ubuntu-uses-docbook2x-man-instead-of-docb.patch +Patch0004: 0004-Mac-brew-has-docbook2man-instead-of-docbook-to-man.patch +PAtch0005: 0005-Revert-chmod-chown-envs-dir-when-preparing-this.patch + +Patch10000: %{name}-cleanup-conffile.patch -BuildRequires: symlinks systemd-units +BuildRequires: systemd +BuildRequires: libcap-ng-devel +BuildRequires: librsync-devel +BuildRequires: docbook-utils +BuildRequires: autoconf automake libtool Requires(pre): shadow-utils -Requires(post): systemd-units systemd-sysv -Requires(preun): systemd-units -Requires(postun): systemd-units +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd %if %{with selinux} # For SELinux protection: @@ -71,17 +75,22 @@ Requires: %{name} = %{version}-%{release} This package contains development files for %{name}. %prep -%setup -q -a 8 -n icecc-%{version} -%patch0 -p1 -%patch1 -p0 -sed -e 's|@LIBDIR@|%{_libdir}|g' %{SOURCE1} > icecream.sh -sed -e 's|@LIBDIR@|%{_libdir}|g' %{SOURCE2} > icecream.csh +%setup -q -n icecc-%{version} +%patch0001 -p1 +%patch0002 -p1 +%patch0003 -p1 +%patch0004 -p1 +%patch0005 -p1 +%patch10000 -p0 +sed -e 's|@LIBDIR@|%{_libdir}|g;s|@LIBEXECDIR@|%{_libexecdir}|g' %{SOURCE1} > icecream.sh +sed -e 's|@LIBDIR@|%{_libdir}|g;s|@LIBEXECDIR@|%{_libexecdir}|g' %{SOURCE2} > icecream.csh mkdir SELinux cp -p %{SOURCE3} %{SOURCE4} %{SOURCE5} SELinux mkdir fedora cp -p %{SOURCE6} %{SOURCE7} %{SOURCE9} %{SOURCE10} fedora %build +autoreconf -fi %configure --disable-static --enable-shared # Remove rpath from local libtool copy sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool @@ -100,33 +109,14 @@ popd %endif %install -rm -rf %{buildroot} make install DESTDIR=%{buildroot} rm -f %{buildroot}/%{_libdir}/libicecc.la -# move the symlinks elsewhere -mkdir -p %{buildroot}/%{_libdir}/icecc/bin -for i in cc gcc c++ g++; do - ln -s %{buildroot}/%{_bindir}/icecc %{buildroot}/%{_libdir}/icecc/bin/$i - rm -f %{buildroot}/%{_bindir}/$i -done - -# relativize the symlinks -symlinks -cs %{buildroot}/%{_libdir}/icecc/bin - -# install manpages -mkdir -p %{buildroot}/%{_mandir}/man{1,7,8} -mv mans/scheduler.1 mans/icecc-scheduler.1 -for i in mans/*.1 mans/*.7; do - install -m 644 $i %{buildroot}/%{_mandir}/man${i##*.} -done - # install config file and initscripts install -D -m 644 suse/sysconfig.icecream %{buildroot}/%{_sysconfdir}/sysconfig/icecream install -d -m 755 %{buildroot}/%{_unitdir} install -p -m 644 fedora/*.service %{buildroot}/%{_unitdir} -install -d -m 755 %{buildroot}/%{_prefix}/lib/icecream -install -p -m 755 fedora/*-wrapper %{buildroot}/%{_prefix}/lib/icecream +install -p -m 755 fedora/*-wrapper %{buildroot}/%{_libexecdir}/icecc install -d -m 755 %{buildroot}/%{_sysconfdir}/profile.d install -p -m 644 icecream.sh icecream.csh %{buildroot}/%{_sysconfdir}/profile.d @@ -177,7 +167,6 @@ exit 0 %post /sbin/ldconfig -# if [ "$1" -le 1 ]; then # First install %if %{with selinux} for selinuxvariant in %{selinux_variants}; do semodule -s ${selinuxvariant} -i \ @@ -192,20 +181,14 @@ done restorecon -R %{_localstatedir}/cache/icecream 2>/dev/null ||: restorecon %{_localstatedir}/log/iceccd 2>/dev/null ||: %endif -# fi -if [ $1 -eq 1 ] ; then # Initial installation - /bin/systemctl daemon-reload >/dev/null 2>&1 || : -fi +%systemd_post iceccd.service icecc-scheduler.service exit 0 %preun -if [ $1 -eq 0 ]; then # Final removal - /bin/systemctl --no-reload disable iceccd.service icecc-scheduler.service > /dev/null 2>&1 || : - /bin/systemctl stop iceccd.service icecc-scheduler.service > /dev/null 2>&1 || : -# rm -rf %{_localstatedir}/cache/icecream - +%systemd_preun iceccd.service icecc-scheduler.service %if %{with selinux} +if [ $1 -eq 0 ]; then # Final removal for selinuxvariant in %{selinux_variants}; do %saveFileContext ${selinuxvariant} semanage port -d -S ${selinuxvariant} -t iceccd_port_t -p tcp 10245 2>/dev/null ||: @@ -213,17 +196,13 @@ if [ $1 -eq 0 ]; then # Final removal semanage port -d -S ${selinuxvariant} -t icecc_scheduler_port_t -p tcp 8766 2>/dev/null ||: semanage port -d -S ${selinuxvariant} -t icecc_scheduler_port_t -p udp 8765 2>/dev/null ||: done -%endif - fi +%endif exit 0 %postun /sbin/ldconfig -/bin/systemctl daemon-reload >/dev/null 2>&1 || : -if [ $1 -ge 1 ]; then # Upgrade - /bin/systemctl try-restart iceccd.service icecc-scheduler.service >/dev/null 2>&1 || : -fi +%systemd_postun_with_restart iceccd.service icecc-scheduler.service %if %{with selinux} if [ $1 -eq 0 ]; then # Final removal for selinuxvariant in %{selinux_variants}; do @@ -234,36 +213,19 @@ fi %endif exit 0 -%triggerun -- icecream < 0.9.7-2 -/usr/bin/systemd-sysv-convert --save iceccd >/dev/null 2>&1 ||: -/usr/bin/systemd-sysv-convert --save icecc-scheduler >/dev/null 2>&1 ||: -/sbin/chkconfig --del iceccd >/dev/null 2>&1 || : -/sbin/chkconfig --del icecc-scheduler >/dev/null 2>&1 || : -/bin/systemctl try-restart iceccd.service icecc-scheduler.service >/dev/null 2>&1 || : - -%clean -rm -rf %{buildroot} - %files %defattr(-,root,root,-) %doc COPYING README NEWS TODO %{_bindir}/icecc %{_bindir}/icerun -%dir %{_libdir}/icecc/ -%dir %{_libdir}/icecc/bin/ -%{_libdir}/icecc/bin/cc -%{_libdir}/icecc/bin/gcc -%{_libdir}/icecc/bin/c++ -%{_libdir}/icecc/bin/g++ -%{_libdir}/icecc/icecc-create-env +%{_libexecdir}/icecc/ %{_libdir}/libicecc.so.* %{_sbindir}/iceccd %{_sbindir}/icecc-scheduler %config(noreplace) %{_sysconfdir}/sysconfig/icecream %config(noreplace) %{_sysconfdir}/profile.d/icecream.*sh %{_unitdir}/icecc*.service -%{_prefix}/lib/icecream -%{_localstatedir}/cache/icecream +%attr(0775, root, icecream) %{_localstatedir}/cache/icecream %{_mandir}/man*/* %{?with_selinux:%{_datadir}/selinux/*/icecream.pp} @@ -275,6 +237,14 @@ rm -rf %{buildroot} %{_libdir}/pkgconfig/icecc.pc %changelog +* Mon Aug 26 2013 Michal Schmidt - 1.0.1-1 +- Rebase to current upstream release. (#888183, #914087, #925572, #992557) +- Build with librsync and libcap-ng support. +- Build manpages from included DocBook sources. +- Disable the SELinux module, it's out of date. +- Enable PIE. (#955456) +- Modernize spec file. (#850154) + * Sat Aug 03 2013 Fedora Release Engineering - 0.9.7-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild