X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=rpm%2Frvm-ruby.spec;h=dc6b8af32b8fa854779d7a7e327cecc81a3aca1d;hb=658ce693ca1cceb9413de98465c113bf2ffa427d;hp=10dc1d0ca7616d59334a39a4abbd30b0c6c2dc3d;hpb=f75158a5b51efce11d3a265a9d0bf117a3682156;p=rvm-ruby.git diff --git a/rpm/rvm-ruby.spec b/rpm/rvm-ruby.spec index 10dc1d0..dc6b8af 100644 --- a/rpm/rvm-ruby.spec +++ b/rpm/rvm-ruby.spec @@ -11,13 +11,13 @@ Release: 1.20.9 License: ASL 2.0 URL: http://rvm.beginrescueend.com/ Group: Applications/System - +#Source: %{name}-%{version}.tar #BuildArch: noarch 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 -BuildRequires: sed grep tar gzip bzip2 make file +BuildRequires: sed grep tar gzip bzip2 make file ruby Requires(pre): shadow-utils # For rvm @@ -40,9 +40,6 @@ 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. -%prep -%setup -q - %build %install @@ -53,16 +50,16 @@ for i in `env | grep ^rvm_ | cut -d"=" -f1`; do unset $i; done +( # Install everything into one directory export rvm_ignore_rvmrc=1 \ rvm_user_install_flag=0 \ rvm_path="%{buildroot}%{rvm_dir}" \ - rvm_bin_path="%{buildroot}%{_bindir}" \ rvm_man_path="%{buildroot}%{_mandir}" \ HOME=%{buildroot} - \curl -L https://get.rvm.io | bash -s stable --version %{release} #./install +) # So members of the rvm group can write to it find %{buildroot}%{rvm_dir} -exec chmod ug+w {} \; @@ -114,7 +111,6 @@ chmod 755 %{buildroot}%{_sysconfdir}/profile.d/rvm.sh export rvm_ignore_rvmrc=1 export rvm_user_install_flag=0 export rvm_path="%{buildroot}%{rvm_dir}" -export rvm_bin_path="%{buildroot}%{_bindir}" export rvm_man_path="%{buildroot}%{_mandir}" source ${rvm_path}/scripts/rvm gemi='gem install --no-ri --no-rdoc' @@ -134,6 +130,8 @@ export br=%{buildroot} # Remove sources rm -rf $br/usr/lib/rvm/src +# Remove logs +rm -rf $br/usr/lib/rvm/log/* # Strip binaries #find $br -type f -print0 |xargs -0 file --no-dereference --no-pad |grep 'not stripped' |cut -f1 -d: |xargs -r strip @@ -152,6 +150,17 @@ done find $br -type f \( -name \*.log -o -name \*.la \) -print0 |xargs -0 -r sed -i "s,$br,,g" find $br -type f -print0 |xargs -0 file --no-dereference --no-pad |grep ': .* text' |cut -f1 -d: |xargs -r sed -i "s,$br,,g" +# some Ruby code to replace library paths in binary files +# should work with Ruby 1.9 and 1.8 +! read -d '' fixpath <<"EOF" +if String.method_defined?(:encode) + $_.encode!("UTF-8", "UTF-8", :invalid => :replace) +end +$_.gsub!(/#{ENV["br"]}(.*?)\0/) do |s| + $1 + ( "\0" * ENV["br"].size ) + "\0" +end +EOF + # Strip object files in ar archives from bad path strings for f in `find $br -type f -name \*.a`; do td=`mktemp -d` @@ -163,11 +172,7 @@ for f in `find $br -type f -name \*.a`; do grep "$br" $g || continue # Replace the bad path with the good one, padded by nulls - ruby -p -i -e ' - $_.encode!("UTF-8", "UTF-8", :invalid => :replace).gsub!(/#{ENV["br"]}(.*?)\0/) do |s| - $1 + ( "\0" * ENV["br"].size ) + "\0" - end - ' $g + ruby -p -i -e "$fixpath" $g done ar r $f * @@ -180,11 +185,7 @@ for f in `find $br/usr/lib/rvm/rubies -type f -print0 |xargs -0 file --no-derefe grep "$br" $f || continue # Replace the bad path with the good one, padded by nulls - ruby -p -i -e ' - $_.encode!("UTF-8", "UTF-8", :invalid => :replace).gsub!(/#{ENV["br"]}(.*?)\0/) do |s| - $1 + ( "\0" * ENV["br"].size ) + "\0" - end - ' $f + ruby -p -i -e "$fixpath" $f done # Fix symlinks with bad path @@ -193,6 +194,7 @@ for f in `find $br -type l |grep "$br"`; do done find $br -maxdepth 1 -name '.*' -exec rm -rf {} \; +rm $br/usr/share/man/man1/rvm.1.gz %clean rm -rf %{buildroot} @@ -206,7 +208,6 @@ exit 0 %config(noreplace) /etc/rvmrc %config(noreplace) /etc/profile.d/rvm.sh %attr(-,root,%{rvm_group}) %{rvm_dir} -%{_bindir}/* %{_mandir}/man1/* %changelog