diff options
Diffstat (limited to 'config/build.cfg')
-rw-r--r-- | config/build.cfg | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/config/build.cfg b/config/build.cfg new file mode 100644 index 0000000..e7935f0 --- /dev/null +++ b/config/build.cfg @@ -0,0 +1,264 @@ +#!/usr/bin/perl -cw + +use MDK::Common; + +my $use_modules = to_bool($build->{settings}{pack}); +my @user_config_dirs = ('/etc/skel', if_($build->{settings}{default_user}, '/home/' . $build->{settings}{default_user})); + +sub build_one_label { + my ($build) = @_; + + my ($version, $extra) = split(/-/, $build->{settings}{version}); + "LABEL=" . join("-", "Mageia", $version, $build->{settings}{desktop}, $build->{settings}{product}); +} + +my $_l = { + system => { + auto_install => 'config/auto_inst.cfg.pl', + install_env => { + }, + if_($build->{settings}{default_user}, preselect_kdm_user => $build->{settings}{default_user}), + langs_always => [ 'en_US' ], + files => [ + if_($build->{settings}{desktop} eq 'GNOME', + # add draklive-install icon to favourites in live mode and disable screen locking + # (override files are processed in alphabetical order - make sure this one comes last) + [ 'files/live.gschema.override', '/usr/share/glib-2.0/schemas/live.gschema.override', { mode => 0644, no_install => 1 } ], + + # disable Wayland when we know it won't work (workaround for mga#20079) + [ 'files/50gdm-disable-wayland.xsetup', '/etc/X11/xsetup.d/50gdm-disable-wayland.xsetup', { mode => 0755 } ], + ), + # provide a noxorgconf boot command option to try to fix issues with nouveau driver on some hardware + [ 'files/10no-xorg-conf.xsetup', '/etc/X11/xsetup.d/10no-xorg-conf.xsetup', { mode => 0755 } ], + + # blacklist pata_acpi + [ 'files/blacklist_ide.conf', '/etc/modprobe.d/blacklist_ide.conf', { mode => 0644 } ], + + # clean live files + [ 'files/live.51-mageia-resume.conf', '/etc/dracut.conf.d/51-mageia-resume.conf', { mode => 0644 } ], + [ 'files/live.modprobe.conf', '/etc/modprobe.conf', { mode => 0644 } ], + + # add local repos + if_($build->{settings}{arch} eq 'i586', + [ 'files/mga_rpms/i586/mga_rpms', '/var/local' ], + ), + if_($build->{settings}{arch} eq 'x86_64', + [ 'files/mga_rpms/x86_64/mga_rpms', '/var/local' ], + ), + + # add initial dns resolver for online medias + [ 'files/resolv.conf', '/etc/resolv.conf', { mode => 0644 } ], + + # disable suspend and hibernate in live mode + [ 'files/50-disable-suspend.pkla', '/etc/polkit-1/localauthority/50-local.d/50-disable-suspend.pkla', { mode => 0644, no_install => 1 } ], + + #- make cups the default spooler + [ 'files/defaultspooler', '/etc/foomatic/defaultspooler', { mode => 0644 } ], + + #- eject eject medium before halt/reboot + [ 'files/halt-local.service', '/etc/systemd/system/halt-local.service', { mode => 0644, no_install => 1 } ], + [ 'files/halt.local', '/sbin/halt.local', { mode => 0755, no_install => 1 } ], + + #- do not load usblp and trigger autosetupprintqueues in live since cups is not available + [ 'files/live.modprobe', '/etc/modprobe.d/live.conf', { mode => 0644, no_install => 1 } ], + + # live media specific initrd + [ 'files/live-dracut.conf', '/etc/dracut.conf.d/60-live.conf', { mode => 0644, no_install => 1 } ], + + #- disable first boot wizard at live boot + [ 'files/firstboot', '/etc/sysconfig/firstboot', { mode => 0644 } ], + + #- enable drakx-finish-install at live boot + [ "files/finish-install", '/etc/sysconfig/finish-install', { mode => 0644 } ], + + # fix for sometimes wrong permissions + [ 'files/draklive-install.d/run.d/home-live-permissions.sh', '/etc/draklive-install.d/run.d/home-live-permissions.sh', { mode => 755 } ], + + # fix for /var/lib/gdm sometimes ending up as root:root + if_($build->{settings}{desktop} eq 'GNOME', + [ 'files/draklive-install.d/run.d/gdm-permissions.sh', '/etc/draklive-install.d/run.d/gdm-permissions.sh', { mode => 755 } ] + ), + + if_($build->{settings}{desktop} eq 'Plasma', + [ 'files/draklive-install.d/run.d/generate-gtk-icon-cache.sh', '/etc/draklive-install.d/run.d/generate-gtk-icon-cache.sh', { mode => 755 } ], + [ 'files/draklive-install.d/remove.d/clear-sddm-state', '/etc/draklive-install.d/remove.d/clear-sddm-state', { mode => 0644 } ], + ), + + #- sysconfig files for first boot + [ 'files/draklive-install.d/finish-install', '/etc/draklive-install.d/sysconfig/finish-install', { mode => 0644 } ], + [ 'files/draklive-install.d/firstboot', '/etc/draklive-install.d/sysconfig/firstboot', { mode => 0644 } ], + [ 'files/draklive-install.d/services', '/etc/draklive-install.d/services', { mode => 0644 } ], + + #- don't make kbluetoothrc display an annoying and useless popup window, and disable it by default + [ 'files/kbluetoothrc', '/etc/kde/kbluetoothrc', { mode => 0644 } ], + + [ 'files/korgacrc', '/etc/kde/korgacrc', { mode => 0644 } ], + (map { [ 'files/mgaonlinerc', $_ . '/.MgaOnline/mgaonline', { mode => 0644, no_install => 1 } ] } @user_config_dirs), + (map { [ 'files/draksnapshot.sysconfig', $_ . '/.draksnapshot', { mode => 0644, no_install => 1 } ] } @user_config_dirs), + [ 'files/compute-ooo-dicts.pl', '/usr/sbin/compute-ooo-dicts.pl', { mode => 0755 } ], + [ 'files/compute-i18n-list.pl', '/usr/sbin/compute-i18n-list.pl', { mode => 0755 } ], + ], + remove_files => [ + (map { "/etc/modprobe.preload.d/$_" } qw(cpufreq pcmcia rfswitch)), + "/etc/udev/rules.d/70-persistent-*.rules", + "/var/lib/dbus/machine-id", + "/etc/ssh/ssh_host_*", + ], + module_options => { + loop => "max_loop=64", + }, + exclude_modules => [ + ], + additional_modules => [ + ], + stage2_updates => [ + ], + patches => [ + ], + erase_rpms => [ + ], + rpms => [ + ], + disable_services => [ + # uncommon hardware + qw(bpalogin capi4linux cpqarrayd mdadm oki4daemon pcscd), + # unneeded software + qw(chronyd ntpd snmpd), + # slows down basic usage and install, reenabled after install + qw(crond msec), + ], + disable_timers => [ + ], + append => "splash quiet noiswmd audit=0 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0", + vga_mode => 788, + final_fixes => join(';', + if_($build->{settings}{default_user}, "echo $build->{settings}{default_user} > /etc/draklive-install.d/user"), + "perl -pi -e 's,<DEFAULT_USER>,$build->{settings}{default_user},' /etc/draklive-install.d/sysconfig/finish-install", + + if_($build->{settings}{desktop} eq 'Xfce' && $build->{settings}{default_user}, + # add a desktop icon to run draklive-install + "mkdir -p /home/$build->{settings}{default_user}/Desktop", + "cp /usr/share/applications/mageia-draklive-install.desktop /home/$build->{settings}{default_user}/Desktop/draklive-install.desktop", + ), + + #- fix user perms for copied files + if_($build->{settings}{default_user}, "chown -R " . + "$build->{settings}{default_user}.$build->{settings}{default_user}" . + " /home/$build->{settings}{default_user}" + ), + + # remove readahead + "rm -f /.readahead_collect", + + #- adduser seems to create a sparse lastlog with a slot for all available users + #- which can be huge + '> /var/log/lastlog', + + if_($build->{settings}{desktop} eq 'Plasma', + "rm -f /usr/share/icons/*/icon-theme.cache", + "cp -a /etc/akonadi/mysql-global.conf /etc/akonadi/mysql-global-standard.conf", + "cp /etc/akonadi/mysql-global-mobile.conf /etc/akonadi/mysql-global.conf", + "ak=/etc/draklive-install.d/run.d/restore-akonadi-config.sh; echo -e '#!/bin/sh\ncp /etc/akonadi/mysql-global-standard.conf /etc/akonadi/mysql-global.conf' > \$ak; chmod +x \$ak", + ), + if_($build->{settings}{desktop} eq 'GNOME', + # modify and compile schema to get draklive-install and Firefox in menu + "sed -i 's/epiphany.desktop/firefox.desktop/' /usr/share/glib-2.0/schemas/glib2-branding.gschema.override", + "glib-compile-schemas /usr/share/glib-2.0/schemas/", + + # fix permissions to enable GDM to rerun if the user logs out + "chown -R gdm:gdm /var/lib/gdm", + + # switch to NetworkManager + "systemctl disable network", + "systemctl disable network-up", + "systemctl enable NetworkManager.service", + "systemctl enable NetworkManager-wait-online.service", + "sed -i 's/NETWORK=yes/NETWORK=no/' /etc/draklive-install.d/sysconfig/finish-install", + "echo 'AUTOSTART=FALSE' > /home/live/.net_applet", + ), + + # add local medias + "urpmi.addmedia 'Live Core' /var/local/mga_rpms/core with media_info/hdlist.cz", + "urpmi.addmedia 'Live Nonfree' /var/local/mga_rpms/nonfree with media_info/hdlist.cz", + + # disable HPLIP systray startup + "echo 'Hidden=true' >> /etc/xdg/autostart/hplip-systray.desktop", + + # remove pre-installed grub2, we need to be able to select grub2 vs grub2-efi at install time + "rpm -e --nodeps grub2", + + # allow draklive-install to spawn subtasks that access the display + "echo 'session optional pam_xauth.so # for draklive-install' >> /etc/pam.d/polkit-1", + + # set the timestamp on the font directories to be a whole second + # fc-cache looks at the nano second portion which may be non-zero + # as we are on ext4, but then it will compare against the stamps + # on the squashfs live image which have whole second resolution + # (adapted from fix descrived in OpenMandriva bug 1764) + "find /usr/share/fonts -type d -exec touch -t \$(date +%Y%m%d%H%M.%S) '{}' ';'", + # now update the cache for the new timestamps + "fc-cache -rf", + + # set the initial wireless regulatory domain to "world", enabling + # all possible wireless channels to be used. + "sed -i -r 's/CRDA_DOMAIN=.*/CRDA_DOMAIN=00/' /etc/sysconfig/network", + + # try to avoid plymouth falling back to text mode (mga#19984) + "sed -i -r 's/DeviceTimeout=[0-9]+/DeviceTimeout=10/' /usr/share/plymouth/plymouthd.defaults", + ), + additional_media => [ + if_($build->{settings}{updates_repository}, + { + name => 'core_updates_testing', + path => $build->{settings}{updates_repository} . '/' . $build->{settings}{arch} . '/media/core/updates_testing', + packages => [ + ], + }, + ), + ], + }, + loopbacks => { + exclude => { + type => 'squashfs', + files => [ + { path => '/root/drakx' }, + #- to skip a file list generated with: + #- find /usr/share/doc/HTML -mindepth 1 -maxdepth 1 -type d > /root/drakx/HTML.skipped + #{ source => '/root/drakx/HTML.skipped', rooted => 1 }, + ], + }, + if_($use_modules, modules => [ + { type => 'squashfs', source => '/root/drakx/i18n-*.lst', rooted => 1 }, + ]), + }, + regions => { + #- the "all" region has a magical behavior and selects all langs + int => [qw(en)], + }, + packs => { + int => [ map { "i18n-$_" } qw(en) ], + }, + media => { + storage => 'iso', + source => build_one_label($build), + bootloader_langs => 'bootloader/lang-names.txt', + bootloader_kbds => 'bootloader/kbd-names.txt', + bootloader_messages => 'bootloader/po', + bootloader_default => 0, + bootloader_timeout => 10, + bootloader_entries => [ 'Boot Mageia Live' => 'xdriver=free', + ' + use non-free video drivers (slower to boot)' => 'nokmsboot', + 'Install Mageia Live' => 'install xdriver=free', + ' + use non-free video drivers (slower to boot)' => 'install nokmsboot', + ], + #mbr_boot_img => 'bootloader/boot_hybrid.img', + #eltorito_img => 'bootloader/eltorito.img', + #bootx64_efi => 'bootloader/bootx64.efi', + files => [ + # FIXME: add doc and autorun + #[ 'extra/livecd/autorun/*', ''], + #map { [ 'extra/livecd/' . $_, $_ ] } qw(LISEZMOI.pdf README.pdf) + ], + }, + mount => MGA::DrakISO::Mounts::volatile_squash_union($use_modules), +}; |