X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=rpm%2Frvm-ruby.spec;h=d4417f2ed76542fc6f448509ba98c606b7a9cfd6;hb=e7f1d043d888316c6782935950d56c32150cc0be;hp=68c3e0247da61ab8ffef40e9e529db159ebd0fa2;hpb=0efbf69fec5e29ccf7cd974e216d0c1704f545d8;p=rvm-ruby.git diff --git a/rpm/rvm-ruby.spec b/rpm/rvm-ruby.spec index 68c3e02..d4417f2 100644 --- a/rpm/rvm-ruby.spec +++ b/rpm/rvm-ruby.spec @@ -6,14 +6,12 @@ Name: rvm-ruby Summary: Ruby Version Manager -Version: 3 # Version will be appended the commit date -Release: 1.el6_CS +Version: 4 # Version will be appended the commit date +Release: 1.20.9 License: ASL 2.0 URL: http://rvm.beginrescueend.com/ Group: Applications/System - -Source: %{name}-%{version}.tar - +#Source: %{name}-%{version}.tar #BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n) @@ -25,7 +23,7 @@ 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 +#Requires: gcc-c++ patch readline readline-devel zlib-devel libyaml-devel libffi-devel openssl-devel # Used by the scripts Requires: sed grep tar gzip bzip2 make file @@ -42,21 +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. -Rubies in this package: -ruby-1.9.3-p0 - bundler - bluepill - whenever - -ruby-1.9.2-p290 - bundler - bluepill - whenever - - -%prep -%setup -q - %build %install @@ -68,12 +51,14 @@ for i in `env | grep ^rvm_ | cut -d"=" -f1`; do done # Install everything into one directory -rvm_ignore_rvmrc=1 \ +( +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}" \ - ./install + HOME=%{buildroot} +\curl -L https://get.rvm.io | bash -s stable --version %{release} +) # So members of the rvm group can write to it find %{buildroot}%{rvm_dir} -exec chmod ug+w {} \; @@ -114,7 +99,7 @@ END_OF_RVMSH chmod 755 %{buildroot}%{_sysconfdir}/profile.d/rvm.sh -mv %{buildroot}%{_bindir}/rake %{buildroot}%{_bindir}/rvm-rake +#mv %{buildroot}%{_bindir}/rake %{buildroot}%{_bindir}/rvm-rake # At this point, install of RVM is finished @@ -125,24 +110,16 @@ mv %{buildroot}%{_bindir}/rake %{buildroot}%{_bindir}/rvm-rake 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' -ruby_tag=ruby-1.9.3-p0 +#touch $rvm_path/RELEASE +ruby_tag=ruby-1.9.3-p286 rvm install $ruby_tag rvm use $ruby_tag $gemi bundler -$gemi whenever -$gemi bluepill - -ruby_tag=ruby-1.9.2-p290 -rvm install $ruby_tag -rvm use $ruby_tag -$gemi bundler -$gemi whenever -$gemi bluepill +#$gemi whatever_gem_you_need #ruby_tag=ruby-1.8.7-p352 #rvm install $ruby_tag @@ -152,7 +129,9 @@ $gemi bluepill export br=%{buildroot} # Remove sources -rm -rf $br/usr/lib/rvm/src +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 @@ -171,6 +150,48 @@ 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" +# courtesy http://everydaywithlinux.blogspot.com.au/2012/11/patch-strings-in-binary-files-with-sed.html +function patch_strings_in_file() { + local FILE="$1" + local PATTERN="$2" + local REPLACEMENT="$3" + + # Find all unique strings in FILE that contain the pattern + STRINGS=$(strings ${FILE} | grep ${PATTERN} | sort -u -r) + + if [ "${STRINGS}" != "" ] ; then + echo "File '${FILE}' contain strings with '${PATTERN}' in them:" + + for OLD_STRING in ${STRINGS} ; do + # Create the new string with a simple bash-replacement + NEW_STRING=${OLD_STRING//${PATTERN}/${REPLACEMENT}} + + # Create null terminated ASCII HEX representations of the strings + OLD_STRING_HEX="$(echo -n ${OLD_STRING} | xxd -g 0 -u -ps -c 256)00" + NEW_STRING_HEX="$(echo -n ${NEW_STRING} | xxd -g 0 -u -ps -c 256)00" + + if [ ${#NEW_STRING_HEX} -le ${#OLD_STRING_HEX} ] ; then + # Pad the replacement string with null terminations so the + # length matches the original string + while [ ${#NEW_STRING_HEX} -lt ${#OLD_STRING_HEX} ] ; do + NEW_STRING_HEX="${NEW_STRING_HEX}00" + done + + # Now, replace every occurrence of OLD_STRING with NEW_STRING + echo -n "Replacing ${OLD_STRING} with ${NEW_STRING}... " + hexdump -ve '1/1 "%.2X"' ${FILE} | \ + sed "s/${OLD_STRING_HEX}/${NEW_STRING_HEX}/g" | \ + xxd -r -p > ${FILE}.tmp + mv ${FILE}.tmp ${FILE} + echo "Done!" + else + echo "New string '${NEW_STRING}' is longer than old" \ + "string '${OLD_STRING}'. Skipping." + fi + done + fi +} + # Strip object files in ar archives from bad path strings for f in `find $br -type f -name \*.a`; do td=`mktemp -d` @@ -182,11 +203,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 ' - $_.gsub!(/#{ENV["br"]}(.*?)\0/) do |s| - $1 + ( "\0" * ENV["br"].size ) + "\0" - end - ' $g + patch_strings_in_file $g "$br" done ar r $f * @@ -199,18 +216,16 @@ 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 ' - $_.gsub!(/#{ENV["br"]}(.*?)\0/) do |s| - $1 + ( "\0" * ENV["br"].size ) + "\0" - end - ' $f + patch_strings_in_file $f "$br" done # Fix symlinks with bad path for f in `find $br -type l |grep "$br"`; do - ln -sf `readlink -f $f |sed "s,$br,,"` $f + ln -sfn `readlink -f $f |sed "s,$br,,"` $f done +find $br -maxdepth 1 -name '.*' -exec rm -rf {} \; +rm $br/usr/share/man/man1/rvm.1.gz %clean rm -rf %{buildroot} @@ -224,10 +239,15 @@ exit 0 %config(noreplace) /etc/rvmrc %config(noreplace) /etc/profile.d/rvm.sh %attr(-,root,%{rvm_group}) %{rvm_dir} -%{_bindir} %{_mandir}/man1/* %changelog +* Fri May 18 2013 Christoph Dwertmann - 4.xxx +- downloads RVM instead of relying on local sources +- works with latest RVM and Fedora +- removed ruby build dependency +- no more clashing with distribution ruby + * Fri Mar 30 2012 Alexandre Fouche - 3.xxx Add some rubies and gems to compile: - 1.9.2-p290 + bundler, bluepill, whenever