brno meetr: packaging ruby gems into rpm

Post on 04-Jun-2015

680 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Packaging Ruby Gems into RPM

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