<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HCoder.org &#187; packages</title>
	<atom:link href="http://hcoder.org/tag/packages/feed/" rel="self" type="application/rss+xml" />
	<link>http://hcoder.org</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 17 Jul 2010 21:17:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Arepa &#8211; Apt REPository Assistant</title>
		<link>http://hcoder.org/2010/03/22/arepa-apt-repository-assistant/</link>
		<comments>http://hcoder.org/2010/03/22/arepa-apt-repository-assistant/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 19:04:14 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[arepa]]></category>
		<category><![CDATA[auto builders]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=310</guid>
		<description><![CDATA[For some time now I had been frustrated by the tools to manage APT repositories. The only ones I knew of either covered too little (only adding/removing packages from a repository and such, like reprepro) or were way too complex (like the official tools used by Debian itself). Maybe/probably I&#8217;m a moron and I just [...]]]></description>
			<content:encoded><![CDATA[<p>For some time now I had been frustrated by the tools to manage APT repositories. The only ones I knew of either covered too little (only adding/removing packages from a repository and such, like reprepro) or were way too complex (like the official tools used by <a href="http://debian.org/">Debian</a> itself). Maybe/probably I&#8217;m a moron and I just didn&#8217;t know of some tool that would solve all my problems, but now it&#8217;s kind of late ;-) And before you say it, no, Launchpad is <em>not</em> what I was looking for as far as I understand it.</p>
<p>So I started to work on my own suite of tools for it, and recently I decided to release what I&#8217;ve done so far. It&#8217;s by no means complete, but it&#8217;s very useful for me and I thought it would be useful for others. And, with a bit of luck, someone will help me improving it.</p>
<p>So what is it? <a href="http://search.cpan.org/~opera/Arepa-0.74/lib/Arepa.pm">Arepa</a> (it stands for &#8220;Apt REPository Assistant&#8221;, but obviously I called it like that after the <a href="http://en.wikipedia.org/wiki/Arepa">yummy Venezuelan sandwiches</a>) is a suite of tools that allow you to manage an APT repository. It contains two command-line tools and a web interface, and its main features are:</p>
<ul>
<li>Manages the whole process after a package arrives to the upload queue: from approving it to re-building from source to signing the final repository.</li>
<li>It allows you to &#8220;approve&#8221; source packages uploaded to some &#8220;incoming&#8221; directory, via a web interface.</li>
<li>It only accepts source packages, and those are re-compiled automatically in the configured autobuilders. It can even &#8220;cross-compile&#8221; for other distributions (treated like <a href="http://wiki.debian.org/binNMU">binNMUs</a>).</li>
<li>Far from reinventing (many) wheels, it integrates tools like <a href="http://mirrorer.alioth.debian.org/">reprepro</a>, <a href="http://www.gnupg.org/">GPG</a>, <a href="http://samba.anu.edu.au/rsync/">Rsync</a>, <a href="http://code.erisian.com.au/Wiki/debootstrap">debootstrap</a> and <a href="http://alioth.debian.org/projects/buildd-tools/">sbuild</a> so you don&#8217;t have to learn all about them.</li>
</ul>
<p>The approval via some web interface was actually sort of the driving force for the project. One of my pet peeves was that there wasn&#8217;t an easy way to have an upload queue and easily approve/reject packages with the tools I knew. From what I had seen, the tools were either for &#8220;single person&#8221; repositories (no approval needed because the package author is the owner of the repository) or full-blown distribution-size tools like dak and such. My use-case, however, is the following:</p>
<ul>
<li>You have an installation of Arepa for an entire organisation (say, a whole company or a big department).</li>
<li>People inside that organisation upload packages to the upload queue (possibly using dput; the point is, the end up in some directory in the machine hosting Arepa).</li>
<li>Someone (or a small group of people) are the &#8220;masters&#8221; of the repository, and they&#8217;ll have access to the web interface. From time to time they check the web UI, and they&#8217;ll approve (or not) the incoming source packages.</li>
<li>If they&#8217;re approved, the source will be added to the repository and it&#8217;ll be scheduled for compilation in the appropriate combination(s) of architectures and distributions.</li>
<li>A cronjob compiles pending packages every hour; when the compilation is successful, they&#8217;re added to the repository.</li>
<li>At this point, the repository hosted by the Arepa installation has the new packages, but you probably want to serve the repository from a different machine. If that&#8217;s the case, Arepa can sync the repository to your production machine with a simple command (&#8220;arepa sync&#8221;).</li>
</ul>
<p>I imagine that a lot of people have the same need, so I uploaded all the code to CPAN (you can see it with the rest of the <a href="http://search.cpan.org/~opera/">contributions by Opera Software</a>). Sadly there&#8217;s a <a href="https://rt.cpan.org/Public/Bug/Display.html?id=55706">silly bug</a> in the released code (I wanted to release ASAP to be able to focus on other things, and I ended up rushing the release), but it has both a workaround and a patch. So, please give it a try if you&#8217;re interested and tell me if you would like to contribute. I haven&#8217;t released the code in GitHub or similar yet, but I&#8217;ll probably do if there&#8217;s interest.</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2010/03/22/arepa-apt-repository-assistant/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>BCM4312 on Linux: easier than expected</title>
		<link>http://hcoder.org/2009/09/10/bcm4312-on-linux-easier-than-expected/</link>
		<comments>http://hcoder.org/2009/09/10/bcm4312-on-linux-easier-than-expected/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 19:29:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[bcm]]></category>
		<category><![CDATA[bcm4312]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[card]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[wl]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Just a quick post to say that I was being stupid and it took me a couple of days of fighting, lockups and reading to realise that the driver for the wireless card in my new laptop is actually already packaged and it works like a charm. The long(er) story: I bought a laptop with [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to say that I was being stupid and it took me a couple of days of fighting, lockups and reading to realise that the driver for the wireless card in my new laptop is actually already packaged and it works like a charm.</p>
<p>The long(er) story:</p>
<ul>
<li>I bought a laptop with that card, and I wanted to make it work.</li>
<li>Apparently the open source driver (<code>b43</code>) doesn&#8217;t recognise my card, although it seems it should?</li>
<li>I tried to download the proprietary driver provided by the vendor (<code>wl</code>), but it didn&#8217;t compile at first. After applying some patch for the kernel 2.6.29 (I&#8217;m using kernel 2.6.30) it did compile, but it didn&#8217;t quite work. Meaning, it locked up my machine seconds after loading.</li>
<li>After a couple of days of wondering and trying to make it work&#8230; I realised the driver is already compiled in Debian (in particular, <a href="http://packages.debian.org/sv/sid/broadcom-sta-modules-2.6.30-1-686">broadcom-sta-modules-2.6.30-1-686</a>). Just installing and loading it worked like a charm. Oh well.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/09/10/bcm4312-on-linux-easier-than-expected/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Frustrated by Python module management</title>
		<link>http://hcoder.org/2008/06/24/frustrated-by-python-module-management/</link>
		<comments>http://hcoder.org/2008/06/24/frustrated-by-python-module-management/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 20:28:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[easy_install]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[setuptools]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I don&#8217;t really do any Python development myself, but at work I do support some automated testing infrastructure (in this particular case, I&#8217;m talking about a CruiseControl.rb installation), and some of the projects that use that infrastructure use Python. The setup is so that the tests are actually executed in the CC.rb server, so I [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t really do any Python development myself, but at work I do support some automated testing infrastructure (in this particular case, I&#8217;m talking about a <a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a> installation), and some of the projects that use that infrastructure use Python. The setup is so that the tests are actually executed in the CC.rb server, so I have to have Python installed there, and it has to have some basic dependencies to be able to run the tests.</p>
<p>A couple of times something strange happened: suddenly, those tests would start failing with no apparent reason, and looking at the logs, it looked like some dependencies were not installed (error messages such as <code>ImportError: No module named sqlalchemy</code>). Of course that didn&#8217;t make any sense, because SQLAlchemy is needed for the tests and they were working like a charm for weeks. I was totally and completely confused by the error message, and I tried to install SQLAlchemy again. That solved the problem, luckily, so I decided to forget about it because it wasn&#8217;t my thing anyway.</p>
<p>But the problems appeared again. And again. And I got another error message that was really confusing, because it looked like Python was using some old version of some module (a version that wasn&#8217;t there anymore, because the code had been updated from <span class="caps">SVN</span>). So I just got tired of not knowing what was going on, and decided to investigate enough to find out the root of the problem. And I found something surprising.</p>
<p>What I found is that the famous <code>python setup.py develop</code> (that everyone told me to use) actually adds the &#8220;current directory&#8221; to the list of paths where Python searches for modules, so you can develop your module and use it from anywhere. I had heard some comment on that, but I didn&#8217;t quite get what it meant, and I don&#8217;t think the person that said it realised either.</p>
<p>The fun thing with <code>setup.py develop</code> is that when you have several <strong>branches</strong> of the same project in the same machine, and you use that to make the modules available&#8230; well, I guess that knowing which versions of which modules Python will use becomes an <em>interesting</em> question to say the least. I&#8217;m not saying that the way it works is necessarily wrong, but I do think it is dangerous, and people shouldn&#8217;t think of it as the &#8220;normal&#8221; way of developing modules in Python. It should be used with care.</p>
<p>After having realised that and thought about it a bit, I still don&#8217;t understand why those modules simply &#8220;dissappeared&#8221;, but it seems that there was some corruption of <code>/usr/lib/python2.5/site-packages/easy_install.pth</code> or similar (that file seems to be modified when you install packages with <code>easy_install</code>, <strong>and</strong> it had references to the directories I ran <code>setup.py develop</code> from, so that&#8217;s my main suspect for now). At least I know now that I could backup a working <code>easy_install.pth</code> file, and restore when we have problems again, but I&#8217;m far from happy with that &#8220;solution&#8221; <code>;-)</code></p>
<p>Also, I&#8217;m wondering what the hell should I do in the future to prevent more problems, because using <code>setup.py develop</code> sounds like a terrible idea to me. I tried to set <code>PYTHONPATH</code> instead, but apparently I failed. Any suggestions?</p>
<p><strong><span class="caps">EDIT</span>:</strong> I&#8217;m finally using <code>PYTHONPATH</code>. I have no idea what I tried last time, but using it was easy, quick and clean. I still have no idea why the hell Python sometimes forgets where some modules are, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/06/24/frustrated-by-python-module-management/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dhelp strikes back</title>
		<link>http://hcoder.org/2007/10/18/dhelp-strikes-back/</link>
		<comments>http://hcoder.org/2007/10/18/dhelp-strikes-back/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 22:22:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[dhelp]]></category>
		<category><![CDATA[packages]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[In the last days I have gone back to working on dhelp, a Debian package for documentation indexing and search. Months ago I had started rewriting dhelp_parse, the only program in the suite written in C, in Ruby. The rewrite was almost done, but the program wasn&#8217;t tested much (some modules had unit tests, but [...]]]></description>
			<content:encoded><![CDATA[<p>In the last days I have gone back to working on <code>dhelp</code>, a Debian package for documentation indexing and search. Months ago I had started rewriting <code>dhelp_parse</code>, the only program in the suite written in C, in Ruby.</p>
<p>The rewrite was almost done, but the program wasn&#8217;t tested much (some modules had unit tests, but the program itself didn&#8217;t), so I found a couple of big bugs easily :-D Now it looks better, so hopefully I&#8217;ll be done soon, and I&#8217;ll upload the new package to Debian so people can start testing it.</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2007/10/18/dhelp-strikes-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
