Wednesday, November 05, 2008

Metro 1.1 Custom Builds

Hey, I’ve just updated the Metro wiki with info on how to use Metro to perform Custom Builds. Armed with this info, you will be able to create your own customized versions of Gentoo. You can use everything from a customized Portage tree, to customized global and local USE variables and keywords, and custom package lists.

Dive in and let me know how Metro custom builds work for you! Post your feedback in the blog comments below.

Note: If you already have Metro installed, just run “git pull” in the /root/git/metro directory to automatically download all the latest Metro updates.

UPDATE: I've also updated the QuickStart Guide so you can see how I use fcron and build.sh to automate my daily builds. Armed with this info, you will be able to duplicate my daily build routine on your local workstation!

ANOTHER UPDATE: If you are using the Funtoo Portage tree, you will now find a dev-util/metro-1.1.ebuild that you can emerge to install Metro :)

Tuesday, November 04, 2008

Metro 1.1 Released

I’ve just released version 1.1 of Metro and updated the QuickStart Guide to reflect this new version. Currently, the only way to install Metro is to use git – see the improved QuickStart Guide for more information. Here’s a list of all the improvements to Metro:

  • Reorganized /etc/metro directory
  • NEW: "Builds" defined in /etc/metro/builds/ - all key build information now in a single file for convenience.
  • NEW: "FSLayouts" defined in /etc/metro/fslayouts/ - all mirror-related file names and path structures now in a single file.
  • NEW: OpenVZ template support for Funtoo stages, enabled in  scripts/build.sh
  • NEW: Reorganized file paths inside /usr/lib/metro.
  • NEW: Working gentoo/emerge target, when you just want to take a stage3 and create something new by emerging stuff in it.
  • NEW: Targets now have an OS prefix. What was target: snapshot is now target: gentoo/snapshot, etc. The path structure in /usr/lib/metro has also been improved so that people can easily create a /usr/lib/metro/targets/myos/ directory and start hacking.
  • NEW: Several parser bug fixes
  • FIX: Improvements to metro have allowed scripts/build.sh to be simplified.
  • NEW: Improved error and exception handling
  • NEW: Enhanced Portage git snapshot support - Metro will now keep a local cache of a git repository so it doesn't need to re-clone it every time, saving bandwidth. This cache location is defined in the path/cache/git variable in /etc/metro/metro.conf.
  • Embedded Python interpreter can no longer reference Metro metadata directly. This prevents weird side-effects from occurring.
  • NEW: Conditional expansion - a variable such as $[foo?] will get expanded to "yes" if defined and "no" if not defined, providing easy integration with scripts so you don't throw a parser exception by referencing an undefined variable.
    * NEW: "zap" expansion - in a multi-line element, a variable such as $[foo:zap] will get expanded to the name of the variable if it is defined. If it is not defined, however, then the entire line will be deleted from the output. This allows very compact conditional lines in templates like this: CFLAGS=$[portage/CFLAGS:zap]
  • FIX: MAKEOPTS now properly applied to Gentoo builds, speeding up builds on multi-core systems significantly.
  • NEW: [options parse/lax] and [options parse/strict] to disable and enable strict parsing, respectively. When lax parsing is enabled, any referenced undefined variables in multi-line elements will get dummy values, but an exception will not be thrown.
  • NEW: conditonal sections - it's now possible to write:
    [section foo when bar]
      This is equivalent to the old:
    [section foo]
    [when bar]
  • NEW: conditional equality - it's now possible for all conditionals to test for equality, such as:
    [section foo when bar is oni]
    or
    [when bar is oni]
  • NEW: conditional list-match - it's now possible to see if an element matches a list of values, such as:
    [section foo when target/subarch is x86 amd64 pentium4] This section will be active if target/subarch has a value that matches one of the specified values.
  • CHANGE: multi-line elements that are referenced inside other multi-line elements, using the syntax $[[foo]], will only get expanded if they appear at the beginning of the line. This allows them to easily be commented out by prefixing them by a "#" or any other character. In this case, the $[[foo]] will not be expanded and will be passed to the output as-is.
  • CHANGE: path/mirror/srcstage and path/mirror/deststage have been renamed to /path/mirror/source and path/mirror/target respectively.

Enjoy!

Tuesday, October 21, 2008

The Goal of Funtoo

A lot of people have asked me recently “What is the goal of Funtoo? What are you trying to do?”

For those who are trying to understand the inspiration behind Funtoo, this video should make it clear:

OK, OK, here’s an explanation of what Funtoo is about. We are focusing on providing the infrastructure Gentoo needs to move to a more distributed, collaborative model. This includes a git-based Portage tree as well as the Metro build engine.

We are not a “fork” of Gentoo in the traditional sense of the word, though of course we are trying to do things better (otherwise, what would be the point of doing anything?) We are trying to aim to be as compatible with Gentoo as possible, so that it is easy for us to share technology with Gentoo.

Here’s something else to wrap your head around. Back in the 90’s, “fork” was a bad word. But these days (with distributed SCM tools like git) a “fork” is something that happens every day. Forking is no longer a political thing, but something a developer does whenever appropriate. If you need to do something new or interesting, or fix some bugs, you should be able to easily fork Funtoo. Then, with your own private copy of Funtoo, you can pleasantly do your cool thing, test it, and then share your work. If you did something useful, others will “merge” your work into their efforts. We encourage others to fork our projects.

Funtoo’s mission is to provide the infrastructure to allow collaboration to happen, so that people can innovate in a distributed way, and more people can get involved.

Saturday, October 18, 2008

Metro Released

Hi everyone – Metro, my Gentoo automated build engine, has been released. I’ve written up a QuickStart guide to guide you through the process of installing and using Metro for the first time.

I still have a lot of documentation to write, which I’ll be doing over the next week, but for now the QuickStart guide should allow those anxious to begin playing with Metro to get their feet wet with this new tool.

Enjoy!

-Daniel

Monday, October 13, 2008

BeBop Linux Released

Marlon Cabrera Oliveira has released BeBop Linux, a customized set of amd64 stage tarballs based on the Funtoo stage tarballs. Here’s some info on his project – some specs, a screenshot, and a short interview below.

First, the technical details. There are two versions: a basic system version and a startkde version, featuring:

  • built with Funtoo Amd64 stage3
  • gcc version 4.3.1 (Gentoo 4.3.1-r1 p1.1)
  • glibc 2.8_p20080602
  • binutils 2.18-r3
  • LDFLAGS=”-Wl,–hash-style=both”
  • baselayout 2
  • OpenRC
  • Documentation: Installation Guide

 

Now – the interview. Tell us a little about yourself.

My name is Marlon Cabrera Oliveira. I live in Curitiba, State of Parana, Brazil with my wife Josiane and soon with my first son Fernando. I work as Security Analyst  in a Financial Company and I use Linux since 1998 in 2004 I moved to Gentoo, after using many distros.

What is BeBop, exactly?

Basically the BeBop Stage4 is the result of my personal experience with custom Gentoo installs. There are two versions: a basic system and a minimal KDE system. Both were built for the amd64 platform. The main idea is use a up-to-date toolchain (gcc, glibc, binutils..) with a stable branch, like Bob P did with "Stage 1/3 Installation Method".

What made you decide to create it?

The goal is provide a powerful, optimized, reliable and stable
Gentoo(Funtoo) system, for the brave :). Another point is that BeBop
Stage4 tarballs can save a lot of time. On the startkde version for example, users just need to emerge their favorite "desktop" programs. So I believe that BeBop Stage4 tarballs are a fun (and fast) install method and a nice desktop system as well.

Very Cool, Marlon – congratulations on the release of BeBop! Marlon has written an installation guide for BeBop as well.