brno meetr: packaging ruby gems into rpm
Post on 04-Jun-2015
680 Views
Preview:
DESCRIPTION
TRANSCRIPT
Into Fedora RPM packages
Lubomir RintelPresented by
Fedora Package Maintainer
Creative Commons Attribution-ShareAlike license applies.
Packaging Gems
Gems and RPM
Why use RPM?Consistency simplifies maintenance
Administrative tasks (rpm)
Repository and update management (yum)
Lots existing tooling
Creating Live or JEOS images (livecd-tools)
Reproducible builds (mock, koji)
Security
Package signing (rpm -k)
File verification (rpm -V)
Ruby GemsArchive of Ruby code
Ruby library metadata specification
A sane and useful standard
Ruby specific
Guarantees consistent build mechanism
Subset of RPM capabilitiesNaming and versioning
Dependency resolution
Maps well to RPM
Wrapping Gems into RPMRespecting both OS and Gem customs
FHS, naming and versioning standards, ...
Gem tooling still worksUse wisely
Can be aided with automated toolsgem2rpm
Available in rubygem-gem2rpm package
Wrapping Gems into RPMRespecting both OS and Gem customs
FHS, naming and versioning standards, ...
Gem tooling still worksUse wisely
Can be aided with automated toolsgem2rpm
Available in rubygem-gem2rpm package
Very helpful!
RPM basicsBinary package
Installable with rpm -i
Query installed package with rpm -q
Query package file with rpm -q -f
Source package
Wraps source files, patches and build SPEC
Buildable with rpmbuild
rpm -i and rpm -q -p works the same as with binaries
RPM packaging basicsSPEC file
Divided into sectionsStarts with header with tags
Metadata: %description, %files, %changelog
Shell scriptlets: %prep, %build, %install, %check, %pre, %post
Macro expansion occurs firstDefines: %{buildroot}, %{_prefix}, %{?dist}
Conditionals: %if .. %endif, %ifarch i386
Ruby Gem RPM anatomyGuidelines in Wiki
Defines%{gemname}, %{gemdir}, %{geminstdir}
Name: rubygem-%{gemname}
Usually no rebuild
Source package same as built in Rubygems
Empty %prep and %build sections
Questions?
Hands-onexercise
Adding the packageinto Fedora
Fedora infrastructureKoji – Build System
http://koji.fedoraproject.org/koji/
Packages are built here
Maintains package collections for specific releases
Bodhi – Update system
https://admin.fedoraproject.org/updates/
Tells Koji to include packages in Stable (Beta, RC, Gold) repositories
Fedora infrastructureBugzilla – Ticket tracking system
https://bugzilla.redhat.com/
New packages are reviewed here
GIT requests are processed here
FAS2 – Fedora Account System
https://admin.fedoraproject.org/accounts/
Need a packager account
Packager setupSet up a SSH key in FAS
Install required client software
fedpkg, koji client, bodhi client
yum -y install fedora-packager
Get a certificate for Koji clientfedora-packager-setup
Clone your package and start hackingfedpkg co rubygem-<name>
Questions?
Creative Commons Attribution-ShareAlike license applies
lkundrak@v3.skContact:
GoodData is hiring!
● Perl, C, SQL, Java, Javascript● Data analysis and visualization
http://www.gooddata.com/about/careers/
Useful resourcesWiki: https://fedoraproject.org/wiki/
https://fedoraproject.org/wiki/PackageMaintainers/Join
https://fedoraproject.org/wiki/Packaging/Guidelines
http://fedoraproject.org/wiki/SIGs/Ruby
RPM Packaging
http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/
http://www.rpm.org/max-rpm/
Useful resourcesMailing lists
devel@lists.fedoraproject.org
ruby-sig@lists.fedoraproject.org
IRC
#fedora-devel@irc.freenode.net
#fedora-cs@irc.freenode.net
top related