Symlink tmp-dir to /var/lib,leaving other files to root.

Turns the overall installation to being write-protected.
This commit is contained in:
Alec Leamas 2010-10-10 16:38:01 +02:00
parent 0c30f544d9
commit 97f7b4d2ad
3 changed files with 40 additions and 43 deletions

View file

@ -68,15 +68,6 @@ directory, copy-paste previous version nr. It will be updated.
This has been confirmed to start up and provide basic functionality both using
the thin webserver and apache passenger, and on 32/64 bit systems.
#### Bugs
As of now, diaspora fails if it not owns all file under /usr/share/diaspora.
I guess this means diaspora writes some stuff somewhere. In the long run,
this should be located and symlinked to /var,leaving the rest of the files
owned by root. FTM, all files in /usr/share/diaspore are owned by
diaspora
#### Implementation
'make-dist.sh source' script checks out latest version of diaspora into the
@ -89,17 +80,18 @@ patches, the content of diaspora-bundle.
Here is also support for running the diaspora websocket service as a system
service through /sbin/service and some install scripts.
Diaspora files are stored in /usr/share/diaspora, and owned by diaspora. The
Diaspora files are stored in /usr/share/diaspora, and owned by root. The
bundle, containing some C extensions, is architecture-dependent and lives
in /usr/lib[64]/diaspora. Log files are in /var/log/diaspora. Symlinks in
/usr/share diaspora makes log and bundle available as expected by diaspora app.
This is more or less as mandated by LSB and Fedora packaging rules.
find /usr/share/diaspora/ -type l -exec ls -l {} \; | awk '{print $9, $10, $11}'
/usr/share/diaspora/master/public/uploads -> /var/lib/diaspora/uploads
/usr/share/diaspora/master/log -> /var/log/diaspora
/usr/share/diaspora/master/vendor/bundle -> /usr/lib/diaspora-bundle/master/vendor/bundle
/usr/share diaspora makes log, bundle and tmp dir available as expected by
diaspora app. This is more or less as mandated by LSB and Fedora packaging rules.
find . -type l -exec ls -l {} \; | awk '{print $9, $10, $11}'
./public/uploads -> /var/lib/diaspora/uploads
./log -> /var/log/diaspora
./tmp -> /var/lib/diaspora/tmp
./vendor/bundle -> /usr/lib/diaspora-bundle/master/vendor/bundle
#### Discussion

View file

@ -53,6 +53,7 @@ cp -ar master $RPM_BUILD_ROOT/%{_datadir}/diaspora
cp -ar master/.gitignore master/.bundle $RPM_BUILD_ROOT/%{_datadir}/diaspora/master
cp diaspora-setup $RPM_BUILD_ROOT/%{_datadir}/diaspora
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp
find $RPM_BUILD_ROOT/%{_datadir}/diaspora -type d -fprintf dirs '%%%dir "%%p"\n'
find -L $RPM_BUILD_ROOT/%{_datadir}/diaspora -type f -fprintf files '"%%p"\n'
@ -67,6 +68,7 @@ sed -i -e '\|.*/master/config.ru"$|d' \
rm -f %{_datadir}/diaspora/master/vendor/bundle
rm -f %{_datadir}/diaspora/master/log
rm -f %{_datadir}/diaspora/master/public/uploads
rm -rf %{_datadir}/diaspora/master/tmp
ln -s %{_localstatedir}/log/diaspora \
%{_datadir}/diaspora/master/log || :
@ -74,6 +76,8 @@ ln -s %{_libdir}/diaspora-bundle/master/vendor/bundle \
%{_datadir}/diaspora/master/vendor || :
ln -s %{_localstatedir}/lib/diaspora/uploads \
%{_datadir}/diaspora/master/public/uploads || :
ln -s %{_localstatedir}/lib/diaspora/tmp \
%{_datadir}/diaspora/master/tmp || :
/sbin/chkconfig --add diaspora-ws || :
%preun
@ -86,12 +90,13 @@ fi
[ "$RPM_BUILD_ROOT" != "/" ] && rm -fr $RPM_BUILD_ROOT
%files -f files
%defattr(-, diaspora, diaspora, 0755)
%defattr(-, root, root, 0755)
%doc README.md GNU-AGPL-3.0
%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config.ru
%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config/environment.rb
%attr(-, diaspora, diaspora) %{_localstatedir}/log/diaspora
%attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/uploads
%attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/tmp
%config(noreplace) %{_sysconfdir}/logrotate.d/diaspora
%{_sysconfdir}/init.d/diaspora-ws

View file

@ -22,9 +22,9 @@ function git_id
file=""
dir=$file_or_dir
else
file=$(basename $file_or_dir)
file=$(basename $file_or_dir)
dir=$(dirname $file_or_dir)
fi
fi
export LANG=C
(
@ -59,14 +59,14 @@ function fix_alphatag()
else
{
gsub( "1[.].*", "")
printf( "%s%s-1.%s%s\n",
printf( "%s%s-1.%s%s\n",
$0, version, release,dist)
done = 1
}
next
}
{ print }' \
< $1 > $1.tmp && mv -f $1.tmp $1
< $1 > $1.tmp && mv -f $1.tmp $1
}
function fix_bundle_deps
@ -81,7 +81,7 @@ function fix_bundle_deps
next
}
{ print}' \
< $1 > $1.tmp && mv -f $1.tmp $1
< $1 > $1.tmp && mv -f $1.tmp $1
}
function patch()
@ -90,7 +90,7 @@ function patch()
{
sed -e "/^%define/s|HEAD|$2|" \
-e '/^Version:/s|.*|Version: '$1'|' \
<diaspora.spec >dist/diaspora.spec
<diaspora.spec >dist/diaspora.spec
fix_alphatag dist/diaspora.spec $1 $2
bundle_id=$(git_id dist/diaspora/Gemfile)
dist_tag=$(rpm --eval %dist)
@ -98,7 +98,7 @@ function patch()
sed -e "/^%define/s|HEAD|$bundle_id|" \
-e '/^Version:/s|.*|Version: '$1'|' \
< diaspora-bundle.spec > dist/diaspora-bundle.spec
cp dist/diaspora.spec dist/diaspora/diaspora.spec
}
@ -106,12 +106,12 @@ function checkout()
# Checkout last version of diaspora unless it's already there.
# Usage: checkout [commit id, defaults to HEAD]
# Returns: commit for current branch's HEAD.
{
{
mkdir dist >/dev/null 2>&1 || :
(
cd dist
cd dist
test -d diaspora || {
git clone --quiet $GIT_REPO;
git clone --quiet $GIT_REPO;
(
cd diaspora;
git remote add upstream \
@ -121,11 +121,11 @@ function checkout()
done
)
}
cd diaspora;
git fetch --quiet upstream
cd diaspora;
git fetch --quiet upstream
git merge --quiet upstream/master
git checkout --quiet ${1:-'HEAD'}
git_id -n
git_id -n
)
}
@ -136,10 +136,10 @@ function make_dist
{
commit=$(checkout ${1:-'HEAD'})
echo "Creating source tarball for $commit"
patch $VERSION $commit
patch $VERSION $commit
RELEASE_DIR="diaspora-$VERSION-$commit"
rm -rf dist/${RELEASE_DIR}
rm -rf dist/${RELEASE_DIR}
mkdir dist/${RELEASE_DIR}
cp diaspora-ws diaspora-setup diaspora.logconf dist/${RELEASE_DIR}
cd dist
@ -173,7 +173,7 @@ function make_bundle()
test -e "dist/$bundle_name.tar.gz" || {
echo "Creating bundle $bundle_name"
cd dist
rm -rf $bundle_name
rm -rf $bundle_name
mkdir -p $bundle_name/bundle
pushd diaspora > /dev/null
bundle install --deployment \
@ -186,7 +186,7 @@ function make_bundle()
tar czf $bundle_name.tar.gz $bundle_name
cd ..
}
echo
echo
echo "Bundle: dist/$bundle_name.tar.gz"
}
@ -201,7 +201,7 @@ function make_links()
echo "Linking sources to $dest"
src_commit="${1:-$( checkout)}"
src="dist/diaspora-$VERSION-$src_commit.tar.gz"
ln -sf $PWD/$src $dest
@ -227,7 +227,7 @@ function usage()
dist Build a diaspora application tarball.
bundle Build a bundler(1) bundle for diaspora.
links Symlink bundle and source tarballs to rpm source dir.
All results are stored in dist/
EOF
}
@ -246,10 +246,10 @@ test "$1" = "-c" && {
commit="$2"
shift; shift
}
case $1 in
"bundle") make_bundle $commit
;;
@ -262,11 +262,11 @@ case $1 in
"fix_gemfile")
fix_gemfile
;;
*) usage
exit 1
;;
esac