From 05d79cc9042e544008aebb9a9cad37d8867e6742 Mon Sep 17 00:00:00 2001 From: Martin Whitaker Date: Sat, 3 Mar 2018 15:31:10 +0000 Subject: Rename draklive to draklive2 to avoid confusion/conflict with old draklive. --- Makefile | 4 +- draklive | 238 -------------------------------------------------------------- draklive2 | 238 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 240 insertions(+), 240 deletions(-) delete mode 100755 draklive create mode 100755 draklive2 diff --git a/Makefile b/Makefile index 30b717b..9f88e35 100644 --- a/Makefile +++ b/Makefile @@ -6,10 +6,10 @@ all: check: perl -cw -I./lib drakclassic - perl -cw -I./lib draklive + perl -cw -I./lib draklive2 perl_check: - perl_checker --restrict-to-files --no-suggest-simpler draklive drakclassic lib/MGA/DrakISO/* + perl_checker --restrict-to-files --no-suggest-simpler draklive2 drakclassic lib/MGA/DrakISO/* clean: find -name '*~' -exec rm {} \; diff --git a/draklive b/draklive deleted file mode 100755 index 84cb044..0000000 --- a/draklive +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/perl - -# Copyright (C) 2005 Mandriva -# Olivier Blin -# Copyright (C) 2017-2018 Mageia -# Martin Whitaker -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA. - -use lib qw(/usr/lib/libDrakX); - -use strict; - -use MDK::Common; -use common; - -use Getopt::Long; -use Pod::Usage; - -use MGA::DrakISO::Config; -use MGA::DrakISO::LiveBuild; -use MGA::DrakISO::Mounts; -use MGA::DrakISO::Utils; - -use MGA::DrakISO::BuildRoot; -use MGA::DrakISO::BuildBoot; -use MGA::DrakISO::BuildLoop; -use MGA::DrakISO::BuildISO; - -############################################################################### -# Globals -############################################################################### - -$::verbose = 1; - -############################################################################### -# Actions -############################################################################### - -sub clean { - my ($build) = @_; - - my $build_dir = $build->get_build_dir; - if (-e $build_dir) { - umount_all_in_root($build_dir); - run_as_root('rm', '-rf', $build_dir); - } - my $chroot_dir = $build->get_chroot_dir; - if (-e $chroot_dir) { - umount_all_in_root($chroot_dir); - run_as_root('rm', '-rf', $chroot_dir); - } -} - -sub prepare_root { - my ($build) = @_; - install_live_system($build); - customise_live_system($build); -} - -sub prepare_boot { - my ($build) = @_; - prepare_live_system_boot($build); - prepare_iso_bootloader($build); -} - -############################################################################### -# Main Program -############################################################################### - -my @actions = ( - { name => 'dump-config', do => \&dump_config }, - { name => 'clean', do => \&clean }, - { name => 'root', do => \&prepare_root }, - { name => 'root-install', do => \&install_live_system }, - { name => 'root-customise', do => \&customise_live_system }, - { name => 'boot', do => \&prepare_boot }, - { name => 'boot-system', do => \&prepare_live_system_boot }, - { name => 'boot-loader', do => \&prepare_iso_bootloader }, - { name => 'loop', do => \&build_live_loopback_files }, - { name => 'master', do => \&build_iso }, -); -my @all = qw(root boot loop master); - -my $build_object = 'MGA::DrakISO::LiveBuild'->new; -my $config_root = '/etc/draklive'; -my $config_path = 'config/build.cfg'; -my $settings_path = 'config/settings.cfg'; - -GetOptions( - "help" => sub { Pod::Usage::pod2usage('-verbose' => 1) }, - "all" => sub { $_->{to_run} = 1 foreach grep { member($_->{name}, @all) } @actions }, - (map { $_->{name} => \$_->{to_run} } @actions), - "all-regions" => sub { $build_object->{all_regions} = 1 }, - "config-root=s" => \$config_root, - "config=s" => \$config_path, - "settings=s" => \$settings_path, - "define=s" => \%{$build_object->{settings}}, - "verbose=i" => \$::verbose, -) or Pod::Usage::pod2usage(); - -require standalone; - every { !$_->{to_run} } @actions and Pod::Usage::pod2usage(); - - read_config($build_object, $config_root, $config_path, $settings_path); - check_config($build_object); - complete_config($build_object); - - $build_object->{mount} ||= MGA::DrakISO::Mounts::volatile_squash_union(); - - foreach my $region ($build_object->{all_regions} ? sort(keys %{$build_object->{regions}}) : $build_object->{settings}{region}) { - $region and print qq(=== proceeding with region "$region"\n); - $build_object->{settings}{region} = $region; - foreach (grep { $_->{to_run} } @actions) { - print qq(* entering step "$_->{name}"\n); - $_->{do}->($build_object); - print qq(* step "$_->{name}" done\n); - } - } - -__END__ - -############################################################################### -# Documentation -############################################################################### - -=head1 NAME - -draklive - A live distribution ISO mastering tool - -=head1 SYNOPSIS - -draklive [options] - - Options: - --help long help message - - --root install and customise live system in chroot - --boot prepare system boot and ISO bootloader files - --loop build compressed loopback files - --master build master image - - --all run all the above steps - - --clean clean out the working directories - - --root-install (for debug) run base install of live system - --root-customise (for debug) run system customisation steps - - --boot-system (for debug) prepare kernel and initrd for system boot - --boot-loader (for debug) prepare bootloader for ISO - - --config-root - root directory containing config and additional files - defaults to current directory if it contains a - configuration file, otherwise to "/etc/draklive" - - --config use this configuration file to control the build - defaults to "config/build.cfg" - - --settings use this file as build settings (key=value format) - defaults to "config/settings.cfg" - - --define key=value - set setting "key" to "value" - takes precedence over values from a settings file - - --all-regions proceed with all configured regions - - --verbose - set verbosity level to - defaults to 1 - -Examples: - - draklive --clean - - draklive --all - - draklive --config config/live.cfg --root - -=head1 OPTIONS - -=over 8 - -=item B<--config> - -Makes draklive use the next argument as a configuration file. -This file should contain a hash specifying the ISO makeup. -See the "drakiso-live" page on the Mageia Wiki for details. - -=item B<--settings> - -Makes draklive load the next argument as a file in key=value format into -the $build->{settings} hash ($build being the global configuration hash). - -Built-in keys: - - arch: build architecture - - workdir: directory hosting chrooted installation and all build files - - region: use the matching set of langs from the regions configuration hash - - repository: path to the Mandriva distribution repository (ftp/http/local) - -Example keys: - desktop - media - product - -=back - -=head1 DESCRIPTION - -B builds a live distribution ISO according to a configuration file, -creates a master image, and optionally installs it on a device. - -See L - -=head1 AUTHORS - -Olivier Blin -Martin Whitaker - -=cut diff --git a/draklive2 b/draklive2 new file mode 100755 index 0000000..ebea408 --- /dev/null +++ b/draklive2 @@ -0,0 +1,238 @@ +#!/usr/bin/perl + +# Copyright (C) 2005 Mandriva +# Olivier Blin +# Copyright (C) 2017-2018 Mageia +# Martin Whitaker +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA. + +use lib qw(/usr/lib/libDrakX); + +use strict; + +use MDK::Common; +use common; + +use Getopt::Long; +use Pod::Usage; + +use MGA::DrakISO::Config; +use MGA::DrakISO::LiveBuild; +use MGA::DrakISO::Mounts; +use MGA::DrakISO::Utils; + +use MGA::DrakISO::BuildRoot; +use MGA::DrakISO::BuildBoot; +use MGA::DrakISO::BuildLoop; +use MGA::DrakISO::BuildISO; + +############################################################################### +# Globals +############################################################################### + +$::verbose = 1; + +############################################################################### +# Actions +############################################################################### + +sub clean { + my ($build) = @_; + + my $build_dir = $build->get_build_dir; + if (-e $build_dir) { + umount_all_in_root($build_dir); + run_as_root('rm', '-rf', $build_dir); + } + my $chroot_dir = $build->get_chroot_dir; + if (-e $chroot_dir) { + umount_all_in_root($chroot_dir); + run_as_root('rm', '-rf', $chroot_dir); + } +} + +sub prepare_root { + my ($build) = @_; + install_live_system($build); + customise_live_system($build); +} + +sub prepare_boot { + my ($build) = @_; + prepare_live_system_boot($build); + prepare_iso_bootloader($build); +} + +############################################################################### +# Main Program +############################################################################### + +my @actions = ( + { name => 'dump-config', do => \&dump_config }, + { name => 'clean', do => \&clean }, + { name => 'root', do => \&prepare_root }, + { name => 'root-install', do => \&install_live_system }, + { name => 'root-customise', do => \&customise_live_system }, + { name => 'boot', do => \&prepare_boot }, + { name => 'boot-system', do => \&prepare_live_system_boot }, + { name => 'boot-loader', do => \&prepare_iso_bootloader }, + { name => 'loop', do => \&build_live_loopback_files }, + { name => 'master', do => \&build_iso }, +); +my @all = qw(root boot loop master); + +my $build_object = 'MGA::DrakISO::LiveBuild'->new; +my $config_root = '/etc/draklive'; +my $config_path = 'config/build.cfg'; +my $settings_path = 'config/settings.cfg'; + +GetOptions( + "help" => sub { Pod::Usage::pod2usage('-verbose' => 1) }, + "all" => sub { $_->{to_run} = 1 foreach grep { member($_->{name}, @all) } @actions }, + (map { $_->{name} => \$_->{to_run} } @actions), + "all-regions" => sub { $build_object->{all_regions} = 1 }, + "config-root=s" => \$config_root, + "config=s" => \$config_path, + "settings=s" => \$settings_path, + "define=s" => \%{$build_object->{settings}}, + "verbose=i" => \$::verbose, +) or Pod::Usage::pod2usage(); + +require standalone; + every { !$_->{to_run} } @actions and Pod::Usage::pod2usage(); + + read_config($build_object, $config_root, $config_path, $settings_path); + check_config($build_object); + complete_config($build_object); + + $build_object->{mount} ||= MGA::DrakISO::Mounts::volatile_squash_union(); + + foreach my $region ($build_object->{all_regions} ? sort(keys %{$build_object->{regions}}) : $build_object->{settings}{region}) { + $region and print qq(=== proceeding with region "$region"\n); + $build_object->{settings}{region} = $region; + foreach (grep { $_->{to_run} } @actions) { + print qq(* entering step "$_->{name}"\n); + $_->{do}->($build_object); + print qq(* step "$_->{name}" done\n); + } + } + +__END__ + +############################################################################### +# Documentation +############################################################################### + +=head1 NAME + +draklive2 - A live distribution ISO mastering tool + +=head1 SYNOPSIS + +draklive2 [options] + + Options: + --help long help message + + --root install and customise live system in chroot + --boot prepare system boot and ISO bootloader files + --loop build compressed loopback files + --master build master image + + --all run all the above steps + + --clean clean out the working directories + + --root-install (for debug) run base install of live system + --root-customise (for debug) run system customisation steps + + --boot-system (for debug) prepare kernel and initrd for system boot + --boot-loader (for debug) prepare bootloader for ISO + + --config-root + root directory containing config and additional files + defaults to current directory if it contains a + configuration file, otherwise to "/etc/draklive" + + --config use this configuration file to control the build + defaults to "config/build.cfg" + + --settings use this file as build settings (key=value format) + defaults to "config/settings.cfg" + + --define key=value + set setting "key" to "value" + takes precedence over values from a settings file + + --all-regions proceed with all configured regions + + --verbose + set verbosity level to + defaults to 1 + +Examples: + + draklive2 --clean + + draklive2 --all + + draklive2 --config config/live.cfg --root + +=head1 OPTIONS + +=over 8 + +=item B<--config> + +Makes draklive2 use the next argument as a configuration file. +This file should contain a hash specifying the ISO makeup. +See the "drakiso-live" page on the Mageia Wiki for details. + +=item B<--settings> + +Makes draklive2 load the next argument as a file in key=value format into +the $build->{settings} hash ($build being the global configuration hash). + +Built-in keys: + + arch: build architecture + + workdir: directory hosting chrooted installation and all build files + + region: use the matching set of langs from the regions configuration hash + + repository: path to the Mandriva distribution repository (ftp/http/local) + +Example keys: + desktop + media + product + +=back + +=head1 DESCRIPTION + +B builds a live distribution ISO according to a configuration file, +creates a master image, and optionally installs it on a device. + +See L + +=head1 AUTHORS + +Olivier Blin +Martin Whitaker + +=cut -- cgit v1.2.1