Ruby package guidelines
Package naming
For libraries, use ruby-$_name (where $_name is the upstream project name). For applications, use the project name (without the ruby- prefix) and optionally add ruby-$_name to provides.
Build and tests
Ruby packages should be built from upstream sources as this provides a transparent chain of trust for the build. To ensure integration with the existing set of Ruby packages, it is expected to run tests using ruby-rake or ruby-rspec.
Note: To detect dependency changes in between releases of a project, have a close look at the
.gemspec or Gemfile upon update.Template
PKGBUILD
prepare() {
cd "${_name}-${pkgver}"
# update gemspec/Gemfile to allow newer version of the dependencies
sed --in-place --regexp-extended 's|~>|>=|g' "${_name}.gemspec"
}
build() {
cd "${_name}-${pkgver}"
local _gemdir="$(gem env gemdir)"
gem build "${_name}.gemspec"
gem install \
--local \
--verbose \
--ignore-dependencies \
--no-user-install \
--install-dir "tmp_install/${_gemdir}" \
--bindir "tmp_install/usr/bin" \
"${_name}-${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
}
check() {
cd "${_name}-${pkgver}"
local _gemdir="$(gem env gemdir)"
GEM_HOME="tmp_install/${_gemdir}" rake test
}
package() {
cd "${_name}-${pkgver}"
cp --archive --verbose tmp_install/* "${pkgdir}"
install --verbose -D --mode=0644 LICENSE --target-directory "${pkgdir}/usr/share/licenses/${pkgname}"
install --verbose -D --mode=0644 *.md --target-directory "${pkgdir}/usr/share/doc/${pkgname}"
}
Tips and tricks
The gem is deriving the files to add with "git ls-files"
In this case you can add the following sed command to the function:
The upstream project is using "rspec" to run tests
In this case you can replace the code line in the function with the following:
GEM_HOME="tmp_install/${_gemdir}" rspec
gollark: Solution: competing Spanish design authority.
gollark: "the Spanish 1.2 beta" sounds much cooler than "Spanish".
gollark: They should start versioning it, too.
gollark: I suppose it's nice that you can go say something like "WHAT? I'm going to talk to the President of Spanish about this" about any issues you might have.
gollark: The internet gets rid of geographical differences to some extent, but now we get subcultural dialects of English.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.