#!/usr/bin/perl -cw use MDK::Common; my $distro = $build->{settings}{distro}; my $version = $build->{settings}{version}; my $product = $build->{settings}{product}; my $arch = $build->{settings}{arch}; my $default_user = $build->{settings}{default_user}; my @desktops = split(/\|/, $build->{settings}{desktop}); my $has_gnome = member('GNOME', @desktops); my $has_lxde = member('LXDE', @desktops); my $has_plasma = member('Plasma', @desktops); my $has_xfce = member('Xfce', @desktops); my $distro_theme = 'Default'; my $distro_release = 'Default'; my $distro_config = lc($distro_release); my $use_modules = to_bool($build->{settings}{pack}); my @user_config_dirs = ('/etc/skel', if_($default_user, '/home/' . $default_user)); sub build_label { my ($build) = @_; join('-', $distro, $version, $product, $desktops[0], $arch); } sub build_title { my ($build) = @_; join(' ', $distro, $version, $product, $desktops[0]); } my $default_append = 'root=mgalive:LABEL=' . build_label($build) . ' splash quiet noiswmd audit=0 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0'; my $_l = { system => { enabled_media => [ 'Core Release', 'Core Updates', 'Nonfree Release', 'Nonfree Updates', ], rpmsrate_flags => [ 'LIVE', (map { "CAT_$_" } ( # office qw(OFFICE SPELLCHECK PIM ARCHIVING PRINTER), # multimedia qw(AUDIO VIDEO GRAPHICS), # internet qw(NETWORKING_WWW NETWORKING_MAIL NETWORKING_NEWS COMMUNICATIONS NETWORKING_CHAT), qw(NETWORKING_FILE_TRANSFER NETWORKING_IRC NETWORKING_INSTANT_MESSAGING NETWORKING_DNS), # network qw(NETWORKING_REMOTE_ACCESS NETWORKING_FILE), qw(NETWORKING_REMOTE_ACCESS_SERVER), # config qw(CONFIG), # console qw(EDITORS TERMINALS TEXT_TOOLS SHELLS FILE_TOOLS), # system qw(SYSTEM MINIMAL_DOCS X ACCESSIBILITY THEMES), if_($has_gnome, qw(GNOME)), if_($has_lxde, qw(LXDE)), if_($has_plasma, qw(PLASMA5)), if_($has_xfce, qw(XFCE)), )) ], compssListLevel => 5, include_packages => [ if_($has_lxde, "mageia-lxde-config-$distro_release"), # i586 arch specific if_($arch eq 'i586', 'vboxadditions-kernel-desktop586-latest', ), # x86_64 arch specific if_($arch eq 'x86_64', 'vboxadditions-kernel-desktop-latest', ), # try to protect base packages from rpmlib/urpmi cascade bug 'basesystem', 'x11-server-common','x11-driver-video', 'x11-driver-input', 'x11-driver-video-vboxvideo', # utils wanted 'mc', 'btrfs-progs', 'shorewall-ipv6', 'hdparm', 'parted', 'glxinfo', 'patch', 'bind-utils', 'mdadm', 'dmraid', 'usbutils', # we want lsusb 'shared-mime-info', # needed for .desktop files to work atleast in gnome 'vim-enhanced', # full ediitor 'dnf', 'dnf-plugins-core', # some users want dnf 'manatools', # just the ncurses version 'simple-scan', # s-c-p wants this if it detects a combined printer/scanner 'Xdialog', # provides nicer UI for lxcontrol 'bluez-firmware', # missed firmware # mageia specific 'mageiawelcome', # nice helper app 'mageia-doc-mcc-en', # some nice docs # Gnome specific stuff if_($has_gnome, 'task-gnome', 'gdm', # sometimes gets nuked during build 'gnome-shell', 'caribou', 'caribou-gtk3', 'brasero', 'gparted', 'gnome-classic-session', 'hexchat', 'adwaita-gtk2-theme', ), # Plasma specific stuff if_($has_plasma, 'task-plasma5', 'sddm', # sometimes gets nuked during build ), # Xfce specific stuff if_($has_xfce, 'task-xfce4', 'gparted', # provides some options not currently supported in diskdrake ), ], exclude_packages => [ # i586 arch specific if_($arch eq 'i586', '/^kernel-desktop-/', '/^vboxadditions-kernel-.*-desktop-/', '/^libatlas3-/', ), # x86_64 arch specific if_($arch eq 'x86_64', '/^lib64atlas3-/', ), # no server kernels '/^kernel-server-/', '/^vboxadditions-kernel-.*-server-/', # No bootloaders, but we need to keep one to satisfy basesystem requirements. # We will zap it later. The grub2 bootloaders are needed for install, so we # add them to the local repo, which means they are automatically excluded. 'grub', # no devel packages on live media 'gdb', 'gcc3.3', 'empathy', 'gnome-builder', # pulls devel stuff # huge deps 'denemo', # pulls in lilypond and texlive 'virtuoso-opensource', # not needed on live media 'mono', # bloat # old stuff 'aspell', 'aspell-en', 'asihpi-firmware', 'hdsploader', 'mixartloader', 'pcxhrloader', 'usx2yloader', 'vxloader', 'drakfax', 'efax', 'rxvt', 'nspluginwrapper','nspluginwrapper-i386', # not needed anymore (mga #2001) # broken stuff 'audacity', 'xguest', 'apper', # not wanted 'al-anvar', # (mga #9752) 'openssh-server', 'manatools-gui', #- no distribution license 'flash-player-plugin', # Gnome specific stuff if_($has_gnome, 'beagle', 'inkscape', 'bluedevil', #- bluez-pin provide 'pinentry-qt4', #- qt4 app '/noatun/', #- prefer amarok 'polkit-kde-agent-1', ), ], preferred_packages => [ if_($has_plasma, 'sddm'), 'gdm', ], local_repo_packages => [ # core 'broadcom-bcma-config', 'broadcom-ssb-config', 'dkms', 'efibootmgr', 'efivar', 'grub2', 'grub2-efi', 'grub2-mageia-theme', 'os-prober', if_($arch eq 'i586', 'kernel-desktop586-devel-latest'), if_($arch eq 'x86_64', 'kernel-desktop-devel-latest'), # nonfree 'dkms-broadcom-wl', 'dkms-nvidia304', 'x11-driver-video-nvidia304', 'dkms-nvidia340', 'x11-driver-video-nvidia340', 'dkms-nvidia-current', 'x11-driver-video-nvidia-current', ], post_install_nr => join(";", "cp /tmp/media/$arch/release-notes.* /mnt", "chmod 0644 /mnt/release-notes.*", ), post_install => join(";", # systemd boots by default to multiuser.target (old init 3), so change to graphical (old init 5) "ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target", # have inittab match systemd defaulting to init 5 "perl -pi -e 's/^id:3:initdefault:/id:5:initdefault:/' /etc/inittab", #- FIXME: in any::set_autologin, unlink if gdm/sddm conf file and binary exist if_($has_xfce || $has_lxde, "rm -f /etc/sysconfig/autologin"), ), langs_always => [ 'en_US' ], # additional_media => [ # { # name => '', # path => '', # packages => [ # ], # }, # ), # ], # rpms => [ # ], # erase_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 => [ ], files => [ if_($has_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 } ], # 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_($has_gnome, [ 'files/draklive-install.d/run.d/gdm-permissions.sh', '/etc/draklive-install.d/run.d/gdm-permissions.sh', { mode => 755 } ] ), if_($has_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_*", ], patches => [ ], final_fixes => join(';', if_($default_user, "echo $default_user > /etc/draklive-install.d/user", "perl -pi -e 's,,$default_user,' /etc/draklive-install.d/sysconfig/finish-install", ), if_($has_xfce && $default_user, # add a desktop icon to run draklive-install "mkdir -p /home/$default_user/Desktop", "cp /usr/share/applications/mageia-draklive-install.desktop /home/$default_user/Desktop/draklive-install.desktop", ), #- fix user perms for copied files if_($default_user, "chown -R $default_user.$default_user /home/$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_($has_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 -q disable network", "systemctl -q disable network-up", "systemctl -q enable NetworkManager.service", "systemctl -q 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", ), if_($has_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", ), # disable HPLIP systray startup "echo 'Hidden=true' >> /etc/xdg/autostart/hplip-systray.desktop", # remove pre-installed lilo, we don't need it "rpm -e --nodeps lilo", # 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", ), vga_mode => 788, }, 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) ], }, copy_from_repo => [ 'autorun.inf' => 'files/autorun.inf', 'dosutils' => 'files/dosutils', 'isolinux/memtest' => "boot/memtest", ], media => { storage => 'iso', label => build_label($build), bootloader_title => build_title($build), bootloader_theme => 'bootloader/maggy', bootloader_font => 'bootloader/unicode.pf2', bootloader_langs => 'bootloader/lang-names.txt', bootloader_kbds => 'bootloader/kbd-names.txt', bootloader_messages => 'bootloader/messages', bootloader_default => 0, bootloader_timeout => 10, bootloader_entries => [ 'Boot Mageia Live' => { append => $default_append . ' xdriver=free' }, ' + use non-free video drivers (slower to boot)' => { append => $default_append . ' nokmsboot' }, 'Install Mageia Live' => { append => $default_append . ' xdriver=free install' }, ' + use non-free video drivers (slower to boot)' => { append => $default_append . ' nokmsboot install' }, 'Memory Test' => { command => 'linux16', image => '/boot/memtest', initrd => '' }, ], mbr_boot_img => 'bootloader/images/boot_hybrid.img', eltorito_img => 'bootloader/images/eltorito.img', if_($arch eq 'i586', boot_efi => 'bootloader/images/bootia32.efi' ), if_($arch eq 'x86_64', boot_efi => 'bootloader/images/bootx64.efi' ), }, mount => MGA::DrakISO::Mounts::volatile_squash_union($use_modules), };