Use make_relative_symlink scripts to avoid %post ln commands.
Patching .bundle/config to use /usr/lib/diaspora-bundle, to avoid inter-package linking from diaspora to diaspora-bundle. This also leaves the content under vendor/bundle untouched. Uses kitchen script to create relative links within diaspora package.
This commit is contained in:
parent
1c00fc232e
commit
30b24a1079
3 changed files with 73 additions and 14 deletions
|
|
@ -2,3 +2,4 @@
|
|||
diaspora-setup
|
||||
diaspora-wsd
|
||||
diaspora.logconf
|
||||
make_rel_symlink.py
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
52
pkg/fedora/make_rel_symlink.py
Executable file
52
pkg/fedora/make_rel_symlink.py
Executable file
|
|
@ -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] <sourcefile> <destfile>'
|
||||
|
||||
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)
|
||||
|
||||
|
||||
Loading…
Reference in a new issue