<?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>Allan McRae &#187; Pacman</title>
	<atom:link href="http://allanmcrae.com/category/pacman/feed/" rel="self" type="application/rss+xml" />
	<link>http://allanmcrae.com</link>
	<description>One day this will feature a witty tagline...</description>
	<lastBuildDate>Mon, 23 Aug 2010 11:15:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pacman 3.4.0 Released</title>
		<link>http://allanmcrae.com/2010/06/pacman-3-4-0-released/</link>
		<comments>http://allanmcrae.com/2010/06/pacman-3-4-0-released/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 03:50:06 +0000</pubDate>
		<dc:creator>Allan</dc:creator>
				<category><![CDATA[Pacman]]></category>

		<guid isPermaLink="false">http://allanmcrae.com/?p=506</guid>
		<description><![CDATA[As Dan has already posted about, pacman-3.4.0 has been released.  There are a bunch of new features that I am really enjoying.
Firstly, when updating it database, pacman will only extract the new entries. This is similar to what Xyne&#8217;s rebase script does (without all the extra output). I had not realised how awesome this [...]]]></description>
			<content:encoded><![CDATA[<p>As Dan has already <a href="http://www.toofishes.net/blog/pacman-340-release/">posted</a> about, pacman-3.4.0 has been released.  There are a bunch of new features that I am really enjoying.</p>
<p>Firstly, when updating it database, pacman will only extract the new entries. This is similar to what Xyne&#8217;s <a href="http://xyne.archlinux.ca/projects/rebase">rebase</a> script does (without all the extra output). I had not realised how awesome this feature was until I updated my chroots this morning. It speeds the process up immensely.  The chroots using pacman-3.4 extracted the [extra] repo database with a barely noticeable pause while those using pacman-3.3 took a while.</p>
<p>The other feature that I am enjoying is the addition of a functional &#8216;which&#8217; to the file ownership query.  In the past, to find the owner of a binary in my path I would do something like <tt>pacman -Qo $(which makepkg)</tt> or provide the full path manually.  Now pacman will search for binaries in your path automatically, so this is achieved with <tt>pacman -Qo makepkg</tt>.</p>
<p>Installing packages with <tt>pacman -U <file></tt> has received a nice overhaul, allowing pacman to handle package replacements and install needed dependencies all in one transaction.   No more removing a package with <tt>pacman -Rd</tt> and then installing its replacement.</p>
<p>And makepkg also received its share of upgrades.  It now automatically exits on build/packaging errors in PKGBUILDs so there is no more need to have &#8220;<tt>|| return 1</tt>&#8221; after the commands.  Package splitting has improved with <tt>pkgver</tt>, <tt>pkgrel</tt> and <tt>arch</tt> now being able to be overridden and being able to only build subsets of a split package.</p>
<p>Of course, many other features made it into this pacman release. As always, many changes will hopefully never be noticed by a user (e.g. checking a package architecture matches the system architecture before installing, a major rewrite of the pacman bash completion, overhaul of tests in makepkg, more configurable library stripping during packaging), but all these are very useful contributions.  See <a href="http://projects.archlinux.org/pacman.git/plain/NEWS?id=v3.4.0">here</a> for a more detailed summary of the changes and the git log for all the details of changes.  </p>
<p>A pacman-3.4.0 package is currently in the [testing] repository for Arch Linux.  We all know pacman releases are bug free (as the two patches already in the 3.4.1 queue can attest), so look forward to it being in a [core] repo near you in the not too distant future.</p>
]]></content:encoded>
			<wfw:commentRss>http://allanmcrae.com/2010/06/pacman-3-4-0-released/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>New PKGBUILD syntax options with pacman-3.3</title>
		<link>http://allanmcrae.com/2009/07/new-pkgbuild-syntax-options-with-pacman-33/</link>
		<comments>http://allanmcrae.com/2009/07/new-pkgbuild-syntax-options-with-pacman-33/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 15:29:43 +0000</pubDate>
		<dc:creator>Allan</dc:creator>
				<category><![CDATA[Pacman]]></category>

		<guid isPermaLink="false">http://allanmcrae.com/?p=171</guid>
		<description><![CDATA[With the pacman 3.3 release expected in the coming weeks, I thought I would write about some of the new features that have been added to PKGBUILDs.
The most common change people will make in their PKGBUILDs is to add a package() function. This limits the of fakeroot to only during the file installation steps (so [...]]]></description>
			<content:encoded><![CDATA[<p>With the <tt>pacman</tt> 3.3 release expected in the coming weeks, I thought I would write about some of the new features that have been added to <tt>PKGBUILD</tt>s.</p>
<p>The most common change people will make in their <tt>PKGBUILD</tt>s is to add a <tt>package()</tt> function. This limits the of fakeroot to only during the file installation steps (so it is not used during the build process). Using fakeroot only during the install stages is considered a &#8220;good thing&#8221;, but this also provides a workaround for some <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=516024">bugs</a> in fakeroot that can cause issues while attempting to compile a package. A partial example:</p>
<p><code>build() {<br />
&nbsp;&nbsp;cd $srcdir/$pkgname-$pkgver<br />
&nbsp;&nbsp;./configure --prefix=/usr<br />
&nbsp;&nbsp;make<br />
}<br />
&nbsp;<br />
package() {<br />
&nbsp;&nbsp;cd $srcdir/$pkgname-$pkgver<br />
&nbsp;&nbsp;make DESTDIR=$pkgdir<br />
&nbsp;&nbsp;install -Dm644 $srcdir/license $pkgdir/usr/share/licenses/$pkgname/license<br />
}<br />
</code></p>
<p>Note the &#8220;<tt>cd</tt>&#8221; step is required in the <tt>package()</tt> function as makepkg currently does not remember what directory was being used between the <tt>build()</tt> and <tt>package()</tt> functions. The <tt>package()</tt> function is entirely optional, so all <tt>PKGBUILD</tt>s without one will continue to work as they always have.</p>
<p>The other main feature addition to <tt>PKGBUILD</tt>s is the ability to create split packages. In Arch Linux, this is useful for packages that are split due to providing separate packages for libraries and binaries (e.g. gcc) or where documentation is too large to justify distributing together with the main package (e.g. ruby). The Arch KDE-4.3 release will also use <a href="http://www.archlinux.org/pipermail/arch-dev-public/2009-June/011863.html">package splitting</a>, as many lesser used components pulled in a large number of dependencies and made an unsplit KDE install very heavy.</p>
<p>Creating split packages is rather simple.  All you have to do is assign an array of package names to the <tt>pkgname</tt> variable. e.g.</p>
<p><code>pkgname=('pkg1' 'pkg2')<br />
pkgbase="pkg"<br />
</code></p>
<p>This tells <tt>makepkg</tt> that it is creating two packages called <tt>pkg1</tt> and <tt>pkg2</tt>.  The <tt>pkgbase</tt> variable is optional, but can be used to hold (e.g.) the upstream package name and is used by <tt>makepkg</tt> in its output. Each split package requires its own <tt>package()</tt> function with name in the format <tt>package_foo()</tt>. e.g. for the above <tt>pkgname</tt>, the <tt>PKGBUILD</tt> would have functions <tt>package_pkg1()</tt> and <tt>package_pkg2()</tt>.    In these functions, the use of the <tt>$pkgdir</tt> variable is mandatory as it is no longer equivalent to the deprecated <tt>$startdir/pkg</tt>.  All options and directives for the split packages default to the global values given within the <tt>PKGBUILD</tt>. Most variables can be overridden within the <tt>package</tt> function. e.g</p>
<p><code>...<br />
depends=('glibc')<br />
makedepends=('perl')<br />
...<br />
package_pkg1()<br />
{<br />
&nbsp;&nbsp;depends=('perl')<br />
}<br />
&nbsp;<br />
package_pkg2()<br />
{<br />
...<br />
}<br />
</code></p>
<p>The <tt>pkg1</tt> package will depend on <tt>perl</tt> while <tt>pkg2</tt> does not override the <tt>depends</tt> array so will depend on <tt>glibc</tt>.  As a general rule, almost every package in the split packages depends array should probably be present in the global <tt>makedepends</tt> array.</p>
<p>There are several other useful features added to <tt>makepkg</tt> such as improved handling of info files (automatic removal of <tt>$pkgdir/usr/share/info/dir</tt> and compression of info files) and being able to specify <tt>LDFLAGS</tt> in <tt>makepkg.conf</tt>.  Check out a detailed list of changes in the <a href=http://projects.archlinux.org/?p=pacman.git;a=blob;f=NEWS;h=5a72aa7e><tt>NEWS</tt></a> file in pacman git repo.</p>
<p>For those that want to try out <tt>makepkg</tt> before the <tt>pacman</tt> 3.3 release, you can grab a copy of my <a href="http://dev.archlinux.org/~allan/makepkg-git.html"><tt>makepkg-git</tt> package</a> which installs alongside the current version of <tt>pacman</tt>.</p>
<p>Edit &#8211; clarified <tt>PKGBUILD</tt> directive overrides for split packages and added an note about <tt>makepkg-git</tt></p>
]]></content:encoded>
			<wfw:commentRss>http://allanmcrae.com/2009/07/new-pkgbuild-syntax-options-with-pacman-33/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
