Accepting request 620080 from home:StefanBruens:branches:devel:tools:building
- Add firewalld rules, remove SuSEFirewall2 config - Add systemd service units for icecream, icecream-scheduler - Create socket and environment directories using tmpfiles.d - Strip no longer needed options from config file - Spec file cleanup: - remove cruft for 12.2 and older - use %license tag OBS-URL: https://build.opensuse.org/request/show/620080 OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/icecream?expand=0&rev=64
This commit is contained in:
committed by
Git OBS Bridge
parent
954b59f105
commit
c474bdd3d0
10
icecc-scheduler-wrapper
Normal file
10
icecc-scheduler-wrapper
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
params=""
|
||||||
|
|
||||||
|
if test -n "$ICECREAM_NETNAME"; then
|
||||||
|
params="$params -n $ICECREAM_NETNAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec /usr/sbin/icecc-scheduler $params
|
||||||
|
|
13
icecc-scheduler.service
Normal file
13
icecc-scheduler.service
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Icecream distributed compiler scheduler
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
EnvironmentFile=-/etc/sysconfig/icecream
|
||||||
|
User=icecc
|
||||||
|
Group=icecc
|
||||||
|
SyslogIdentifier=icecc-scheduler
|
||||||
|
ExecStart=/usr/lib/icecc/icecc-scheduler-wrapper
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
8
icecc-scheduler.xml
Normal file
8
icecc-scheduler.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<service>
|
||||||
|
<short>Icecream scheduler</short>
|
||||||
|
<description>Icecream is a distributed compiler daemon. Enable this option if this host runs the scheduler.</description>
|
||||||
|
<port protocol="tcp" port="8765"/>
|
||||||
|
<port protocol="tcp" port="8766"/><!-- Telnet interface -->
|
||||||
|
<port protocol="udp" port="8765"/><!-- Broadcast/discovery port -->
|
||||||
|
</service>
|
25
iceccd-wrapper
Normal file
25
iceccd-wrapper
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
params=""
|
||||||
|
|
||||||
|
if test -n "$ICECREAM_NETNAME"; then
|
||||||
|
params="$params -n $ICECREAM_NETNAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ICECREAM_SCHEDULER_HOST"; then
|
||||||
|
params="$params -s $ICECREAM_SCHEDULER_HOST"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$ICECREAM_ALLOW_REMOTE" = "no" 2> /dev/null; then
|
||||||
|
params="$params --no-remote"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ICECREAM_MAX_JOBS"; then
|
||||||
|
if test "$ICECREAM_MAX_JOBS" -eq 0 2> /dev/null; then
|
||||||
|
params="$params -m 1 --no-remote"
|
||||||
|
else
|
||||||
|
params="$params -m $ICECREAM_MAX_JOBS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec /usr/sbin/iceccd $@ $params
|
13
iceccd.service
Normal file
13
iceccd.service
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Icecream Distributed Compiler
|
||||||
|
After=network.target nss-lookup.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
EnvironmentFile=-/etc/sysconfig/icecream
|
||||||
|
SyslogIdentifier=iceccd
|
||||||
|
ExecStart=/usr/lib/icecc/iceccd-wrapper -u icecream -vv -b /var/cache/icecream/
|
||||||
|
Nice=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
7
iceccd.xml
Normal file
7
iceccd.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<service>
|
||||||
|
<short>Icecream compiler daemon (iceccd)</short>
|
||||||
|
<description>Icecream is a distributed compiler daemon. Enable this option if this host is a compile node.</description>
|
||||||
|
<port protocol="tcp" port="10245"/>
|
||||||
|
<source-port port="8765" protocol="udp"/><!-- scheduler announcements -->
|
||||||
|
</service>
|
4
icecream-tmpfiles.conf
Normal file
4
icecream-tmpfiles.conf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# See tmpfiles.d(5) for details
|
||||||
|
#Type Path Mode UID GID Age Argument
|
||||||
|
d /run/icecc 0775 root icecream -
|
||||||
|
Z /var/cache/icecream 0755 icecream icecream -
|
@@ -1,3 +1,14 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jun 29 01:18:26 UTC 2018 - stefan.bruens@rwth-aachen.de
|
||||||
|
|
||||||
|
- Add firewalld rules, remove SuSEFirewall2 config
|
||||||
|
- Add systemd service units for icecream, icecream-scheduler
|
||||||
|
- Create socket and environment directories using tmpfiles.d
|
||||||
|
- Strip no longer needed options from config file
|
||||||
|
- Spec file cleanup:
|
||||||
|
- remove cruft for 12.2 and older
|
||||||
|
- use %license tag
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jan 3 08:46:20 UTC 2018 - mpluskal@suse.com
|
Wed Jan 3 08:46:20 UTC 2018 - mpluskal@suse.com
|
||||||
|
|
||||||
|
@@ -24,23 +24,33 @@ Name: icecream
|
|||||||
Version: 1.1
|
Version: 1.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: For Distributed Compile in the Network
|
Summary: For Distributed Compile in the Network
|
||||||
License: GPL-2.0+ AND LGPL-2.1+
|
License: GPL-2.0-or-later AND LGPL-2.1-or-later
|
||||||
Group: Development/Tools/Building
|
Group: Development/Tools/Building
|
||||||
URL: https://github.com/icecc/icecream
|
URL: https://github.com/icecc/icecream
|
||||||
Source0: https://github.com/icecc/icecream/archive/%{version}.tar.gz
|
Source0: https://github.com/icecc/icecream/archive/%{version}.tar.gz
|
||||||
|
Source1: iceccd.xml
|
||||||
|
Source2: iceccd.service
|
||||||
|
Source3: iceccd-wrapper
|
||||||
|
Source4: icecc-scheduler.xml
|
||||||
|
Source5: icecc-scheduler.service
|
||||||
|
Source6: icecc-scheduler-wrapper
|
||||||
|
Source7: icecream-tmpfiles.conf
|
||||||
|
Source8: sysconfig.icecream
|
||||||
BuildRequires: docbook2x
|
BuildRequires: docbook2x
|
||||||
|
BuildRequires: firewall-macros
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: libcap-ng-devel
|
BuildRequires: libcap-ng-devel
|
||||||
BuildRequires: libtool
|
BuildRequires: libtool
|
||||||
BuildRequires: libxslt-tools
|
BuildRequires: libxslt-tools
|
||||||
BuildRequires: lzo-devel
|
BuildRequires: lzo-devel
|
||||||
|
BuildRequires: systemd-rpm-macros
|
||||||
Requires: %{_bindir}/bzip2
|
Requires: %{_bindir}/bzip2
|
||||||
Requires: /bin/tar
|
Requires: /bin/tar
|
||||||
Requires: logrotate
|
Requires: logrotate
|
||||||
Requires(pre): %fillup_prereq
|
Requires(pre): %fillup_prereq
|
||||||
Requires(pre): %insserv_prereq
|
|
||||||
Requires(pre): %{_sbindir}/groupadd
|
Requires(pre): %{_sbindir}/groupadd
|
||||||
Requires(pre): %{_sbindir}/useradd
|
Requires(pre): %{_sbindir}/useradd
|
||||||
|
%{?systemd_requires}
|
||||||
Recommends: gcc-c++
|
Recommends: gcc-c++
|
||||||
%if 0%{?suse_version} > 1315
|
%if 0%{?suse_version} > 1315
|
||||||
BuildRequires: clang-devel
|
BuildRequires: clang-devel
|
||||||
@@ -70,6 +80,7 @@ Wrapper symlinks for clang/clang++ for icecream distributed building.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
cp %{SOURCE8} suse/
|
||||||
# DO NOT ADD PATCHES without github reference
|
# DO NOT ADD PATCHES without github reference
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@@ -82,50 +93,86 @@ make %{?_smp_mflags} V=1
|
|||||||
|
|
||||||
%install
|
%install
|
||||||
%make_install templatesdir=%{_fillupdir}
|
%make_install templatesdir=%{_fillupdir}
|
||||||
|
# firewalld instead of SuSEfirewall2
|
||||||
|
rm -R %{buildroot}/%{_sysconfdir}/sysconfig/SuSEfirewall2.d
|
||||||
|
install -m644 -p -D %{SOURCE1} %{buildroot}%{_libexecdir}/firewalld/services/iceccd.xml
|
||||||
|
install -m644 -p -D %{SOURCE4} %{buildroot}%{_libexecdir}/firewalld/services/icecc-scheduler.xml
|
||||||
|
# unit files and wrappers
|
||||||
|
install -m644 -p -D %{SOURCE2} %{buildroot}%{_unitdir}/iceccd.service
|
||||||
|
install -m755 -p -D %{SOURCE3} %{buildroot}%{_libexecdir}/icecc/iceccd-wrapper
|
||||||
|
install -m644 -p -D %{SOURCE5} %{buildroot}%{_unitdir}/icecc-scheduler.service
|
||||||
|
install -m755 -p -D %{SOURCE6} %{buildroot}%{_libexecdir}/icecc/icecc-scheduler-wrapper
|
||||||
|
# make sure runtime directories are automatically created
|
||||||
|
install -m644 -p -D %{SOURCE7} %{buildroot}/%{_tmpfilesdir}/icecream.conf
|
||||||
|
# cleanup SysV init
|
||||||
|
rm %{buildroot}/%{_sysconfdir}/init.d/icecream
|
||||||
|
rm %{buildroot}/%{_sbindir}/rcicecream
|
||||||
|
ln -s service %{buildroot}/%{_sbindir}/rciceccd
|
||||||
|
ln -s service %{buildroot}/%{_sbindir}/rcicecc-scheduler
|
||||||
|
sed -i -e '1s@/usr/bin/env bash@/bin/bash@' %{buildroot}/%{_bindir}/icecc-create-env
|
||||||
|
|
||||||
%preun
|
%preun
|
||||||
%stop_on_removal icecream
|
%service_del_preun iceccd.service icecc-scheduler.service
|
||||||
|
|
||||||
%pre
|
%pre
|
||||||
%{_sbindir}/groupadd -r icecream 2> /dev/null || :
|
%{_sbindir}/groupadd -r icecream 2> /dev/null || :
|
||||||
%{_sbindir}/useradd -r -g icecream -s /bin/false -c "Icecream Daemon" -d %{_localstatedir}/cache/icecream icecream 2> /dev/null || :
|
%{_sbindir}/useradd -r -g icecream -s /bin/false -c "Icecream Daemon" -d %{_localstatedir}/cache/icecream icecream 2> /dev/null || :
|
||||||
|
%service_add_pre iceccd.service icecc-scheduler.service
|
||||||
|
# save state of old icecream SysV service
|
||||||
|
if [ "$1" -gt 1 ]; then
|
||||||
|
/usr/sbin/systemd-sysv-convert --save icecream || :
|
||||||
|
fi
|
||||||
|
|
||||||
%post
|
%post
|
||||||
# older icecream versions may have left some files owned by root:root in the cache
|
|
||||||
rm -rf -- %{_localstatedir}/cache/icecream/*
|
|
||||||
%if 0%{?suse_version}
|
%if 0%{?suse_version}
|
||||||
%{fillup_and_insserv -n icecream icecream}
|
%fillup_only
|
||||||
%endif
|
%endif
|
||||||
|
%tmpfiles_create %_tmpfilesdir/icecream.conf
|
||||||
|
%firewalld_reload
|
||||||
|
# migrate runlevel settings
|
||||||
|
if [ "$1" -gt 1 ] && [ -e /var/lib/systemd/sysv-convert/database ] ; then
|
||||||
|
grep -q 'ICECREAM_RUN_SCHEDULER="yes"' %{_sysconfdir}/sysconfig/icecream &&
|
||||||
|
sed -i -e '/icecream\s/ p; s/icecream\s/icecc-scheduler /' /var/lib/systemd/sysv-convert/database
|
||||||
|
sed -i -e '/icecream\s/ s/icecream\s/iceccd /' /var/lib/systemd/sysv-convert/database
|
||||||
|
fi
|
||||||
|
%service_add_post iceccd.service icecc-scheduler.service
|
||||||
|
# restart services
|
||||||
|
if [ "$1" -gt 1 ] ; then
|
||||||
|
if systemctl -q is-active icecream ; then
|
||||||
|
systemctl stop icecream
|
||||||
|
systemctl start iceccd
|
||||||
|
systemctl -q is-enabled icecc-scheduler && systemctl start icecc-scheduler
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
%postun
|
%postun
|
||||||
%restart_on_update icecream
|
%service_del_postun iceccd.service icecc-scheduler.service
|
||||||
%insserv_cleanup
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%doc COPYING README.md NEWS
|
%doc README.md NEWS
|
||||||
|
%license COPYING
|
||||||
%config %{_sysconfdir}/logrotate.d/icecream
|
%config %{_sysconfdir}/logrotate.d/icecream
|
||||||
%config %{_sysconfdir}/init.d/icecream
|
|
||||||
%{_bindir}/icecc-create-env
|
%{_bindir}/icecc-create-env
|
||||||
%{_bindir}/icecc
|
%{_bindir}/icecc
|
||||||
%{_bindir}/icerun
|
%{_bindir}/icerun
|
||||||
%{_sbindir}/icecc-scheduler
|
%{_sbindir}/icecc-scheduler
|
||||||
%{_sbindir}/iceccd
|
%{_sbindir}/iceccd
|
||||||
%{_sbindir}/rcicecream
|
%{_sbindir}/rcicecc*
|
||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
%{_libexecdir}/icecc
|
%{_libexecdir}/icecc
|
||||||
%exclude %{_libexecdir}/icecc/bin/clang
|
%exclude %{_libexecdir}/icecc/bin/clang
|
||||||
%exclude %{_libexecdir}/icecc/bin/clang++
|
%exclude %{_libexecdir}/icecc/bin/clang++
|
||||||
|
%dir %{_libexecdir}/firewalld/
|
||||||
|
%dir %{_libexecdir}/firewalld/services/
|
||||||
|
%{_libexecdir}/firewalld/services/icecc*.xml
|
||||||
|
%{_unitdir}/icecc*.service
|
||||||
|
%{_tmpfilesdir}/icecream.conf
|
||||||
%if 0%{?suse_version}
|
%if 0%{?suse_version}
|
||||||
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/*
|
|
||||||
%{_fillupdir}/sysconfig.icecream
|
%{_fillupdir}/sysconfig.icecream
|
||||||
%if 0%{?suse_version} <= 1220
|
|
||||||
/opt/icecream
|
|
||||||
%exclude /opt/icecream/bin/clang
|
|
||||||
%exclude /opt/icecream/bin/clang++
|
|
||||||
%endif
|
|
||||||
%endif
|
%endif
|
||||||
%attr(-,icecream,icecream) %{_localstatedir}/cache/icecream
|
%attr(-,icecream,icecream) %{_localstatedir}/cache/icecream
|
||||||
%attr(-,icecream,icecream) %{_localstatedir}/log/icecream
|
%attr(-,icecream,icecream) %{_localstatedir}/log/icecream
|
||||||
|
%ghost /run/icecc
|
||||||
|
|
||||||
%files -n libicecream-devel
|
%files -n libicecream-devel
|
||||||
%{_includedir}/icecc
|
%{_includedir}/icecc
|
||||||
@@ -135,9 +182,5 @@ rm -rf -- %{_localstatedir}/cache/icecream/*
|
|||||||
%files -n icecream-clang-wrappers
|
%files -n icecream-clang-wrappers
|
||||||
%{_libexecdir}/icecc/bin/clang
|
%{_libexecdir}/icecc/bin/clang
|
||||||
%{_libexecdir}/icecc/bin/clang++
|
%{_libexecdir}/icecc/bin/clang++
|
||||||
%if 0%{?suse_version} <= 1220
|
|
||||||
/opt/icecream/bin/clang
|
|
||||||
/opt/icecream/bin/clang++
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
44
sysconfig.icecream
Normal file
44
sysconfig.icecream
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#
|
||||||
|
## Type: string
|
||||||
|
## Path: Applications/icecream
|
||||||
|
## Default: ""
|
||||||
|
#
|
||||||
|
# Identification for the network the scheduler and daemon run on.
|
||||||
|
# You can have several distinct icecream networks in the same LAN
|
||||||
|
# for whatever reason.
|
||||||
|
#
|
||||||
|
ICECREAM_NETNAME=""
|
||||||
|
|
||||||
|
#
|
||||||
|
## Type: string
|
||||||
|
## Path: Applications/icecream
|
||||||
|
## Default: ""
|
||||||
|
#
|
||||||
|
# If the daemon can't find the scheduler by broadcast (e.g. because
|
||||||
|
# of a firewall) you can specify it.
|
||||||
|
#
|
||||||
|
ICECREAM_SCHEDULER_HOST=""
|
||||||
|
|
||||||
|
#
|
||||||
|
## Type: integer
|
||||||
|
## Path: Applications/icecream
|
||||||
|
## Default: ""
|
||||||
|
#
|
||||||
|
# You can overwrite here the number of jobs to run in parallel. Per
|
||||||
|
# default this depends on the number of (virtual) CPUs installed.
|
||||||
|
#
|
||||||
|
# Note: a value of "0" is actually interpreted as "1", however it
|
||||||
|
# also sets ICECREAM_ALLOW_REMOTE="no".
|
||||||
|
#
|
||||||
|
ICECREAM_MAX_JOBS=""
|
||||||
|
|
||||||
|
#
|
||||||
|
## Type: yesno
|
||||||
|
## Path: Applications/icecream
|
||||||
|
## Default: "yes"
|
||||||
|
#
|
||||||
|
# Specifies whether jobs submitted by other nodes are allowed to run on
|
||||||
|
# this one.
|
||||||
|
#
|
||||||
|
ICECREAM_ALLOW_REMOTE="yes"
|
||||||
|
|
Reference in New Issue
Block a user