cookutils diff cook @ rev 1088

Better maintain Ruby packages
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sat Aug 18 15:38:13 2018 +0300 (2018-08-18)
parents edf99e944ce6
children 77291d41f21a
line diff
     1.1 --- a/cook	Sat Jul 28 15:31:35 2018 +0300
     1.2 +++ b/cook	Sat Aug 18 15:38:13 2018 +0300
     1.3 @@ -591,6 +591,73 @@
     1.4  			tazpkg -gi --quiet --local --cookmode symlinks
     1.5  			symlinks -cr $install
     1.6  			;;
     1.7 +		gem)
     1.8 +			# some useful operations while Ruby gems cooking
     1.9 +			_gems="$(ruby -e'puts Gem.default_dir')"
    1.10 +
    1.11 +			# remove unwanted empty folders
    1.12 +			rmdir --ignore-fail-on-non-empty \
    1.13 +				$install/$_gems/build_info/ \
    1.14 +				$install/$_gems/cache/ \
    1.15 +				$install/$_gems/doc/ \
    1.16 +				$install/$_gems/extensions/
    1.17 +
    1.18 +			# move files to docdir
    1.19 +			docdir=$install/usr/share/doc/$PACKAGE-$VERSION
    1.20 +			for i in $(ls -ap $install/$_gems/gems/${PACKAGE#*-}-$VERSION/ | sed '
    1.21 +				/\/$/d; /^\./d; /gemspec$/d; /Rakefile*/d; /Gemfile*/d; /Makefile/d;
    1.22 +				/\.c$/d; /\.h$/d; /\.o$/d; /\.rb$/d; /\.so$/d; /\.yml$/d;
    1.23 +				/Manifest/d; /\.inc$/d; /depend/d;
    1.24 +				'); do
    1.25 +				mkdir -p $docdir # docdir will not be created when nothing to move
    1.26 +				mv $install/$_gems/gems/${PACKAGE#*-}-$VERSION/$i $docdir
    1.27 +			done
    1.28 +			if [ -d $install/$_gems/gems/${PACKAGE#*-}-$VERSION/doc/ ]; then
    1.29 +				mkdir -p $docdir
    1.30 +				mv $install/$_gems/gems/${PACKAGE#*-}-$VERSION/doc/ $docdir
    1.31 +			fi
    1.32 +
    1.33 +			if [ -d $docdir ]; then
    1.34 +				# move man pages
    1.35 +				unset man_to_copy
    1.36 +				for i in $(seq 1 8); do
    1.37 +					for j in $(find $docdir -type f -name "*.$i" | sed '/LGPL-2\.1/d'); do
    1.38 +						man_to_copy="$man_to_copy $j"
    1.39 +					done
    1.40 +				done
    1.41 +				if [ -n "$man_to_copy" ]; then
    1.42 +					cook_pick_manpages $man_to_copy
    1.43 +					rm $man_to_copy
    1.44 +				fi
    1.45 +
    1.46 +				# convert rdoc to markdown (thanks https://gist.github.com/teeparham/8a99e308884e1c32735a)
    1.47 +				for i in $(find $docdir -type f -name '*.rdoc'); do
    1.48 +					fix utf-8
    1.49 +					LC_ALL=en_US.UTF-8 ruby -r rdoc -e 'puts RDoc::Markup::ToMarkdown.new.convert File.read(ARGV[0] || "'$i'")' >$i.md && rm $i || rm $i.md
    1.50 +				done
    1.51 +			fi
    1.52 +
    1.53 +			# move man pages (from the different place)
    1.54 +			rubyman=$install/$_gems/gems/${PACKAGE#*-}-$VERSION/man
    1.55 +			if [ -d $rubyman ]; then
    1.56 +				unset man_to_copy
    1.57 +				for i in $(seq 1 8); do
    1.58 +					for j in $(find $rubyman -type f -name "*.$i" | sed '/LGPL-2\.1/d'); do
    1.59 +						man_to_copy="$man_to_copy $j"
    1.60 +					done
    1.61 +				done
    1.62 +				if [ -n "$man_to_copy" ]; then
    1.63 +					cook_pick_manpages $man_to_copy
    1.64 +				fi
    1.65 +				rm -r $rubyman
    1.66 +			fi
    1.67 +			;;
    1.68 +		utf-8)
    1.69 +			# Install UTF-8 locale
    1.70 +			tazpkg -gi --quiet --local --cookmode locale-en-base
    1.71 +			mkdir -p /usr/lib/locale
    1.72 +			localedef -i 'en_US' -c -f 'UTF-8' /usr/lib/locale/en_US.UTF-8
    1.73 +			;;
    1.74  	esac
    1.75  }
    1.76  
    1.77 @@ -1575,6 +1642,19 @@
    1.78  					/\.so\.dbg$/p;
    1.79  					' $filelist
    1.80  				;;
    1.81 +			@ruby)
    1.82 +				# Copy mandatory Ruby files
    1.83 +				gem_base="\/usr\/lib\/ruby\/gems\/.*\/${PACKAGE#*-}-$VERSION"
    1.84 +				sed -n '/\/extensions\/.*\.so$/p; /'$gem_base'\/lib\//p; /\.gemspec$/p;
    1.85 +					/\/usr\/bin\//p; /\/gems\/.*\/bin\//p;
    1.86 +					' $filelist | sed '/\/gems\/.*\/lib\/.*\.so$/d; /\/gems\/.*\/lib\/.*\.h$/d;
    1.87 +					/\/gems\/.*\/gems\/.*\.gemspec$/d;'
    1.88 +				;;
    1.89 +			@ruby-dev)
    1.90 +				sed -n '/\/ext\/.*\.h$/p; /\/ext\/.*\.pc$/p; /\/gem.build_complete$/p;
    1.91 +					/\/gems\/.*\/lib\/.*\.h$/p;
    1.92 +					' $filelist
    1.93 +				;;
    1.94  			@rm)
    1.95  				# Quick alias
    1.96  				remove_already_packed