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