summaryrefslogtreecommitdiffstats
path: root/config/build.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'config/build.cfg')
-rw-r--r--config/build.cfg264
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),
+};