#!/bin/sh -e

# Script for upgrade ALT SP Workstation (release 9) to ALT SP Workstation (release 10)
# Copyright (c) 2024 Andrey Cherepanov <cas@basealt.ru>

# This program is free software; you can redistribute it and/or modify it
# under the terms of GNU General Public License (GPL) version 3 or later.

if [ "$EUID" -ne 0 ]
  then echo "Please run as root"
  exit
fi

apt-repo rm all
apt-repo add 'rpm [cert8] http://update.altsp.su/pub/distributions/ALTLinux c10f/branch/x86_64 classic gostcrypto'
apt-repo add 'rpm [cert8] http://update.altsp.su/pub/distributions/ALTLinux c10f/branch/x86_64-i586 classic'
apt-repo add 'rpm [cert8] http://update.altsp.su/pub/distributions/ALTLinux c10f/branch/noarch classic'
apt-get update

apt-get -y remove hplip-gui kde5-k3b kde5-runtime kf5-kio libkf5notifications python3-module-PyQt5 libk3blib7 libkf5kcmutils libkf5quickaddons
apt-get -y install branding-alt-spworkstation-release
apt-get -y dist-upgrade
apt-get -y dist-upgrade
rpm -e --nodeps libgtk-engines-default-common python3-module-ndg libcanberra libgtk-engine-redmond gnome-pty-helper libsstp
apt-get -fy install
apt-get -y install hplip-gui kde5-k3b python3-module-markdown branding-alt-spworkstation-mate-settings LibreOffice-still-gtk3 NetworkManager-applet-gtk NetworkManager-l2tp-gtk NetworkManager-openvpn-gtk NetworkManager-pptp-gtk NetworkManager-sstp NetworkManager-sstp-gtk NetworkManager-vpnc-gtk Xdialog alterator-gpupdate alterator-squid compiz dconf-editor definier dia firefox-esr freeipa-client fuse-gvfs gcr beesu gnome-logs gnome-online-accounts gnome-themes-extra gnome-themes-extra-data gpupdate gtk2-ssh-askpass gtk2-theme-crux gtk2-theme-industrial gtk2-theme-mist gtk2-theme-thinice gtk3-demo gucharmap gvfs gvfs-backend-admin gvfs-backend-afc gvfs-backend-afp gvfs-backend-cdda gvfs-backend-dnssd gvfs-backend-goa gvfs-backend-google gvfs-backend-mtp gvfs-backend-nfs gvfs-backend-recent-files gvfs-backend-smb gvfs-backends integ libappindicator-gtk3-gir libgail3 libgdata libglade libgnome-online-accounts libgraphviz libgtk-engine-glide libgtk-engine-hc libgtk-engines-default libgtk2-engine-adwaita libgtkmm3 libgtksourceview3 libgtksourceview3-gir libgucharmap libmate-document-viewer libmetacity3.0 libopencv4.5 libpeas libpeas-gir libvcd libvte libvte3 mate-applets mate-calc mate-dictionary mate-disk-usage-analyzer mate-document-viewer mate-document-viewer-caja mate-document-viewer-djvu mate-document-viewer-pixbuf mate-document-viewer-thumbnailer mate-document-viewer-xps mate-file-archiver mate-file-manager mate-file-manager-archiver mate-file-manager-extensions mate-file-manager-image-converter mate-file-manager-open-terminal mate-file-manager-sendto mate-file-manager-wallpaper mate-image-viewer mate-media mate-minimal mate-panel mate-polkit mate-power-manager mate-screensaver mate-screenshot mate-search-tool mate-system-monitor mate-terminal mate-text-editor mate-themes mate-utils mate-window-manager osec-controls osec-cronjob osec-mailreport pam_gnome-keyring parcellite pavucontrol perl-DBD-mysql perl-DBI perl-Digest-SHA perl-RPM2 pinentry-gtk2 python3-module-automat python3-module-cupshelpers python3-module-freeipa python3-module-ipaclient python3-module-matplotlib python3-module-matplotlib-cairo python3-module-matplotlib-gtk3 python3-module-matplotlib-tk python3-module-mpl_toolkits python3-module-numpy-testing python3-module-pycares python3-module-pygobject3 python3-module-samba python3-module-scipy python3-module-smbc python3-module-talloc python3-module-tornado python3-module-twisted-conch python3-module-twisted-core python3-module-twisted-core-test python3-module-twisted-logger python3-module-twisted-names python3-module-twisted-pair python3-module-twisted-positioning python3-module-twisted-runner python3-module-twisted-web python3-module-twisted-words seahorse squid-helpers sstp-client synaptic synaptic-usermode system-config-printer system-config-printer-lib system-config-printer-udev timeshift totem-video-thumbnailer transcode updater userpasswd vcdimager wm-select zenity

update-kernel -t un-def -y

rpm -e --nodeps libasyncns libcom_err libcups libgsm libieee1284 libwebp7 libwireless libXrandr libxshmfence libXxf86vm llvm11.0-libs llvm11.0-filesystem
apt-get -fy install
apt-get -y install alterator-bind alterator-dhcp alterator-kdc alterator-ldap-groups alterator-ldap-users alterator-net-bridge   alterator-net-domain alterator-net-eth alterator-net-functions alterator-net-iptables alterator-net-openvpn   alterator-net-pppoe alterator-net-pptp alterator-openvpn-server alterator-quota alterator-squid alterator-x11   btrfs-progs cups e2fsprogs etcnet etcnet-defaults-server foo2zjs hplip hplip-gui hplip-hpcups ifrename   ima-evm-integrity-check interactivesystem krb5-kadmin krb5-kdc ldap-user-tools libe2fs libss lsb-core   lz11-V2 mate-minimal mate-session mc printer-driver-ptouch printer-driver-splix printer-drivers-base quota   system-config-printer updater virtualbox-guest-additions xinit xinitrc xorg-dri-intel xorg-dri-nouveau xorg-drv-amdgpu xorg-drv-ati xorg-drv-cirrus xorg-drv-evdev xorg-drv-fbdev   xorg-drv-intel xorg-drv-joystick xorg-drv-libinput xorg-drv-mach64 xorg-drv-mga xorg-drv-nouveau xorg-drv-qxl   xorg-drv-r128 xorg-drv-radeon xorg-drv-synaptics xorg-drv-vboxvideo xorg-drv-vesa xorg-drv-video xorg-drv-vmware   xorg-drv-void xorg-drv-wacom xorg-server xorg-utils libxatracker xorg-dri-radeon xorg-dri-swrast llvm11.0-libs llvm11.0-filesystem
rpm -e --nodeps libSM libXau libXcomposite libXcursor libXdmcp libXext libXfixes libXinerama nagwad-audit
apt-get -fy install
rpm -e --nodeps libjbig liblame liblmdb liblockdev
apt-get -fy install

apt-get -y install admc admx-basealt alterator-osec alterator-update-kernel apt-conf-branch-gostcrypto ath_info bacula11-common bacula11-director-common bacula11-director-sqlite3 blueman branding-alt-spworkstation-indexhtml cabextract chrony exfatprogs firmware-alsa-sof firmware-ipw2100 firmware-ipw2200 firmware-ipw3945 firmware-prism54 firmware-wireless-regdb firmware-zd1201 firmware-zd1211 ghostscript-module-X glxinfo gostsum gpui hddtemp hunspell-en hunspell-en_AU hunspell-en_CA hunspell-en_GB hunspell-en_US i586-bzlib i586-gawk i586-glib2 i586-glibc-core i586-glibc-nss i586-glibc-pthread i586-libalsa i586-libaom3 i586-libasyncns i586-libavahi i586-libblkid i586-libbrotlicommon i586-libbrotlidec i586-libcom_err i586-libcrypt i586-libcrypto1.1 i586-libcups i586-libcurl i586-libdav1d i586-libdb4.7 i586-libdbus i586-libde265 i586-libdeflate i586-libdrm i586-libelf i586-libexif i586-libexpat i586-libffi7 i586-libflac8 i586-libfontconfig1 i586-libfreetype i586-libgcc1 i586-libgcrypt20 i586-libgd3 i586-libgdk-pixbuf i586-libgio i586-libGL i586-libglvnd i586-libGLX i586-libGLX-mesa i586-libgmp10 i586-libgnutls30 i586-libgpg-error i586-libgphoto2-6 i586-libgphoto2_port-12 i586-libgraphite2 i586-libgsasl i586-libgsm i586-libharfbuzz i586-libheif i586-libhogweed6 i586-libICE i586-libidn i586-libidn2 i586-libieee1284 i586-libjbig i586-libjpeg i586-libkeyutils i586-libkrb5 i586-liblame i586-libldap i586-liblmdb i586-liblockdev i586-libltdl7 i586-liblz4 i586-liblzma i586-libmount i586-libmpg123 i586-libnet-snmp35 i586-libnettle8 i586-libnghttp2 i586-libnl3 i586-libntlm i586-libnuma i586-libogg i586-libopus i586-libOSMesa i586-libp11-kit i586-libpciaccess i586-libpcre3 i586-libpcsclite i586-libpng16 i586-libpsl i586-libpulseaudio i586-librav1e i586-libreadline7 i586-libsane i586-libsasl2-3 i586-libSDL2 i586-libselinux i586-libsensors3 i586-libSM i586-libsndfile i586-libssh2 i586-libssl1.1 i586-libstdc++6 i586-libsystemd i586-libtasn1 i586-libtiff5 i586-libtinfo i586-libudev1 i586-libunistring2 i586-libusb i586-libuuid i586-libv4l i586-libverto i586-libvorbis i586-libvulkan1 i586-libwebp7 i586-libX11 i586-libx265-199 i586-libXau i586-libxcb i586-libXcomposite i586-libXcursor i586-libXdmcp i586-libXext i586-libXfixes i586-libXi i586-libXinerama i586-libxml2 i586-libXpm i586-libXrandr i586-libXrender i586-libxshmfence i586-libXt i586-libXxf86vm i586-libzstd i586-llvm11.0-libs i586-ocl-icd i586-perl-base i586-wine i586-zlib indexhtml-common inxi java-17-openjdk java-17-openjdk-headless libnm-gir libopenconnect libOSMesa libotr5 libpugixml libqt-mvvm libstoken libtrousers libxerces-c lm_sensors3 make-initrd-plymouth mate-default mate-menu-editor mate-sensors-applet mesa-dri-drivers mokutil mplayer nagwad NetworkManager-openconnect ocl-icd onboard openconnect pesign plymouth-plugin-label printer-driver-brlaser printer-driver-oki printer-drivers-X11 pulseaudio pulseaudio-gsettings pulseaudio-utils python3-module-caja rfkill systemd-settings-enable-log-to-tty12 systemd-settings-enable-showstatus task-auth-freeipa thunderbird touchegg trivy vlc-plugin-gnutls vlc-plugin-h264 vlc-plugin-h265 vlc-plugin-modplug vlc-plugin-speex wine wine-common wine-gecko-2.47.4 wine-mono-8.0.0 winetricks wireless-tools wordlist-common xorg-dri-virtio xorg-dri-vmwgfx

rpm -e alterator-pkg apache-commons-logging appstream bash-builtin-lockf compiz control++-wl cpp8 fonts-ttf-google-android-emoji fuse GConf gem-did-you-mean gnome-themes-extra gnome-themes-extra-data gucharmap hashalot ilmbase24-common ipt-so java-11-openjdk kf5-kidletime-common libaom2 libbeecrypt7 libboost_date_time1.67.0 libboost_filesystem1.67.0 libboost_iostreams1.67.0 libboost_locale1.67.0 libboost_system1.67.0 libboost_thread1.67.0 libCharLS libcloudproviders libcompiz libcrypt-devel libffi6 libGConf libGLU libgnome-keyring libgraphene-gir libgssdp libgtk2-engine-adwaita libgtk4 libgtk4-gir libgtksourceview3 libgtksourceview3-gir libgupnp libhalf24 libhogweed4 libiex24 libilmimf24 libilmthread24 libimaevm0 libjson-c4 libk3bdevice7 libkf5idletime liblensfun libmetacity3.0 libminizip libmms libmozjs60 libnettle6 libnsl2 libnumpy libnumpy-py3 liboauth libofa libpoppler90 libprotobuf17 libprotobuf17-lite libqhull libqrcodegen-cpp libqt5-webengine libqt5-webenginecore libqt5-webenginewidgets libqt5-webkit libqt5-webkitwidgets libre2 libtk libucil2 libunicap libvcd libx265-160 libxmlrpc libxmlrpc++ libxmlrpc-client libXvMC ndpi-netfilter openexr24-common openni osec-controls python3-module-apipkg python3-module-asn1crypto python3-module-atomicwrites python3-module-bcrypt python3-module-black python3-module-cycler python3-module-dateutil python3-module-h2 python3-module-hamcrest python3-module-hpack python3-module-hyperframe python3-module-hypothesis python3-module-iniconfig python3-module-IPy python3-module-kiwisolver python3-module-lark-parser python3-module-libcst python3-module-matplotlib python3-module-matplotlib-cairo python3-module-matplotlib-gtk3 python3-module-matplotlib-tk python3-module-more-itertools python3-module-mpl_toolkits python3-module-mpmath python3-module-nose python3-module-numpy python3-module-numpy-testing python3-module-packagekit python3-module-pathspec python3-module-priority python3-module-py python3-module-pytest python3-module-regex python3-module-scipy python3-module-setuptools python3-module-sip python3-module-sortedcontainers python3-modules-tkinter python3-module-toml python3-module-twisted-conch python3-module-twisted-core-tests python3-module-twisted-pair python3-module-twisted-positioning python3-module-twisted-runner python3-module-twisted-web python3-module-typing-inspect python-base python-module-audit python-module-cython-hidapi python-module-numpy python-module-pkg_resources python-module-pycairo python-module-pygobject python-module-serial python-strict pytz-zoneinfo qt5-webengine-common qt5-webkit-common rabbitmq-c ruby-rubygems-update sudo tcl-tix tinyxml tk transcode tripso udev-alsa udev-rule-generator udev-rule-generator-net vcdimager vlan-utils wayland-protocols xml-commons-apis xsltproc zenity kernel-modules-ipt-so-std-def kernel-modules-ndpi-std-def

rpm -e --nodeps libicu65 libopencv4.5 libpeas libpeas-gir tigervnc-pam libzmf libqxp gst-plugins-bad1.0 mate-text-editor mate-image-viewer libpeas-python3-loader xorg-extension-vnc
apt-get -fy install
rpm -e --nodeps tigervnc-common
apt-get -y install xorg-extension-vnc

apt-get clean

systemctl disable integalert systemd-update-done.service system-update-cleanup.service

echo
echo "Upgrade is complete."
echo
