From Fedora Project Wiki
No edit summary |
m (internal link cleaning) |
||
Line 3: | Line 3: | ||
{| | {| | ||
|- id="t13:30" | |- id="t13:30" | ||
| colspan="2" | * spevack hands the microphone to cwickert for RPM Packaging -- | | colspan="2" | * spevack hands the microphone to cwickert for RPM Packaging -- [[User:Cwickert/Building_RPM_packages_Classroom]] | ||
|| [[#t13:30|13:30]] | || [[#t13:30|13:30]] | ||
|- id="t13:30" | |- id="t13:30" | ||
Line 1,644: | Line 1,644: | ||
|- id="t14:45" | |- id="t14:45" | ||
! style="background-color: #407a40" | cwickert | ! style="background-color: #407a40" | cwickert | ||
| style="color: #407a40" | | | style="color: #407a40" | [[Packaging/Guidelines#Handling_Locale_Files]] | ||
|| [[#t14:45|14:45]] | || [[#t14:45|14:45]] | ||
|- id="t14:46" | |- id="t14:46" | ||
Line 1,720: | Line 1,720: | ||
=== Follow up Links === | === Follow up Links === | ||
Please feel free to add any links you find relevant to this class. Other tutorials welcome: | Please feel free to add any links you find relevant to this class. Other tutorials welcome: | ||
* | * [[PackageMaintainers/CreatingPackageHowTo]] | ||
* http://fedoraproject.org/wiki/Docs/Drafts/BuildingPackagesGuide (liable to change) - contains nice case studies | * http://fedoraproject.org/wiki/Docs/Drafts/BuildingPackagesGuide (liable to change) - contains nice case studies | ||
Latest revision as of 07:57, 18 September 2016
IRC Log
* spevack hands the microphone to cwickert for RPM Packaging -- User:Cwickert/Building_RPM_packages_Classroom | 13:30 | |
cwickert | ok, here we go... | 13:30 |
---|---|---|
... leave!#fedora-classroom -> jcapel() | 13:30 | |
Padhu1 | ொம | 13:30 |
Padhu1 | ok | 13:30 |
cwickert | My name is Christoph Wickert and I'm your teacher for todays IRC classroom lesson on building RPM packages | 13:30 |
mahesh | hello to cwickert | 13:30 |
cwickert | hi mahesh | 13:30 |
... join!#fedora-classroom -> zeroC(n=zeroc@unaffiliated/danielf) | 13:30 | |
cwickert | We are not going into details, instead I want all of you to have your first RPM after this class | 13:30 |
dash123 | cwickert: goodevening teacher :) | 13:30 |
... join!#fedora-classroom -> verdurin(n=verdurin@pod-88.dolphin-server.co.uk) | 13:30 | |
Padhu1 | hi tutor | 13:31 |
cwickert | first, we need to have a couple of tools installed | 13:31 |
cwickert | please do a | 13:31 |
cwickert | yum groupinstall development-tools | 13:31 |
cwickert | if you don't have them installed already | 13:31 |
mahesh | done | 13:31 |
dash123 | done | 13:31 |
cassmodiah | done | 13:31 |
cwickert | cassmodiah: :) | 13:31 |
cwickert | cassmodiah already is a package maintainer, so he has all the necessary stuff installed | 13:32 |
cassmodiah | :-) correct! | 13:32 |
ahmed-araby | :) | 13:32 |
cwickert | and especially for RPM building we need some more tools | 13:32 |
cwickert | yum install rpmbuild rpmdevtools | 13:32 |
cwickert | rpmbuild is the command to build the package | 13:33 |
cwickert | rpmdevtools is a collection of handy utils | 13:33 |
ahmed-araby | is rpmbuild rpmdevtools as I think I've problem is rpmfusion ? | 13:33 |
cwickert | so while some are still installing stuff, let's talk about the basics | 13:33 |
ahmed-araby | *is enough ? | 13:33 |
cwickert | ahmed-araby: what exactly is your prob? | 13:34 |
... join!#fedora-classroom -> sattam1(n=sattam@unaffiliated/thtoh) | 13:34 | |
ahmed-araby | [Errno -1] Metadata file does not match checksum | 13:34 |
cwickert | ahmed-araby: you can ether do "yum clean all" or disable the rpmfusion repo for now | 13:34 |
dash123 | cwickert: i did that yesterday it said ther ain't such thing as rpmbuild,? | 13:35 |
ahmed-araby | I've already rpmdevtools & rpmbuild installed already | 13:35 |
cwickert | ahmed-araby: fine | 13:35 |
... signoff!#fedora-classroom -> sattam(Nick collision from services.) | 13:35 | |
... nick!sattam1 -> sattam | 13:35 | |
cwickert | dash123: where id it say that? in yum or from the command line? | 13:35 |
cwickert | s/id/did | 13:36 |
dash123 | http://www.pastie.org/437408: result of yum search | 13:36 |
cwickert | dash123: sorry, it's rpm-build | 13:36 |
cwickert | ok everybody, my bad | 13:37 |
cwickert | yum install rpm-build | 13:37 |
dash123 | ok...no worries | 13:37 |
cwickert | me is ashamed ;) | 13:37 |
cwickert | pk, let's go on | 13:37 |
mahesh | nothing... go ahead | 13:37 |
cwickert | any idea why we are building packages after all? | 13:37 |
cwickert | or what RPM actually means? | 13:38 |
dash123 | redhat package manager | 13:38 |
mahesh | RPM Package Manager | 13:38 |
cwickert | mharris: right | 13:38 |
Padhu1 | custom applications. am i right? | 13:38 |
cwickert | It used to stand for "Red Hat Package Manager", but got renamed since many other distributions are using RPM too | 13:38 |
ahmed-araby | for building Binary Packages from SOurce code | 13:38 |
lwh | to automatically install a bunch of stuff and possibly run things to set it up ? | 13:38 |
ahmed-araby | ready to use | 13:38 |
... join!#fedora-classroom -> UsamaAkkad(n=Usama@unaffiliated/uaa) | 13:38 | |
cwickert | ahmed-araby: exactly, ready to use packages | 13:38 |
cwickert | no need to compile them, but install them with a couple of mouseclicks | 13:39 |
cwickert | RPM has a database that keeps track of all files installed, so you can uninstall them later without orphaned files | 13:39 |
cwickert | The database is located in /var/lib/rpm/*db.* | 13:39 |
cwickert | RPM will also take care of providing all the dependencies of a package, verify it's integrity and so on | 13:39 |
* ahmed-araby rises his hand | 13:39 | |
cwickert | ahmed-araby: yes? | 13:40 |
ahmed-araby | why sqlite with in specific ? | 13:40 |
ahmed-araby | It's using sqlite right ? | 13:40 |
... join!#fedora-classroom -> sadfag(n=alex@Rda6a.r.pppool.de) | 13:40 | |
Padhu1 | very lite DB and easy to use | 13:40 |
cwickert | ahmed-araby: yes, the database is using sqlite | 13:40 |
cwickert | the database lists all files installed, e.g you can run "rpm -ql foo" and it will show you all files inside foo | 13:41 |
cwickert | so everybody has the tools installed now? | 13:41 |
dash123 | yes | 13:41 |
openpercept | yes | 13:41 |
l0nwlf | yes | 13:41 |
cwickert | ok | 13:41 |
cassmodiah | yes | 13:41 |
ahmed-araby | yes | 13:42 |
cwickert | one important thing is | 13:42 |
cwickert | NEVER build packages as root! | 13:42 |
cwickert | If a package has a stupid Makefile, you might accidentally overwrite files of your system. | 13:42 |
mahesh | yes | 13:42 |
cwickert | so we need to setup a rpm build tree for your user | 13:42 |
cwickert | we use rpmdev-setuptree from the rpmdevtools package to do that | 13:43 |
cwickert | just run rpmdev-setuptree | 13:43 |
cassmodiah | ? | 13:43 |
cwickert | it will create a folder rpmbuild inside your homedir | 13:43 |
cwickert | cassmodiah: yes please | 13:43 |
cassmodiah | cwickert do you think it's important to set up an extra user just for packaging? the fedora wiki doesn't give a hit, and the packagers are not agreed | 13:43 |
cwickert | cassmodiah: no, it's only usefull for fully automated packageing | 13:43 |
cwickert | but you won't need it | 13:44 |
cassmodiah | k, thx | 13:44 |
... signoff!#fedora-classroom -> rjones("Leaving") | 13:44 | |
cwickert | note to the rest of the class: by fedorawiki cassmodiah means fedorawiki.de, not the wiki at fedoraproject.org | 13:44 |
cwickert | now let's look inside the rpmnbuild folder | 13:44 |
lwh | that command doesn't exist , will this work on f9 ? | 13:45 |
mahesh | i was wondering about that, now clear | 13:45 |
cwickert | there are five subdirs inside | 13:45 |
cwickert | BUILD is where the builds are happening. Every package will create a subfolder <name>-<version> there | 13:45 |
cwickert | RPM is where the binary packages will be placed when they are ready | 13:45 |
cwickert | SOURCES is where we need to place the sources of which we build the packages! | 13:45 |
mahesh | ok | 13:45 |
cwickert | SPECS is for spec files | 13:45 |
cwickert | so what are spec files? any idea? | 13:45 |
cassmodiah | ! | 13:46 |
dash123 | specifications | 13:46 |
dash123 | ? | 13:46 |
cassmodiah | build reciepts :-) | 13:46 |
mahesh | SPECS are like the makefiles's it provides info to the package manager right? | 13:46 |
cwickert | cassmodiah: you be quiet please ;) you know all that stuff already | 13:46 |
cwickert | mharris: well said! | 13:47 |
cwickert | sorry, I meant mahesh | 13:47 |
mahesh | ok | 13:47 |
cwickert | so the spec has a set of instructions _how_ to build the package | 13:47 |
cwickert | so building RPMs means writing a spec first of all | 13:47 |
cwickert | ok, we continue with the folders first | 13:48 |
cwickert | SRPMS is for source RPMS. | 13:48 |
cwickert | any questions so far? | 13:48 |
dash123 | cwickert: i previously tried to get to the source code of some linuxdcpp.srpm and did these steps, shud i delete these and start afresh?? 'cause all my subdirs are filled with dcpp files | 13:48 |
cwickert | dash123: no problem | 13:49 |
mahesh | is the SRPMS built automatically or is it another process? | 13:49 |
sattam | whats the diffrent between SRPMS and source ? | 13:50 |
cwickert | mahesh: depends on how you call rpmbuild | 13:50 |
mahesh | i mean foo.src.rpm | 13:50 |
mahesh | ok | 13:50 |
cwickert | sattam: good question | 13:50 |
cwickert | the SRPM or source RPM contains the source tarball | 13:50 |
cwickert | as well as the spec | 13:50 |
cwickert | and patches, if there are any | 13:50 |
cwickert | so you can use the srpm to build binary rpms of it for different releases | 13:51 |
cwickert | sattam: got it? | 13:51 |
sattam | cwickert: yes , very clear | 13:51 |
cwickert | ok | 13:51 |
mahesh | so rpms are built from srpms? | 13:51 |
cwickert | mahesh: yes, you can do this | 13:52 |
mahesh | fine | 13:52 |
cwickert | but you can also do this in a single run of rpmbuild | 13:52 |
cwickert | depends how you call it | 13:52 |
cwickert | we'll come to that later | 13:52 |
mahesh | ok | 13:52 |
cwickert | first we need a spec | 13:52 |
cwickert | and of course we need a program to package | 13:53 |
... join!#fedora-classroom -> megenius_(n=megenius@ner-as29666.alshamil.net.ae) | 13:53 | |
cwickert | I have chosen gigolo from http://www.uvena.de/gigolo/ | 13:53 |
cwickert | it's already in Fedora, but nevermind | 13:53 |
... join!#fedora-classroom -> sattam1(n=sattam@unaffiliated/thtoh) | 13:53 | |
mahesh | ok | 13:53 |
cwickert | so everybody please go to http://www.uvena.de/gigolo/download.html | 13:53 |
dash123 | ok..which one to download? | 13:54 |
cwickert | and download the latest release 0.3.1 to your ~/rpmbuild/SOURCES folder | 13:54 |
l0nwlf | 0.3.1 ?? | 13:54 |
... join!#fedora-classroom -> Fzza3a(i=29dd1066@gateway/web/ajax/mibbit.com/x-6ecf413d8a8c2284) | 13:54 | |
... leave!#fedora-classroom -> Fzza3a() | 13:54 | |
cwickert | l0nwlf: yes: http://www.uvena.de/gigolo/download.html#gigolo-0-3-1 | 13:54 |
cwickert | or http://files.uvena.de/gigolo/gigolo-0.3.1.tar.bz2 as direct link | 13:55 |
dash123 | cwickert: do we also need the gpg signature?? | 13:55 |
cwickert | nope | 13:55 |
dash123 | ok | 13:55 |
cwickert | we trust ourselves and upstream | 13:55 |
cwickert | :) | 13:55 |
... signoff!#fedora-classroom -> sattam(Read error: 54 (Connection reset by peer)) | 13:55 | |
dash123 | done | 13:55 |
UsamaAkkad | :) | 13:55 |
cwickert | ok, now we go to rpmbuild/SPECS | 13:55 |
sattam1 | http://files.uvena.de/gigolo/gigolo-0.3.1.tar.bz2 | 13:55 |
cwickert | and run the command "rpmdev-newrpmspec gigolo" | 13:55 |
cwickert | sattam1: exactly | 13:56 |
cwickert | the command will create an empty specfile from a template | 13:56 |
cwickert | use an editor to edit it | 13:56 |
mahesh | ok | 13:56 |
cwickert | everybody has the spec file opened? | 13:56 |
dash123 | bash: rpmdev-newrpmspec: command not found | 13:57 |
verdurin | it's rpmdev-newspec | 13:57 |
openpercept | is it rpmdev-newspec or rpmdev-newrpmspec | 13:57 |
openpercept | ? | 13:57 |
cwickert | verdurin: right | 13:57 |
cwickert | got renamed recently | 13:57 |
cwickert | I'm still used to the old name | 13:57 |
cwickert | rpmdev-newspec is the new name | 13:57 |
... signoff!#fedora-classroom -> marflow_afk(Read error: 110 (Connection timed out)) | 13:57 | |
cwickert | so it's rpmdev-newspec gigolo | 13:57 |
dash123 | done | 13:58 |
openpercept | yeah done | 13:58 |
cwickert | ok, now let's take a look at that file | 13:58 |
cwickert | we go through the tags one by one | 13:58 |
cwickert | Name: this one is pretty trivial, it's "gigolo". Please use the notation of the source tarball | 13:58 |
cwickert | Version: 0.3.1 in our case | 13:59 |
cwickert | Release: leave it as is | 13:59 |
* l0nwlf have a doubt ? | 13:59 | |
cwickert | the version is from upstream while Release is from Fedora | 13:59 |
cwickert | so 1 is the first Fedora package | 13:59 |
cwickert | l0nwlf: question=? | 14:00 |
l0nwlf | Version is 'blank' not '0.3.1' in gigolo.spec | 14:00 |
cwickert | l0nwlf: yes, you need to enter 0.3.1 there as I said | 14:00 |
cwickert | Release is already filled and remains as is | 14:00 |
l0nwlf | oh , we need to _edit_ it | 14:00 |
cwickert | l0nwlf: yes | 14:01 |
cwickert | %{?dist} will be expanded to "fc10" or "fc11" | 14:01 |
dash123 | cwickert: can you tell us about how we decide version numbers?? | 14:01 |
cwickert | dash123: use the one from upstream | 14:01 |
cwickert | look at the tarball | 14:01 |
dash123 | ok | 14:01 |
cwickert | and for release you usually start with 1 | 14:02 |
... join!#fedora-classroom -> edouardp_(n=edouardp@ANantes-256-1-165-74.w90-25.abo.wanadoo.fr) | 14:02 | |
cwickert | but threre are exceptions | 14:02 |
cwickert | for snapshots and betas etc | 14:02 |
cwickert | but we are not going to cover that since it is outlined in the wiki | 14:02 |
cwickert | next is the Group tag | 14:02 |
cwickert | oh no, I forgot Summary | 14:03 |
cwickert | Summary should be short and precise. Only keywords, now whole sentences, because this is what you see in PackageKit. | 14:03 |
cwickert | We can take this from the homepage | 14:03 |
... signoff!#fedora-classroom -> nethad("Konversation terminated!") | 14:03 | |
... leave!#fedora-classroom -> lwh() | 14:03 | |
... join!#fedora-classroom -> nethad(n=thomas@82.117.4.47) | 14:03 | |
cwickert | for example "GIO/GVFS management application" | 14:03 |
cwickert | now we come to Group | 14:04 |
Padhu1 | cwickert: some RPMs needed GPL Keys when try to install it. Is it possible to build like these? then How | 14:04 |
cwickert | Padhu1: later... | 14:04 |
cwickert | you mean gpg keys, right? | 14:04 |
Padhu1 | yes | 14:05 |
cwickert | signing is a different process after the build | 14:05 |
cwickert | lets continue with the spec | 14:05 |
Padhu1 | ok | 14:05 |
cwickert | please take a look at /usr/share/doc/rpm-4.6.0/GROUPS | 14:05 |
mahesh | explain about the gpg keys before the end of this session | 14:05 |
cwickert | mharris: will do | 14:05 |
... signoff!#fedora-classroom -> ahmed-araby(Read error: 110 (Connection timed out)) | 14:05 | |
cwickert | I think "User Interface/Desktops" fits best for our package | 14:05 |
cwickert | but you can choose anything you want from the list | 14:06 |
cwickert | License: inside the source tarball you will find a copy of the GPL named COPYING. It's version 2 of the license | 14:06 |
cwickert | so we use "GPLv2" for now, but we'll come back to that later | 14:06 |
cwickert | URL: The homepage of the program: http://www.uvena.de/gigolo | 14:07 |
cwickert | Source0: is the dowload link | 14:07 |
cwickert | so for us it's http://www.uvena.de/gigolo/download.html#gigolo-0-3-1 | 14:07 |
cwickert | sorry | 14:07 |
cwickert | http://files.uvena.de/gigolo/gigolo-0.3.1.tar.bz2 | 14:07 |
cwickert | needs to be the link to the file itself | 14:08 |
cwickert | Now comment out BuildRequires and Requires, we don't care about that right now but shoot into the dark instead :) | 14:08 |
cwickert | %description: we can take that from the homepage too | 14:09 |
cwickert | for example: Gigolo is a frontend to easily manage connections to remote filesystems using GIO/GVfs. It allows you to quickly connect/mount a remote filesystem and manage bookmarks of such. | 14:09 |
cwickert | You see: complete sentences with dots at the end. | 14:09 |
... signoff!#fedora-classroom -> edouardp(Read error: 110 (Connection timed out)) | 14:09 | |
cwickert | Any questions so far? | 14:09 |
mahesh | nope, its clear | 14:09 |
cwickert | has everybody filled all tags now? | 14:10 |
dash123 | what haapens if i choose some random group tag? | 14:10 |
dash123 | do i "have" to choose from th e/GROUPS? | 14:10 |
cwickert | dash123: yes | 14:10 |
cwickert | well, you can uses something different | 14:10 |
cwickert | I don't think rpmbuild will complain | 14:11 |
cwickert | but we in Fedora will :) | 14:11 |
cwickert | so stick with the list please | 14:11 |
UsamaAkkad | :D | 14:11 |
dash123 | ok | 14:11 |
cwickert | the group tag is not important any longer, as it is not used by packagekit | 14:11 |
cwickert | ok, now we can start our first build | 14:12 |
nethad | cwickert: i have a question, do i need to put " " around the strings, e.g. Licence: "GPLv2" or is it: Licence: GPLv2 ? | 14:12 |
... nick!megenius_ -> meGenius | 14:12 | |
cwickert | or at leastr an attempt to do so | 14:12 |
cwickert | nethad: no "" | 14:12 |
cwickert | just GPLv2 | 14:12 |
nethad | ok | 14:12 |
l0nwlf | i have a doubt ? | 14:12 |
cwickert | l0nwlf: yes please | 14:12 |
l0nwlf | %prep , %setup ?? | 14:12 |
cwickert | ok, then I'll explain it | 14:13 |
l0nwlf | we'll leave it as it is | 14:13 |
cwickert | for now we can use what's in there | 14:13 |
cwickert | %prep ist for preparing | 14:13 |
sattam1 | cwickert: why you skip " BuildRoot " ? | 14:13 |
cwickert | sattam1: my bad | 14:13 |
cwickert | BuildRoot remains as is | 14:14 |
cwickert | it's the location where we are building the package | 14:14 |
cwickert | a temporary folder | 14:14 |
cwickert | ok sattam1? | 14:14 |
sattam1 | clear | 14:14 |
cwickert | ok, so %prep is for preparing | 14:15 |
cwickert | this means extractiong the source and applying patches if there are any | 14:15 |
cwickert | after that the actual build starts in %build | 14:15 |
cwickert | ok, just realized that I choose a bad example :( | 14:16 |
cwickert | because gigolgo uses war for building and not autotools | 14:16 |
cwickert | usually yu run ./configure && make | 14:16 |
cwickert | and make install | 14:16 |
mahesh | yes | 14:17 |
cwickert | so ./configure and make are the stuff in the %build section | 14:17 |
cwickert | after that the files are installed to a temporary location | 14:17 |
cwickert | during %install | 14:17 |
cwickert | waf bedomes more and more popular | 14:18 |
cwickert | so in our example we use waf instead of autotools for building | 14:18 |
... signoff!#fedora-classroom -> nethad("Konversation terminated!") | 14:18 | |
dash123 | cwickert: how did you get to know gigolo uses war/waf??experience? | 14:18 |
cwickert | so please remove %configure | 14:19 |
cwickert | make %{?_smp_mflags} | 14:19 |
cwickert | dash123: see the readme inside the tarball | 14:19 |
dash123 | ok | 14:19 |
cwickert | it contains instructions for building the package | 14:19 |
cwickert | the statement we use for building is at http://fpaste.org/paste/8014 | 14:19 |
l0nwlf | we remove only these two i suppose | 14:19 |
cwickert | use this to replace the two lines | 14:20 |
cwickert | l0nwlf: right | 14:20 |
... join!#fedora-classroom -> nethad(n=thomas@82.117.4.47) | 14:20 | |
cwickert | actually this is only the configure | 14:20 |
cwickert | for building we need "./waf build" | 14:20 |
cwickert | so ./waf build replaces make %{?_smp_mflags} | 14:21 |
cwickert | so everybody has his %build section ready now? | 14:21 |
dash123 | yes | 14:21 |
cwickert | ok, then we start | 14:21 |
cwickert | rpmbuild -ba gigolo.spec | 14:22 |
cwickert | -ba means build all, binaries and source rpm | 14:22 |
cwickert | -bs means build source | 14:22 |
cwickert | and --bb build binary | 14:22 |
UsamaAkkad | build source mean srpm ? | 14:23 |
cwickert | UsamaAkkad: exactly | 14:23 |
... signoff!#fedora-classroom -> linuxguru("Leaving") | 14:23 | |
cwickert | so are you already running the rpmbuild? | 14:23 |
cwickert | anybody? | 14:23 |
cwickert | it will most likely stop with an error | 14:23 |
dash123 | yes i got errors | 14:23 |
cwickert | ok, dash123, tell me | 14:24 |
nethad | cwickert: yes, errors | 14:24 |
l0nwlf | error: line 8: Unknown tag: Version 2, June 1991 | 14:24 |
l0nwlf | I copied all licence : and it's second line of licennse tag | 14:24 |
dash123 | http://fpaste.org/paste/8015 | 14:24 |
nethad | my one seems to be about the waf command | 14:24 |
cwickert | l0nwlf: no, just insert GPL there | 14:24 |
cwickert | dash123: there seems to be a letter missing | 14:25 |
sattam1 | error: line 15: Too many names: %description Gigolo is a frontend to easily manage connections | 14:25 |
cwickert | needs to be "export" | 14:25 |
dash123 | and my spec file is this: http://fpaste.org/paste/8017 | 14:26 |
l0nwlf | error: line 19: Too many names: %description my first RPM | 14:26 |
l0nwlf | %description is causing errors | 14:27 |
cwickert | l0nwlf needs a new line after description | 14:27 |
cwickert | all: I have posted what the head of the spec should look like at http://fpaste.org/paste/8018 | 14:27 |
cwickert | it also contains some more things we'll come to later | 14:27 |
... signoff!#fedora-classroom -> nethad(Remote closed the connection) | 14:28 | |
cwickert | for those who have problems, I suggest to use the paste I provided | 14:28 |
l0nwlf | http://www.mibbit.com/pb/nmlavL | 14:28 |
... signoff!#fedora-classroom -> GeroldKa(Read error: 113 (No route to host)) | 14:28 | |
cwickert | l0nwlf: there is a typo | 14:28 |
cwickert | all: xport needs to be export, the e is missing | 14:29 |
cwickert | my bad, I missed that during copying | 14:29 |
cwickert | here is the correct version: http://fpaste.org/paste/8019 | 14:29 |
cwickert | so, anybody running rpmbuild right now? | 14:30 |
cwickert | or where are the problems? | 14:30 |
dash123 | ah working now its checking for gcc, etc..ops error again | 14:30 |
cwickert | dash123: this was expected :) | 14:30 |
cwickert | these are missing build reuirements | 14:31 |
l0nwlf | what about %install , %clean , %files | 14:31 |
cwickert | dash123: can you please post the errors? | 14:31 |
cwickert | l0nwlf: later... | 14:31 |
dash123 | yes | 14:31 |
openpercept | :wq | 14:31 |
openpercept | oops | 14:31 |
dash123 | http://fpaste.org/paste/8020 | 14:31 |
l0nwlf | http://www.mibbit.com/pb/1JR4Df | 14:32 |
cwickert | dash123: looks good so far, this is because we have not yet tweaked the %install section | 14:32 |
cwickert | l0nwlf: same for you | 14:32 |
cwickert | so basically the buold itself has worked for all of you | 14:33 |
cwickert | fine | 14:33 |
cwickert | not to %install | 14:33 |
... signoff!#fedora-classroom -> icarus-c("Leaving") | 14:33 | |
cwickert | the first line remains as is | 14:33 |
cwickert | rm -rf $RPM_BUILD_ROOT | 14:33 |
cwickert | is for cleaning up old stuff if there is any from a previpus build that failed | 14:34 |
cwickert | now instead of "make install DESTDIR=$RPM_BUILD_ROOT" we use waf again | 14:34 |
cwickert | so it becomes | 14:34 |
cwickert | DESTDIR=$RPM_BUILD_ROOT ./waf install | 14:34 |
cwickert | when you have changed that, you can re-run rpmbuild | 14:34 |
... join!#fedora-classroom -> megenius_(n=megenius@ner-as30487.alshamil.net.ae) | 14:35 | |
dash123 | cwickert: i do realise i didn't include ./waf build -v in %build will that cause problems later? | 14:35 |
cwickert | dash123: yes , then you did not build anything | 14:35 |
cwickert | because this is the counterpart to "make" | 14:35 |
dash123 | oh...ok sry | 14:36 |
cwickert | np | 14:36 |
cwickert | let's get back to http://fpaste.org/paste/8020 for a moment | 14:36 |
@spevack | cwickert: about 5 minutes left, FUI | 14:36 |
@spevack | er, FYI | 14:36 |
cwickert | spevack: thanks | 14:36 |
cwickert | everybody: you see these "checking for ..." messages, right= | 14:37 |
cwickert | ? | 14:37 |
dash123 | i got a bunch more errors after the correction: | 14:37 |
cwickert | this is where we get the buildquirements from | 14:37 |
dash123 | color coded in red | 14:37 |
cwickert | anybody successfully did the build? | 14:37 |
cwickert | until %install? | 14:37 |
dash123 | not me | 14:37 |
dash123 | let me copy your spec and try | 14:38 |
cwickert | dash123: please do | 14:38 |
l0nwlf | http://www.mibbit.com/pb/cCTnmG | 14:38 |
l0nwlf | here are my errors | 14:38 |
cwickert | l0nwlf: great | 14:38 |
cwickert | these were expected, because the %files section is empty | 14:39 |
... join!#fedora-classroom -> raina(n=raina@pdpc/supporter/active/raina) | 14:39 | |
l0nwlf | %clean, %files, %changelogs -> the three things still UNtouched | 14:40 |
cwickert | I have updated the spec at http://fpaste.org/paste/8021 | 14:40 |
cwickert | %clean remains as is | 14:40 |
cwickert | and for %changelog you write something like | 14:40 |
cwickert | * Sun Apr 05 2009 Foo bari <foo@bar.com> - 0.3.1-1 | 14:41 |
cwickert | - Initial attempt | 14:41 |
cwickert | let's have a look a the files section | 14:41 |
cwickert | /usr/bin/gigolo is unpackaged | 14:42 |
cwickert | this means it was build but not included in the rpm | 14:42 |
cwickert | so we add %{_bindir}/gigolo to the files section | 14:42 |
... join!#fedora-classroom -> pabloa(n=pabloa@75.Red-88-28-8.staticIP.rima-tde.net) | 14:43 | |
cwickert | do not hardcode /usr/bin, but use %{_bindir} instead | 14:43 |
cwickert | for a complete list of macros see http://fedoraproject.org/wiki/Packaging:RPMMacros | 14:43 |
... join!#fedora-classroom -> megenius__(n=megenius@ner-as30487.alshamil.net.ae) | 14:43 | |
dash123 | ok | 14:44 |
cwickert | so basically everthing that rpm complained about as unpacked needs to be inserted in the %files section | 14:44 |
cwickert | and that's basically it | 14:44 |
l0nwlf | http://www.mibbit.com/pb/rFHjef | 14:44 |
... join!#fedora-classroom -> jyoti(n=Jyoti@117.97.157.3) | 14:44 | |
cwickert | l0nwlf: fine | 14:44 |
cwickert | this is where we use %find_lang | 14:45 |
cwickert | it will automatically search for locales and include them | 14:45 |
cwickert | this is decribed in the wiki | 14:45 |
cwickert | Packaging/Guidelines#Handling_Locale_Files | 14:45 |
cwickert | so now all errors should be fixed | 14:46 |
cwickert | and if somebody still has problems, contact me in private | 14:46 |
cwickert | because now the next class is about to start | 14:46 |
dash123 | ok... | 14:46 |
cwickert | I will be around in the chan for answers | 14:46 |
@spevack | ok cwickert, thanks so much for teaching this class. | 14:46 |
* cassmodiah applauds cwickert | 14:47 | |
cwickert | but these are al minor problems, I hope you understoood what it's about | 14:47 |
@spevack | we'll take a short break, and nirik will start on his Networking class at :52 | 14:47 |
grndplane | Yes thanks for taking the time :-) | 14:47 |
cwickert | feel free to contact me | 14:47 |
G__81 | very good session cwickert :) | 14:47 |
dash123 | thanks cwickert | 14:47 |
* dash123 bows down | 14:47 | |
* nirik waits in the wings ready to start in a bit. | 14:47 | |
cwickert | thanks everybody for your time and intereest :) | 14:47 |
openpercept | thanks cwickert | 14:47 |
Padhu1 | Thanks | 14:47 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!
Follow up Links
Please feel free to add any links you find relevant to this class. Other tutorials welcome:
- PackageMaintainers/CreatingPackageHowTo
- http://fedoraproject.org/wiki/Docs/Drafts/BuildingPackagesGuide (liable to change) - contains nice case studies
What now
Try your hand at http://fedoraproject.org/wiki/PackageMaintainers/Join