Creating a gpg certificate and signing packages

In this lab I create a gpg key for signing the rpm packages I built in the previous lab. Once again, the packages I will be working with are grep and jwhois. 

 

First of all, I installed these packages:

  1. rpm-sign
  2. gnupg

I created the certificates by running “gpg –gen-key” and answering a few questions like what kind of key I want, size of key, passphrase. Then, I opened the ~/.rpmmacro file and added the following line: %_gpg_name “basyager@gmail.com” After that, I was able to sign my rpms from previous labs with the following command:  rpm --addsign packagefile

Overall, I’d say that signing packages is a painless experience when using the tools described in this post.

 

Links to my signed rpm files and ASCII key:

http://www75.zippyshare.com/v/40014709/file.html
http://www75.zippyshare.com/v/96431487/file.html

http://www75.zippyshare.com/v/65600107/file.html

Advertisements

Building grep and jwhois using koji

In this lab I am going to use the source rpms of grep and jwhois to build them on koji server for fedora 18. First I had to create a certificate with the command “fedora-packager-setup --with-browser-cert" And upload it to mozilla firefox in order to be able to access the web based koji system. 

 

On the first run of the koji command, I was prompted for my FAS2 username and password. After entering them, the package started building on the koji server. It took a couple of minutes to build after uploading the file. Overall, I’d say it was a little faster than building with rpmbuild and mock but overall the speeds are comparable. Both packages didn’t take more than 2 minutes to build once they got uploaded. 

 

I think koji is an excellent system for building packages for systems you don’t have access to at home.

Using mock to build jwhois and grep

I installed mock and ran the command to build my package in mock. On the first run, the “Start:yum update” step took so long that I though it was stuck and didn’t record the actual time, but it took at least 10-15 minutes I think. On the next runs everything was very quick.

Jwhois:
was stuck for a while on unpacking root cashe, then on start:yum update completed in 3 min 6 s . The second time yum update was quick and completed in 1 min 10 s.

grep
1st time. was on unpacking root cache for a while, then on start:yum update 1 min 26 s

 

I think mock is a great tool for building packages in an isolated envorinment and creating that environment.

Building grep and jwhois rpms

Building GREP RPM:
Required downloaded packages: grep-2.9.tar.xz
1)Run “rpmdev-setuptree”
2)Copy grep-2.9.tar.xz into ~/rpmbuild/SOURCES
3)Change dir to ~/rpmbuild/SPECS
4)Run “rpmdev-newspec grep”
5)Fill in data you already know into the spec file.
6)Run “rpmbuild -ba grep.spec” to try and build your package.
ERRORS:
1) (grep failed to build due to this error)
RPM build errors:
error: Installed (but unpackaged) file(s) found:
/usr/bin/egrep
/usr/bin/fgrep
/usr/bin/grep
/usr/share/info/dir
/usr/share/info/grep.info.gz
/usr/share/locale/af/LC_MESSAGES/grep.mo
/usr/share/locale/be/LC_MESSAGES/grep.mo
/usr/share/locale/bg/LC_MESSAGES/grep.mo
/usr/share/locale/ca/LC_MESSAGES/grep.mo
/usr/share/locale/cs/LC_MESSAGES/grep.mo
/usr/share/locale/da/LC_MESSAGES/grep.mo
There were more files but I’m not gonna list them to save space. To fix this, I had to add all these files to the spec file under the %files part. After that, the program built fine.
rpmlint errors:
1) grep.x86_64: E: no-changelogname-tag
Solution: Put in the changelog info in correct format into the spec file and rebuild the rpm.

2) grep.x86_64: E: info-files-without-install-info-postin /usr/share/info/grep.info.gz
AND
grep.x86_64: E: info-files-without-install-info-postun /usr/share/info/grep.info.gz
Solution to above 2 errors: Add the following in your spec file:
%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir ||:

%preun
If [ $1 = 0 ] ; then
/sbin/install-info –delete %{_infodir} /%{name}.info %{_infodir}/dir ||
Fi
of course, I found this on another student’s SBR blog.
3) grep.x86_64: E: info-dir-file /usr/share/info/dir
Solution from another student’s blog: http://amartinencosbr600.blogspot.ca/2012/09/creating-rpm-packages.html
Solution:
“Since need to remove one of them I looked at the other spec files of other RPMs and I noticed that most of them have this line after %make_install: rm –f $RPM_BUILD_ROOT%{_infodir}/dir and remove %{_infodir}/dir”
I tried this and it resulted in a build error, so this is the only error I couldn’t fix, along with a bunch of warnings that would take too long to fix.
RPMLINT -i showed the following:
grep.x86_64: W: incoherent-version-in-changelog Lab [‘2.9-1.fc19’, ‘2.9-1’]
grep.x86_64: W: invalid-license GNU
grep.x86_64: W: invalid-url URL: http://www.grep.com <urlopen error [Errno -2] Name or service not known>
grep.x86_64: E: info-dir-file /usr/share/info/dir
grep.x86_64: W: manual-page-warning /usr/share/man/man1/grep.1.gz 24: warning: macro `Dt’ not defined
grep.x86_64: W: file-not-in-%lang /usr/share/locale/af/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/be/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/bg/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/ca/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/cs/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/da/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/de/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/el/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/eo/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/es/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/et/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/eu/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/fi/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/fr/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/ga/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/gl/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/he/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/hr/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/hu/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/id/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/it/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/ja/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/ko/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/ky/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/lt/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/nb/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/nl/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/pl/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/pt/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/pt_BR/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/ro/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/ru/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/sk/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/sl/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/sr/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/sv/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/th/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/tr/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/uk/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/vi/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/zh_CN/LC_MESSAGES/grep.mo
grep.x86_64: W: file-not-in-%lang /usr/share/locale/zh_TW/LC_MESSAGES/grep.mo
1 packages and 0 specfiles checked; 1 errors, 46 warnings.

BUILDING JWHOIS RPM
Preparation steps are all the same as in the previous package above.
When attempting to build the RPM I got the following build error:
RPM build errors:
Installed (but unpackaged) file(s) found:
/etc/jwhois.conf
/usr/bin/jwhois
/usr/share/info/dir
/usr/share/info/jwhois.info.gz
/usr/share/locale/es/LC_MESSAGES/jwhois.mo
/usr/share/locale/fr/LC_MESSAGES/jwhois.mo
/usr/share/locale/hu/LC_MESSAGES/jwhois.mo
/usr/share/locale/id/LC_MESSAGES/jwhois.mo
/usr/share/locale/it/LC_MESSAGES/jwhois.mo
/usr/share/locale/nl/LC_MESSAGES/jwhois.mo
/usr/share/locale/pl/LC_MESSAGES/jwhois.mo
/usr/share/locale/pt_BR/LC_MESSAGES/jwhois.mo
/usr/share/locale/ro/LC_MESSAGES/jwhois.mo
/usr/share/locale/ru/LC_MESSAGES/jwhois.mo
/usr/share/locale/rw/LC_MESSAGES/jwhois.mo
/usr/share/locale/sv/LC_MESSAGES/jwhois.mo
/usr/share/locale/tr/LC_MESSAGES/jwhois.mo
/usr/share/locale/vi/LC_MESSAGES/jwhois.mo
/usr/share/locale/zh_TW/LC_MESSAGES/jwhois.mo
/usr/share/man/man1/jwhois.1.gz
/usr/share/man/sv/man1/jwhois.1.gz
Solution: Add the following list of files under the %files section of the spec file.
After doing so, the RPM was built succesfully but still had 5 errors which were:
jwhois.x86_64: E: info-files-without-install-info-postin /usr/share/info/jwhois.info.gz
jwhois.x86_64: E: info-files-without-install-info-postun /usr/share/info/jwhois.info.gz
jwhois.x86_64: E: info-dir-file /usr/share/info/dir
jwhois.x86_64: E: info-files-without-install-info-postin /usr/share/info/dir
jwhois.x86_64: E: info-files-without-install-info-postun /usr/share/info/dir

RPMLINT -i showed the following
jwhois.x86_64: W: incoherent-version-in-changelog Basatski [‘4.0-1.fc19’, ‘4.0-1’]
jwhois.x86_64: W: invalid-license GPL
jwhois.x86_64: W: invalid-url URL jwhois.com
jwhois.x86_64: W: file-not-utf8 /usr/share/man/sv/man1/jwhois.1.gz
jwhois.x86_64: W: manual-page-warning /usr/share/man/man1/jwhois.1.gz 1: warning: macro `PU’ not defined
jwhois.x86_64: W: file-not-utf8 /usr/share/info/jwhois.info.gz
jwhois.x86_64: W: non-conffile-in-etc /etc/jwhois.conf
jwhois.x86_64: E: info-dir-file /usr/share/info/dir
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/es/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/fr/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/hu/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/id/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/it/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/nl/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/pl/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/pt_BR/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/ro/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/ru/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/rw/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/sv/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/tr/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/vi/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/zh_TW/LC_MESSAGES/jwhois.mo
1 packages and 0 specfiles checked; 1 errors, 22 warnings.
[slava@localhost SPECS]$ rpmlint ~/rpmbuild/RPMS/x86_64/jwhois-4.0-1.fc19.x86_64.rpm
jwhois.x86_64: W: incoherent-version-in-changelog Basatski [‘4.0-1.fc19’, ‘4.0-1’]
jwhois.x86_64: W: invalid-license GPL
jwhois.x86_64: W: invalid-url URL jwhois.com
jwhois.x86_64: W: file-not-utf8 /usr/share/man/sv/man1/jwhois.1.gz
jwhois.x86_64: W: manual-page-warning /usr/share/man/man1/jwhois.1.gz 1: warning: macro `PU’ not defined
jwhois.x86_64: W: file-not-utf8 /usr/share/info/jwhois.info.gz
jwhois.x86_64: W: non-conffile-in-etc /etc/jwhois.conf
jwhois.x86_64: E: info-dir-file /usr/share/info/dir
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/es/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/fr/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/hu/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/id/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/it/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/nl/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/pl/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/pt_BR/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/ro/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/ru/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/rw/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/sv/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/tr/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/vi/LC_MESSAGES/jwhois.mo
jwhois.x86_64: W: file-not-in-%lang /usr/share/locale/zh_TW/LC_MESSAGES/jwhois.mo
1 packages and 0 specfiles checked; 1 errors, 22 warnings.
These are the same errors I encountered when building the grep RPM, so I went ahead and added the same stuff to the spec file. That left me with 1 dreaded error “jwhois.x86_64: E: info-dir-file /usr/share/info/dir” and I decided it was time to wrap it up. I might look into it in the future but for now I got other classes’ work going and as much of a Linux enthusiast as I am, I had to call it a night.
Overall, building an RPM was a new experience for me, and once again showed me that I know nothing about the world of computers.
Links:
grep srpm https://mega.co.nz/#!UBNAwJYK
grep rpm https://mega.co.nz/#!cBNhmJIY
grep spec https://mega.co.nz/#!0Alg2LRZ

jwhois srpm https://mega.co.nz/#!5M8AhAzY
jwhois rpm https://mega.co.nz/#!8UdFCJKb
jwhois spec https://mega.co.nz/#!5MdFBTxK

 

Building “grep” and “jwhois” from source.

This is the second lab of the SBR600 course I am currently taking at Seneca.

It involves building software from source code. It sounded scary and advanced, but turned out to be pretty much the same thing as we did in OPS235. Don’t get me wrong, building *can* be a daunting process, but for this lab I used GNU software which is written to compile with as least problems as possible. The whole process was seamless, took about 5 minutes, and I will outline it now.

First, I went to this page http://gnu.mirror.vexxhost.com/ and chose 2 packages I already knew: “grep” and “jwhois”. Inside those archives, are files in ALL CAPS which contain manuals, authors, thanks, and other misc info. In both archives I downloaded, the INSTALL file outlined the building process being as simple as running the “configuration” file to adjust (I’m guessing the Makefile) for my system to avoid any system configuration issues when building. 

Building “grep” and “jwhois”

  • Downloaded and extracted the archives with “tar xfv”
  • Went into extracted directories
  • Ran ./configure then ran “make” with “time” preceeding it to see how long it takes to build.
  • Tested the binaries which resided in the “src” directory of the extracted archives.

The time it took

grep:
real 0m11.018s
user 0m3.310s
sys 0m.586s

jwhois:
real 0m4.029s
user 0m1.671s
sys 0m0.197s

Results

JWHOIS

[slava@localhost jwhois-4.0]$ ./src/jwhois andyskylights.com | less

Returned:

Domain Name: ANDYSKYLIGHTS.COM
Registrar: REGISTER.COM, INC.
Whois Server: whois.register.com
Referral URL: http://www.register.com
Name Server: DNS1.REGISTER.COM
Name Server: DNS2.REGISTER.COM
Status: clientTransferProhibited
Updated Date: 15-feb-2013
Creation Date: 01-mar-2010
Expiration Date: 01-mar-2014

GREP

[root@localhost grep-2.9]# cd src
[root@localhost src]# printf “1\n2\n3\n4\n5” > test
[root@localhost src]# ./grep 3 test
3
[root@localhost src]#

 

So as you can see both software packages compiled and worked with no issues. 

 

 

HOW TO: REMOTELY SSH onto your VIRTUAL MACHINE at home

I was doing my 1st lab in SBR600, which involves installing Fedora that needs to be accessible from the college and we had the choice of installing it on either:

1) The hard drive rack that we use at Seneca

2) Personal Laptop

3) Your machine at home

I sold my laptop due to it being nearly useless when you are in an environment with rooms FULL OF COMPUTERS, and I also use the rack for NDD430, so I decided to go with the third option and install Fedora 19 on a VM in “Virtual Box”, a free virtualization software running on Windows 7 on my graphics accelerated beast at home. Once the installation was done, I had to somehow the configure it so that I could access this machine from anywhere. It did take me 7 hours and a lot of nerves but I did get it done, and it turned out to be VERY easy. So I will outline the steps in this short guide in case anyone else wants to do the same.

WARNING: This method requires you to have a constant IPv4 address given to you by the ISP, worst case scenario, you will need to look up your new IP if you want to access your VM remotely. But usually IPs don’t change that often so it shouldn’t be a big issue.

Here we go:

1) First thing you want to do is  is go to your VM settings and change the default network type from the default setting to “bridged adapter”ImageYour VM now has a network adapter on your computer as this pic shows:Image2) Next thing you want to do is set a static private IP on your fedora VM by changing the  /etc/sysconfig/network-scripts/ifcfg-[NIC NAME]. If you are not sure about the contents, look it up it’s really simple.

3) Now, find out the IP given to you by your ISP by going to www.whatismyip.com

4) Now we need to adjust your router to send all incoming port 22 traffic to your VM’s IP address. If your router doesn’t have port forwarding feature, you might want to look into a custom firmware for your router that does have that feature.

Anyway, go to 192.168.1.1 or whatever your router IP is, and find the port forwarding menu and add an entry.

Mine looks like this:Image

Where 192.168.1.91 is the static IP I assigned on my Fedora VM

5) If you’ve done everything right, you should now be able to remotely ssh into your VM by a command: ssh [fedora account name]@[your external ip]

If you are accessing your VM from Android, you can get an app called “hosts editor” which will allow you to map your IP to a name so you don’t have to type your IP every time. The filesystem on which that file resides in read-only in android, otherwise I would just edit it by hand.

As a final result, I am able to access my machine from anywhere.

Screenshot_2013-09-07-00-21-02

Have fun SSHING. That, or carrying your laptop around, yea..

Introduction

Hello Everybody. My name is Slava Basatski. Pretty sure no one cares about what I write here, but I have to write this introductory blog post for a class so here we go.

At this time of this post, I am enrolled in the CTY program of Seneca College in Toronto. At the moment, am split between learning Linux and Networking stuff, both of which are a huge part of the program. I started the program in January 2012 and originally had the plan to complete it with no breaks, but the constant pressure of having to complete some assignment or prepare for a test made me take a break in summer 2013 after all. As of september 2013, I’m back to Seneca taking NDD430, SBR600, and PHP701 and planning to graduate from CNS once I complete these courses *fingers crossed*

SBR600 seems to be an interesting course so far, in which the students will be working on improving the Pidora OS for Raspberry Pi. From what I’ve read, Pidora is good for people who like to tinker and play with their Pi’s or have a certain purpose for it like a server, but not really good for use as an all-around OS. I’m pretty sure this comes from trying to roll out new versions without fixing the old ones, and of course it is due to lack of 3d accelerated graphics on Pidora that it is not the best option for an OS to be used on the Pi for an all around desktop experience.  Hopefully the issue with accessing the 3d graphics chip will soon get resolved so we can have an actual hardware accelerated experience with the Raspberry Pi running Pidora. (Note, according to this article http://www.pcper.com/news/General-Tech/Raspberry-Pi-Replacing-X11-WaylandWeston-Get-GPU-Acceleration , the Raspberry Pi foundation is moving away from using the X driver, and using the Wayland display server instead. This makes me wonder what will be Pidora’s next move; will they keep trying to make things work with X11 or will they adopt the same driver?) I only have to wait and see.

I decided to read what the people in the fedora-devel IRC channel were saying, and this is what I saw:

<halfie> dan408, bochecha_ the upstream guys are super good. they have already fixed the “__MACOSX” problem.
<praveenkumar> jerboaa, I am trying to understand how we can automate koji stuff in a python script, like initiate a build, check the status, after complete get the data ..etc.
<praveenkumar> jerboaa, for that I am going through with koji API stuff.
* tuanta has quit (Read error: Operation timed out)
* tuanta (~tuanta@222.252.85.209) has joined #fedora-devel
<jerboaa> praveenkumar, ok. what MerlinTHP said above. source code for the koji client is best. other than that. there is a builsys list with people on which implemented it. https://admin.fedoraproject.org/mailman/listinfo/buildsys
<praveenkumar> jerboaa, yes I am going through that as MerlinTHP said, will check ML also.
<MerlinTHP> I’m not aware of a real API spec for koji, so your best bet is definately reading the koji cli sources.

Mind you, this is at 4am. All the Microsoft developers are snoring away in their bedrooms at this time, but these guys are working around the clock to improve Linux, so I gotta give the open source community some respect for doing what they do. It also shows how seamless communication can be even if you are across the globe from somebody else, there is always tools for you to communicate and get the job done. I like that.

I hope this class will connect me with the open source people a bit more, and I will be able to contribute to the open source community. I’ve already created accounts on several resources associated with open source; these include the Fedora Wiki, Seneca Wiki, and several related channels on both freenode and mozilla IRC servers. My name there is Slava_ just in case you’re wondering, but best way to reach me is by email at sbasatski@myseneca.ca