diff --git a/pkg/fedora/SOURCES b/pkg/fedora/SOURCES index 644de6f6c..eb326e9f6 100644 --- a/pkg/fedora/SOURCES +++ b/pkg/fedora/SOURCES @@ -2,3 +2,4 @@ diaspora-setup diaspora-wsd diaspora.logconf +make_rel_symlink.py diff --git a/pkg/fedora/diaspora.spec b/pkg/fedora/diaspora.spec index 2b2da12fd..0d07ddb43 100644 --- a/pkg/fedora/diaspora.spec +++ b/pkg/fedora/diaspora.spec @@ -13,6 +13,7 @@ Source: %{name}-%{version}-%{git_release}.tar.gz Source1: diaspora-wsd Source2: diaspora-setup Source3: diaspora.logconf +Source4: make_rel_symlink.py BuildArch: noarch BuildRoot: %{_rmpdir}/not-used-in-fedora/ @@ -37,6 +38,10 @@ rm -rf master/vendor/bundle %install rm -fr $RPM_BUILD_ROOT +sed -i \ + '/BUNDLE_PATH/s|:.*|: %{_libdir}/diaspora-bundle/master/vendor/bundle|' \ + master/.bundle/config + cp master/GNU-AGPL-3.0 master/COPYRIGHT master/README.md master/AUTHORS . cp master/pkg/fedora/README.md README-Fedora.md @@ -56,10 +61,12 @@ mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/log/diaspora mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp -rm -rf $RPM_BUILD_ROOT/%{_datadir}/diaspora/master/vendor/bundle -rm -rf $RPM_BUILD_ROOT/%{_datadir}/diaspora/master/log -rm -rf $RPM_BUILD_ROOT/%{_datadir}/diaspora/master/public/uploads -rm -rf $RPM_BUILD_ROOT/%{_datadir}/diaspora/master/tmp +%{SOURCE4} $RPM_BUILD_ROOT/%{_localstatedir}/log/diaspora \ + $RPM_BUILD_ROOT/%{_datadir}/diaspora/master/log +%{SOURCE4} $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads \ + $RPM_BUILD_ROOT/%{_datadir}/diaspora/master/public/uploads +%{SOURCE4} $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp \ + $RPM_BUILD_ROOT/%{_datadir}/diaspora/master/tmp find $RPM_BUILD_ROOT/%{_datadir}/diaspora -type d \ -fprintf dirs '%%%dir "%%p"\n' @@ -71,26 +78,22 @@ sed -i -e '\|.*/master/config.ru"$|d' \ -e 's|%{buildroot}||' -e 's|//|/|' -e '/""/d' \ files -%post -ln -sf %{_localstatedir}/log/diaspora \ - %{_datadir}/diaspora/master/log &>/dev/null || : -ln -sf %{_libdir}/diaspora-bundle/master/vendor/bundle \ - .%{_datadir}/diaspora/master/vendor &>/dev/null || : -ln -sf %{_localstatedir}/lib/diaspora/uploads \ - %{_datadir}/diaspora/master/public/uploads &>/dev/null || : -ln -sf %{_localstatedir}/lib/diaspora/tmp \ - %{_datadir}/diaspora/master/tmp &>/dev/null || : +%post /sbin/chkconfig --add diaspora-wsd + + %preun if [ $1 -eq 0 ] ; then - service diaspora-wsd stop >/dev/null 2>&1 || : + service diaspora-wsd stop &>/dev/null || : /sbin/chkconfig --del diaspora-wsd fi + %clean rm -fr $RPM_BUILD_ROOT + %files -f files %defattr(-, root, root, 0755) %doc AUTHORS README.md GNU-AGPL-3.0 COPYRIGHT README-Fedora.md @@ -99,6 +102,9 @@ rm -fr $RPM_BUILD_ROOT %attr(-, diaspora, diaspora) %{_localstatedir}/log/diaspora %attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/uploads %attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/tmp +%{_datadir}/diaspora/master/tmp +%{_datadir}/diaspora/master/public/uploads +%{_datadir}/diaspora/master/log %config(noreplace) %{_sysconfdir}/logrotate.d/diaspora %{_sysconfdir}/init.d/diaspora-wsd diff --git a/pkg/fedora/make_rel_symlink.py b/pkg/fedora/make_rel_symlink.py new file mode 100755 index 000000000..5c893056f --- /dev/null +++ b/pkg/fedora/make_rel_symlink.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +import os +import os.path +import sys +import pdb +import shutil + +def relative_ln_s( from_, to_ ): + """ + + This is just so dirty & boring: create a relative symlink, making the + to_ path relative to from_. No errorchecks. Both arguments must be + files, a destination directory doesn't work (I think). An existing + file in to_ will be removed. + + """ + prefix = os.path.commonprefix( [ to_, from_ ] ) + if prefix == '': + prefix = '/' + source = from_.split( prefix )[ 1 ] + dest = to_.split( prefix )[ 1 ] + level = len( dest.split( '/' ) ) - 1 + path = ( '../' * level ) + source + return path + +USAGE = 'Usage: make_rel_symlink [-p] ' + +just_print = False; +if sys.argv[1] == "-p": + just_print = True; + sys.argv = sys.argv[ 1:] + +if len( sys.argv ) != 3: + print USAGE + sys.exit( 1 ) + +if os.path.isdir( sys.argv[2] ): + print "Removing link target dir:" + sys.argv[2] + shutil.rmtree( sys.argv[2]) + +link_path = relative_ln_s( sys.argv[1], sys.argv[2] ) +if just_print: + print link_path +else: + os.chdir( os.path.dirname( sys.argv[2])) + target = os.path.basename( sys.argv[2]) + if os.path.exists( target ): + os.unlink( target) + os.symlink( link_path, target) + +