2009-07-02_mbuf_packaging_rpm.log

mbufLet us begin!  [19:00]
mbuf----------- Packaging RPM session -----------
mbufRoll call! Please tell your name!
*** ANKUR_ (n=ANKUR@124.124.233.29) has joined channel #dgplug
rtnproRatnadeep Debnath
yevlempyHarsh verma
MeejanMeejanur Rahaman
chandanaChandana Boral
zer0c00lzer0c00l, Arun SAG  [19:01]
kishanKishan Goyal
mbufok, todays' presentation is about packaging RPM;  [19:02]
*** s111 (i=3b601f16@gateway/web/freenode/x-3fcb07004b9284b0) has joined
channel #dgplug
mbufif you would like to talk, please type '!'; otherwise, don't interrupt
the session;
*** ANKUR_ (n=ANKUR@124.124.233.29) is now known as DEVIL_HEART
*** kopecks (n=koyel@117.201.96.209) has joined channel #dgplug
mbufif you haven't downloaded the presentation, please download it from:
http://shakthimaan.com/downloads/glv/presentations/packaging-red-hot-paneer-butter-masala.pdf
[19:03]
*** DEVIL_HEART (n=ANKUR@124.124.233.29) has quit: Client Quit
*** DEVIL_HEART (n=ANKUR@124.124.233.29) has joined channel #dgplug
mbufPackaging software is very important for easier installation, and
upgradation at customer deployments;
mbufit is also useful to keep track of dependencies that your package
needs;
mbufso this presentation is on packaging Red Hat Package Manager, that is
useful on Fedora distribution; [19:04]
*** aunkit (n=aunkit@117.197.60.209) has joined channel #dgplug
mbufsome of you may not like development, but, might be interested in
automation;
mbufpackaging is one of those tasks that you could look at;
mbufthis presentation has been done to make a pun on the word RPM;  [19:05]
mbuf--> #n, means slide number 'n'
*** s111 (i=3b601f16@gateway/web/freenode/x-3fcb07004b9284b0) has quit: Ping
timeout: 180 seconds
mbuf--> #1
mbufyou are welcome to redistribute, share this presentation with your
friends; [19:06]
mbuf--> #2
mbufto work on packaging software, you will need to install
fedora-packager;
*** s111 (i=3b5c6a59@gateway/web/freenode/x-98bec72b8e4d59da) has joined
channel #dgplug [19:07]
mbufit will obtain all the tools required for the same;
mbuf--> #3
mbufOnly once, you should rpmdev-setuptree, which will create a list of
directories;
mbuf--> #4
mbuf--> #5
mbufIn general, you use your HOME directory to run rpmdev-setuptree; it
creates a rpmbuild directory [19:08]
mbufand BUILD, BUILDROOT, RPMS, SOURCES, SPECS, SRPMS directories within it
*** SkyRocknRoll (n=SkyRockn@122.164.57.64) has joined channel #dgplug
*** s111_ (i=3b5c6a59@gateway/web/freenode/x-77304a05eb53b46a) has joined
channel #dgplug
mbufprojects have their own development cycle, and releases;
SkyRocknRollroll call over ?
*** sumitc (n=chatzill@unaffiliated/sumitc) has joined channel #dgplug [19:09]
mbufSkyRocknRoll: yes; it is 1910 IST
mbufSkyRocknRoll: if you want to say something, type '!' first; please
don't interrupt the session, otherwise;
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
SkyRocknRollmbuf, sorry ok
mbufwhat distro packagers do is take a snapshot from the project release
(upstream) and package it for their distribution
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 54
(Connection reset by peer) [19:10]
*** s111 (i=3b5c6a59@gateway/web/freenode/x-98bec72b8e4d59da) has quit: Ping
timeout: 180 seconds
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbufso packaging is basically referred as 'downstream'
mbufa distro is a collection of packages from various software project
teams, put in a media (DVD, for example) and given to you for use;
mbufsubsequent upstream releases are again fetched by the packagers, and
next package releases are done; a freeze is done to release a
particular distro version; hence we have Fedora 9, 10, and now 11;
[19:11]
mbuf--> #6
mbufHere I am assuming we have Paneer Butter Masala as upstream that
someone has already prepared;
*** djthequest (i=daf85072@gateway/web/freenode/x-fe645077a6e3ab36) has joined
channel #dgplug
mbufWhen you take it, you always check the README and/or INSTALL file in
it; [19:12]
mbufthat is why in software development, we insist on writing one;
mbufhere we see a just a simple .c file that is part of paneer butter
masala;
mbuf--> #7
mbufUpstream 'cooks' have prepared a Makefile to build it;  [19:13]
mbufIt is a simple Makefile to compile the .c file;
mbufinstallation is just moving the executable to a PATH that the system
knows to search for executables, usually /bin, /sbin, /usr/bin or
/usr/sbin;
mbufclean, just removes the paneer-butter-masala
mbuf--> #8  [19:14]
mbufso this upstream paneer butter masala should be packaged so Fedora
users can use it;
mbufreally? yes
mbufWe like food!
mbufso one needs to write a .spec file that describes on how to package the
same!
mbufwe will go through some basic, required fields in a .spec file;  [19:15]
mbufusing the tools installed in fedora-packager, we will package it;
mbufEach .spec file should have a 'Name' that states what the package name
is;
mbuf--> #9
mbufVersion denotes the upstream version number  [19:16]
mbuf--> #10
mbufRelease denotes your .spec file release number
mbuf--> #11
mbufSummary defines a brief one line summary of the package
mbuf--> #12
mbufGroup defines the possible group to which the package belongs to;
mbufThere is a small collection of groups used in Fedora;  [19:17]
*** ravijha (n=rkjpro@125.20.11.34) has joined channel #dgplug
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 54
(Connection reset by peer)
mbufthey are listed in /usr/share/doc/rpm-*/GROUPS
mbufyour package should fit in either one of these groups;
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbuf--> #13
mbufLicense specifies the license the upstream source is released in;
[19:18]
mbufmust be a F/OSS license;
mbuf--> #14
mbufURL should point to the upstream project web page;
mbuf--> #15
mbufSource0 should point to the upstream URL for the exact upstream
snapshot release that you are taking to package it; [19:19]
mbufusually upstream package repositories are hosted in sourceforge.net, or
freshmeat.net, or github.com
mbuf--> #16
mbufBUILDROOT defines as to where the package will be installed by the rpm
tools;
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 104
(Connection reset by peer)
*** kishan_ (n=kishan@117.99.166.124) has joined channel #dgplug [19:20]
mbufthis is usually in rpmbuild/BUILDROOT/
mbuf--> #17
mbufYou can write comments in the .spec file, and all comments begin with a
#
mbuf--> #18
mbufBuildRequires specifies what software, tools or dependencies are
required to build this package; [19:21]
mbufthere are some basic ones that are assumed to be already available,
like gcc, make et. al.;
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbufthe wiki link at the bottom of the slide lists these exceptions;
*** root (n=weechat@59.93.206.179) has joined channel #dgplug
rtnprombuf, !
mbufso you don't need to specify gcc, make et. al.;  [19:22]
*** root (n=weechat@59.93.206.179) is now known as Guest27388
mbufbut, if you need to specify, separate them with a space as shown;
mbufrtnpro: shoot!
rtnprombuf, page 17, didn't understand          %{
tmppath}/%{name}-%{version}-
rtnpro%{release}-root-%(%{ id u} -n)
*** sam111 (n=sam111@59.96.31.22) has quit: Read error: 110 (Connection timed
out) [19:23]
*** ravijha (n=rkjpro@125.20.11.34) has quit: "Leaving"
*** Guest27388 (n=weechat@59.93.206.179) has quit: Client Quit
rtnprombuf, EOF
mbufrtnpro: these are called macros, and I will come to that later; these
macros are substituted for values
rtnprombuf, ok
mbufrtnpro: usually %{tmppath} corresponds to /home/foo/rpmbuild/BUILDROOT
[19:24]
*** s111_ (i=3b5c6a59@gateway/web/freenode/x-77304a05eb53b46a) has quit: Ping
timeout: 180 seconds
rtnprombuf, ok
mbufrtnpro: and the install directory will with name, version macros that
have been defined in the spec
mbufrtnpro: Name in the .spec refers to %{name} here  [19:25]
mbufrtnpro: Version in the .spec refers to %{version} here
mbufrtnpro: when you install the rpm with the rpm tools, you will see how
this directory is 'named'
mbuf--> #19
*** test (n=test@59.93.206.179) has joined channel #dgplug [19:26]
*** test (n=test@59.93.206.179) is now known as Guest63620
mbufRequires specifies any packages or tools that are required for the
package to be used in run-time
mbuffor paneer butter masala to be used, we need 'Naan' (for example)
mbufone can also specify version numbers next to BuildRequires and
Requires, but, that is generally not encouraged [19:27]
mbufunless there is a real reason to put exact dependency version numbers,
it is best to avoid them; so upgrade from one distro release to another
is smooth;
mbuf--> #20
mbuf%description is a multi-line description of the package;  [19:28]
mbuf--> #21
mbufthe %prep section is usually for preparing the sources;
mbuf--> #22
mbufalong with %setup, they are usually used for extracting the upstream
sources; [19:29]
mbufafter these you can also add any patches that are needed (we will look
at patches, later)
mbuf--> #23
mbuf%build tells how to build the sources;
mbuf--> #24
mbufin our case, we have one Makefile and one .c file; so just issue make
will build the paneer-butter-masala for us; [19:30]
mbuf--> #25
mbuf%install tells us where to install the build executables (or libraries)
mbuf--> #26
mbufbefore installing, we first remove the previous installation instance;
mbuf$RPM_BUILD_ROOT and %{rpm_build_root} refer to the same location;
[19:31]
mbuf--> #27
mbufsince the Makefile has an 'install' target we just call 'make install
DESTDIR...' to do the installation to the $RPM_BUILD_ROOT/sbin
directory; [19:32]
mbufall commands are executed in sequential order below the defined
%install and other tags;
mbuf--> #28
mbuf%clean is should remove previous installs;
mbuf--> #29
mbuf--> #30  [19:33]
mbufThe %files section tells the packager as to what files are to be
included in the packaged;
mbufIn our case, we have only one executable, 'paneer-butter-masala'
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 104
(Connection reset by peer)
mbuf--> #31
mbuf%defattr defines the default attributes that the installed files should
have; [19:34]
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbufso in this example, the files owner and group should be 'root'
mbuf--> #32
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 54
(Connection reset by peer)
mbufthe executable is located in the sbin/ directory; %{_sbindir} is a
macro for the same [19:35]
mbuf--> #33
mbufupstream sources should ship documentation or atleast a README file;
*** Shrink (n=sgupta@redhat/shrink) has quit: Read error: 113 (No route to
host)
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbufso we say we are to put them in the %doc directory, which is usually
/usr/share/doc in *nix systems;
mbuf--> #34
mbufFinally we have a %changelog entry for the .spec file;
mbufthis lists the changes made to the .spec file;  [19:36]
mbuf--> #35
mbufEach new entry starts with a '*', followed by week day in three
characters;
mbufthen month in three characters, day (should be 01) actually;
mbuffollowed by your name, e-mail address
mbufand finally <upstreamversion-release> in a single line  [19:37]
mbufour upstream source snapshot is 2.0; this is our first .spec file, so
it is 1
mbuf--> #36
mbufStarting with -, we tell what change has been made;
mbufthis is a very simple .spec file;  [19:38]
mbuf--> #37
*** aunkit (n=aunkit@117.197.60.209) has left channel #dgplug
mbufNow we shall see how the rpm tools are used on this .spec file to
clean, build, install the package;
mbuf--> #38
mbufyou can use the --clean option to rpmbuild on the .spec file as shown
to clean the package;
mbuf--> #39
mbuf--> #40  [19:39]
mbuf--> #41
mbufBy default, before you build, rpm will invoke %clean; so you don't have
to explicitly do it before building the package;
mbuf--> #42
mbuf--> #43
mbufas we progress, this summary table will list the options for keeping
track of what we have learnt;
mbuf--> #44  [19:40]
mbufwe need to prepare the sources, as defined in %prep and %setup
mbuf--> #45
mbufwe use -bp option to rpmbuild on the .spec file;
mbuf--> #46
mbuf--> #47
mbufit cleans first, as mentioned earlier;
*** sankarshan (n=sankarsh@fedora/sankarshan) has quit: "Are you sure you want
to quit this channel (Cancel/Ok) ?" [19:41]
mbufand it extracts the upstream sources (.tar.gz) using tar;
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 104
(Connection reset by peer)
mbufyou will need to manually keep a copy of the upstream sources in the
rpmbuild/SOURCES directory;
mbufthe .spec files are to be kept in the rpmbuild/SPECS directory
mbufwhatever you build is in the rpmbuild/BUILD directory
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbufwhatever you install will be in the rpmbuild/BUILDROOT directory;
mbufwhatever RPMs that are generated will be in the rpmbuild/RPMS
directory; [19:42]
mbuf--> #48
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 104
(Connection reset by peer)
mbufso, we have extracted the sources;
mbuf--> #49
mbufthen we build;
mbuf--> #50
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
*** kishan (n=kishan@117.99.167.61) has quit: Connection timed out [19:43]
mbuf-bc to rpmbuild on the .spec file compiles the sources, or does make as
mentioned in the .spec file;
mbuf--> #51
mbuf--> #52
*** kishan_ (n=kishan@117.99.166.124) is now known as kishan
mbuf--clean called by default;
mbuf--> #53
mbuf--> #54
mbufmake is invoked on the extracted Makefile from the upstream sources;
[19:44]
*** zer0c00l_ (n=zer0c00l@117.199.140.52) has joined channel #dgplug
mbuf--> #55
mbufso the executable is built; at any stage if things are incorrect,
rpmbuild will exit with error;
mbufthe reason why I pasted the log in the slides, is for you to see what
rpmbuild says;
mbufit is always good to read the logs!
mbuf--> #56
mbuf--> #57  [19:45]
mbufnow we need to install the executable in rpmbuild/BUILDROOT;
mbuf--> #58
mbuf--> #59
mbuf--clean invoked first, by default;
mbuf--> #60
mbuf--> #61
mbufmake is invoked to build it;  [19:46]
mbuf--> #62
mbuf--> #63
mbufit installs the executable in DESTDIR;
*** vivek (n=vivek@117.201.97.14) has joined channel #dgplug
mbufso what you see as paneer-butter-masala-2.0-1.i386 is the
%{name}-%{version}-%{release} that you saw in the .spec file BUILDROOT
[19:47]
mbuf--> #64
mbufinstalled! note /usr/sbin within BUILDROOT/packagename-version-release
mbufwhen you install the package on your system, using yum it will just
install in /usr/sbin;
mbuf--> #65
mbuf--> #66  [19:48]
mbufwe already add the README file to be put in the %doc directory
mbuf--> #67
mbuf--> #68
mbufDOCDIR is defined and exported by default by the rpm tools;
mbuf--> #69
mbufREADME file was added to %files, so it is copied to the
/usr/share/doc/paneer-butter-masala-2.0 directory [19:49]
*** hermes1 (n=abhishek@114.143.50.205) has joined channel #dgplug
mbuf--> #70
mbufsummary on what we have done so far;
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 104
(Connection reset by peer)
*** vivek (n=vivek@117.201.97.14) has quit: Client Quit
mbuf--> #71
mbufnow we package it as an .rpm;
mbuf--> #71
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbuf--> #72
mbuf-bb is used to create the .rpm;  [19:50]
mbuf--> #73
mbuf--> #74
mbuf--clean called by default and sources are extracted;
mbuf--> #75
mbuf--> #76
mbufbuild is done with make;
mbuf--> #77
mbuf--> #78
mbufinstallation is done at DESTDIR;
mbuf--> #79
mbuf--> #80  [19:51]
mbuf--> #81
mbuf%doc needs to be processed;
mbuf--> #82
mbuf--> #83
mbufDOCDIR defined and exported;
mbuf--> #84
mbufREADME is copied to the respective directory for the package;
mbuf--> #85
mbuf--> #86  [19:52]
*** zer0c00l_ (n=zer0c00l@117.199.140.52) has quit: "will check logs"
mbufa binary .rpm is created!
*** sumit (n=chatzill@125.20.11.34) has joined channel #dgplug
mbuf--> #87
mbuf--> #88
*** sumit (n=chatzill@125.20.11.34) has quit: Client Quit
mbufso if you check the rpmbuild/RPMS/i386 directory, you will see the .rpm
generated;
mbufthe debuginfo rpm is has debug symbols in it, so if a user has a
problem with the package, they can install this package and get a core
dump, that can be sent to the developer for bug fixing or
troubleshooting; [19:53]
mbuf--> #89
mbufso there you have the summary for creating an .rpm with rpmbuild tool;
mbuf--> #90
mbufThe binary rpm only has the executable; but if you want to make a
package of the sources, you can make a .src.rpm; [19:54]
mbufyou use -bs with rpmbuild on the .spec file to do it;
mbuf--> #91
mbufI have skipped the logs here, and just showing the name of the built
rpm;
mbuf--> #92
mbufsummary, again;
mbuf--> #93
mbufif you want to build both .src.rpm and .rpm you can also use -ba with
rpmbuild; [19:55]
mbufnote the SRPMS are located in rpmbuild/SRPMS
mbuf--> #94
mbuf--> #95
mbuf--> #96
mbuf--> #97
mbufthat is the complete summary of what we have done so far;
mbuf--> #98
mbufrpmlint is useful to do some sanity checks on the .spec file that you
have written; [19:56]
mbufjust to make sure that your .spec file follows the standards defined
for RPM;
mbuf--> #99
*** hermes1 (n=abhishek@114.143.50.205) has left channel #dgplug
mbufif there are no errors or warnings, you will get an output like this;
mbuf--> #100  [19:57]
mbufyou should also run rpmlint on the built .rpm to check for errors or
warnings;
mbuf--> #101
mbuf--> #102
mbufalso on the .src.rpm
mbuf--> #103
mbuf--> #104
*** zer0c00l (n=zer0c00l@117.199.131.143) has quit: Connection timed out
*** hermes1 (n=abhishek@114.143.50.205) has joined channel #dgplug
mbufIf you simply want to list the rpm contents, you can use rpmls on the
.rpm;
mbuf--> #105
mbufas you can see it lists the executable, paneer-butter-masala to be
installed in /usr/sbin and the README file [19:58]
mbuf--> #106
mbufyou can also use rpm2cpio, cpio to extract the RPM contents  [19:59]
mbuf--> #107
mbuf--> #108
mbufso, we can now test the rpm; you can use yum install with --nogpgcheck
to install it;
mbufif the RPM is signed with your GPG check and added to yums' list, then
nogpgcheck is not required;
mbuf--> #109  [20:00]
mbufit will prompt you if you want to install it or not, and if you say 'Y'
it will install it;
mbuf--> #110
mbufyou can check if the rpm is installed or not through -qa option to rpm;
mbuf--> #111
mbuf--> #112
mbufsince the executable is in the PATH, you can simply run to see the
output;
mbuf--> #113  [20:01]
mbufthat is what the upstream .c file printed, anyway;
mbuf--> #114
mbufif you want to uninstall the rpm you can use 'yum remove' and just the
package name!
mbufnote that we haven't specified any version, release or i386 (arch)
type;
mbuf--> #115
mbufnow we are going to go through the process of how to create patches;
[20:02]
*** sumitc (n=chatzill@unaffiliated/sumitc) has quit: Read error: 110
(Connection timed out)
mbufso you have taken a software from upstream and you found a bug in it,
or you feel something needs to be changed;
mbufyou can make the change as a patch; add the patch to the .spec file so
when you package it, your changes are in the built package that you
ship with your distro;
mbufyou can send these changes to the upstream source;  [20:03]
mbufthe upstream project developers may or may not take it;
mbufI am going to describe one way of creating a patch;
mbufuse -bp to extract the sources;
mbuf--> #116
mbuf--> #117
mbuf--clean called and the sources are extracted;
mbuf--> #118
mbufyou know where the sources are extracted, as in
rpmbuild/BUILD/packagename [20:04]
mbuf--> #119
mbufenter into the directory; since we have only one .c file in our
upstream source, and we want to make a change in it, we make a copy
first with a .fix extension
mbuf--> #120
mbufI am now making changes in the original file;
mbuf--> #121
mbufgo one directory up -- to the rpmbuild/BUILD directory;  [20:05]
mbuf--> #122
mbufuse gendiff on the packagename and the extension that we used (.fix)
mbuf--> #123
mbufthis basically lists the change as a diff output;
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 104
(Connection reset by peer)
mbufas you can see, I only changed the printf;
mbuf- is the old, + is the new change;
mbuf--> #124  [20:06]
mbuf--> #125
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbufto save it as a patch, I just redirect the output as a paneer-fix.patch
file
mbufthis .patch and all patches must be in the rpmbuild/SOURCES directory;
mbuf--> #126
mbufnow we are going to make a new release of the package, with an updated
.spec file [20:07]
mbufour Version (upstream) is still 2.0; our Release for the .spec file is
now 2;
mbuf--> #127
mbufWe give the name of the patch and it is referred as Patch0;
mbufwe can have many patches like Patch1, Patch2, etc.  [20:08]
mbuf--> #128
mbufwe need to apply the patch on the sources, as soon after they are
extracted; so it is after the %prep, %setup phase;
mbufwe say %patch0 has to be applied
mbuf--> #129
mbufthat is for the .c file extension  [20:09]
mbuf--> #130
mbufWe added a new changelog entry, the recent one on the top;
*** yevlempy (i=cbc8bc02@gateway/web/freenode/x-30d7fc39fa830d4a) has quit:
"Page closed"
*** akuscifi007 (n=akuscifi@122.162.83.132) has quit: Read error: 104
(Connection reset by peer)
mbufso the updated date was on May 2, compared to the previous May 1
[20:10]
*** chandana (i=cbc8bc02@gateway/web/freenode/x-a8a4c023911a6aa6) has quit:
"Page closed"
mbufAlso see that we have incremented the release from 2.0-1 to 2.0-2
*** akuscifi007 (n=akuscifi@122.162.83.132) has joined channel #dgplug
mbufa new comment that we have 'Fixed Paneer Butter Masala' has been added
mbuf--> #131
mbuf--> #132
mbufwe can simply test if the patch applies cleanly;
mbufjust -bp will do the %prep, %setup and called %patch0  [20:11]
mbuf--> #133
mbuf--> #134
mbufclean invoked and the sources are extracted;
mbuf--> #135
mbufpatch is applied
mbufand the exit status is 0 -- which is clean;  [20:12]
mbuf--> #136
mbufhere you find a short list of macros that are used in the .spec file;
mbufand what each one corresponds to in the file system;
mbufwhen packaging, one should always follow Filesystem Hierarchy Standard
(FHS) as to where one should put the files in the / directory;
mbuf--> #137
mbufyou can define your own macros if you want to;  [20:13]
mbufyou use the %define tag to do it;
mbufhere I show an example of redefining the destdir target;
mbuf--> #138
mbuf--> #139
mbuf--> #140
mbufsometimes the upstream software might use a specific language, say
python, or perl, or ruby [20:14]
mbufand the distro defines that such packages need to named as python-foo,
or perl-foo, or ruby-foo;
mbufso this example defines a macro packname and how to use the same in
'Name'
mbuf--> #141
mbufthe wiki page has useful content on RPM macros;
mbuf--> #142  [20:15]
mbufsome quick notes/tips if you like; it is good to use a separate
username for building and testing packages rather than your regular
user account that you use in your system
mbufjust to check on permission issues (if any), dependency package access
and so on; [20:16]
mbuf--> #143
mbufif you have a macro within a comment (#) in the .spec file, the
rpmbuild tool might actually parse the macro; so avoid this;
mbuf--> #144
mbufKoji is used (online) to build your RPM across different architectures
to make sure it builds fine; [20:17]
mbufif your upstream package uses interpreted language, like perl, ruby,
python then your package should use 'Arch: noarch' in the .spec file;
mbufso when built, it will be built in rpmbuild/RPMS/noarch as compard to
rpmbuild/RPMS/i386 that we have seen here; [20:18]
mbuf--> #145
mbuf--> #146
mbuf--> #147
mbuf--> #148
mbuf--> #149
mbuf--> #150
mbufthe documentation in fedoraproject.org wiki is quite good; please go
through it when you get the time; [20:19]
mbuf--> #151
mbuf--> #152
mbuf--> #153
mbuf--> #154
mbuf--> #155
mbuf--> #156
mbuf--> #157
mbufthere are useful mailing lists, as well as #fedora-devel for your
packaging queries;
mbufyou can also ask in #fedora-india
mbufwhat I have described is just how to package RPMs; but there is a
workflow in how to get your built packages approved by Fedora sponsors;
[20:20]
mbuffor that, I have written this draft document:
http://shakthimaan.com/downloads/glv/howtos/packaging-rpm-workflow.html
mbufplease go through it;
mbufthe presentation + packaging rpm workflow should help you doing your
first RPM package (I hope)
mbufIf you like this work, I would appreciate your help in packaging
software for Fedora; [20:21]
mbufwe also have packaging tasks in Fedora Electronic Lab, if you are
interested;
mbufhttps://fedorahosted.org/fedora-electronic-lab/report/1   [20:22]
mbufyou could take one task at a time;
mbufwith this, the presentation ends; I shall take any questions that you
might have;

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!