+Sabayon comes in different flavours to choose.
+To distinguish between them, a suffix is appended to file names.
+Here's a short description. More details can be found in this thread on Sabayon forum.
+
+
+This directory contains "daily" images, which are generated automatically every few days (as the name suggests), and features even more editions to choose from.
+
+
+Note: "daily" snapshots are generated automatically.
+They are not as much tested as the "normal" releases.
+Even though they should usually work, consider downloading
+one of the official releases if you are new to Sabayon.
+
+
hilights:
+
+
G
+
This version contains the well known GNOME 3.
+
K
+
This version comes with KDE SC, another popular desktop environment.
+
Xfce
+
Contains Xfce - lightweight yet very functional and friendly desktop.
+
LXDE
+
With LXDE. Small, pretty and usable.
+
E17
+
With Enlightenment DR17.
+
+
+
Core releases:
+
+
+
SpinBase
+
It's a very minimal environment that can be used for many different purposes: didactical, home server deployment, and even for custom Sabayon ISO images creation, using our tool called Molecule. Any Sabayon release we make is based on SpinBase.
+
CoreCDX
+
It's geared towards very minimal graphical environment setup, no fancy tools, browsers, whatever, just Fluxbox and command line.
+
ServerBase
+
It's very similar to SpinBase, but powered by a server-optimized Linux kernel (package: sys-kernel/linux-server).
+
OpenVZ
+
It's our official OpenVZ template.
+
+
+
+All of them have a smaller footprint making them fit into a single CD, or USB memory sticks.
+SpinBase and ServerBase are provided with a very minimal Anaconda Installer and CoreCDX should be preferred for non-standard filesystem/partition layouts.
+
+Sabayon comes in different flavours to choose.
+To distinguish between them, a suffix is appended to file names.
+Here's a short description. More details can be found in this thread on Sabayon forum.
+
+
+
main releases:
+
+
G
+
This version contains the well known GNOME 3.
+
K
+
This version comes with KDE SC, another popular desktop environment.
+
Xfce
+
Contains Xfce - lightweight yet very functional and friendly desktop.
+
+
+
+
+
additionally, these Core releases are available:
+
+
+
SpinBase
+
It's a very minimal environment that can be used for many different purposes: didactical, home server deployment, and even for custom Sabayon ISO images creation, using our tool called Molecule. Any Sabayon release we make is based on SpinBase.
+
CoreCDX
+
It's geared towards very minimal graphical environment setup, no fancy tools, browsers, whatever, just Fluxbox and command line.
+
ServerBase
+
It's very similar to SpinBase, but powered by a server-optimized Linux kernel (package: sys-kernel/linux-server).
+
+
+
+
+All of them have a smaller footprint making them fit into a single CD, or USB memory sticks.
+SpinBase and ServerBase are provided with a very minimal Anaconda Installer and CoreCDX should be preferred for non-standard filesystem/partition layouts.
+
+
+
+
+
diff --git a/scripts/gen_html/style.css b/scripts/gen_html/style.css
new file mode 100644
index 0000000..c17fcdb
--- /dev/null
+++ b/scripts/gen_html/style.css
@@ -0,0 +1,28 @@
+body
+{
+font-size: 14px;
+font-family: Verdana,sans-serif,"Times New Roman"
+}
+
+table
+{
+border: 1px solid #A0522D;
+border-collapse:collapse;
+width: 80%;
+}
+
+td
+{
+border:1px solid #A0522D;
+}
+
+th
+{
+background-color: #90EE90;
+color:black;
+}
+
+td:hover
+{
+background-color: #CACACA;
+}
diff --git a/scripts/gen_html/templ+abc.pl b/scripts/gen_html/templ+abc.pl
new file mode 100755
index 0000000..d493c89
--- /dev/null
+++ b/scripts/gen_html/templ+abc.pl
@@ -0,0 +1,398 @@
+#!/usr/bin/env perl
+
+# Copyright (C) 2012, Enlik
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+use warnings;
+use strict;
+use Getopt::Long;
+use HTML::Template;
+use 5.010;
+
+# This makes accessing edition's data more clear.
+# Class EditionItem stores URL, size and date for an edition for one
+# architecture, for one file type (which means that one EditionType
+# is needed for an .iso, another one for a .md5sum file and so on).
+# We don't use, for example, size for .md5 files, but just in case it changes...
+{
+ package EditionItem;
+ my ($href, $size, $date);
+ sub new {
+ my $class = shift;
+ my %self = @_;
+ for my $item (qw(url size date)) {
+ die "EditionItem::new(): $item not defined"
+ unless defined $self{$item}
+ }
+ bless \%self, $class;
+ }
+ sub url { $_[0]->{url} }
+ sub size { $_[0]->{size} }
+ sub date { $_[0]->{date} }
+ sub toString {
+ my $self = shift;
+ my ($url, $size, $date) = ($self->{url}, $self->{size}, $self->{date});
+ return "$url (size = $size, date = $date)";
+ }
+}
+
+# $sab{edition}->{arch}->{type} = EditionItem
+# type is one of: ".md5", ".pkglist", ".torrent", ""
+
+my %sab;
+my @oth;
+my $tmpl;
+
+sub print_other {
+ return unless @oth;
+ my @others_loop_data;
+ for my $item (@oth) {
+ push @others_loop_data, { url => $item->[0], name => $item->[1] }
+ }
+ $tmpl->param(others_loop => \@others_loop_data);
+}
+
+# Adds elements to template which will be printed.
+# $regex is a regular expression to specify which arches to select;
+# $negate - if true, $regex will be negated;
+# $editions_loop_arch - name of the loop in template to use;
+# $extra_fields - what to pass to template besides for "" and ".md5",
+# for example ".pkglist" to pass .pkglist for arches/editions which have
+# such files; supported types: ".pkglist" and ".torrent"
+sub print_items {
+ my ($regex, $negate, $editions_loop_arch, $extra_fields) = @_;
+ my $match;
+ my %extra_fields = map { $_ => 1 } @{ $extra_fields };
+ my @editions_loop_data = ();
+
+ for my $edition (sort keys %sab) {
+ my $displayed_edition = 0;
+ my @arches_loop_data = ();
+
+ for my $arch (sort keys %{ $sab{$edition} }) {
+ $match = $arch =~ $regex;
+ $match = !$match if $negate;
+ next unless $match;
+ # these are EditionItem objects
+ my $ISO = $sab{$edition}->{$arch}->{""};
+ my $md5 = $sab{$edition}->{$arch}->{".md5"};
+ my $pkglist = $sab{$edition}->{$arch}->{".pkglist"}
+ if $extra_fields{".pkglist"};
+ my $torrent = $sab{$edition}->{$arch}->{".torrent"}
+ if $extra_fields{".torrent"};
+
+ for my $item (qw(.torrent .pkglist)) {
+ if (defined $sab{$edition}->{$arch}->{$item}
+ and not $extra_fields{$item}) {
+ warn "Warning: file type $item not specified to print, ",
+ "but it is available for $edition -> $arch: ",
+ $sab{$edition}->{$arch}->{$item}->url
+ }
+ }
+
+ my %arches_loop_row; # fresh hash for new arch
+
+ $arches_loop_row{name} = $edition;
+ $arches_loop_row{arch} = $arch;
+
+ # any item is counted, even if there's no ISO but only md5sum
+ # not too pretty, but fast enough
+ $arches_loop_row{arches_per_edition} = 0;
+ for my $arch (keys %{ $sab{$edition} }) {
+ my $match = $arch =~ $regex;
+ $match = !$match if $negate;
+ $arches_loop_row{arches_per_edition}++ if $match;
+ }
+
+ # Some of them (ISO, md5, pkglist) may be not defined,
+ # depending on available file types.
+ # If x is defined, then x->url, x->size and x->time are defined.
+ # Note: size and date for non-ISO-like files are discarded here.
+ if (defined $ISO) {
+ $arches_loop_row{mainfile_url} = $ISO->url;
+ $arches_loop_row{mainfile_size} = $ISO->size;
+ $arches_loop_row{mainfile_date} = $ISO->date;
+ }
+ if (defined $md5) {
+ $arches_loop_row{md5_url} = $md5->url;
+ #$arches_loop_row{md5_size} = $md5->size;
+ #$arches_loop_row{md5_date} = $md5->date;
+ }
+ if (defined $pkglist) {
+ $arches_loop_row{pkglist_url} = $pkglist->url;
+ #$arches_loop_row{pkglist_size} = $pkglist->size;
+ #$arches_loop_row{pkglist_date} = $pkglist->date;
+ }
+ if (defined $torrent) {
+ $arches_loop_row{torrent_url} = $torrent->url;
+ }
+
+ # push data (name, download links, ...) for an architecture
+ push @arches_loop_data, \%arches_loop_row;
+ }
+ # say "