Monday, December 15, 2008

Metro 1.2 Released

Metro 1.2, my tool for building Gentoo and Funtoo releases and custom builds, has been released. Learn about Metro here. Technically, this is a maintenance release, but looking at the ChangeLog tells me that this is more like a major release.

I’ve added a metro-1.2.ebuild to the Funtoo Portage tree.

Here are the changes in 1.2:

  • NEW target: "stage3-freshen" uses emerge -up world to update stage
  • NEW target: "stage3-quick" builds stage3->stage3, skipping stage1 and 2.
  • NEW target: "git-snapshot" creates a full .tar.bz2 snapshot of git repo with the .git directory intact, so it is a full working git repo when unpacked.
  • NEW target: "emerge" for adding packages to an existing stage3
  • NEW subarch: ~core2 for Intel Core 2 series processors. Supported with gcc 4.3.2 which is in the funtoo build.
  • Updated targets: "openvz" updated to support OpenRC 0.4.0.
  • stage3-freshen supports emerge/packages/force target, which is a list of packages to rebuild using "emerge <packages>". This is a great way to force a rebuild of packages that may need to be rebuilt but did not get a rev-bump (ie. openrc.:)
  • Metro now properly cleans /var/tmp/metro after it is done, unless the build aborted due to an error.
  • scripts/build.sh: now supports stage3-freshen and stage3-quick by allowing an extra "quick" or "freshen" option as the last argument.
  • scripts/build.sh: now creates a "current" symlink pointing to the most recent stage3 built. This "current" symlink exists in the subarch directory and the filename is "stage3-subarch-current.tar.bz2."
  • scripts/build.sh: now uses "git-snapshot" for funtoo builds, so funtoo snapshots are now double the size but are a full working and "git pull"-able git repo, simplifying funtoo install process.
  • stage3 targets: try to ensure that /etc/make.conf.example exists. Create a symlink from /etc/make.conf.example to /usr/share/portage/config/make.conf.example.
  • metro core: robust mount point detection using /proc/mounts instead of output from the mount command, which can be unreliable.
  • metro core: more robust umount algorithm.
  • metro core: local name support, so your custom stages don't need to be called "funtoo" anymore. Also quite useful with the "emerge" target for creating custom stage3's with different names.
  • metro core: ccache works correctly, but has been disabled by default as it may cause build failures when used with Portage parallel merges (--jobs) and we now have "stage3-freshen" and "stage3-quick" when we need a stage3 built quickly.
  • parser syntax: For conditionals, the "in" keyword is now supported as an equivalent for "is".
  • parser syntax: New "lax" expansion method, ie: $[foo:lax] will expand to foo if it is defined, otherwise it will not throw a parser error (as it normally would) and instead expand to a dummy value which may contain spaces.
  • Documentation: github wiki documentation updated to reflect new features and QuickStart Guide refined to be easier to understand.
  • Projects: new projects/ directory contains source code for funtoo.org Web site. Funtoo.org Web site redesigned to be more of a portal for new Funtoo builds. The funtoo Web site can be generated by running "pytext index.html" (sent to stdout.) Embedded python code automatically updates Web site symlinks to point to most recent versions of builds and list relevant build-related information. Support for displaying build dates in human-parseable form (ie. "Yesterday" or "2 Days Ago".)

13 comments:

Anonymous said...

and, what's a metro? where is the link to their homepage to learn more?

Daniel Robbins said...

Yep, forgot to add a link and a basic explanation. Will fix that. In the mean time, Metro is the tool I use to build my Gentoo and Funtoo stages - it's an automated OS build tool. Link to more info: http://www.github.com/funtoo/metro/wikis

Kobboi said...

I've successfully used the 20081214 Gentoo stage3 you provided. Really nice to have an update to date basic system. One question though: why are gcc and glibc in world?

Sylvain Alain said...

Hi Daniel, I will test theses new features with Destroyfx.

So, I'm sure that we gonna see us on the IRC channel :P

Daniel Robbins said...

Kobboi, I think I need to tweak our handling of the world file. Originally, it was removed after the stage3 build, but then I added support for including extra packages. The world file should probably be reset after the complete stage3 but before we merge extra packages, and that will solve the problem with glibc and gcc being in the world file - which I think is probably due to them being manually merged during stage1 or 2.

John M. Drescher said...

BTW, I have re-enabled ccache and I have had no problems with parallel jobs in metro.

Also with portage I normally build with jobs=5 and MAKEOPTS="-j9"
on my quad core with ccache on and icecream and I have not had any ccache related problems.

nunoy said...

i use "Intel Duo Core T2300 1.66 GHz" is core32.
i not found stage file in http://www.funtoo.org/linux/~core32/ ?

ryker said...

I wonder if the new gentoo weekly stage3 builds are created using Metro?

John M. Drescher said...

I have a design question. Is there any special support in metro for testing multi-valued variables. Specifically I want to add additional options to options/stage and test them in metro/targets/gentoo/stage/steps.spec.

Ruetobas said...

does metro handle other architectures other than x86?, ie ARM?

Anonymous said...

Daniel, why didn't you work with gentoo team?
You are doing the work of gentoo community...This way, is borning one more distro...
[]'s

eleccham said...

Daniel - is there a way to use a Portage overlay in Metro?

I'm trying desperately - no success yet - to build an up-to-date uclibc-based stage, and metro is I think my last hope... I've added some additional packages that I'd like to include if possible; if not I don't think it's a big deal.

Daniel Robbins said...

The current way to use a Portage overlay in Metro is to merge your overlay (using git) into the existing tree. I haven't added a way to use overlays directly to Metro, but it isn't hard to modify Metro's recipes to add this functionality if you require it. If you need it, I can add it -- hang out in #funtoo on irc.freenode.net and I can take a look at it in a few days. The trickiest part is that I do not use overlays directly myself so I probably don't have a good idea of exactly what you're looking for in terms of overlay support.