CINXE.COM

Launchpad Blog

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="description" content="Blog posts from the Launchpad team" /> <title>Launchpad Blog</title> <link href="https://blog.launchpad.net/wp-content/themes/launchpad/style.css" rel="stylesheet" type="text/css" /> <link rel="shortcut icon" href="https://launchpad.net/@@/launchpad" /> <script type="text/javascript" src="https://blog.launchpad.net/wp-content/themes/launchpad/js/mootools-1.2-core.js"></script> <script type="text/javascript" src="https://blog.launchpad.net/wp-content/themes/launchpad/js/funcs.js"></script> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-12833497-3']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </head> <body> <!-- Header --> <div id="header"> <a href="/wp-admin" style="float:right; top: 2px;">Log in</a> <div id="finder"> <input type="search" accesskey="s" value="Search blog archives" name="s" id="s" /> <input type="hidden" name="blog_url" id="blog_url" value="https://blog.launchpad.net" /> <a href="https://blog.launchpad.net/feed" title="RSS Feed for Blog Entries"><img src="https://blog.launchpad.net/wp-content/themes/launchpad/images/rss.png" alt="RSS Feed" /></a> </div> <h1><a href="https://blog.launchpad.net" class="header-link"><img src="https://blog.launchpad.net/wp-content/themes/launchpad/images/logo.png" /><span class="logotext"> launchpad</span><strong>blog</strong></a></h1> </div> <div id="content" class="narrowcolumn"> <h2 class="pagetitle">Archive for the &#8216;PPA&#8217; Category</h2> <div class="navigation"> <div class="alignleft"><a href="https://blog.launchpad.net/category/ppa/page/2" >&laquo; Older Entries</a></div> <div class="alignright"></div> </div> <div class="post"> <h3 id="post-4397"><a href="https://blog.launchpad.net/ppa/self-service-riscv64-builds" rel="bookmark" title="Permanent Link to Self-service riscv64 builds">Self-service riscv64 builds</a></h3> <small>Wednesday, November 22nd, 2023</small> <div class="entry"> <p>Launchpad has supported building for riscv64 for a while, since it was a requirement to get Ubuntu&#8217;s riscv64 port going. We don&#8217;t actually have riscv64 hardware in our datacentre, since we&#8217;d need server-class hardware with the hypervisor extension and that&#8217;s still in its infancy; instead, we do full-system emulation of riscv64 on beefy amd64 hardware using <code>qemu</code>. This has worked well enough for a while, although it isn&#8217;t exactly fast.</p> <p>The biggest problem with our setup wasn&#8217;t so much performance, though; it was that we were just using a bunch of manually-provisioned virtual machines, and they weren&#8217;t being reset to a clean state between builds. As a result, it would have been possible for a malicious build to compromise future builds on the same builder: it would only need a chroot or container escape. This violated our standard security model for builders, in which each build runs in an isolated ephemeral VM, and each VM is destroyed and restarted from a clean image at the end of every build. As a result, we had to limit the set of people who were allowed to have riscv64 builds on Launchpad, and we had to restrict things like snap recipes to only use very tightly-pinned parts from elsewhere on the internet (pinning is often a good idea anyway, but at an infrastructural level it isn&#8217;t something we need to require on other architectures).</p> <p>We&#8217;ve wanted to bring this onto the same footing as our other architectures for some time. In Canonical&#8217;s most recent product development cycle, we worked with the OpenStack team to get <a href="https://bugs.launchpad.net/bugs/2023211">riscv64 emulation support into nova</a>, and installed a backport of this on our newest internal cloud region. This almost took care of the problem. However, Launchpad builder images start out as <a href="https://cloud-images.ubuntu.com/">standard Ubuntu cloud images</a>, which on riscv64 are only available from Ubuntu 22.04 LTS onwards; in testing 22.04-based VMs on other relatively slow architectures we already knew that we were seeing some mysterious hangs in snap recipe builds. Figuring this out blocked us for some time, and involved some pretty intensive debugging of the &#8220;<code>strace</code> absolutely everything in sight and see if anything sensible falls out&#8221; variety. We eventually narrowed this down to a LXD bug and were at least able to provide a <a href="https://github.com/canonical/lxd/pull/12530">workaround</a>, at which point bringing up new builders was easy.</p> <p>As a result, you can now enable riscv64 builds for yourself in your PPAs or snap recipes. Visit the PPA and follow the &#8220;Change details&#8221; link, or visit the snap recipe and follow the &#8220;Edit snap package&#8221; link; you&#8217;ll see a list of checkboxes under &#8220;Processors&#8221;, and you can enable or disable any that aren&#8217;t greyed out, including riscv64. This now means that all Ubuntu architectures are fully virtualized and unrestricted in Launchpad, making it easier for developers to experiment.</p> </div> <p class="postmetadata">Tags: <a href="https://blog.launchpad.net/tag/front-page" rel="tag">front-page</a>, <a href="https://blog.launchpad.net/tag/ppa" rel="tag">PPA</a>, <a href="https://blog.launchpad.net/tag/soyuz" rel="tag">soyuz</a><br /> Posted in <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/ppa/self-service-riscv64-builds#comments">1 Comment &#187;</a></p> </div> <div class="post"> <h3 id="post-4375"><a href="https://blog.launchpad.net/ppa/new-domain-names-for-ppas" rel="bookmark" title="Permanent Link to New domain names for PPAs">New domain names for PPAs</a></h3> <small>Wednesday, February 16th, 2022</small> <div class="entry"> <p>Since they were introduced in 2007, Launchpad&#8217;s Personal Package Archives (PPAs) have always been hosted on ppa.launchpad.net. This has generally worked well, but one significant snag became clear later on: it was difficult to add <a href="https://bugs.launchpad.net/launchpad/+bug/1473091" data-type="URL" data-id="https://bugs.launchpad.net/launchpad/+bug/1473091">HTTPS support for PPAs</a> due to the way that cookies work on the web.</p> <p>Launchpad uses a cookie for your login session, which is of course security-critical, and because we use multiple domain names for the main web application (bugs.launchpad.net, code.launchpad.net, and so on), the session cookie domain has to be set to allow subdomains of launchpad.net. We set the &#8220;Secure&#8221; flag on session cookies to ensure that browsers only ever send them over HTTPS, as well as the &#8220;HttpOnly&#8221; flag to prevent direct access to it from JavaScript; but there are still ways in which arbitrary JS on an HTTPS subdomain of launchpad.net might be able to exfiltrate or abuse users&#8217; session cookies. As a result, we can never allow any HTTPS subdomain of launchpad.net to publish completely user-generated HTML that we don&#8217;t process first.</p> <p>We don&#8217;t currently know of a way to get ppa.launchpad.net to serve arbitrary HTML as <code>Content-Type: text/html</code>, but this is quite a brittle protection as there are certainly ways (used for things like installer uploads) to upload arbitrary files to ppa.launchpad.net under a user-controlled directory structure, and we don&#8217;t want the webapp&#8217;s security to depend on nobody figuring out how to convince a browser to interpret any of that as arbitrary HTML. The librarian is already on a separate launchpadlibrarian.net domain name for a similar reason.</p> <p>To resolve this dilemma, we&#8217;ve added a new ppa.launchpadcontent.net domain name which supports both HTTP and HTTPS (and similarly private-ppa.launchpadcontent.net for private PPAs, which as before is HTTPS-only). <code>add-apt-repository</code> in Ubuntu 22.04 will <a href="https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1959015">use the new domain name by default</a>.</p> <p>The old names will carry on working indefinitely &#8211; we know they&#8217;re embedded in lots of configuration and scripts, and we have no inclination to break all of those &#8211; but we recommend moving to the new names where possible. ppa.launchpad.net will remain HTTP-only.</p> <p>Some systems may need to be updated to support the new domain name, particularly things like HTTP(S) proxy configuration files and <code>no_proxy</code> environment variables.</p> </div> <p class="postmetadata">Tags: <a href="https://blog.launchpad.net/tag/announcement" rel="tag">announcement</a>, <a href="https://blog.launchpad.net/tag/front-page" rel="tag">front-page</a>, <a href="https://blog.launchpad.net/tag/ppa" rel="tag">PPA</a><br /> Posted in <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/ppa/new-domain-names-for-ppas#comments">5 Comments &#187;</a></p> </div> <div class="post"> <h3 id="post-4204"><a href="https://blog.launchpad.net/ppa/ppas-for-ppc64el" rel="bookmark" title="Permanent Link to PPAs for ppc64el">PPAs for ppc64el</a></h3> <small>Tuesday, October 27th, 2015</small> <div class="entry"> <p>Personal package archives on Launchpad only build for the amd64 and i386 architectures by default, which meets most people&#8217;s needs.聽 Anyone with an e-mail address can have a PPA, so they have to be securely virtualised, but that&#8217;s been feasible on x86 for a long time.聽 Dealing with the other architectures that Ubuntu supports (currently arm64, armhf, powerpc, and ppc64el) in a robust and scalable way has been harder.聽 Until recently, all of those architectures were handled either by running one builder per machine on bare metal, or in some cases by running builders on a small number of manually-maintained persistent virtual machines per physical machine.聽 Neither of those approaches scales to the level required to support PPAs, and we need to make sure that any malicious code run by a given build is strictly confined to that build.聽 (We support virtualised armhf PPAs, but only by using <code>qemu-user-static</code> in an amd64 virtual machine, which is very fragile and there are many builds that it simply can&#8217;t handle at all.)</p> <p>We&#8217;ve been working with our sysadmins for several months to extend <a href="https://insights.ubuntu.com/2014/10/30/scalingstack-2x-performance-in-launchpads-build-farm-with-openstack/">ScalingStack</a> to non-x86 architectures, and at the start of Ubuntu&#8217;s 16.04 development cycle we were finally able to switch all ppc64el builds over to this system.聽 Rather than four builders, we now have 30, each of which is reset to a clean virtual machine instance between each build.聽 Since that&#8217;s more than enough to support Ubuntu&#8217;s needs, we&#8217;ve now &#8220;unrestricted&#8221; the architecture so that it can be used for PPAs as well, and PPA owners can enable it at will.聽 To do this, visit the main web page for your PPA (which will look something like &#8220;https://launchpad.net/~&lt;person-name&gt;/+archive/ubuntu/&lt;ppa-name&gt;&#8221;) and follow the &#8220;Change details&#8221; link; you&#8217;ll see a list of checkboxes under &#8220;Processors&#8221;, and you can enable or disable any that aren&#8217;t greyed out.聽 This also means that you can disable amd64 or i386 builds for your PPA if you want to.</p> <p>We&#8217;re working to extend this to all the existing Ubuntu architectures at the moment.聽 arm64 is up and running but we&#8217;re still making sure it&#8217;s sufficiently robust; armhf will run on arm64 guests, and just needs a kernel patch to set its <code>uname</code> correctly; and powerpc builds will run in different guests on the same POWER8 compute nodes as ppc64el once we have suitable cloud images available.聽 We&#8217;ll post further announcements when further architectures are unrestricted.</p> </div> <p class="postmetadata">Tags: <a href="https://blog.launchpad.net/tag/front-page" rel="tag">front-page</a>, <a href="https://blog.launchpad.net/tag/ppa" rel="tag">PPA</a>, <a href="https://blog.launchpad.net/tag/soyuz" rel="tag">soyuz</a><br /> Posted in <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/ppa/ppas-for-ppc64el#respond">No Comments &#187;</a></p> </div> <div class="post"> <h3 id="post-4173"><a href="https://blog.launchpad.net/general/launchpad-news-april-june-2015" rel="bookmark" title="Permanent Link to Launchpad news, April-June 2015">Launchpad news, April-June 2015</a></h3> <small>Thursday, July 9th, 2015</small> <div class="entry"> <p>It&#8217;s been a while since we posted much regularly on this team blog, not least because for a while Launchpad was running more or less in maintenance mode.聽 That&#8217;s no longer the case and we&#8217;re back to the point where we can do feature development work again, as exemplified by our recent addition of <a href="http://blog.launchpad.net/general/git-code-hosting-beta">Git code hosting support</a>.</p> <p>Lots of other things have been happening in the Launchpad world lately, though, and the half-way point in the year seems like a good time to start talking about them.聽 I&#8217;m going to try to do this a bit more regularly, aiming for about once a month when we also update our internal stakeholders.聽 This post covers roughly the last three months.</p> <p> <a href="https://blog.launchpad.net/general/launchpad-news-april-june-2015#more-4173" class="more-link"><span aria-label="Continue reading Launchpad news, April-June 2015">(more&hellip;)</span></a></p> </div> <p class="postmetadata">Tags: <a href="https://blog.launchpad.net/tag/front-page" rel="tag">front-page</a><br /> Posted in <a href="https://blog.launchpad.net/category/code" rel="category tag">Code</a>, <a href="https://blog.launchpad.net/category/cool-new-stuff" rel="category tag">Cool new stuff</a>, <a href="https://blog.launchpad.net/category/general" rel="category tag">General</a>, <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/general/launchpad-news-april-june-2015#comments">9 Comments &#187;</a></p> </div> <div class="post"> <h3 id="post-3317"><a href="https://blog.launchpad.net/cool-new-stuff/setting-up-commercial-projects-quickly" rel="bookmark" title="Permanent Link to Setting up commercial projects quickly">Setting up commercial projects quickly</a></h3> <small>Wednesday, April 18th, 2012</small> <div class="entry"> <p><a href="/wp-content/uploads/2012/04/2967373590_3422330020.jpg"><img class="alignnone size-medium wp-image-3352" title="the fast project train" src="/wp-content/uploads/2012/04/2967373590_3422330020-300x200.jpg" alt="" width="300" height="200" srcset="/wp-content/uploads/2012/04/2967373590_3422330020-300x200.jpg 300w, /wp-content/uploads/2012/04/2967373590_3422330020.jpg 500w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Setting up a commercial project in Launchpad has gotten easier. You can now quickly register a proprietary project and enable private bugs. You can create private teams and private personal package archives, AKA private PPA or P3A without the assistance of a Launchpad admin.</p> <p>When you select the Other/Proprietary license while聽registering a project, or changing the project&#8217;s details,</p> <p><img loading="lazy" class="alignnone size-full wp-image-3338" title="Proprietary license" src="/wp-content/uploads/2012/04/proprietary-license.png" alt="" width="369" height="293" srcset="/wp-content/uploads/2012/04/proprietary-license.png 369w, /wp-content/uploads/2012/04/proprietary-license-300x238.png 300w" sizes="(max-width: 369px) 100vw, 369px" /></p> <p>it is given a complimentary 30-day commercial subscription.</p> <p><img loading="lazy" class="alignnone size-full wp-image-3341" title="Commercial subscription" src="/wp-content/uploads/2012/04/commercial-subscription.png" alt="" width="348" height="107" srcset="/wp-content/uploads/2012/04/commercial-subscription.png 348w, /wp-content/uploads/2012/04/commercial-subscription-300x92.png 300w" sizes="(max-width: 348px) 100vw, 348px" /></p> <p>The delay between the moment when a commercial project was registered and when the commercial subscription was purchased and then applied to the project caused a lot of confusion. During this delay, proprietary data could be disclosed. We chose to award the project with a short term commercial subscription which enabled the project to be properly configured while the 12-month commercial subscription was being purchased and applied to the project.</p> <h3>Any project with a commercial subscription can enable</h3> <dl> <dt><strong>Default private bugs</strong></dt> <dd>Once enabled by configuring the project&#8217;s bug tracker, all new reported bugs are private. You can choose to make the report public.</dd> <dd><a href="/wp-content/uploads/2012/04/private-bugs.png"><img loading="lazy" class="alignnone size-full wp-image-3334" title="Default private bugs" src="/wp-content/uploads/2012/04/private-bugs.png" alt="Default private bugs" width="421" height="62" srcset="/wp-content/uploads/2012/04/private-bugs.png 421w, /wp-content/uploads/2012/04/private-bugs-300x44.png 300w" sizes="(max-width: 421px) 100vw, 421px" /></a></dd> <dt><strong>Default private branches</strong></dt> <dd>You can request a Launchpad admin to configure private branches for your teams. (You will be able to do this yourself in the near future when projects gain proprietary branches.)</dd> </dl> <h3>As the maintainer of a project with a commercial subscription, you can register</h3> <dl> <dt><strong>Private teams</strong></dt> <dd>When you register a team, you can choose to set the team visibility to private. The team&#8217;s members and data is hidden from non-members.</dd> <dd><a href="/wp-content/uploads/2012/04/private-team.png"><img loading="lazy" class="alignnone size-full wp-image-3337" title="Private team" src="/wp-content/uploads/2012/04/private-team.png" alt="" width="568" height="132" srcset="/wp-content/uploads/2012/04/private-team.png 568w, /wp-content/uploads/2012/04/private-team-300x69.png 300w" sizes="(max-width: 568px) 100vw, 568px" /></a></dd> <dt><strong>Private mailing lists</strong></dt> <dd>When you create a mailing list for a private team, the archive is also private. Only team members may see the messages in the archive.</dd> <dd></dd> <dd><a href="/wp-content/uploads/2012/04/private-mailing-list.png"><img loading="lazy" class="alignnone size-full wp-image-3335" title="Private mailing-list archive" src="/wp-content/uploads/2012/04/private-mailing-list.png" alt="" width="589" height="142" srcset="/wp-content/uploads/2012/04/private-mailing-list.png 589w, /wp-content/uploads/2012/04/private-mailing-list-300x72.png 300w" sizes="(max-width: 589px) 100vw, 589px" /></a></dd> <dt><strong>Private PPAs</strong></dt> <dd>When you create a PPA for your public team, you may choose to make it private; private teams can only have private PPAs. You can subscribe users to your archive so that they may install packages without revealing all your team&#8217;s members and data to the subscriber.</dd> <dd><a href="/wp-content/uploads/2012/04/private-ppa.png"><img loading="lazy" class="alignnone size-full wp-image-3336" title="Private Personal Package Archive" src="/wp-content/uploads/2012/04/private-ppa.png" alt="" width="621" height="120" srcset="/wp-content/uploads/2012/04/private-ppa.png 621w, /wp-content/uploads/2012/04/private-ppa-300x57.png 300w" sizes="(max-width: 621px) 100vw, 621px" /></a></dd> </dl> <p>A secondary benefit of this change is that you can now try Launchpad&#8217;s commercial features before purchasing a 12-month commercial subscription. The features will be disabled at the end of 30-days. Your test data will remain private to ensure your data is not disclosed.</p> <p>Any open source project may also have a commercial subscription to enable commercial features.聽You can聽<a href="http://shop.canonical.com/product_info.php?products_id=230">purchase a commercial subscription at the Canonical store.</a> Commercial subscriptions cost US$250/year/project + applicable V.A.T.</p> <p>&nbsp;</p> <p>(Photo by <a href="http://www.flickr.com/photos/fwp-dawson/">Fred Dawson</a> on flickr, creative commons license)</p> </div> <p class="postmetadata">Tags: <a href="https://blog.launchpad.net/tag/commercial" rel="tag">commercial</a>, <a href="https://blog.launchpad.net/tag/front-page" rel="tag">front-page</a>, <a href="https://blog.launchpad.net/tag/mailing-lists" rel="tag">mailing-lists</a>, <a href="https://blog.launchpad.net/tag/ppa" rel="tag">PPA</a>, <a href="https://blog.launchpad.net/tag/projects-2" rel="tag">projects</a>, <a href="https://blog.launchpad.net/tag/teams" rel="tag">teams</a><br /> Posted in <a href="https://blog.launchpad.net/category/cool-new-stuff" rel="category tag">Cool new stuff</a>, <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a>, <a href="https://blog.launchpad.net/category/projects" rel="category tag">Projects</a>, <a href="https://blog.launchpad.net/category/teams-2" rel="category tag">Teams</a> | <a href="https://blog.launchpad.net/cool-new-stuff/setting-up-commercial-projects-quickly#comments">4 Comments &#187;</a></p> </div> <div class="post"> <h3 id="post-2224"><a href="https://blog.launchpad.net/ppa/adding-a-ppa-to-ubuntu-the-gui-way" rel="bookmark" title="Permanent Link to Adding a PPA to Ubuntu &mdash; the GUI way">Adding a PPA to Ubuntu &mdash; the GUI way</a></h3> <small>Thursday, April 21st, 2011</small> <div class="entry"> <p>On Monday I posted a <a href="http://blog.launchpad.net/ppa/how-to-add-a-ppa-to-ubuntu">video showing how to add a PPA to Ubuntu using a terminal</a>.</p> <p>And here&#8217;s a <a href="http://youtu.be/QMxAtDlEHlo?hd=1">video showing how to do it using Ubuntu&#8217;s Software Centre</a>.</p> <p><iframe loading="lazy" title="YouTube video player" width="560" height="349" src="http://www.youtube.com/embed/QMxAtDlEHlo" frameborder="0" allowfullscreen></iframe></p> </div> <p class="postmetadata"> Posted in <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/ppa/adding-a-ppa-to-ubuntu-the-gui-way#comments">1 Comment &#187;</a></p> </div> <div class="post"> <h3 id="post-2172"><a href="https://blog.launchpad.net/ppa/how-to-add-a-ppa-to-ubuntu" rel="bookmark" title="Permanent Link to How to add a PPA to Ubuntu">How to add a PPA to Ubuntu</a></h3> <small>Monday, April 18th, 2011</small> <div class="entry"> <p>I noticed over the weekend that the search term bringing most visitors to this blog was &#8220;how to add a PPA to Ubuntu&#8221; and variants.</p> <p>So, <a href="http://youtu.be/yPpM0-GSJMs?hd=1">here&#8217;s a screencast showing you how</a>.</p> <p><iframe loading="lazy" title="YouTube video player" width="560" height="349" src="http://www.youtube.com/embed/yPpM0-GSJMs" frameborder="0" allowfullscreen></iframe></p> <p>For more, see <a href="https://help.launchpad.net/Packaging/PPA/InstallingSoftware">our help guide</a>.</p> <p><strong>Update:</strong> here&#8217;s a <a href="http://blog.launchpad.net/ppa/adding-a-ppa-to-ubuntu-the-gui-way">video showing how to do it with the Ubuntu Software Centre</a>.</p> </div> <p class="postmetadata"> Posted in <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/ppa/how-to-add-a-ppa-to-ubuntu#comments">9 Comments &#187;</a></p> </div> <div class="post"> <h3 id="post-2049"><a href="https://blog.launchpad.net/cool-new-stuff/source-package-recipes" rel="bookmark" title="Permanent Link to Source package recipes">Source package recipes</a></h3> <small>Wednesday, April 6th, 2011</small> <div class="entry"> <p><a href="http://www.flickr.com/photos/dearbarbie/1507731045/sizes/m/in/photostream/"><img loading="lazy" style="float: right; margin: 0 0 10px 10px;" src="/wp-content/uploads/2011/04/pint-of-beer.jpg" alt="A pint of ale" title="A pint of ale" width="200" height="267" class="size-full wp-image-2048" /></a></p> <p>Here&#8217;s a quick pub quiz:</p> <p><strong>Question:</strong> How do you make packages for Ubuntu?</p> <p>You can choose from the following answers:</p> <ol> <li>learn Debian packaging through hours of study and practice</li> <li>borrow existing packaging from elsewhere, throw a couple of Bazaar branches together and let Launchpad handle the rest</li> <li>Uruguay in both 1930 and 1950.</li> </ol> <p>If you selected either of the first answers you&#8217;d be right. </p> <p>Okay, so, if you want to do it for real &mdash; i.e. become an Ubuntu MOTU or otherwise create Debian-style packages from scratch &mdash; then you still need to go through the hard work.</p> <p>However, for everyone else who really just needs to get something out there and working for, say, a group of beta testers, we now have Launchpad&#8217;s source package recipes.</p> <h3>How it works, in three steps</h3> <p>It&#8217;s almost ridiculously easy to set up a source package build:</p> <div style="font-size: 1.5em"> <ol> <li>Choose a branch in Launchpad, whether hosted directly or imported.</li> <li>Write a short recipe that tells Launchpad which other branches to pull in, for example to provide packaging or make the code buildable.</li> <li>Paste your recipe into Launchpad.</li> </ol> </div> <p>And that&#8217;s it. Within a few minutes you can set up a daily build direct from your trunk or any other buildable branch in Launchpad.</p> <p>Watch how it works in our screencast:</p> <p><iframe loading="lazy" title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/_bG-SXNX9Ww" frameborder="0" allowfullscreen></iframe></p> <h3>An example</h3> <p><a href="http://www.flickr.com/photos/philip-rosie/96410102/"><img loading="lazy" style="float: right; margin: 0 0 10px 10px;" src="/wp-content/uploads/2011/04/alvin.jpg" alt="Alvin Hall" title="Alvin Hall" width="200" height="259" class="size-full wp-image-2083" /></a></p> <p>Let&#8217;s say you&#8217;re the developer of a home finance application called Alvin. You track your project&#8217;s code using Git and host it on your own server. For the past couple of years Alvin has been packaged in the Ubuntu universe and your trunk has also been imported from Git to a Bazaar branch in Launchpad at <em>lp:alvin</em>.</p> <p>Just as you&#8217;re approaching Alvin&#8217;s next release, you want to get some wider testing. In the past, you&#8217;ve published a nightly tarball and provided instructions on manual installation. That&#8217;s given you a handful of dedicated beta testers but you&#8217;re worried that you&#8217;re asking too much of people.</p> <p>With Launchpad&#8217;s source package recipes, you write a short <em>recipe</em> that pulls in your trunk branch, adds the packaging from Alvin&#8217;s existing Ubuntu package and then builds an installable Ubuntu package in the PPA of your choice:</p> <p><code><br /> # bzr-builder format 0.3 deb-version 2.0beta+{revno}<br /> lp:alvin<br /> nest-part packaging lp:ubuntu/alvin debian debian<br /> </code></p> <p>Paste the recipe into Launchpad and with a couple of clicks you have a daily build of your trunk, that&#8217;s published as an Ubuntu package in your PPA.</p> <p>Now you can ask people to test the latest Alvin code by doing no more than adding your PPA to their system. Launchpad will build a new version of the package on each day it spots a change in your trunk (or the Ubuntu packaging). For your beta testers, any changes will show up just like any other Ubuntu update.</p> <p>Simple as that!</p> <p>Here&#8217;s a quick recap of how it works: you can take any buildable branch &mdash; whether hosted in directly Launchpad or imported from Git, Subversion, CVS or Bazaar hosted elsewhere &mdash; merge or nest other branches, add packaging and then leave it to Launchpad to create a daily build that it publishes in your chosen PPA.</p> <h3>Seeing it in action</h3> <p><img loading="lazy" style="float: right; margin: 0 0 10px 10px;" src="/wp-content/uploads/2011/04/daily-builds-list.png" alt="List of daily builds in Launchpad" title="List of daily builds in Launchpad" width="400" height="222" class="size-full wp-image-2076" /></p> <p>During the beta, people added a whole range of source package recipes, with a <a href="https://code.launchpad.net/+daily-builds">list of more than 350 daily builds</a> as I write this.</p> <p>Daily builds on Launchpad right now include <a href="https://launchpad.net/project-neon">Project Neon</a>, who have around <a href="https://code.launchpad.net/~neon/+recipes">sixty recipes providing daily builds of KDE and Amarok</a>. There are also daily builds of the <a href="https://code.launchpad.net/~scribus/+recipe/scribus-daily">Scribus DTP app</a>, <a href="https://code.launchpad.net/~audacity-team/+recipe/daily">Audacity</a> and the scriptable screen reader <a href="https://code.launchpad.net/~dusek/+recipe/gnome-orca-daily">Gnome Orca</a>.</p> <h3>Try it out</h3> <p>It&#8217;s easy to get your own source package recipes and daily builds up and running. </p> <p>Start at our <a href="https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted">Getting Started guide</a> and <a href="http://www.youtube.com/watch?v=_bG-SXNX9Ww">screencast</a>.</p> <p>I&#8217;ll leave the last word to <a href="https://launchpad.net/~kazade">Luke Benstead</a>, who has been using source package recipes while developing a set of game libraries:</p> <blockquote><p> I&#8217;ve been using LP to develop some small open source game libraries. Because there are quite a few of them, packaging them all is a pain, so the package builds have worked out pretty well for them.</p> <p>Now I get nightly builds delivered to a PPA, so I know that if I fix a bug it&#8217;s reflected to all my machines. And my recipes are only a single line so they&#8217;ve been really easy to use. I&#8217;m not really sure how they could be easier. </p></blockquote> <p><small>Images:<br /> <a href="http://www.flickr.com/photos/dearbarbie/1507731045/sizes/m/in/photostream/">Beer photo by dearbarbie</a>. CC-BY-SA.<br /> <a href="http://www.flickr.com/photos/philip-rosie/96410102/">Alvin Hall photo by Phil Guest</a>. CC-BY-SA.<br /> </small></p> </div> <p class="postmetadata">Tags: <a href="https://blog.launchpad.net/tag/front-page" rel="tag">front-page</a><br /> Posted in <a href="https://blog.launchpad.net/category/code" rel="category tag">Code</a>, <a href="https://blog.launchpad.net/category/cool-new-stuff" rel="category tag">Cool new stuff</a>, <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/cool-new-stuff/source-package-recipes#comments">4 Comments &#187;</a></p> </div> <div class="post"> <h3 id="post-1972"><a href="https://blog.launchpad.net/ppa/failed-to-fetch-errors-for-ppas" rel="bookmark" title="Permanent Link to &#8220;Failed to fetch&#8221; errors for PPAs &#8230;">&#8220;Failed to fetch&#8221; errors for PPAs &#8230;</a></h3> <small>Friday, February 18th, 2011</small> <div class="entry"> <p>You may start getting &#8220;Failed to fetch&#8221; error messages when updating your software sources (e.g. through &#8220;<code>apt-get update</code>&#8221; or &#8220;<em>Reload package information</em>&#8221; in Synaptic), which may be due to a bug we&#8217;ve just cleaned聽up in Launchpad&#8217;s PPAs.</p> <p>The error looks like this:</p> <pre> W: Failed to fetch http://ppa.launchpad.net/chromium-daily/ppa/ubuntu/dists/maverick/Release Unable to find expected entry restricted/binary-i386/Packages in Meta-index file (malformed Release file?) E: Some index files failed to download, they have been ignored, or old ones used instead.</pre> <p> <a href="https://blog.launchpad.net/ppa/failed-to-fetch-errors-for-ppas#more-1972" class="more-link"><span aria-label="Continue reading &#8220;Failed to fetch&#8221; errors for PPAs &#8230;">(more&hellip;)</span></a></p> </div> <p class="postmetadata">Tags: <a href="https://blog.launchpad.net/tag/apt" rel="tag">apt</a>, <a href="https://blog.launchpad.net/tag/error" rel="tag">error</a>, <a href="https://blog.launchpad.net/tag/ppa" rel="tag">PPA</a>, <a href="https://blog.launchpad.net/tag/soyuz" rel="tag">soyuz</a>, <a href="https://blog.launchpad.net/tag/tip" rel="tag">tip</a><br /> Posted in <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/ppa/failed-to-fetch-errors-for-ppas#comments">19 Comments &#187;</a></p> </div> <div class="post"> <h3 id="post-1889"><a href="https://blog.launchpad.net/cool-new-stuff/tracking-ppa-download-statistics" rel="bookmark" title="Permanent Link to Tracking PPA download statistics">Tracking PPA download statistics</a></h3> <small>Tuesday, January 11th, 2011</small> <div class="entry"> <p>An <a href="https://bugs.launchpad.net/launchpad/+bug/139855">long-requested feature</a> in Launchpad is to let people see who&#8217;s using a PPA. Finally, we&#8217;ve implemented this!</p> <p>Initially, the stats are only available on <a href="https://help.launchpad.net/API">Launchpad&#8217;s webservice API.</a> but we aim to <a href="https://bugs.launchpad.net/bugs/688141">show something useful in the web UI</a> at some point.</p> <p>If you are already familiar with the webservice API, then you can use the following <a href="https://edge.launchpad.net/+apidoc/devel.html#binary_package_publishing_history">binary_package_publishing_history</a> object methods to retrieve the information:</p> <ul> <li>getDailyDownloadTotals</li> <li>getDownloadCount</li> <li>getDownloadCounts</li> </ul> <p><a href="http://launchpad.net/~fta">Fabien Tassin</a> is already using the stats to see how many people are using his daily build PPAs, and wrote an interesting <a href="http://ftagada.wordpress.com/2011/01/05/ppa-stats-initial-impressions/">blog post</a> about it.</p> </div> <p class="postmetadata"> Posted in <a href="https://blog.launchpad.net/category/api" rel="category tag">API</a>, <a href="https://blog.launchpad.net/category/cool-new-stuff" rel="category tag">Cool new stuff</a>, <a href="https://blog.launchpad.net/category/ppa" rel="category tag">PPA</a> | <a href="https://blog.launchpad.net/cool-new-stuff/tracking-ppa-download-statistics#comments">3 Comments &#187;</a></p> </div> <div class="navigation"> <div class="alignleft"><a href="https://blog.launchpad.net/category/ppa/page/2" >&laquo; Older Entries</a></div> <div class="alignright"></div> </div> </div> <div id="sidebar"> <h2>Latest Posts</h2> <ul id="lastentries"> <li><a href="https://blog.launchpad.net/general/launchpads-new-homepage" title="Launchpad鈥檚 new homepage">Launchpad鈥檚 new homepage</a></li> <li><a href="https://blog.launchpad.net/general/launchpad-verified-federated-matrix-accounts" title="Launchpad-linked federated Matrix accounts">Launchpad-linked federated Matrix accounts</a></li> <li><a href="https://blog.launchpad.net/ppa/self-service-riscv64-builds" title="Self-service riscv64 builds">Self-service riscv64 builds</a></li> <li><a href="https://blog.launchpad.net/general/introducing-project-scoped-access-tokens" title="Introducing Project-Scoped Access Tokens">Introducing Project-Scoped Access Tokens</a></li> <li><a href="https://blog.launchpad.net/ppa/new-domain-names-for-ppas" title="New domain names for PPAs">New domain names for PPAs</a></li> </ul> </div> <div id="footer"> <p> <a href="https://help.launchpad.net/Legal">Terms of use</a> | <a href="https://launchpad.net/feedback">Help improve Launchpad</a> | <a href="https://launchpad.net/faq">FAQ</a> </p> <p><a rel="license" href="http://creativecommons.org/licenses/by/2.0/uk/"> <span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type">Launchpad Blog</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://canonical.com/" property="cc:attributionName" rel="cc:attributionURL">Canonical Ltd</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/2.0/uk/">Creative Commons Attribution 2.0 UK: England &amp; Wales License</a>. <img alt="Creative Commons License" style="border-width:0;vertical-align:middle;" src="https://i.creativecommons.org/l/by/2.0/uk/80x15.png" /></a></p> <p>&copy; 2004-2019 <a href="https://canonical.com/" target="_blank">Canonical Limited.</a></p> </div>

Pages: 1 2 3 4 5 6 7 8 9 10