diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index 2e4447f..a44b6a7 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -1,6 +1,7 @@ # Maintainer: Tim Meusel # Maintainer: Andreas 'Segaja' Schleifer +_name=sinatra pkgname=(ruby-sinatra ruby-sinatra-contrib ruby-rack-protection) pkgver=3.0.5 pkgrel=1 @@ -15,10 +16,10 @@ checkdepends=( 'ruby-erubi' 'ruby-kramdown' 'ruby-maruku' + 'ruby-multi_json' 'ruby-mustermann' 'ruby-nokogiri' 'ruby-rack' - 'ruby-rack-protection' 'ruby-rack-test' 'ruby-rack-session' 'ruby-rackup' @@ -26,9 +27,7 @@ checkdepends=( 'ruby-rdiscount' 'ruby-rspec' 'ruby-sass' - 'ruby-sinatra-contrib' 'ruby-tilt' - # ruby-sinatra - integration tests #'ruby-puma' #'ruby-thin' #'ruby-webrick' @@ -47,22 +46,65 @@ prepare() { sed --in-place --regexp-extended 's|~>|>=|g' sinatra.gemspec */*.gemspec } -build() { - cd "sinatra-${pkgver}" +_build() { + local _gemdir="$(gem env gemdir)" + local _gemname=$(echo "*.gemspec" | cut -d. -f1) + + echo -n "$PWD/tmp_install/${_gemdir}:" >> "${srcdir}/.gempath" + + gem build ${_gemname}.gemspec + + gem install \ + --local \ + --verbose \ + --ignore-dependencies \ + --no-user-install \ + --install-dir "tmp_install/${_gemdir}" \ + --bindir "tmp_install/usr/bin" \ + "${_gemname}-${pkgver}.gem" + + # remove unrepreducible files + rm --force --recursive --verbose \ + "tmp_install/${_gemdir}/cache/" \ + "tmp_install/${_gemdir}/gems/${_name}-${pkgver}/vendor/" \ + "tmp_install/${_gemdir}/doc/${_name}-${pkgver}/ri/ext/" + + find "tmp_install/${_gemdir}/gems/" \ + -type f \ + \( \ + -iname "*.o" -o \ + -iname "*.c" -o \ + -iname "*.so" -o \ + -iname "*.time" -o \ + -iname "gem.build_complete" -o \ + -iname "Makefile" \ + \) \ + -delete + + find "tmp_install/${_gemdir}/extensions/" \ + -type f \ + \( \ + -iname "mkmf.log" -o \ + -iname "gem_make.out" \ + \) \ + -delete +} - gem build sinatra.gemspec +build() { + cd "$_name-${pkgver}" + _build (cd sinatra-contrib - gem build sinatra-contrib.gemspec + _build ) (cd rack-protection - gem build rack-protection.gemspec + _build ) } check() { - cd "sinatra-${pkgver}" + cd "$_name-${pkgver}" # rainbows is not installed, skipping integration tests # puma is not installed, skipping integration tests @@ -83,17 +125,17 @@ check() { # Did you mean? markaby_test: skipping markaby tests # cannot load such file -- haml: skipping haml tests echo "sinatra" - rake test + GEM_PATH="$(<"${srcdir}/.gempath")" rake test # disabled as it requires hamlit #(cd sinatra-contrib # echo "sinatra" - # rake spec + # local _gemdir="$(gem env gemdir)" rake test #) (cd rack-protection echo "rack-protection" - rake test + GEM_PATH="$(<"${srcdir}/.gempath")" rake test ) } @@ -102,69 +144,34 @@ package_ruby-sinatra() { depends=('ruby' 'ruby-mustermann' 'ruby-rack' 'ruby-rack-protection' 'ruby-rack-session' 'ruby-rackup' 'ruby-tilt') - _package "sinatra" "LICENSE" + cd "$_name-${pkgver}" + + cp -a tmp_install/* "${pkgdir}" + + install -Dm 0644 LICENSE --target-directory "${pkgdir}/usr/share/licenses/${pkgname}" + install -Dm 0644 *.md --target-directory "${pkgdir}/usr/share/doc/${pkgname}" } package_ruby-sinatra-contrib() { pkgdesc='Collection of useful Sinatra extensions' depends=('ruby' 'ruby-multi_json' 'ruby-mustermann' 'ruby-rack-protection' 'ruby-sinatra' 'ruby-tilt') - _package "sinatra-contrib" "LICENSE" + cd "$_name-${pkgver}"/sinatra-contrib + + cp -a tmp_install/* "${pkgdir}" + + install -Dm 0644 LICENSE --target-directory "${pkgdir}/usr/share/licenses/${pkgname}" + install -Dm 0644 *.md --target-directory "${pkgdir}/usr/share/doc/${pkgname}" } package_ruby-rack-protection() { pkgdesc='Protect against typical web attacks, works with all Rack apps, including Rails' depends=('ruby' 'ruby-rack') - _package "rack-protection" "License" -} - -_package() { - local _gemdir="$(gem env gemdir)" - local _gemname="${1}" - local _licensefile="${2}" - - cd "sinatra-${pkgver}" - - if [ "${_gemname}" != "sinatra" ]; then - cd "${_gemname}" - fi - - gem install \ - --local \ - --verbose \ - --ignore-dependencies \ - --no-user-install \ - --install-dir "${pkgdir}/${_gemdir}" \ - --bindir "${pkgdir}/usr/bin" \ - "${_gemname}-${pkgver}.gem" - - # remove unrepreducible files - rm -frv \ - "${pkgdir}/${_gemdir}/cache/" \ - "${pkgdir}/${_gemdir}/gems/${_gemname}-${pkgver}/vendor/" \ - "${pkgdir}/${_gemdir}/doc/${_gemname}-${pkgver}/ri/ext/" + cd "$_name-${pkgver}"/rack-protection - find "${pkgdir}/${_gemdir}/gems/" \ - -type f \ - \( \ - -iname "*.o" -o \ - -iname "*.c" -o \ - -iname "*.so" -o \ - -iname "*.time" -o \ - -iname "gem.build_complete" -o \ - -iname "Makefile" \ - \) \ - -delete - - find "${pkgdir}/${_gemdir}/extensions/" \ - -type f \ - \( \ - -iname "mkmf.log" -o \ - -iname "gem_make.out" \ - \) \ - -delete + cp -a tmp_install/* "${pkgdir}" - install -Dm 644 "${_licensefile}" --target-directory "${pkgdir}/usr/share/licenses/ruby-${_gemname}/" - install -Dm 644 *.md --target-directory "${pkgdir}/usr/share/doc/ruby-${_gemname}" + install -Dm 0644 License --target-directory "${pkgdir}/usr/share/licenses/${pkgname}" + install -Dm 0644 *.md --target-directory "${pkgdir}/usr/share/doc/${pkgname}" }