I’m pleased to announce the general availability of OpenStack 2014.1 (Icehouse) in Ubuntu 14.04 LTS and in the Ubuntu Cloud Archive (UCA) for Ubuntu 12.04 LTS.
Users of Ubuntu 14.04 need take no further action other than follow their favourite install guide – but do take some time to checkout the release notes for Ubuntu 14.04.
Ubuntu 12.04 users can enable the Icehouse pocket of the UCA by running:sudo add-apt-repository cloud-archive:icehouse
The Icehouse pocket of the UCA also includes updates for associated packages including Ceph 0.79 (which will be updated to the Ceph 0.80 Firefly stable release), Open vSwitch 2.0.1, qemu 2.0.0 and libvirt 1.2.2 – you can checkout the full list here.
Thanks goes to all of the people who have contributed to making OpenStack rock this release cycle – both upstream and in Ubuntu!
Remember that you can report bugs on packages from the UCA for Ubuntu 12.04 and from Ubuntu 14.04 using the ubuntu-bug tool – for example:ubuntu-bug nova
will report the bug in the right place on launchpad and add some basic information about your installation.
The Juju charms for OpenStack have also been updated to support deployment of OpenStack Icehouse on Ubuntu 14.04 and Ubuntu 12.04. Read the charm release notes for more details on the new features that have been enabled during this development cycle.
Canonical have a more concise install guide in the pipeline for deploying OpenStack using Juju and MAAS – watch this space for more information…
Stephen Michael Kellat asked me to post this:
As this is sent, the release announcement for Ubuntu and its many flavors is not up yet. Please take the time to download the 14.04 Long Term Support Release and to liberally seed torrents if you can. So far Xubuntu 14.04 has been wonderful and I am an “apt-get dist-upgrade” away from transitioning off beta to final on my installed base.
Discs for distribution have **not** been pre-ordered. If there is interest in doing a disc distribution campaign, please talk to the three Deputies about making a plan. I will not order discs to just have lay around gathering dust.
Have a great Thursday. Svetlana Belkin, James Gifford, Unit193…I leave the celebrations for you to lead. Svetlana, please post a copy of this message to your blog with such comment as you deem fit. My duties at work plus commute time prevent my celebrating much for this release on release day.
Stephen Michael Kellat
Point of Contact/Leader, Ubuntu Ohio
Member, LoCo Council
As for me, I have Ubuntu 14.04 32 bit on one of my laptops and I will have a review of Ubuntu 14.04 up soon.
The Ubuntu team is very pleased to announce our fifth long-term support
release, Ubuntu 14.04 LTS for Desktop, Server, Cloud, and Core, as well
as Ubuntu 14.04 for Phone and Tablet products.
Codenamed “Trusty Tahr”, 14.04 LTS continues Ubuntu’s proud tradition
of integrating the latest and greatest open source technologies into a
high-quality, easy-to-use Linux distribution. The team has been hard at
work through this cycle, introducing new features and fixing bugs.
Ubuntu 14.04 LTS is the first long-term support release with support
for the new “arm64″ architecture for 64-bit ARM systems, as well as the
“ppc64el” architecture for little-endian 64-bit POWER systems. This
release also includes several subtle but welcome improvements to Unity,
AppArmor, and a host of other great software.
Ubuntu Server 14.04 LTS includes the Icehouse release of OpenStack,
alongside deployment and management tools that save devops teams time
when deploying distributed applications – whether on private clouds,
public clouds, x86 or ARM servers, or on developer laptops. Several key
server technologies, from MAAS to Ceph, have been updated to new upstream
versions with a variety of new features.
The newest Kubuntu, Edubuntu, Xubuntu, Lubuntu, Ubuntu GNOME, Ubuntu
Kylin, and Ubuntu Studio are also being released today. More details
can be found for these at their individual release notes:
Maintenance updates will be provided for 5 years for Ubuntu Desktop,
Ubuntu Server, Ubuntu Cloud, Ubuntu Core, Ubuntu Kylin, Edubuntu, and
Kubuntu. All the remaining flavours will be supported for 3 years.
To get Ubuntu 14.04 LTS
In order to download Ubuntu 14.04 LTS, visit:
Users of Ubuntu 12.10 and 13.10 will be offered an automatic upgrade to
14.04 LTS via Update Manager shortly. Users of 12.04 LTS will be
offered the automatic upgrade when 14.04.1 LTS is released, which is
scheduled for July 24th. For further information about upgrading, see:
As always, upgrades to the latest version of Ubuntu are entirely free
We recommend that all users read the release notes, which document
caveats, workarounds for known issues, as well as more in-depth notes
on the release itself. They are available at:
Find out what’s new in this release with a graphical overview:
The Ubuntu GNOME Team is proud and happy to announce the release of Ubuntu GNOME 14.04 LTS.
Ubuntu GNOME is an official flavour of Ubuntu, featuring the GNOME desktop environment. Ubuntu GNOME is a mostly pure GNOME desktop experience built from the Ubuntu repositories. This is our very first Long Term Release (LTS) version.Release Notes
Please read the Release Notes before Downloading Ubuntu GNOME 14.04 LTS:
There are important steps you need to be aware of before installing Ubuntu GNOME 14.04 LTS so please read carefully: Download Ubuntu GNOME 14.04 LTSUbuntu Announcement and Release Notes
Please see this link.Contact Us
Please, see the full list of our communications channelsThank you everyone
To each and everyone who participated, helped, supported and contributed to Ubuntu GNOME this cycle; big thanks to all of you.
Ubuntu GNOME Team has gone the extra miles by putting extraordinary efforts to the point, the team was ready to apply for the LTS Status. We have done all what we could to achieve that and indeed we have and therefore, we gained and deserved the LTS Status. Without a doubt, that is a huge achievement in our history.
Special thanks to our testers who did a unique great job to make Ubuntu GNOME better. As a result of all these efforts, we have a great LTS release to be proud of.
Thank you for choosing and using Ubuntu GNOME.
QA Lead of Ubuntu GNOME
The Ubuntu team is very pleased to announce our fifth long-term support release, Ubuntu 14.04 LTS for Desktop, Server, Cloud, and Core, as well as Ubuntu 14.04 for Phone and Tablet products.
Codenamed "Trusty Tahr", 14.04 LTS continues Ubuntu’s proud tradition of integrating the latest and greatest open source technologies into a high-quality, easy-to-use Linux distribution. The team has been hard at work through this cycle, introducing new features and fixing bugs.
Ubuntu 14.04 LTS is the first long-term support release with support for the new "arm64" architecture for 64-bit ARM systems, as well as the "ppc64el" architecture for little-endian 64-bit POWER systems. This release also includes several subtle but welcome improvements to Unity, AppArmor, and a host of other great software.
Ubuntu Server 14.04 LTS includes the Icehouse release of OpenStack, alongside deployment and management tools that save devops teams time when deploying distributed applications – whether on private clouds, public clouds, x86 or ARM servers, or on developer laptops. Several key server technologies, from MAAS to Ceph, have been updated to new upstream versions with a variety of new features.
The newest Kubuntu, Edubuntu, Xubuntu, Lubuntu, Ubuntu GNOME, Ubuntu Kylin, and Ubuntu Studio are also being released today. More details can be found for these at their individual release notes:
Maintenance updates will be provided for 5 years for Ubuntu Desktop, Ubuntu Server, Ubuntu Cloud, Ubuntu Core, Ubuntu Kylin, Edubuntu, and Kubuntu. All the remaining flavours will be supported for 3 years.To get Ubuntu 14.04 LTS
In order to download Ubuntu 14.04 LTS, visit:
Users of Ubuntu 12.10 and 13.10 will be offered an automatic upgrade to 14.04 LTS via Update Manager shortly. Users of 12.04 LTS will be offered the automatic upgrade when 14.04.1 LTS is released, which is scheduled for July 24th. For further information about upgrading, see:
As always, upgrades to the latest version of Ubuntu are entirely free of charge.
We recommend that all users read the release notes, which document caveats, workarounds for known issues, as well as more in-depth notes on the release itself. They are available at:
Find out what’s new in this release with a graphical overview:
If you have a question, or if you think you may have found a bug but aren’t sure, you can try asking in any of the following places:
#ubuntu on irc.freenode.net
If you would like to help shape Ubuntu, take a look at the list of ways you can participate at:
Ubuntu is a full-featured Linux distribution for desktops, laptops, netbooks and servers, with a fast and easy installation and regular releases. A tightly-integrated selection of excellent applications is included, and an incredible variety of add-on software is just a few clicks away.
Professional services including support are available from Canonical and hundreds of other companies around the world. For more information about support, visit:
You can learn more about Ubuntu and about this release on our website listed below:
To sign up for future Ubuntu announcements, please subscribe to Ubuntu’s very low volume announcement list at:
Originally posted to the ubuntu-announce mailing list on Thu Apr 17 17:09:54 UTC 2014 by Adam Conrad
The Kubuntu and KDE team has been hard at work for the last 6 months, which has culminated into a rocking Kubuntu 14.04 release which introduces a whole bunch of new features, the most important of which are :
- A new semantic search framework for KDE SC 4.13, leading to faster email and file searches
- Automatic error reporting in order to improve the quality of KDE and Kubuntu
- A new driver manager to make it simpler to activate hardware that requires proprietary drivers
- Notifications for when additional drivers or language packs can be installed to improve your Kubuntu experience
- A new touchpad management app for laptops
- Misc. bug fixes and features that can be found here
Kubuntu 14.04 is a LTS release, so while introducing new applications, we’ve also taken into account personal and business users who would want to run it for extended periods of time, which is why the Kubuntu team makes the following promise :
- Kubuntu 14.04 will keep receiving security bug fixes when such fixes are available from KDE upstream for the next 5 years
- New releases of the KDE SC will be backported to 14.04 and be available via Kubuntu PPA’s for the next 2 years
- A long-term upgrade path to the next LTS release
Along with the above, the Ubuntu team also has plans to backport new Xorg and friends releases as well as new kernel releases as part of their LTS Enablement stack, making sure that your hardware performance keeps improving over the time of 5 years.
All of this makes Kubuntu the ideal distribution to use for enterprise rollouts, OEM’s and of course regular users who want a longer support cycle ( as opposed to the regular, 9 month, support cycle )
Welcome to Kubuntu 14.04 LTS, a brand new Long Term Supported version with the latest KDE software to enjoy.
Long Term Support means bugfixes and security updates will be added for the next 5 years, so you can be safe to use it until 2019. New releases of important KDE Software will also be available from the Kubuntu Updates and Kubuntu Backports PPAs.
Welcome to Edubuntu 14.04 LTS!
The Edubuntu development team announces today the release of Edubuntu 14.04 LTS.
As the second Long Term Support release of the Edubuntu, this version will be supported for 5 years, until April 2019. The Edubuntu development team will also provide "point releases" in sync with Ubuntu to offer you new installation media containing all the latest bug fixes and hardware enablement stacks.
Please visit the download page for information on how to obtain it.
What's new ?
As usual, Edubuntu inherits most of the changes that occur in Ubuntu.
Additionally, this release brings you:
- Epoptes 0.5.7, an update to the popular classroom management software suite.
- New major version of LTSP (5.5.x), including numerous bugfixes, speed improvement, lowering bandwidth requirements and improving fat client support.
Edubuntu inherits new features from Ubuntu 14.04, please read the full release notes for a listing of the latest features and issues.
How do I get it ?
The DVD image (also usable as a USB image) is downloadable from our download page.
Installation instructions are available here.
If you already have an Ubuntu or Ubuntu based system installed, you can simply install any additional Edubuntu packages that you would like to use from the Software Center.
Users of Edubuntu 13.10 as well as fully up to date users from the 12.04 series can upgrade directly to 14.04.
Community support is available via IRC, Forums and Mailing lists.
Please refer to http://edubuntu.org/documentation for more information.
The Edubuntu project aims to maintain high quality educational and related packages in Ubuntu. Additionally, we also produce the Edubuntu DVD, which aims to be an easy to use Ubuntu system designed for home and classroom use.
For more information, see: About Edubuntu
We would like to congratulate the other Ubuntu Flavors on their 14.04 releases and have plans to join them with our 14.04 release in the next week. We would also like to thank all of our users for their patience and their continued support.
In this week’s show:-
- We take a look at what’s been happening in the news:
- Windows XP support has officially ended!
- A major security flaw in OpenSSL, dubbed “heartbleed” has been discovered and patched. There’s an interesting timeline of who knew what and when and an interesting article about it all…
- Open Rights Group has launched an IndieGoGo campaign to raise money for a campaign video against Internet censorship in the UK.
- Independent audit of TrueCrypt disk encryption system found some bugs, but no evidence of intentional flaws in the technology or backdoors.
- Samsung Galaxy S5 fingerprint scanner can be fooled…
- The Guardian and Washington Post news papers have been awarded the Pulitzer prize for public service for their reporting of the NSA revelations.
- We also take a look at what’s been happening in the community:
- GNOME foundation is facing a budget shortfall…
- Ubuntu 14.04 LTS is released!
- Migrating a Spanish school’s computers from Windows XP to Ubuntu 14.04.
- Updated Ubuntu Cloud images have been released on various cloud providers in response to the OpenSSL heartbleed bug.
- The pain of porting GHC (the Glasgow Haskell Compiler) to new architectures
- Convergence plans for 14.10 and beyond…
We’ll be back next week, when we’ll review the Ubuntu 14.04 release and go through your feedback.
Please send your comments and suggestions to: email@example.com
Join us on IRC in #uupc on Freenode
Leave a voicemail via phone: +44 (0) 203 298 1600, sip: firstname.lastname@example.org and skype: ubuntuukpodcast
Follow our twitter feed http://twitter.com/uupc
Find our Facebook Fan Page
Follow us on Google Plus
As many of you know Canonical has decided to discontinue the Ubuntu One files. In my testing I have not yet decided what service to replace Ubuntu One with, but I have currently migrated all my files to OneDrive from Microsoft by making use of Storage Made Easy. Storage Made Easy has clients for Windows, Linux, OS X and mobile clients, but you can migrate files between services using their web interface as well. With a free account you can add up to three providers. Due to bandwidth limits I doubt I will use the service as my replacement, but it did allow me to transfer the files to OneDrive as a temporary home while I figure out what I will use in the future.
In the process of migrating files to Microsoft’s service I noticed what I assume is an oversight by Canonical. The Ubuntu One site does not have any notification that it is shutting down. Below are some screen shots.
worse is I can still click on sign-up without being told the file services are being discontinued.
Tomorrow the next Ubuntu Long Term Support (LTS) release comes out, 14.04, development code name Trusty Tahr. In preparation, I was putting together some materials for our release event next week and found myself looking for the Tahr artwork when I remembered that it was included in the installer. So now I’ll share it with you as well!
I haven’t found an svg version of this logo, but I’ll be sure to update this post if I do.
Looking for something slightly different? The Xubuntu team also included a tahr in our installer, created by Simon Steinbeiß:
This png has transparency, which make it show grey on white, but you can flavor it with any color you wish!
Enjoy! And happy release everyone!
Our glorious news reporters have begun posting news items directly to the site to keep you informed of all the latest Linux related news.
Clicking the NEWS link at the top of the site will show you the headlines, while looking to the right will show the five latest news posts.
Feel free to comment on the news stories as maybe the comments could expand the news section in the magazine.
We’ve been trying to get our Java developer story in order, as it’s one of the areas where users have been telling us they’d like to see made easier to manage. We brought Matthew Bruzek on board, who will be focusing on our Java framework stuff.
Here’s his first cut, and it’s a big one. We now finally have an all emcompassing Apache Tomcat Charm. This charm allows you to develop your app on top of it as a subordinate charm and be able to deploy it. As an example, let’s deploy OpenMRS.juju deploy tomcat7 juju deploy openmrs juju deploy mysql juju add-relation openmrs mysql juju add-relation openmrs tomcat7 juju expose tomcat7
The magic happens when you relate openmrs to tomcat7, that installs OpenMRS in Tomcat, and then you’re good to go.
The charm contains a ton of options for you to check out, including deploying to Tomcat6 if that’s how you roll.
That one is not in the charm store yet, but we’ll get to it!
The Xubuntu team is pleased to announce the immediate release of Xubuntu 14.04. Xubuntu 14.04 is an LTS (Long-Term Support) release and will be supported for 3 years.
The final release images are available as Torrents and direct downloads at http://cdimage.ubuntu.com/xubuntu/releases/14.04/release/
As the main server will be very busy in the first days after the release, we recommend using the Torrents wherever possible.
For support with the release, navigate to Help & Support for a complete list of methods to get help.Highlights, changes and known issues
The highlights of this release include:
- Light Locker replaces xscreensaver for screen locking, a setting editing GUI is included
- The panel layout is updated, and now uses Whiskermenu as the default menu
- Mugshot is included to allow you to easily edit your personal preferences
- MenuLibre for menu editing, with full Xfce support, replaces Alacarte
- A community wallpapers package, which includes work from the five winners of the wallpaper contest
- GTK Theme Config to customize your desktop theme colors
- Updated artwork, including various enhancements to themes as well as a new default wallpaper
Some of the known issues include:
- Xfce4 Power Manager does not restore screen power (1259339), see the release notes for details and workarounds
- Window manager shortcut keys don’t work after reboot (1292290)
- Sorting by date or name not working correctly in Ristretto (1270894)
- Due to the switch from xscreensaver to light-locker, some users might have issues with timing of locking; removing xscreensaver from the system should fix these problems
- IBus does not support certain keyboard layouts (1284635). Only affects upgrades with certain keyboard layouts. See release notes for a workaround.
To see the complete list of new features, improvements and known and fixed bugs, read the release notes.Other efforts and thanks
As always, contributors to Xubuntu have worked on various projects not directly visible in the release. While any of these would be worth mentioning, the following are a few we felt may be of interest to the community:
- QA efforts, including ISO and package testing as well as bug reporting and triaging
- Marketing projects, including work on a flyer to promote Xubuntu for people still running Windows XP
- Website updates, including a theme refresh
While many of the improvements in Xubuntu since the last LTS are, indeed, not directly visible. Some of the major improvements have been in design and theming, and as such we hope that you don’t see them – good design should be invisible.
Thanks to everybody contributing to Xubuntu! As always, new contributors are always welcome to join us. There are various different tasks to do, from testing daily ISOs and new package versions to writing and translating documentation to fixing bugs. To learn more about contributing, read the Get Involved section on the Xubuntu website.
Start up the hype machine! We’re going to take a look at what’s coming in Xubuntu 14.04.
With only two days before final release, let’s take a look at what’s new in the next LTS release of Xubuntu. Here’s 14 things that make the biggest splash this time around.New Look
- Brand new theme for the LightDM GTK+ Greeter login/lock screen.
- A new “Suru”-styled default wallpaper.
- Six wallpapers were selected from a pool of community-submitted wallpapers and included. See each of the winning submissions here.
- A new panel layout. As featured below: [Whisker Menu] [Window Buttons] [Notification Area] [Indicator Plugin] [Clock]
- “Whisker Menu”, a modern menu applet, is included by default.
- The indicator stack has been updated. Network, Power, and Sound are included and fully functional.
- The themes included come from the popular Shimmer Project and Numix Project.
- Xscreensaver has been removed in favor of Light Locker. Light Locker uses LightDM to lock the screen, merging the functionality of the login screen and the lock screen. Light Locker Settings is included to make configuration a simple task.
- Mugshot, the simple user configuration utility, is now included by default.
- The Alacarte menu editor has been removed in favor of MenuLibre.
- Parole Media Player’s plugins are once-again fully-functional.
- The Xfce Display Settings now supports monitor hotplugging.
- The Xfce Compositor now supports zooming. Just hold Alt and scroll the mousewheel up or down.
- Xubuntu 14.04 features more keyboard shortcuts and better compatibility with multimedia keyboards.
- Web Browser: WWW or Home Page or Super+W
- Mail Reader: Mail or Super+M
- File Manager: My Computer or Super+F
- Terminal: Super+T or Ctrl+Alt+T
- Display Settings: Display or Super+P
- gmusicbrowser: Music
- Calculator: Calculator
- Pidgin: Messenger
- xkill: Ctrl+Alt+Escape
As of the beginning of the April I am a Xamarin (that is what Xamarin employees call themselves).
At Xummit I met the rest of the Xamarins and I had an incredible time there (dare I say magical ♥).
I met old friends like Rodrigo Moya, Jason Smith, David Siegel, Cody Russell, Neil Patel, Connor Curran, Gord Allot and others, but also made new friends:
- Zack Gramana: The right amount of crazy and creative. He is helping me with my new pet project.
- Seth Rosetter: SF chilled out hacker with an ear for techno and extreme positive attitude, a delight to hang out with.
- Mike Krüger: One of the friendliest people I got to meet and know with exactly my kind of humour.
- Victoria Grothey: Incredibly nice person with lots of energy and always smiling.
- Marek Safar: The most passionate beer expert I know I guess. Also rumour has it that either I am stalking him or he is stalking me.
- Václav Vančura: An awesome designer who motivated me to start drawing again. Thanks for that. And many many more.
One thing I believe in, is that interpersonal relationships between co-workers is a must for a community or a company to be productive and successful. Xamarin promoted (and still promotes) this positive habit, achieved it and even more. The upbeat attitude and enthusiasm at Xamarin is infectious. Combined with the diversity in culture as well as stuff/tasks to do brings the best out of Xamarins. I will not forget the bus ride to the venue. 8 people with 7 different nationalities, but all happy and psyched about what they are doing and what others are doing ♥.
Since I joined Xamarin I started doing more Mono in my free time too. Currently I am porting
Synapse to Mac (since I loved the interface and some of the functionalities I couldn’t find in Alfred and Quicksilver). Here is a small very early sneak peak :)
I am loving Xamarin and all its stands for and brings to the table.
P.S: Hylke Bons has a fan base here at Xamarin :)
Nothing new to report this week
Release Metrics and Incoming Bugs
Release metrics and incoming bug data can be reviewed at the following link:
Milestone Targeted Work Items
4 work items
2 work items
1 work item
2 work items
3 work items
Status: Trusty Development Kernel
The 3.13.0-24.46 Ubuntu kernel in the Trusty archive is currently based on the v3.13.9 upstream stable kernel. The kernel is currently frozen
in preparation for our final 14.04 release this Thurs Apr 17. kernel.
We do not anticipate any uploads between now and Thurs. All patches
from here on out are subject to our Ubuntu SRU policy.
Important upcoming dates:
Thurs Apr 17 – Ubuntu 14.04 Final Release (~2 days away)
The current CVE status can be reviewed at the following link:
Status: Stable, Security, and Bugfix Kernel Updates – Saucy/Raring/Quantal/Precise/Lucid
Status for the main kernels, until today (Mar. 25):
- Lucid – Verification and Testing
- Precise – Verification and Testing
- Quantal – Verification and Testing
Saucy – Verification and Testing
Current opened tracking bugs details:
For SRUs, SRU report is a good source of information:
cycle: 30-Mar through 26-Apr
28-Mar Last day for kernel commits for this cycle
30-Mar – 05-Apr Kernel prep week.
06-Apr – 12-Apr Bug verification & Regression testing.
17-Apr 14.04 Released
13-Apr – 26-Apr Regression testing & Release to -updates.
Vote on upload rights for kamal.
(ogasawara> <apw) "kamal has shown himself to have a keen eye for detail, and a
strong sense of when to ask for help. I have no hesitations in
accepting him into the team. +1"
^^ from apw
Open Discussion or Questions? Raise your hand to be recognized
No open discussion.
Welcome to the Ubuntu Weekly Newsletter. This is issue #363 for the week April 7 – 13, 2014, and the full version is available here.
In this issue we cover:
- Final Freeze for Ubuntu 14.04 LTS (trusty)
- Ubuntu Stats
- UGJ-MX, 5-April-2014
- San Francisco 14.04 Release Party on April 24th
- Costales: #startubuntu
- Dustin Kirkland: Ubuntu 14.04 LTS — Security for Human Beings
- Ubuntu GNOME: Upgrade Testing
- Ben Howard: Updated 12.04.4 LTS Cloud Images in response to Heartbleed OpenSSL bug
- Kubuntu Wire: Install Kubuntu on Windows XP Systems
- Ubuntu GNOME: Ubuntu GNOME Trusty Tahr Release Candidate
- Jose Antonio Rey: ownCloud Charm Updated!
- Ubuntu Women: Career Days: Regional Community Manager wrap-up
- Canonical News
- In The Blogosphere
- Featured Audio and Video
- Weekly Ubuntu Development Team Meetings
- Upcoming Meetings and Events
- Updates and Security for 10.04, 12.04, 12.10 and 13.10
- And much more!
The issue of The Ubuntu Weekly Newsletter is brought to you by:
- Elizabeth Krumbach Joseph
- Paul White
- Jose Antonio Rey
- And many others
Except where otherwise noted, content in this issue is licensed under a Creative Commons Attribution 3.0 License BY SA Creative Commons License
We had some requests to get GHC (the Glasgow Haskell Compiler) up and running on two new Ubuntu architectures: arm64, added in 13.10, and ppc64el, added in 14.04. This has been something of a saga, and has involved rather more late-night hacking than is probably good for me.Book the First: Recalled to a life of strange build systems
You might not know it from the sheer bulk of uploads I do sometimes, but I actually don't speak a word of Haskell and it's not very high up my list of things to learn. But I am a pretty experienced build engineer, and I enjoy porting things to new architectures: I'm firmly of the belief that breadth of architecture support is a good way to shake out certain categories of issues in code, that it's worth doing aggressively across an entire distribution, and that, even if you don't think you need something now, new requirements have a habit of coming along when you least expect them and you might as well be prepared in advance. Furthermore, it annoys me when we have excessive noise in our build failure and proposed-migration output and I often put bits and pieces of spare time into gardening miscellaneous problems there, and at one point there was a lot of Haskell stuff on the list and it got a bit annoying to have to keep sending patches rather than just fixing things myself, and ... well, I ended up as probably the only non-Haskell-programmer on the Debian Haskell team and found myself fixing problems there in my free time. Life is a bit weird sometimes.
Bootstrapping packages on a new architecture is a bit of a black art that only a fairly small number of relatively bitter and twisted people know very much about. Doing it in Ubuntu is specifically painful because we've always forbidden direct binary uploads: all binaries have to come from a build daemon. Compilers in particular often tend to be written in the language they compile, and it's not uncommon for them to build-depend on themselves: that is, you need a previous version of the compiler to build the compiler, stretching back to the dawn of time where somebody put things together with a big magnet or something. So how do you get started on a new architecture? Well, what we do in this case is we construct a binary somehow (usually involving cross-compilation) and insert it as a build-dependency for a proper build in Launchpad. The ability to do this is restricted to a small group of Canonical employees, partly because it's very easy to make mistakes and partly because things like the classic "Reflections on Trusting Trust" are in the backs of our minds somewhere. We have an iron rule for our own sanity that the injected build-dependencies must themselves have been built from the unmodified source package in Ubuntu, although there can be source modifications further back in the chain. Fortunately, we don't need to do this very often, but it does mean that as somebody who can do it I feel an obligation to try and unblock other people where I can.
As far as constructing those build-dependencies goes, sometimes we look for binaries built by other distributions (particularly Debian), and that's pretty straightforward. In this case, though, these two architectures are pretty new and the Debian ports are only just getting going, and as far as I can tell none of the other distributions with active arm64 or ppc64el ports (or trivial name variants) has got as far as porting GHC yet. Well, OK. This was somewhere around the Christmas holidays and I had some time. Muggins here cracks his knuckles and decides to have a go at bootstrapping it from scratch. It can't be that hard, right? Not to mention that it was a blocker for over 600 entries on that build failure list I mentioned, which is definitely enough to make me sit up and take notice; we'd even had the odd customer request for it.
Several attempts later and I was starting to doubt my sanity, not least for trying in the first place. We ship GHC 7.6, and upgrading to 7.8 is not a project I'd like to tackle until the much more experienced Haskell folks in Debian have switched to it in unstable. The porting documentation for 7.6 has bitrotted more or less beyond usability, and the corresponding documentation for 7.8 really isn't backportable to 7.6. I tried building 7.8 for ppc64el anyway, picking that on the basis that we had quicker hardware for it and didn't seem likely to be particularly more arduous than arm64 (ho ho), and I even got to the point of having a cross-built stage2 compiler (stage1, in the cross-building case, is a GHC binary that runs on your starting architecture and generates code for your target architecture) that I could copy over to a ppc64el box and try to use as the base for a fully-native build, but it segfaulted incomprehensibly just after spawning any child process. Compilers tend to do rather a lot, especially when they're built to use GCC to generate object code, so this was a pretty serious problem, and it resisted analysis. I poked at it for a while but didn't get anywhere, and I had other things to do so declared it a write-off and gave up.Book the Second: The golden thread of progress
In March, another mailing list conversation prodded me into finding a blog entry by Karel Gardas on building GHC for arm64. This was enough to be worth another look, and indeed it turned out that (with some help from Karel in private mail) I was able to cross-build a compiler that actually worked and could be used to run a fully-native build that also worked. Of course this was 7.8, since as I mentioned cross-building 7.6 is unrealistically difficult unless you're considerably more of an expert on GHC's labyrinthine build system than I am. OK, no problem, right? Getting a GHC at all is the hard bit, and 7.8 must be at least as capable as 7.6, so it should be able to build 7.6 easily enough ...
Not so much. What I'd missed here was that compiler engineers generally only care very much about building the compiler with older versions of itself, and if the language in question has any kind of deprecation cycle then the compiler itself is likely to be behind on various things compared to more typical code since it has to be buildable with older versions. This means that the removal of some deprecated interfaces from 7.8 posed a problem, as did some changes in certain primops that had gained an associated compatibility layer in 7.8 but nobody had gone back to put the corresponding compatibility layer into 7.6. GHC supports running Haskell code through the C preprocessor, and there's a __GLASGOW_HASKELL__ definition with the compiler's version number, so this was just a slog tracking down changes in git and adding #ifdef-guarded code that coped with the newer compiler (remembering that stage1 will be built with 7.8 and stage2 with stage1, i.e. 7.6, from the same source tree). More inscrutably, GHC has its own packaging system called Cabal which is also used by the compiler build process to determine which subpackages to build and how to link them against each other, and some crucial subpackages weren't being built: it looked like it was stuck on picking versions from "stage0" (i.e. the initial compiler used as an input to the whole process) when it should have been building its own. Eventually I figured out that this was because GHC's use of its packaging system hadn't anticipated this case, and was selecting the higher version of the ghc package itself from stage0 rather than the version it was about to build for itself, and thus never actually tried to build most of the compiler. Editing ghc_stage1_DEPS in ghc/stage1/package-data.mk after its initial generation sorted this out. One late night building round and round in circles for a while until I had something stable, and a Debian source upload to add basic support for the architecture name (and other changes which were a bit over the top in retrospect: I didn't need to touch the embedded copy of libffi, as we build with the system one), and I was able to feed this all into Launchpad and watch the builders munch away very satisfyingly at the Haskell library stack for a while.
This was all interesting, and finally all that work was actually paying off in terms of getting to watch a slew of several hundred build failures vanish from arm64 (the final count was something like 640, I think). The fly in the ointment was that ppc64el was still blocked, as the problem there wasn't building 7.6, it was getting a working 7.8. But now I really did have other much more urgent things to do, so I figured I just wouldn't get to this by release time and stuck it on the figurative shelf.Book the Third: The track of a bug
Then, last Friday, I cleared out my urgent pile and thought I'd have another quick look. (I get a bit obsessive about things like this that smell of "interesting intellectual puzzle".) slyfox on the #ghc IRC channel gave me some general debugging advice and, particularly usefully, a reduced example program that I could use to debug just the process-spawning problem without having to wade through noise from running the rest of the compiler. I reproduced the same problem there, and then found that the program crashed earlier (in stg_ap_0_fast, part of the run-time system) if I compiled it with +RTS -Da -RTS. I nailed it down to a small enough region of assembly that I could see all of the assembly, the source code, and an intermediate representation or two from the compiler, and then started meditating on what makes ppc64el special.
You see, the vast majority of porting bugs come down to what I might call gross properties of the architecture. You have things like whether it's 32-bit or 64-bit, big-endian or little-endian, whether char is signed or unsigned, that sort of thing. There's a big table on the Debian wiki that handily summarises most of the important ones. Sometimes you have to deal with distribution-specific things like whether GL or GLES is used; often, especially for new variants of existing architectures, you have to cope with foolish configure scripts that think they can guess certain things from the architecture name and get it wrong (assuming that powerpc* means big-endian, for instance). We often have to update config.guess and config.sub, and on ppc64el we have the additional hassle of updating libtool macros too. But I've done a lot of this stuff and I'd accounted for everything I could think of. ppc64el is actually a lot like amd64 in terms of many of these porting-relevant properties, and not even that far off arm64 which I'd just successfully ported GHC to, so I couldn't be dealing with anything particularly obvious. There was some hand-written assembly which certainly could have been problematic, but I'd carefully checked that this wasn't being used by the "unregisterised" (no specialised machine dependencies, so relatively easy to port but not well-optimised) build I was using. A problem around spawning processes suggested a problem with SIGCHLD handling, but I ruled that out by slowing down the first child process that it spawned and using strace to confirm that SIGSEGV was the first signal received. What on earth was the problem?
From some painstaking gdb work, one thing I eventually noticed was that stg_ap_0_fast's local stack appeared to be being corrupted by a function call, specifically a call to the colourfully-named debugBelch. Now, when IBM's toolchain engineers were putting together ppc64el based on ppc64, they took the opportunity to fix a number of problems with their ABI: there's an OpenJDK bug with a handy list of references. One of the things I noticed there was that there were some stack allocation optimisations in the new ABI, which affected functions that don't call any vararg functions and don't call any functions that take enough parameters that some of them have to be passed on the stack rather than in registers. debugBelch takes varargs: hmm. Now, the calling code isn't quite in C as such, but in a related dialect called "Cmm", a variant of C-- (yes, minus), that GHC uses to help bridge the gap between the functional world and its code generation, and which is compiled down to C by GHC. When importing C functions into Cmm, GHC generates prototypes for them, but it doesn't do enough parsing to work out the true prototype; instead, they all just get something like extern StgFunPtr f(void);. In most architectures you can get away with this, because the arguments get passed in the usual calling convention anyway and it all works out, but on ppc64el this means that the caller doesn't generate enough stack space and then the callee tries to save its varargs onto the stack in an area that in fact belongs to the caller, and suddenly everything goes south. Things were starting to make sense.
Now, debugBelch is only used in optional debugging code; but runInteractiveProcess (the function associated with the initial round of failures) takes no fewer than twelve arguments, plenty to force some of them onto the stack. I poked around the GCC patch for this ABI change a bit and determined that it only optimised away the stack allocation if it had a full prototype for all the callees, so I guessed that changing those prototypes to extern StgFunPtr f(); might work: it's still technically wrong, not least because omitting the parameter list is an obsolescent feature in C11, but it's at least just omitting information about the parameter list rather than actively lying about it. I tweaked that and ran the cross-build from scratch again. Lo and behold, suddenly I had a working compiler, and I could go through the same build-7.6-using-7.8 procedure as with arm64, much more quickly this time now that I knew what I was doing. One upstream bug, one Debian upload, and several bootstrapping builds later, and GHC was up and running on another architecture in Launchpad. Success!Epilogue
There's still more to do. I gather there may be a Google Summer of Code project in Linaro to write proper native code generation for GHC on arm64: this would make things a good deal faster, but also enable GHCi (the interpreter) and Template Haskell, and thus clear quite a few more build failures. Since there's already native code generation for ppc64 in GHC, getting it going for ppc64el would probably only be a couple of days' work at this point. But these are niceties by comparison, and I'm more than happy with what I got working for 14.04.
The upshot of all of this is that I may be the first non-Haskell-programmer to ever port GHC to two entirely new architectures. I'm not sure if I gain much from that personally aside from a lot of lost sleep and being considered extremely strange. It has, however, been by far the most challenging set of packages I've ported, and a fascinating trip through some odd corners of build systems and undefined behaviour that I don't normally need to touch.