X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=rpm%2Frvm-ruby.spec;h=34542bb98450d027afdedacd7dcece5e4d2db361;hb=b5cb263fd6843f795bf7f80992b556c3722c6123;hp=284109e6525b04a19aa152a80538154bc804e689;hpb=adb9cdb4edb0e185b873ed706c27a14cd9edf7af;p=rvm-ruby.git diff --git a/rpm/rvm-ruby.spec b/rpm/rvm-ruby.spec index 284109e..34542bb 100644 --- a/rpm/rvm-ruby.spec +++ b/rpm/rvm-ruby.spec @@ -4,30 +4,41 @@ # RVM can not be sourced with default /bin/sh %define _buildshell /bin/bash -Name: rvm-ruby -Summary: Ruby Version Manager -Version: 4 # Version will be appended the commit date -# choose a version from https://github.com/wayneeseguin/rvm/tags -Release: 1.20.10 +# PL conventions +%define name rvm-ruby +# pick a RVM version from https://github.com/wayneeseguin/rvm/tags +%define version 1.20.10 +%define taglevel 7 +%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}} + +Summary: Ruby Version Manager (including Rubies and Gems) +Name: %{name} +Version: %{version} +Release: %{release} License: ASL 2.0 -URL: http://rvm.beginrescueend.com/ +URL: http://rvm.io/ Group: Applications/System BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n) BuildRequires: bash curl git BuildRequires: gcc-c++ patch chrpath readline readline-devel zlib-devel libyaml-devel libffi-devel openssl-devel autoconf automake libtool bison BuildRequires: sed grep tar gzip bzip2 make file +# for OMF: +BuildRequires: tar libxml2 libxml2-devel libxslt libxslt-devel Requires(pre): shadow-utils # For rvm Requires: bash curl git # Basics for building ruby 1.8/1.9 -Requires: gcc-c++ patch readline readline-devel zlib-devel libyaml-devel libffi-devel openssl-devel autoconf automake libtool bison +# We expect all the building to take place .. at build-time, so let's take this out +#Requires: gcc-c++ patch readline readline-devel zlib-devel libyaml-devel libffi-devel openssl-devel autoconf automake libtool bison # Used by the scripts Requires: sed grep tar gzip bzip2 make file +# for OMF: +Requires: libxml2 libxslt %description -RVM is the Ruby Version Manager (rvm). It manages Ruby interpreter environments +RVM is the Ruby Version Manager. It manages Ruby interpreter environments and switching between them. This package is meant for use by multiple users maintaining a shared copy of @@ -39,13 +50,11 @@ ensure correct permissions for the shared RVM content. RVM is activated for all logins by default. To disable remove %{_sysconfdir}/profile.d/rvm.sh and source rvm from each users shell. -%build - %install rm -rf %{buildroot} # Clean the env -for i in `env | grep ^rvm_ | cut -d"=" -f1`; do +for i in $(env | grep ^rvm_ | cut -d"=" -f1); do unset $i; done @@ -56,7 +65,7 @@ export rvm_ignore_rvmrc=1 \ rvm_path="%{buildroot}%{rvm_dir}" \ rvm_man_path="%{buildroot}%{_mandir}" \ HOME=%{buildroot} -\curl -L https://get.rvm.io | bash -s stable --version %{release} +\curl -L https://get.rvm.io | bash -s stable --version %{version} ) # So members of the rvm group can write to it @@ -110,11 +119,12 @@ export rvm_man_path="%{buildroot}%{_mandir}" source ${rvm_path}/scripts/rvm gemi='gem install --no-ri --no-rdoc' -#touch $rvm_path/RELEASE ruby_tag=ruby-1.9.3-p286 rvm install $ruby_tag rvm use $ruby_tag -$gemi bundler +rvm gemset create omf +rvm use $ruby_tag@omf --default +$gemi omf_rc #$gemi whatever_gem_you_need #ruby_tag=ruby-1.8.7-p352 @@ -125,22 +135,17 @@ rvm cleanup all export br=%{buildroot} -# Remove sources -rm -rf $br/usr/lib/rvm/src/* -# Remove logfiles -find $br/usr/lib/rvm/log -type f -exec rm {} \; - # Strip binaries #find $br -type f -print0 |xargs -0 file --no-dereference --no-pad |grep 'not stripped' |cut -f1 -d: |xargs -r strip # Strip and Fix bad paths in generated files # That is not optimized, but that is not supposed to be done often -for f in `find $br -type f -print0 |xargs -0 file --no-dereference --no-pad |grep ': ELF' |cut -f1 -d:`; do +for f in $(find $br -type f -print0 |xargs -0 file --no-dereference --no-pad |grep ': ELF' |cut -f1 -d:); do strip $f grep "$br" $f || continue - line=`chrpath -l $f` || continue + line=$(chrpath -l $f) || continue echo $line |grep "$br" || continue - chrpath -r `echo $line |cut -f2 -d= |sed "s,$br,,"` $f + chrpath -r $(echo $line |cut -f2 -d= |sed "s,$br,,") $f done # Replace bad paths in text files @@ -154,8 +159,22 @@ slashes=$(printf "%s" "${ch// //}") find $br -type f -print0 | xargs -0 sed -i "s,$br,$slashes,g" # Fix symlinks with bad path -for f in `find $br -type l |grep "$br"`; do - ln -sfn `readlink -f $f |sed "s,$br,,"` $f +# the canonical path of the build root +brc=$(readlink -f $br) +for f in $(find $br -type l); do + # some symlinks are relative, in which case we want to preserve them + # do *not* mention -f here as it would always return an absolute path + dest=$(readlink $f) + # relative symlinks have $dest not starting with a / + first_step=$(echo $dest | cut -d / -f1) + # absolute paths have a void first_step + if [ -z "$first_step" ] ; then + # destination is an absolute path, let's fix it + # call readlink with -f so all symlinmks are solved + # and so we can reliably substitute $brc that is also canonicalized + destc=$(readlink -f $f | sed -e "s,^$brc,,") + ln -sfn $destc $f + fi done find $br -maxdepth 1 -name '.*' -exec rm -rf {} \; @@ -163,6 +182,9 @@ rm $br/usr/share/man/man1/rvm.1.gz %clean rm -rf %{buildroot} +# it appears that, because we build as root, rvm installs stuff in /etc on the build box +# which is not desirable, so let us get rid of that - don't worry if that fails +find /etc -name 'rvm*' | xargs rm || : %pre getent group %{rvm_group} >/dev/null || groupadd -r %{rvm_group} @@ -176,6 +198,9 @@ exit 0 %{_mandir}/man1/* %changelog +* Tue Jun 25 2013 Thierry Parmentelat - rvm-ruby-1.20.10-6 +- add omf-rc in the mix + * Fri May 18 2013 Christoph Dwertmann - 4.xxx - downloads RVM instead of relying on local sources - works with latest RVM and Fedora