diff -Nur Cnchi-0.12.0/cnchi/bootinfo.py Cnchi-0.12.0.orig/cnchi/bootinfo.py --- Cnchi-0.12.0/cnchi/bootinfo.py 2016-02-19 20:14:13.172945784 -0200 +++ Cnchi-0.12.0.orig/cnchi/bootinfo.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # bootinfo.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -163,7 +162,7 @@ def _check_linux(mount_name): - """ Checks for GNU/Linux """ + """ Checks for linux """ detected_os = _("unknown") for os_release in OS_RELEASE_PATHS: diff -Nur Cnchi-0.12.0/cnchi/check.py Cnchi-0.12.0.orig/cnchi/check.py --- Cnchi-0.12.0/cnchi/check.py 2016-02-19 20:18:59.011770171 -0200 +++ Cnchi-0.12.0.orig/cnchi/check.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # check.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -28,7 +27,7 @@ # along with Cnchi; If not, see . -""" Check screen (detects if Parabola prerequisites are meet) """ +""" Check screen (detects if Antergos prerequisites are meet) """ from gi.repository import GLib diff -Nur Cnchi-0.12.0/cnchi/cnchi.py Cnchi-0.12.0.orig/cnchi/cnchi.py --- Cnchi-0.12.0/cnchi/cnchi.py 2016-02-19 20:25:29.778727112 -0200 +++ Cnchi-0.12.0.orig/cnchi/cnchi.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # cnchi.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -27,7 +26,7 @@ # You should have received a copy of the GNU General Public License # along with Cnchi; If not, see . -""" Main Cnchi (Parabola Installer) module """ +""" Main Cnchi (Antergos Installer) module """ import os import sys @@ -72,7 +71,7 @@ def __init__(self): """ Constructor. Call base class """ Gtk.Application.__init__(self, - application_id="nu.parabola.cnchi", + application_id="com.antergos.cnchi", flags=Gio.ApplicationFlags.FLAGS_NONE) self.TMP_RUNNING = "/tmp/.setup-running" @@ -288,7 +287,7 @@ import argparse - desc = _("Cnchi v{0} - Parabola Installer").format(info.CNCHI_VERSION) + desc = _("Cnchi v{0} - Antergos Installer").format(info.CNCHI_VERSION) parser = argparse.ArgumentParser(description=desc) parser.add_argument( @@ -343,7 +342,7 @@ action="store_true") parser.add_argument( "--disable-rank-mirrors", - help=_("Do not try to rank Parabola mirrors"), + help=_("Do not try to rank Arch and Antergos mirrors"), action="store_true") parser.add_argument( "-v", "--verbose", @@ -382,6 +381,34 @@ GObject.threads_init() # Gdk.threads_init() + +def update_cnchi(): + """ Runs updater function to update cnchi to the latest version if necessary """ + upd = updater.Updater( + force_update=cmd_line.update, + local_cnchi_version=info.CNCHI_VERSION) + + if upd.update(): + logging.info("Program updated! Restarting...") + misc.remove_temp_files() + if cmd_line.update: + # Remove -u and --update options from new call + new_argv = [] + for argv in sys.argv: + if argv != "-u" and argv != "--update": + new_argv.append(argv) + else: + new_argv = sys.argv + + # Do not try to update again now + new_argv.append("--disable-update") + + # Run another instance of Cnchi (which will be the new version) + with misc.raised_privileges(): + os.execl(sys.executable, *([sys.executable] + new_argv)) + sys.exit(0) + + def setup_gettext(): """ This allows to translate all py texts (not the glade ones) """ diff -Nur Cnchi-0.12.0/cnchi/config.py Cnchi-0.12.0.orig/cnchi/config.py --- Cnchi-0.12.0/cnchi/config.py 2016-02-19 20:29:01.968540784 -0200 +++ Cnchi-0.12.0.orig/cnchi/config.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # pacman_conf.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -45,7 +44,7 @@ self.settings.put({ 'alternate_package_list': '', 'auto_device': '/dev/sda', - 'bootloader': 'grub', + 'bootloader': 'grub2', 'bootloader_device': '/dev/sda', 'bootloader_install': True, 'bootloader_installation_successful': False, @@ -55,7 +54,7 @@ 'country_name': '', 'country_code': '', 'data': '/usr/share/cnchi/data/', - 'desktop': 'mate', + 'desktop': 'gnome', 'desktop_ask': True, 'desktops': [], 'download_module': 'requests', @@ -63,19 +62,22 @@ 'encrypt_home': False, 'f2fs': False, 'failed_download': False, - #'feature_pur': False, + 'feature_aur': False, 'feature_bluetooth': False, 'feature_cups': False, - 'feature_iceweasel': False, + 'feature_firefox': False, 'feature_firewall': False, - 'feature_glamp': False, - 'feature_glemp': False, + 'feature_fonts': False, + 'feature_games': False, + 'feature_lamp': False, + 'feature_lemp': False, 'feature_lts': False, 'feature_office': False, 'feature_smb': False, + 'feature_visual': False, 'fullname': '', 'GRUB_CMDLINE_LINUX': '', - 'hostname': 'parabola', + 'hostname': 'antergos', 'is_vbox': False, 'keyboard_layout': '', 'keyboard_variant': '', @@ -94,6 +96,7 @@ 'require_password': True, 'ruuid': '', 'sentry_dsn': '', + 'third_party_software': False, 'timezone_human_zone': '', 'timezone_country': '', 'timezone_zone': '', diff -Nur Cnchi-0.12.0/cnchi/desktop_info.py Cnchi-0.12.0.orig/cnchi/desktop_info.py --- Cnchi-0.12.0/cnchi/desktop_info.py 2016-02-19 20:40:09.796551421 -0200 +++ Cnchi-0.12.0.orig/cnchi/desktop_info.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # desktop_info.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -64,29 +63,31 @@ 'qt': ["kde", "lxqt"] } -ALL_FEATURES = ["bluetooth", "cups", "iceweasel", "glamp", "lts", "office", +ALL_FEATURES = ["aur", "bluetooth", "cups", "firefox", "fonts", "games", "graphic_drivers", "lamp", "lts", "office", "visual", "firewall", "smb"] # Each desktop has its own available features # TODO: Rework and simplify features logic by only storing excluded features for each each desktop. FEATURES = { - 'cinnamon': ["bluetooth", "cups", "iceweasel", "firewall", "lts", + 'cinnamon': ["aur", "bluetooth", "cups", "firefox", "firewall", "fonts", "games", "graphic_drivers", "lts", "office", "smb"], 'gnome': [ - "bluetooth", "cups", "iceweasel", "firewall", "fonts", + "aur", "bluetooth", "cups", "firefox", "firewall", "fonts", "games", "graphic_drivers", "lts", "office", "smb" ], 'kde': [ - "bluetooth", "cups", "iceweasel", "firewall", "lts", "office", "smb" + "aur", "bluetooth", "cups", "firefox", "firewall", "fonts", + "games", "graphic_drivers", "lts", "office", "smb" ], - 'mate': ["bluetooth", "cups", "iceweasel", "firewall", "lts", "office", "smb"], - 'enlightenment': ["bluetooth", "cups", "iceweasel", "firewall", "lts", "office", "smb"], - 'base': ["cups", "glamp", "lts"], - 'openbox': ["bluetooth", "cups", "iceweasel", "firewall", "lts", - "office", "smb"], - 'lxqt': ["bluetooth", "cups", "iceweasel", "firewall", "lts", + 'mate': ["aur", "bluetooth", "cups", "firefox", "firewall", "fonts", "lts", "office", "games", "graphic_drivers", "smb"], + 'enlightenment': ["aur", "bluetooth", "cups", "firefox", "firewall", "fonts", "games", "graphic_drivers", "lts", + "office", "smb"], + 'base': ["aur", "cups", "fonts", "lamp", "lts"], + 'openbox': ["aur", "bluetooth", "cups", "firefox", "firewall", "fonts", "games", "graphic_drivers", "lts", + "office", "smb", "visual"], + 'lxqt': ["aur", "bluetooth", "cups", "firefox", "firewall", "fonts", "games", "graphic_drivers", "lts", "office", "smb"], - 'xfce': ["bluetooth", "cups", "iceweasel", "firewall", "lts", + 'xfce': ["aur", "bluetooth", "cups", "firefox", "firewall", "fonts", "games", "graphic_drivers", "lts", "office", "smb"]} # Session names for lightDM setup @@ -111,7 +112,7 @@ "computer. It features the Activities Overview which " "is an easy way to access all your basic tasks."), - 'cinnamon': _("Cinnamon is a GNU/Linux desktop which provides advanced, " + 'cinnamon': _("Cinnamon is a Linux desktop which provides advanced, " "innovative features and a traditional desktop user experience. " "Cinnamon aims to make users feel at home by providing them with " "an easy-to-use and comfortable desktop experience."), @@ -124,10 +125,10 @@ 'openbox': _("Not actually a desktop environment, Openbox is a highly " "configurable window manager. It is known for its " "minimalistic appearance and its flexibility. It is the most " - "lightweight graphical option offered by Parabola. Please " - "Note: Openbox is not recommended for users who are new to GNU/Linux."), + "lightweight graphical option offered by antergos. Please " + "Note: Openbox is not recommended for users who are new to Linux."), - 'enlightenment': _("Enlightenment is not just a window manager for GNU/Linux X11 " + 'enlightenment': _("Enlightenment is not just a window manager for Linux/X11 " "and others, but also a whole suite of libraries to help " "you create beautiful user interfaces with much less work"), @@ -139,9 +140,9 @@ "Environment. It is lightweight, modular, blazing-fast, and " "user-friendly."), - 'base': _("This option will install Parabola as command-line only system, " + 'base': _("This option will install Antergos as command-line only system, " "without any type of graphical interface. After the installation you can " - "customize Parabola by installing packages with the command-line package manager."), + "customize Antergos by installing packages with the command-line package manager."), 'mate': _("MATE is an intuitive, attractive, and lightweight desktop " "environment which provides a more traditional desktop " diff -Nur Cnchi-0.12.0/cnchi/desktop.py Cnchi-0.12.0.orig/cnchi/desktop.py --- Cnchi-0.12.0/cnchi/desktop.py 2016-02-19 20:31:21.811430206 -0200 +++ Cnchi-0.12.0.orig/cnchi/desktop.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # desktop.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -59,7 +58,7 @@ self.listbox.set_selection_mode(Gtk.SelectionMode.BROWSE) self.listbox.set_sort_func(self.listbox_sort_by_name, None) - self.desktop_choice = 'mate' + self.desktop_choice = 'gnome' self.enabled_desktops = self.settings.get("desktops") @@ -151,8 +150,8 @@ self.listbox.add(box) - # Set MATE as default - self.select_default_row(desktop_info.NAMES["mate"]) + # Set Gnome as default + self.select_default_row(desktop_info.NAMES["gnome"]) @staticmethod def listbox_sort_by_name(row1, row2, user_data): @@ -206,7 +205,7 @@ def store_values(self): """ Store desktop """ self.settings.set('desktop', self.desktop_choice.lower()) - logging.info("Cnchi will install Parabola with the '%s' desktop", self.desktop_choice.lower()) + logging.info("Cnchi will install Antergos with the '%s' desktop", self.desktop_choice.lower()) return True @staticmethod diff -Nur Cnchi-0.12.0/cnchi/download/download_aria2.py Cnchi-0.12.0.orig/cnchi/download/download_aria2.py --- Cnchi-0.12.0/cnchi/download/download_aria2.py 2016-02-19 22:15:49.368734503 -0200 +++ Cnchi-0.12.0.orig/cnchi/download/download_aria2.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # download_aria2.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -49,7 +48,7 @@ class Download(object): """ Class to download packages using Aria2 This class tries to previously download all necessary packages for - Parabola installation using aria2 """ + Antergos installation using aria2 """ def __init__(self, pacman_cache_dir, cache_dir, callback_queue): """ Initialize DownloadAria2 class. Gets default configuration """ diff -Nur Cnchi-0.12.0/cnchi/download/download.py Cnchi-0.12.0.orig/cnchi/download/download.py --- Cnchi-0.12.0/cnchi/download/download.py 2016-02-19 22:15:11.740240137 -0200 +++ Cnchi-0.12.0.orig/cnchi/download/download.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # download.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -55,7 +54,7 @@ class DownloadPackages(object): """ Class to download packages using Aria2, requests (default) or urllib This class tries to previously download all necessary packages for - Parabola installation using aria2, requests or urllib + Antergos installation using aria2, requests or urllib Aria2 is known to use too much memory (not Aria2's fault but ours) so until it's fixed it it's not advised to use it """ diff -Nur Cnchi-0.12.0/cnchi/download/download_requests.py Cnchi-0.12.0.orig/cnchi/download/download_requests.py --- Cnchi-0.12.0/cnchi/download/download_requests.py 2016-02-19 22:16:20.944168570 -0200 +++ Cnchi-0.12.0.orig/cnchi/download/download_requests.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # download_requests.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -52,7 +51,7 @@ class Download(object): """ Class to download packages using requests This class tries to previously download all necessary packages for - Parabola installation using requests """ + Antergos installation using requests """ def __init__(self, pacman_cache_dir, cache_dir, callback_queue): """ Initialize Download class. Gets default configuration """ diff -Nur Cnchi-0.12.0/cnchi/download/download_urllib.py Cnchi-0.12.0.orig/cnchi/download/download_urllib.py --- Cnchi-0.12.0/cnchi/download/download_urllib.py 2016-02-19 22:17:07.892384102 -0200 +++ Cnchi-0.12.0.orig/cnchi/download/download_urllib.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # download_urllib.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -93,7 +92,7 @@ class Download(object): """ Class to download packages using urllib This class tries to previously download all necessary packages for - Parabola installation using urllib """ + Antergos installation using urllib """ def __init__(self, pacman_cache_dir, cache_dir, callback_queue): """ Initialize Download class. Gets default configuration """ diff -Nur Cnchi-0.12.0/cnchi/encfs.py Cnchi-0.12.0.orig/cnchi/encfs.py --- Cnchi-0.12.0/cnchi/encfs.py 2016-02-19 20:42:59.504622165 -0200 +++ Cnchi-0.12.0.orig/cnchi/encfs.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # encfs.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -28,7 +27,7 @@ # along with Cnchi; If not, see . -""" Configures Parabola to encrypt user's home with encFS """ +""" Configures Antergos to encrypt user's home with encFS """ import os import shutil @@ -58,7 +57,7 @@ def setup_conf_files(dest_dir): path = os.path.join(dest_dir, "etc/security/pam_encfs.conf") with open(path, 'w') as pam_encfs: - pam_encfs.write("# File created by Cnchi (Parabola Installer)\n\n") + pam_encfs.write("# File created by Cnchi (Antergos Installer)\n\n") pam_encfs.write("# If this is specified program will attempt to drop permissions before running encfs.\n") pam_encfs.write("drop_permissions\n\n") pam_encfs.write("# This specifies which options to pass to encfs for every user.\n") @@ -67,30 +66,30 @@ pam_encfs.write("# Same for fuse\n") pam_encfs.write("# you can find fuse options with encfs -H\n") pam_encfs.write("fuse_default allow_root,nonempty\n\n") - pam_encfs.write("# Added by Cnchi - Parabola Installer\n") + pam_encfs.write("# Added by Cnchi - Antergos Installer\n") # USERNAME SOURCE TARGET_PATH ENCFS_Options FUSE_Options pam_encfs.write("-\t/home/.encfs\t-\t-v\t-\n") path = os.path.join(dest_dir, "etc/security/pam_env.conf") with open(path, 'a') as pam_env: - pam_env.write("\n# Added by Cnchi - Parabola Installer\n") - pam_env.write("# Set the ICEAUTHORITY file location to allow MATE to start on encfs $HOME\n") + pam_env.write("\n# Added by Cnchi - Antergos Installer\n") + pam_env.write("# Set the ICEAUTHORITY file location to allow GNOME to start on encfs $HOME\n") pam_env.write("ICEAUTHORITY DEFAULT=/tmp/.ICEauthority_@{PAM_USER}\n") path = os.path.join(dest_dir, "etc/fuse.conf") with open(path, 'a') as fuse_conf: - fuse_conf.write("\n# Added by Cnchi - Parabola Installer\n") + fuse_conf.write("\n# Added by Cnchi - Antergos Installer\n") fuse_conf.write("user_allow_other\n") path = os.path.join(dest_dir, "etc/pam.d/system-login") with open(path, 'a') as system_login: - system_login.write("\n# Added by Cnchi - Parabola Installer\n") + system_login.write("\n# Added by Cnchi - Antergos Installer\n") system_login.write("session required\tpam_encfs.so\n") system_login.write("session optional\tpam_mount.so\n") path = os.path.join(dest_dir, "etc/pam.d/system-auth") with open(path, "a") as system_auth: - system_auth.write("\n# Added by Cnchi - Parabola Installer\n") + system_auth.write("\n# Added by Cnchi - Antergos Installer\n") system_auth.write("auth sufficient\tpam_encfs.so\n") system_auth.write("auth optional\tpam_mount.so\n") @@ -99,7 +98,7 @@ def setup(username, dest_dir, password): """ Encrypt user's home folder """ # encfs and pam_mount packages are needed - # and pam_encfs from [pcr], too. + # and pam_encfs from AUR, too. # Reference: https://wiki.debian.org/TransparentEncryptionForHomeFolder try: diff -Nur Cnchi-0.12.0/cnchi/features_info.py Cnchi-0.12.0.orig/cnchi/features_info.py --- Cnchi-0.12.0/cnchi/features_info.py 2016-02-19 21:41:28.925343575 -0200 +++ Cnchi-0.12.0.orig/cnchi/features_info.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # features_info.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -34,15 +33,19 @@ # in desktop_info file instead of here. ICON_NAMES = { - #'pur': 'system-software-install', + 'aur': 'system-software-install', 'bluetooth': 'bluetooth', 'cups': 'printer', - 'iceweasel': 'iceweasel', + 'firefox': 'firefox', 'firewall': 'network-server', - 'glamp': 'applications-internet', + 'fonts': 'preferences-desktop-font', + 'games': 'applications-games', + 'graphic_drivers': 'gnome-system', + 'lamp': 'applications-internet', 'lts': 'applications-accessories', 'office': 'accessories-text-editor', - 'smb': 'gnome-mime-x-directory-smb-share'} + 'smb': 'gnome-mime-x-directory-smb-share', + 'visual': 'video-display'} # See http://docs.python.org/2/library/gettext.html "22.1.3.4. Deferred translations" @@ -50,30 +53,38 @@ return message TITLES = { - #'pur': _("Parabola User Repository (PUR) Support"), + 'aur': _("Arch User Repository (AUR) Support"), 'bluetooth': _("Bluetooth Support"), 'cups': _("Printing Support"), - 'iceweasel': _("Iceweasel Web Browser"), + 'firefox': _("Firefox Web Browser"), 'firewall': _("Uncomplicated Firewall"), + 'fonts': _("Extra Truetype Fonts"), + 'games': _("Steam + PlayonLinux"), + 'graphic_drivers': _("Graphic drivers (Proprietary)"), 'lamp': _("Apache (or Nginx) + Mariadb + PHP"), 'lts': _("Kernel (LTS version)"), 'office': _("LibreOffice"), - 'smb': _("Windows sharing SMB")} + 'smb': _("Windows sharing SMB"), + 'visual': _("Visual Effects")} DESCRIPTIONS = { - #'pur': _("The PUR is a community-driven repository for Parabola users."), + 'aur': _("The AUR is a community-driven repository for Arch users."), 'bluetooth': _("Enables your system to make wireless connections via Bluetooth."), - 'glamp': _("Apache (or Nginx) + Mariadb + PHP installation and setup."), + 'fonts': _("TrueType fonts from the Google Fonts project."), + 'graphic_drivers': _("Installs AMD or Nvidia proprietary graphic driver."), + 'games': _("Installs Steam and Playonlinux for gaming enthusiasts."), + 'lamp': _("Apache (or Nginx) + Mariadb + PHP installation and setup."), 'cups': _("Installation of printer drivers and management tools."), - 'office': _("Free software office suite. Supports editing MS Office files."), + 'office': _("Open source office suite. Supports editing MS Office files."), + 'visual': _("Enable transparency, shadows, and other desktop effects."), 'firewall': _("Control the incoming and outgoing network traffic."), 'lts': _("Long term support (LTS) Linux kernel and modules."), - 'iceweasel': _("A popular free software graphical web browser from Mozilla."), + 'firefox': _("A popular open-source graphical web browser from Mozilla."), 'smb': _("SMB provides shared access to files and printers.")} TOOLTIPS = { - #'aur': _("Use yaourt to install PUR packages.\n" - "The PUR was created to organize and share new packages\n" + 'aur': _("Use yaourt to install AUR packages.\n" + "The AUR was created to organize and share new packages\n" "from the community and to help expedite popular packages'\n" "inclusion into the [community] repository."), 'bluetooth': _("Bluetooth is a standard for the short-range wireless\n" @@ -83,33 +94,54 @@ 'cups': _("CUPS is the standards-based, open source printing\n" "system developed by Apple Inc. for OS® X and other\n" "UNIX®-like operating systems."), - 'iceweasel': _("Iceweasel (based on Mozilla Firefox) is a free\n" - "web browser developed for GNU/Linux by the\n" - "Mozilla Foundation and its subsidiary, the Mozilla Corporation. - "Iceweasel uses the Gecko layout engine to render web\n" - "pages, which implements current and anticipated web standards."), + 'firefox': _("Mozilla Firefox (known simply as Firefox) is a free and\n" + "open-source web browser developed for Windows, OS X, and Linux,\n" + "with a mobile version for Android, by the Mozilla Foundation and\n" + "its subsidiary, the Mozilla Corporation. Firefox uses the Gecko\n" + "layout engine to render web pages, which implements current and\n" + "anticipated web standards."), 'firewall': _("Ufw stands for Uncomplicated Firewall, and is a program for\n" - "managing a netfilter firewall. It provides a command-line\n" - "interface and aims to be simple and easy to use."), - 'glamp': _("This option installs a web server (you can choose\n" + "managing a netfilter firewall. It provides a command line\n" + "interface and aims to be uncomplicated and easy to use."), + 'fonts': "Fonts: adobe-source-code-pro, adobe-source-sans-pro, jsmath, lohit\n" + "oldstand, openarch, otf-bitter, otf-goudy, andika, anonymous-pro\n" + "cantarell, cardo, chromeos-fonts, comfortaa, droid, google-fonts\n" + "google-webfonts, inconsolata, kimberly_geswein_print, lekton\n" + "medievalsharp, nova, oldstandard, opensans, oxygen, pt-mono\n" + "pt-sans, roboto, sil-fonts, sortsmillgoudy, source-code-pro\n" + "source-sans-pro, ubuntu-font-family, vollkorn, fira-mono\n" + "fira-sans and lato.", + + 'games': _("Steam is one of the most popular gaming clients that supports\n" + "linux in technology and gaming, while PlayOnLinux\n" + "is a very easy manager to setting up games to play\n" + "through wine, instead of doing it manually."), + 'graphic_drivers': _("Installs AMD or Nvidia proprietary graphics driver."), + 'lamp': _("This option installs a web server (you can choose\n" "Apache or Nginx) plus a database server (Mariadb)\n" "and PHP."), - 'lts': _("The linux-libre-lts package is an alternative kernel package\n" - "based upon Linux-libre kernel 3.14 and is available in the core repository.\n" + 'lts': _("The linux-lts package is an alternative Arch kernel package\n" + "based upon Linux kernel 3.14 and is available in the core repository.\n" "This particular kernel version enjoys long-term support from upstream,\n" "including security fixes and some feature backports. Additionally, this\n" - "package includes ext4 support. For Parabola users seeking a long-term\n" + "package includes ext4 support. For Antergos users seeking a long-term\n" "support kernel, or who want a fallback kernel in case the latest kernel\n" "version causes problems, this option is the answer."), - 'office': _("LibreOffice is the power-packed Free Software\n" + 'office': _("LibreOffice is the free power-packed Open Source\n" "personal productivity suite for Windows, Macintosh\n" - "and GNU/Linux, that gives you six feature-rich applications\n" + "and Linux, that gives you six feature-rich applications\n" "for all your document production and data processing\n" "needs: Writer, Calc, Impress, Draw, Math and Base."), 'smb': _("In computer networking, Server Message Block (SMB)\n" "operates as an application-layer network protocol mainly used\n" "for providing shared access to files, printers, serial ports,\n" - "and miscellaneous communications between nodes on a network.\n"), + "and miscellaneous communications between nodes on a network.\n" + "Most usage of SMB involves computers running Microsoft Windows."), + 'visual': _("Compton is a lightweight, standalone composite manager,\n" + "suitable for use with window managers that do not natively\n" + "provide compositing functionality. Compton itself is a fork\n" + "of xcompmgr-dana, which in turn is a fork of xcompmgr.\n" + "See the compton github page for further information.")} # Delete previous _() dummy declaration del _ diff -Nur Cnchi-0.12.0/cnchi/features.py Cnchi-0.12.0.orig/cnchi/features.py --- Cnchi-0.12.0/cnchi/features.py 2016-02-19 20:51:51.147145669 -0200 +++ Cnchi-0.12.0.orig/cnchi/features.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # features.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -66,16 +65,39 @@ # This is initialized each time this screen is shown in prepare() self.features = None - # Only show ufw rules and pur disclaimer info once - self.info_already_shown = {"ufw": False, "pur": False} + # Only show ufw rules and aur disclaimer info once + self.info_already_shown = {"ufw": False, "aur": False} # Only load defaults the first time this screen is shown self.load_defaults = True @staticmethod + def nvidia_detected(): + from hardware.nvidia import Nvidia + if Nvidia().detect(): + return True + from hardware.nvidia_340xx import Nvidia_340xx + if Nvidia_340xx().detect(): + return True + from hardware.nvidia_304xx import Nvidia_304xx + if Nvidia_304xx().detect(): + return True + return False + + @staticmethod + def amd_detected(): + from hardware.catalyst import Catalyst + return Catalyst().detect() + + @staticmethod def on_listbox_row_selected(listbox, listbox_row): """ Someone selected a different row of the listbox WARNING: IF LIST LAYOUT IS CHANGED THEN THIS SHOULD BE CHANGED ACCORDINGLY. """ + if listbox_row is not None: + for vbox in listbox_row: + switch = vbox.get_children()[2] + if switch: + switch.set_active(not switch.get_active()) def fill_listbox(self): for listbox_row in self.listbox.get_children(): @@ -83,6 +105,15 @@ self.listbox_rows = {} + # Only add graphic-driver feature if an AMD or Nvidia is detected + # FIXME: Conflict between lib32-nvidia-libgl and lib32-mesa-libgl + #if "graphic_drivers" in self.features: + # if not self.amd_detected() and not self.nvidia_detected(): + # logging.debug("Neither nvidia nor amd have been detected. Removing proprietary graphic driver feature") + # self.features.remove("graphic_drivers") + if "graphic_drivers" in self.features: + self.features.remove("graphic_drivers") + for feature in self.features: box = Gtk.Box(spacing=20) box.set_name(feature + "-row") @@ -104,6 +135,15 @@ self.listbox_rows[feature].append(image) box.pack_start(image, False, False, 0) + text_box = Gtk.VBox() + object_name = "label_title_" + feature + label_title = Gtk.Label.new() + label_title.set_halign(Gtk.Align.START) + label_title.set_justify(Gtk.Justification.LEFT) + label_title.set_name(object_name) + self.listbox_rows[feature].append(label_title) + text_box.pack_start(label_title, False, False, 0) + object_name = "label_" + feature label = Gtk.Label.new() label.set_name(object_name) @@ -168,6 +208,16 @@ txt = desktop_info.NAMES[desktop] + " - " + _("Feature Selection") self.header.set_subtitle(txt) + for feature in self.features: + if feature == "graphic_drivers": + # Only add this feature if NVIDIA or AMD are detected + if not self.amd_detected() and not self.nvidia_detected(): + continue + title = _(features_info.TITLES[feature]) + desc = _(features_info.DESCRIPTIONS[feature]) + tooltip = _(features_info.TOOLTIPS[feature]) + self.set_row_text(feature, title, desc, tooltip) + # Sort listbox items self.listbox.invalidate_sort() @@ -190,6 +240,10 @@ row = self.listbox_rows['cups'] row[COL_SWITCH].set_active(True) + if 'visual' in self.features: + row = self.listbox_rows['visual'] + row[COL_SWITCH].set_active(True) + def store_values(self): """ Get switches values and store them """ for feature in self.features: @@ -204,28 +258,28 @@ self.show_info_dialog("ufw") self.info_already_shown["ufw"] = True - # Show PUR disclaimer if PUR is selected (show it only once) - #if self.settings.get("feature_pur") and not self.info_already_shown["pur"]: - # self.show_info_dialog("pur") - # self.info_already_shown["pur"] = True + # Show AUR disclaimer if AUR is selected (show it only once) + if self.settings.get("feature_aur") and not self.info_already_shown["aur"]: + self.show_info_dialog("aur") + self.info_already_shown["aur"] = True - # GLAMP: Ask user if she wants Apache or Nginx - if self.settings.get("feature_glamp"): + # LAMP: Ask user if he wants Apache or Nginx + if self.settings.get("feature_lamp"): info = Gtk.MessageDialog( transient_for=self.get_toplevel(), modal=True, destroy_with_parent=True, message_type=Gtk.MessageType.INFO, buttons=Gtk.ButtonsType.YES_NO) - info.set_markup("GLAMP / GLEMP") + info.set_markup("LAMP / LEMP") msg = _("Do you want to install the Nginx server instead of the Apache server?") info.format_secondary_markup(msg) response = info.run() info.destroy() if response == Gtk.ResponseType.YES: - self.settings.set("feature_glemp", True) + self.settings.set("feature_lemp", True) else: - self.settings.set("feature_glemp", False) + self.settings.set("feature_lemp", False) self.listbox_rows = {} @@ -233,12 +287,12 @@ def show_info_dialog(self, feature): """ Some features show an information dialog when this screen is accepted """ - #if feature == "pur": - # # Pur disclaimer - # txt1 = _("Parabola User Repository - Disclaimer") - # txt2 = _("The Parabola User Repository is a collection of user-submitted PKGBUILDs\n" - # "that supplement software available from the official repositories.\n\n" - # "The PUR is community-driven.\n") + if feature == "aur": + # Aur disclaimer + txt1 = _("Arch User Repository - Disclaimer") + txt2 = _("The Arch User Repository is a collection of user-submitted PKGBUILDs\n" + "that supplement software available from the official repositories.\n\n" + "The AUR is community driven and NOT supported by Arch or Antergos.\n") elif feature == "ufw": # Ufw rules info txt1 = _("Uncomplicated Firewall will be installed with these rules:") diff -Nur Cnchi-0.12.0/cnchi/hardware/hardware.py Cnchi-0.12.0.orig/cnchi/hardware/hardware.py --- Cnchi-0.12.0/cnchi/hardware/hardware.py 2016-02-19 22:36:12.424692013 -0200 +++ Cnchi-0.12.0.orig/cnchi/hardware/hardware.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # hardware.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -95,8 +94,8 @@ @staticmethod def is_proprietary(): """ Proprietary drivers are drivers for your hardware devices - that are not freely-available, and must be - avoided as much as possible. """ + that are not freely-available or open source, and must be + obtained from the hardware manufacturer. """ return False def is_graphic_driver(self): @@ -160,7 +159,12 @@ class HardwareInstall(object): - """ This class checks user's hardware """ + """ This class checks user's hardware + + If 'use_proprietary_graphic_drivers' is True, this module will try to install the proprietary + variants of the graphic drivers available (only if the hardware is detected). + For non graphical drivers, the open one is always choosen as default. + """ def __init__(self, use_proprietary_graphic_drivers=False): self.use_proprietary_graphic_drivers = use_proprietary_graphic_drivers @@ -230,8 +234,49 @@ for device in self.objects_found: drivers_available = self.objects_found[device] objects_selected = [] - - # Only one option, add it (it doesn't matter if it's free or not) + if len(drivers_available) > 1: + # We have more than one driver for this device! + # We'll need to choose one + + # Check if there is a proprietary driver + is_one_closed = False + for driver in drivers_available: + if driver.is_proprietary(): + is_one_closed = True + break + + for driver in drivers_available: + if not driver.is_graphic_driver(): + # For non graphical drivers, we choose the open one as default + if not driver.is_proprietary(): + objects_selected.append(driver) + else: + # It's a graphic driver + # We choose the open one if the user does not want to + # use proprietary (or if all the ones available are open) + if not self.use_proprietary_graphic_drivers or not is_one_closed: + # OK, we choose the open one + if not driver.is_proprietary(): + objects_selected.append(driver) + else: + # One of them is proprietary and user wants to use it + if driver.is_proprietary(): + objects_selected.append(driver) + + if len(objects_selected) > 1: + # We still have two or more options, + # let's check their priority + priorities = [] + for driver in objects_selected: + priorities.append(driver.get_priority()) + for driver in objects_selected: + if driver.get_priority() == max(priorities): + self.objects_used.append(driver) + break + else: + self.objects_used.extend(objects_selected) + else: + # Only one option, add it (it doesn't matter if it's open or not) self.objects_used.append(drivers_available[0]) @staticmethod @@ -288,3 +333,35 @@ """ Run post install commands for all detected devices """ for obj in self.objects_used: obj.post_install(dest_dir) + + +''' Test case ''' +if __name__ == "__main__": + def _(x): return x + hardware_install = HardwareInstall(use_proprietary_graphic_drivers=False) + # hardware_install = HardwareInstall(use_proprietary_graphic_drivers=True) + hardware_pkgs = hardware_install.get_packages() + print(hardware_install.get_found_driver_names()) + if len(hardware_pkgs) > 0: + txt = " ".join(hardware_pkgs) + print("Hardware module added these packages :") + print(txt) + + """ + from nvidia import Nvidia + if Nvidia().detect(): + print("Nvidia detected") + # Nvidia().post_install("/") + + from nvidia_340xx import Nvidia_340xx + if Nvidia_340xx().detect(): + print("Nvidia-340xx detected") + + from nvidia_304xx import Nvidia_304xx + if Nvidia_304xx().detect(): + print("nvidia-304xx detected") + + from catalyst import Catalyst + if Catalyst().detect(): + print("Catalyst detected") + """ diff -Nur Cnchi-0.12.0/cnchi/info.py Cnchi-0.12.0.orig/cnchi/info.py --- Cnchi-0.12.0/cnchi/info.py 2016-02-19 21:43:19.124426725 -0200 +++ Cnchi-0.12.0.orig/cnchi/info.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # info.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -31,7 +30,7 @@ """ Set some Cnchi global constants """ CNCHI_VERSION = "0.12.47" -CNCHI_WEBSITE = "https://www.parabola.nu" +CNCHI_WEBSITE = "http://www.antergos.com" CNCHI_RELEASE_STAGE = "production" if __name__ == '__main__': diff -Nur Cnchi-0.12.0/cnchi/installation/advanced.py Cnchi-0.12.0.orig/cnchi/installation/advanced.py --- Cnchi-0.12.0/cnchi/installation/advanced.py 2016-02-19 22:44:57.397750736 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/advanced.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # advanced.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -171,7 +170,7 @@ for mount_point in fs.COMMON_MOUNT_POINTS: combo.append_text(mount_point) - self.bootloader = "grub" + self.bootloader = "grub2" self.bootloader_device = "" self.bootloader_entry = self.ui.get_object('bootloader_entry') self.bootloader_device_entry = self.ui.get_object('bootloader_device_entry') @@ -341,7 +340,7 @@ self.bootloader_entry.remove_all() if os.path.exists('/sys/firmware/efi'): - self.bootloader_entry.append_text("Grub") + self.bootloader_entry.append_text("Grub2") self.bootloader_entry.append_text("Systemd-boot") if not self.select_combobox_value(self.bootloader_entry, self.bootloader): # Automatically select first entry @@ -1703,7 +1702,7 @@ """ Check that all necessary mount points are specified. At least root (/) partition must be defined and in UEFI systems - a fat partition mounted in /boot (Systemd-boot) or /boot/efi (grub) must be defined too. + a fat partition mounted in /boot (Systemd-boot) or /boot/efi (grub2) must be defined too. """ check_parts = ["/", "/boot", "/boot/efi", "swap"] @@ -1736,7 +1735,7 @@ part_label["/"].show() if is_uefi: - if self.bootloader == "grub": + if self.bootloader == "grub2": part_label["/boot/efi"].show() if self.bootloader == "systemd-boot": part_label["/boot"].show() @@ -1766,8 +1765,8 @@ if is_uefi: # /boot or /boot/efi need to be fat32 in UEFI systems if "fat" in fsystem: - if self.bootloader == "grub" and mnt == "/boot/efi": - # Grub in UEFI + if self.bootloader == "grub2" and mnt == "/boot/efi": + # Grub2 in UEFI has_part["/boot/efi"] = True part_label["/boot/efi"].show() part_label["/boot/efi"].set_state(True) @@ -1787,8 +1786,8 @@ check_ok = has_part["/"] if is_uefi: - if self.bootloader == "grub": - # Grub needs a /boot/efi partition in UEFI + if self.bootloader == "grub2": + # Grub2 needs a /boot/efi partition in UEFI check_ok = check_ok and has_part["/boot/efi"] elif self.bootloader == "systemd-boot": # Systemd-boot (Gummiboot) needs a /boot partition @@ -2009,7 +2008,7 @@ self.settings.set('bootloader_device', self.bootloader_device) self.settings.set('bootloader', self.bootloader) - msg = "Parabola will install the bootloader {0} in device {1}" + msg = "Antergos will install the bootloader {0} in device {1}" msg = msg.format(self.bootloader, self.bootloader_device) logging.info(msg) diff -Nur Cnchi-0.12.0/cnchi/installation/alongside.py Cnchi-0.12.0.orig/cnchi/installation/alongside.py --- Cnchi-0.12.0/cnchi/installation/alongside.py 2016-02-19 22:49:47.171043395 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/alongside.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # alongside.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -52,7 +51,7 @@ from gtkbasebox import GtkBaseBox -# Leave at least 6.5GB for Parabola when shrinking +# Leave at least 6.5GB for Antergos when shrinking MIN_ROOT_SIZE = 6500 @@ -120,7 +119,7 @@ @staticmethod def get_new_device(device_to_shrink): - """ Get new device where Cnchi will install Parabola + """ Get new device where Cnchi will install Antergos returns an empty string if no device is available """ number = int(device_to_shrink[len("/dev/sdX"):]) disk = device_to_shrink[:len("/dev/sdX")] @@ -152,10 +151,10 @@ (min_size, part_size) = get_partition_size_info(device_to_shrink) max_size = part_size - (MIN_ROOT_SIZE * 1000.0) if max_size < 0: - # Full Parabola does not fit but maybe base fits... ask user. - txt = _("Cnchi recommends at least 6.5GB free to install Parabola.") + "\n\n" + # Full Antergos does not fit but maybe base fits... ask user. + txt = _("Cnchi recommends at least 6.5GB free to install Antergos.") + "\n\n" txt += _("New partition {0} resulting of shrinking {1} will not have enough free space for a full installation.").format(new_device, device_to_shrink) + "\n\n" - txt += _("You can still install Parabola, but be carefull on which DE you choose as it might not fit in.") + "\n\n" + txt += _("You can still install Antergos, but be carefull on which DE you choose as it might not fit in.") + "\n\n" txt += _("Install at your own risk!") show.warning(self.get_toplevel(), txt) max_size = part_size @@ -175,8 +174,8 @@ icon_file = self.get_distributor_icon_file(self.oses[device_to_shrink]) self.resize_widget.set_part_icon('existing', icon_file=icon_file) - self.resize_widget.set_part_title('new', 'New Parabola', new_device) - icon_file = self.get_distributor_icon_file('Parabola') + self.resize_widget.set_part_title('new', 'New Antergos', new_device) + icon_file = self.get_distributor_icon_file('Antergos') self.resize_widget.set_part_icon('new', icon_file=icon_file) self.resize_widget.set_pref_size(max_size) @@ -186,10 +185,10 @@ """ Gets an icon for the installed distribution """ os_name = os_name.lower() - # No numix icon for Parabola, use our own. - if "parabola" in os_name: + # No numix icon for Antergos, use our own. + if "antergos" in os_name: icons_path = os.path.join(self.settings.get('data'), "icons/48x48") - icon_file = os.path.join(icons_path, "distributor-logo-parabola.png") + icon_file = os.path.join(icons_path, "distributor-logo-antergos.png") return icon_file icon_names = [ @@ -217,7 +216,7 @@ txt = _("Choose the partition that you want to shrink:") self.choose_partition_label.set_markup(txt) - self.header.set_subtitle(_("Parabola Alongside Installation")) + self.header.set_subtitle(_("Antergos Alongside Installation")) def on_choose_partition_combo_changed(self, combobox): txt = combobox.get_active_text() @@ -418,7 +417,7 @@ if self.settings.get('bootloader_install'): self.settings.set('bootloader', "grub2") self.settings.set('bootloader_device', device_path) - msg = "Parabola will install the bootloader {0} in device {1}" + msg = "Antergos will install the bootloader {0} in device {1}" msg = msg.format(self.bootloader, self.bootloader_device) logging.info(msg) else: diff -Nur Cnchi-0.12.0/cnchi/installation/ask.py Cnchi-0.12.0.orig/cnchi/installation/ask.py --- Cnchi-0.12.0/cnchi/installation/ask.py 2016-02-19 22:56:49.698034148 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/ask.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # ask.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -228,9 +227,9 @@ # Automatic Install radio = self.ui.get_object("automatic_radiobutton") if len(oses_str) > 0: - txt = _("Replace {0} with Parabola").format(oses_str) + txt = _("Replace {0} with Antergos").format(oses_str) else: - txt = _("Erase disk and install Parabola") + txt = _("Erase disk and install Antergos") radio.set_label(txt) radio.set_name('auto_radio_btn') @@ -296,12 +295,12 @@ # Alongside Install (For now, only works with Windows) # if len(oses_str) > 0: - # txt = _("Install Parabola alongside {0}").format(oses_str) + # txt = _("Install Antergos alongside {0}").format(oses_str) # radio = self.ui.get_object("alongside_radiobutton") # radio.set_label(txt) # # label = self.ui.get_object("alongside_description") - # txt = _("Installs Parabola without removing {0}").format(oses_str) + # txt = _("Installs Antergos without removing {0}").format(oses_str) # txt = description_style.format(txt) # label.set_markup(txt) # label.set_line_wrap(True) @@ -321,7 +320,7 @@ # Advanced Install radio = self.ui.get_object("advanced_radiobutton") - radio.set_label(_("Choose exactly where Parabola should be installed.")) + radio.set_label(_("Choose exactly where Antergos should be installed.")) radio.set_name("advanced_radio_btn") label = self.ui.get_object("advanced_description") @@ -348,7 +347,7 @@ self.settings.set('use_lvm', use_lvm) self.settings.set('use_luks', use_luks) self.settings.set('use_luks_in_root', True) - self.settings.set('luks_root_volume', "cryptParabola") + self.settings.set('luks_root_volume', "cryptAntergos") self.settings.set('use_home', use_home) else: # Set defaults. We don't know these yet. @@ -359,14 +358,14 @@ self.settings.set('use_home', False) if self.settings.get('use_luks'): - logging.info("Parabola installation will be encrypted using LUKS") + logging.info("Antergos installation will be encrypted using LUKS") if self.settings.get('use_lvm'): - logging.info("Parabola will be installed using LVM volumes") + logging.info("Antergos will be installed using LVM volumes") if self.settings.get('use_home'): - logging.info("Parabola will be installed using a separate /home volume.") + logging.info("Antergos will be installed using a separate /home volume.") elif self.settings.get('use_home'): - logging.info("Parabola will be installed using a separate /home partition.") + logging.info("Antergos will be installed using a separate /home partition.") if self.next_page == "installation_alongside": self.settings.set('partition_mode', 'alongside') diff -Nur Cnchi-0.12.0/cnchi/installation/automatic.py Cnchi-0.12.0.orig/cnchi/installation/automatic.py --- Cnchi-0.12.0/cnchi/installation/automatic.py 2016-02-19 22:57:43.423730654 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/automatic.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # automatic.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -71,7 +70,7 @@ self.devices = {} self.installation = None - self.bootloader = "grub" + self.bootloader = "grub2" self.bootloader_entry = self.ui.get_object('bootloader_entry') self.bootloader_device_entry = self.ui.get_object('bootloader_device_entry') self.bootloader_devices = {} @@ -90,7 +89,7 @@ label.set_markup(txt) label = self.ui.get_object('info_label') - txt = _("Select the drive we should use to install Parabola and then click above to start the process.") + txt = _("Select the drive we should use to install Antergos and then click above to start the process.") label.set_markup(txt) label = self.ui.get_object('label_luks_password') @@ -226,7 +225,7 @@ self.bootloader_entry.remove_all() if os.path.exists('/sys/firmware/efi'): - self.bootloader_entry.append_text("Grub") + self.bootloader_entry.append_text("Grub2") self.bootloader_entry.append_text("Gummiboot") self.bootloader_entry.set_active(0) self.bootloader_entry.show() @@ -342,12 +341,12 @@ self.settings.set('bootloader_device', self.bootloader_device) self.settings.set('bootloader', self.bootloader) - msg = _("Parabola will install the bootloader '{0}' in device '{1}'") + msg = _("Antergos will install the bootloader '{0}' in device '{1}'") msg = msg.format(self.bootloader, self.bootloader_device) logging.info(msg) def run_install(self, packages, metalinks): - txt = _("Cnchi will install Parabola on device %s") + txt = _("Cnchi will install Antergos on device %s") logging.info(txt, self.auto_device) self.settings.set('auto_device', self.auto_device) diff -Nur Cnchi-0.12.0/cnchi/installation/auto_partition.py Cnchi-0.12.0.orig/cnchi/installation/auto_partition.py --- Cnchi-0.12.0/cnchi/installation/auto_partition.py 2016-02-19 23:10:39.301156133 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/auto_partition.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # auto_partition.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -151,10 +150,10 @@ failed installation) """ try: - if os.path.exists("/dev/mapper/cryptParabola"): - subprocess.check_call(["cryptsetup", "luksClose", "/dev/mapper/cryptParabola"]) - if os.path.exists("/dev/mapper/cryptParabolaHome"): - subprocess.check_call(["cryptsetup", "luksClose", "/dev/mapper/cryptParabolaHome"]) + if os.path.exists("/dev/mapper/cryptAntergos"): + subprocess.check_call(["cryptsetup", "luksClose", "/dev/mapper/cryptAntergos"]) + if os.path.exists("/dev/mapper/cryptAntergosHome"): + subprocess.check_call(["cryptsetup", "luksClose", "/dev/mapper/cryptAntergosHome"]) except subprocess.CalledProcessError as err: logging.warning("Can't close already opened LUKS devices, command %s failed: %s", err.cmd, err.output) @@ -467,7 +466,7 @@ else: part_num = 1 - if self.bootloader == "grub": + if self.bootloader == "grub2": devices['efi'] = "{0}{1}".format(device, part_num) part_num += 1 @@ -490,25 +489,25 @@ if self.lvm: # LUKS and LVM devices['luks_root'] = devices['root'] - devices['lvm'] = "/dev/mapper/cryptParabola" + devices['lvm'] = "/dev/mapper/cryptAntergos" else: # LUKS and no LVM devices['luks_root'] = devices['root'] - devices['root'] = "/dev/mapper/cryptParabola" + devices['root'] = "/dev/mapper/cryptAntergos" if self.home: # In this case we'll have two LUKS devices, one for root # and the other one for /home devices['luks_home'] = devices['home'] - devices['home'] = "/dev/mapper/cryptParabolaHome" + devices['home'] = "/dev/mapper/cryptAntergosHome" elif self.lvm: # No LUKS but using LVM devices['lvm'] = devices['root'] if self.lvm: - devices['root'] = "/dev/ParabolaVG/ParabolaRoot" - devices['swap'] = "/dev/ParabolaVG/ParabolaSwap" + devices['root'] = "/dev/AntergosVG/AntergosRoot" + devices['swap'] = "/dev/AntergosVG/AntergosSwap" if self.home: - devices['home'] = "/dev/ParabolaVG/ParabolaHome" + devices['home'] = "/dev/AntergosVG/AntergosHome" return devices @@ -518,7 +517,7 @@ devices = self.get_devices() mount_devices = {} - if self.GPT and self.bootloader == "grub": + if self.GPT and self.bootloader == "grub2": mount_devices['/boot/efi'] = devices['efi'] mount_devices['/boot'] = devices['boot'] @@ -546,7 +545,7 @@ fs_devices = {} - if self.GPT and self.bootloader == "grub": + if self.GPT and self.bootloader == "grub2": fs_devices[devices['efi']] = "vfat" if self.GPT and self.bootloader == "systemd-boot": @@ -578,7 +577,7 @@ def get_part_sizes(self, disk_size, start_part_sizes=1): part_sizes = {'disk': disk_size, 'boot': 256, 'efi': 0} - if self.GPT and self.bootloader == "grub": + if self.GPT and self.bootloader == "grub2": part_sizes['efi'] = 200 mem_total = check_output("grep MemTotal /proc/meminfo") @@ -626,7 +625,7 @@ def log_part_sizes(self, part_sizes): logging.debug("Total disk size: %dMiB", part_sizes['disk']) - if self.GPT and self.bootloader == "grub": + if self.GPT and self.bootloader == "grub2": logging.debug("EFI System Partition (ESP) size: %dMiB", part_sizes['efi']) logging.debug("Boot partition size: %dMiB", part_sizes['boot']) @@ -710,7 +709,7 @@ sgdisk_new(device, part_num, "BIOS_BOOT", gpt_bios_grub_part_size, "EF02") part_num += 1 - if self.bootloader == "grub": + if self.bootloader == "grub2": # Create EFI System Partition (ESP) # GPT GUID: C12A7328-F81F-11D2-BA4B-00A0C93EC93B sgdisk_new(device, part_num, "UEFI_SYSTEM", part_sizes['efi'], "EF00") @@ -718,22 +717,22 @@ # Create Boot partition if self.bootloader == "systemd-boot": - sgdisk_new(device, part_num, "PARABOLA_BOOT", part_sizes['boot'], "EF00") + sgdisk_new(device, part_num, "ANTERGOS_BOOT", part_sizes['boot'], "EF00") else: - sgdisk_new(device, part_num, "PARABOLA_BOOT", part_sizes['boot'], "8300") + sgdisk_new(device, part_num, "ANTERGOS_BOOT", part_sizes['boot'], "8300") part_num += 1 if self.lvm: # Create partition for lvm (will store root, swap and home (if desired) logical volumes) - sgdisk_new(device, part_num, "PARABOLA_LVM", part_sizes['lvm_pv'], "8E00") + sgdisk_new(device, part_num, "ANTERGOS_LVM", part_sizes['lvm_pv'], "8E00") part_num += 1 else: - sgdisk_new(device, part_num, "PARABOLA_ROOT", part_sizes['root'], "8300") + sgdisk_new(device, part_num, "ANTERGOS_ROOT", part_sizes['root'], "8300") part_num += 1 if self.home: - sgdisk_new(device, part_num, "PARABOLA_HOME", part_sizes['home'], "8302") + sgdisk_new(device, part_num, "ANTERGOS_HOME", part_sizes['home'], "8302") part_num += 1 - sgdisk_new(device, part_num, "PARABOLA_SWAP", 0, "8200") + sgdisk_new(device, part_num, "ANTERGOS_SWAP", 0, "8200") logging.debug(check_output("sgdisk --print {0}".format(device))) else: @@ -794,7 +793,7 @@ devices = self.get_devices() - if self.GPT and self.bootloader == "grub": + if self.GPT and self.bootloader == "grub2": logging.debug("EFI: %s", devices['efi']) logging.debug("Boot: %s", devices['boot']) @@ -806,9 +805,9 @@ logging.debug("Swap: %s", devices['swap']) if self.luks: - setup_luks(devices['luks_root'], "cryptParabola", self.luks_password, key_files[0]) + setup_luks(devices['luks_root'], "cryptAntergos", self.luks_password, key_files[0]) if self.home and not self.lvm: - setup_luks(devices['luks_home'], "cryptParabolaHome", self.luks_password, key_files[1]) + setup_luks(devices['luks_home'], "cryptAntergosHome", self.luks_password, key_files[1]) if self.lvm: logging.debug("Cnchi will setup LVM on device %s", devices['lvm']) @@ -824,7 +823,7 @@ raise InstallError(txt) try: - subprocess.check_call(["vgcreate", "-f", "-y", "ParabolaVG", devices['lvm']]) + subprocess.check_call(["vgcreate", "-f", "-y", "AntergosVG", devices['lvm']]) except subprocess.CalledProcessError as err: txt = "Error creating LVM volume group in device {0}. Command {1} failed: {2}".format( devices['lvm'], err.cmd, err.Output) @@ -835,11 +834,11 @@ # Fix issue 180 # Check space we have now for creating logical volumes - vg_info = check_output("vgdisplay -c ParabolaVG") + vg_info = check_output("vgdisplay -c AntergosVG") # Get column number 12: Size of volume group in kilobytes vg_size = int(vg_info.split(":")[11]) / 1024 if part_sizes['lvm_pv'] > vg_size: - logging.debug("Real ParabolaVG volume group size: %d MiB", vg_size) + logging.debug("Real AntergosVG volume group size: %d MiB", vg_size) logging.debug("Reajusting logical volume sizes") diff_size = part_sizes['lvm_pv'] - vg_size part_sizes = self.get_part_sizes(disk_size - diff_size, start_part_sizes) @@ -848,19 +847,19 @@ # Create LVM volumes try: size = str(int(part_sizes['root'])) - cmd = ["lvcreate", "--name", "ParabolaRoot", "--size", size, "ParabolaVG"] + cmd = ["lvcreate", "--name", "AntergosRoot", "--size", size, "AntergosVG"] subprocess.check_call(cmd) if not self.home: # Use the remainig space for our swap volume - cmd = ["lvcreate", "--name", "ParabolaSwap", "--extents", "100%FREE", "ParabolaVG"] + cmd = ["lvcreate", "--name", "AntergosSwap", "--extents", "100%FREE", "AntergosVG"] subprocess.check_call(cmd) else: size = str(int(part_sizes['swap'])) - cmd = ["lvcreate", "--name", "ParabolaSwap", "--size", size, "ParabolaVG"] + cmd = ["lvcreate", "--name", "AntergosSwap", "--size", size, "AntergosVG"] subprocess.check_call(cmd) # Use the remaining space for our home volume - cmd = ["lvcreate", "--name", "ParabolaHome", "--extents", "100%FREE", "ParabolaVG"] + cmd = ["lvcreate", "--name", "AntergosHome", "--extents", "100%FREE", "AntergosVG"] subprocess.check_call(cmd) except subprocess.CalledProcessError as err: txt = "Error creating LVM logical volume. Command {0} failed: {1}".format(err.cmd, err.output) @@ -879,10 +878,10 @@ labels = { 'efi': 'UEFI_SYSTEM', - 'boot': 'ParabolaBoot', - 'root': 'ParabolaRoot', - 'home': 'ParabolaHome', - 'swap': 'ParabolaSwap'} + 'boot': 'AntergosBoot', + 'root': 'AntergosRoot', + 'home': 'AntergosHome', + 'swap': 'AntergosSwap'} fs_devices = self.get_fs_devices() @@ -897,7 +896,7 @@ self.mkfs(devices['boot'], fs_devices[devices['boot']], mount_points['boot'], labels['boot']) # Note: Make sure the "boot" partition is defined before the "efi" one! - if self.GPT and self.bootloader == "grub": + if self.GPT and self.bootloader == "grub2": # Format EFI System Partition (ESP) with vfat (fat32) self.mkfs(devices['efi'], fs_devices[devices['efi']], mount_points['efi'], labels['efi'], "-F 32") @@ -942,6 +941,6 @@ luks_password="luks", use_lvm=True, use_home=True, - bootloader="grub", + bootloader="grub2", callback_queue=None) auto.run() diff -Nur Cnchi-0.12.0/cnchi/installation/bootloader.py Cnchi-0.12.0.orig/cnchi/installation/bootloader.py --- Cnchi-0.12.0/cnchi/installation/bootloader.py 2016-02-19 23:21:47.223671813 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/bootloader.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # bootloader.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -79,7 +78,7 @@ self.freeze_unfreeze_xfs() bootloader = self.settings.get('bootloader').lower() - if bootloader == "grub": + if bootloader == "grub2": self.install_grub() elif bootloader == "systemd-boot": logging.debug("Cnchi will install the Systemd-boot loader") @@ -90,11 +89,11 @@ self.prepare_grub_d() if os.path.exists('/sys/firmware/efi'): - logging.debug("Cnchi will install the Grub (efi) loader") - self.install_grub_efi() + logging.debug("Cnchi will install the Grub2 (efi) loader") + self.install_grub2_efi() else: - logging.debug("Cnchi will install the Grub (bios) loader") - self.install_grub_bios() + logging.debug("Cnchi will install the Grub2 (bios) loader") + self.install_grub2_bios() self.check_root_uuid_in_grub() @@ -116,7 +115,7 @@ boot_command = 'linux /vmlinuz-linux {0} {1} {2}\n'.format(ruuid_str, cmdline_linux, cmdline_linux_default) - pattern = re.compile("menuentry 'Parabola GNU/Linux-libre'[\s\S]*initramfs-linux.img\n}") + pattern = re.compile("menuentry 'Antergos Linux'[\s\S]*initramfs-linux.img\n}") cfg = os.path.join(self.dest_dir, "boot/grub/grub.cfg") with open(cfg) as grub_file: @@ -151,9 +150,9 @@ else: cmd_linux_default = 'quiet {0}'.format(use_splash) - self.set_grub_option("GRUB_THEME", "/boot/grub/themes/Parabola-Default/theme.txt") + self.set_grub_option("GRUB_THEME", "/boot/grub/themes/Antergos-Default/theme.txt") self.set_grub_option("GRUB_CMDLINE_LINUX_DEFAULT", cmd_linux_default) - self.set_grub_option("GRUB_DISTRIBUTOR", "Parabola") + self.set_grub_option("GRUB_DISTRIBUTOR", "Antergos") if self.settings.get('use_luks'): # Should fix issue #352 @@ -218,10 +217,10 @@ logging.error(general_error) def prepare_grub_d(self): - """ Copies 10_parabola script into /etc/grub.d/ """ + """ Copies 10_antergos script into /etc/grub.d/ """ grub_d_dir = os.path.join(self.dest_dir, "etc/grub.d") script_dir = os.path.join(self.settings.get("cnchi"), "scripts") - script = "10_parabola" + script = "10_antergos" os.makedirs(grub_d_dir, mode=0o755, exist_ok=True) @@ -237,10 +236,10 @@ else: logging.warning("Can't find script %s", script_path) - def install_grub_bios(self): - """ Install Grub bootloader in a BIOS system """ + def install_grub2_bios(self): + """ Install Grub2 bootloader in a BIOS system """ grub_location = self.settings.get('bootloader_device') - txt = _("Installing GRUB BIOS boot loader in {0}").format(grub_location) + txt = _("Installing GRUB(2) BIOS boot loader in {0}").format(grub_location) logging.info(txt) # /dev and others need to be mounted (binded). @@ -267,7 +266,7 @@ except Exception as general_error: logging.error('Command grub-install failed. Unknown Error: %s', general_error) - self.install_grub_locales() + self.install_grub2_locales() # Add -l option to os-prober's umount call so that it does not hang self.apply_osprober_patch() @@ -286,12 +285,12 @@ cfg = os.path.join(self.dest_dir, "boot/grub/grub.cfg") with open(cfg) as grub_cfg: - if "Parabola" in grub_cfg.read(): - txt = _("GRUB BIOS has been successfully installed.") + if "Antergos" in grub_cfg.read(): + txt = _("GRUB(2) BIOS has been successfully installed.") logging.info(txt) self.settings.set('bootloader_installation_successful', True) else: - txt = _("ERROR installing GRUB BIOS.") + txt = _("ERROR installing GRUB(2) BIOS.") logging.warning(txt) self.settings.set('bootloader_installation_successful', False) @@ -300,15 +299,15 @@ """ Generates a random string to be used as an identifier for the UEFI bootloader_id """ return ''.join(random.choice(chars) for x in range(size)) - def install_grub_efi(self): - """ Install Grub bootloader in a UEFI system """ + def install_grub2_efi(self): + """ Install Grub2 bootloader in a UEFI system """ uefi_arch = "x86_64" spec_uefi_arch = "x64" spec_uefi_arch_caps = "X64" - bootloader_id = 'parabola_grub' if not os.path.exists('/install/boot/efi/EFI/parabola_grub') else \ - 'parabola_grub_{0}'.format(self.random_generator()) + bootloader_id = 'antergos_grub' if not os.path.exists('/install/boot/efi/EFI/antergos_grub') else \ + 'antergos_grub_{0}'.format(self.random_generator()) - txt = _("Installing GRUB UEFI {0} boot loader").format(uefi_arch) + txt = _("Installing GRUB(2) UEFI {0} boot loader").format(uefi_arch) logging.info(txt) grub_install = [ @@ -330,21 +329,21 @@ except Exception as general_error: logging.error('Command grub-install failed. Unknown Error: %s', general_error) - self.install_grub_locales() + self.install_grub2_locales() # Copy grub into dirs known to be used as default by some OEMs if they do not exist yet. grub_defaults = [os.path.join(self.dest_dir, "boot/efi/EFI/BOOT", "BOOT{0}.efi".format(spec_uefi_arch_caps)), os.path.join(self.dest_dir, "boot/efi/EFI/Microsoft/Boot", 'bootmgfw.efi')] - grub_path = os.path.join(self.dest_dir, "boot/efi/EFI/parabola_grub", "grub{0}.efi".format(spec_uefi_arch)) + grub_path = os.path.join(self.dest_dir, "boot/efi/EFI/antergos_grub", "grub{0}.efi".format(spec_uefi_arch)) for grub_default in grub_defaults: path = grub_default.split()[0] if not os.path.exists(path): - msg = _("No OEM loader found in %s. Copying Grub into dir.") + msg = _("No OEM loader found in %s. Copying Grub(2) into dir.") logging.info(msg, path) os.makedirs(path, mode=0o755) - msg_failed = _("Copying Grub into OEM dir failed: %s") + msg_failed = _("Copying Grub(2) into OEM dir failed: %s") try: shutil.copy(grub_path, grub_default) except FileNotFoundError: @@ -386,10 +385,10 @@ logging.debug("Path '%s' doesn't exist, when it should", path) if exists: - logging.info("GRUB UEFI install completed successfully") + logging.info("GRUB(2) UEFI install completed successfully") self.settings.set('bootloader_installation_successful', True) else: - logging.warning("GRUB UEFI install may not have completed successfully.") + logging.warning("GRUB(2) UEFI install may not have completed successfully.") self.settings.set('bootloader_installation_successful', False) def apply_osprober_patch(self): @@ -404,9 +403,9 @@ else: logging.warning("Failed to patch 50mounted-tests, file not found.") - def install_grub_locales(self): - """ Install Grub locales """ - logging.debug("Installing Grub locales.") + def install_grub2_locales(self): + """ Install Grub2 locales """ + logging.debug("Installing Grub2 locales.") dest_locale_dir = os.path.join(self.dest_dir, "boot/grub/locale") os.makedirs(dest_locale_dir, mode=0o755, exist_ok=True) @@ -416,7 +415,7 @@ try: shutil.copy2(grub_mo, os.path.join(dest_locale_dir, "en.mo")) except FileNotFoundError: - logging.warning("Can't install GRUB locale.") + logging.warning("Can't install GRUB(2) locale.") except FileExistsError: # Ignore if already exists pass @@ -428,35 +427,35 @@ os.makedirs(menu_dir, mode=0o755, exist_ok=True) menu_path = os.path.join(menu_dir, "loader.conf") with open(menu_path, 'w') as menu_file: - menu_file.write("default parabola") + menu_file.write("default antergos") # Setup boot entries conf = {} if not self.settings.get('use_luks'): conf['default'] = [] - conf['default'].append("title\tParabola\n") + conf['default'].append("title\tAntergos\n") conf['default'].append("linux\t/vmlinuz-linux\n") conf['default'].append("initrd\t/initramfs-linux.img\n") conf['default'].append("options\troot=UUID={0} rw quiet\n\n".format(self.root_uuid)) conf['fallback'] = [] - conf['fallback'].append("title\tParabola (fallback)\n") + conf['fallback'].append("title\tAntergos (fallback)\n") conf['fallback'].append("linux\t/vmlinuz-linux\n") conf['fallback'].append("initrd\t/initramfs-linux-fallback.img\n") conf['fallback'].append("options\troot=UUID={0} rw quiet\n\n".format(self.root_uuid)) if self.settings.get('feature_lts'): conf['lts'] = [] - conf['lts'].append("title\tParabola LTS\n") - conf['lts'].append("linux\t/vmlinuz-linux-libre-lts\n") - conf['lts'].append("initrd\t/initramfs-linux-libre-lts.img\n") + conf['lts'].append("title\tAntergos LTS\n") + conf['lts'].append("linux\t/vmlinuz-linux-lts\n") + conf['lts'].append("initrd\t/initramfs-linux-lts.img\n") conf['lts'].append("options\troot=UUID={0} rw quiet\n\n".format(self.root_uuid)) conf['lts_fallback'] = [] - conf['lts_fallback'].append("title\tParabola LTS (fallback)\n\n") - conf['lts_fallback'].append("linux\t/vmlinuz-linux-libre-lts\n") - conf['lts_fallback'].append("initrd\t/initramfs-linux-libre-lts-fallback.img\n") + conf['lts_fallback'].append("title\tAntergos LTS (fallback)\n\n") + conf['lts_fallback'].append("linux\t/vmlinuz-linux-lts\n") + conf['lts_fallback'].append("initrd\t/initramfs-linux-lts-fallback.img\n") conf['lts_fallback'].append("options\troot=UUID={0} rw quiet\n\n".format(self.root_uuid)) else: luks_root_volume = self.settings.get('luks_root_volume') @@ -478,47 +477,47 @@ root_uuid_line = root_uuid_line.format(root_uuid, luks_root_volume, key, luks_root_volume_uuid) conf['default'] = [] - conf['default'].append("title\tParabola\n") + conf['default'].append("title\tAntergos\n") conf['default'].append("linux\t/vmlinuz-linux\n") conf['default'].append("options\tinitrd=/initramfs-linux.img {0}\n\n".format(root_uuid_line)) conf['fallback'] = [] - conf['fallback'].append("title\tParabola (fallback)\n") + conf['fallback'].append("title\tAntergos (fallback)\n") conf['fallback'].append("linux\t/vmlinuz-linux\n") conf['fallback'].append("options\tinitrd=/initramfs-linux-fallback.img {0}\n\n".format(root_uuid_line)) if self.settings.get('feature_lts'): conf['lts'] = [] - conf['lts'].append("title\tParabola LTS\n") - conf['lts'].append("linux\t/vmlinuz-linux-libre-lts\n") - conf['lts'].append("options\tinitrd=/initramfs-linux-libre-lts.img {0}\n\n".format(root_uuid_line)) + conf['lts'].append("title\tAntergos LTS\n") + conf['lts'].append("linux\t/vmlinuz-linux-lts\n") + conf['lts'].append("options\tinitrd=/initramfs-linux-lts.img {0}\n\n".format(root_uuid_line)) conf['lts_fallback'] = [] - conf['lts_fallback'].append("title\tParabola LTS (fallback)\n") - conf['lts_fallback'].append("linux\t/vmlinuz-linux-libre-lts\n") - conf['lts_fallback'].append("options\tinitrd=/initramfs-linux-libre-lts-fallback.img {0}\n\n".format(root_uuid_line)) + conf['lts_fallback'].append("title\tAntergos LTS (fallback)\n") + conf['lts_fallback'].append("linux\t/vmlinuz-linux-lts\n") + conf['lts_fallback'].append("options\tinitrd=/initramfs-linux-lts-fallback.img {0}\n\n".format(root_uuid_line)) # Write boot entries entries_dir = os.path.join(self.dest_dir, "boot/loader/entries") os.makedirs(entries_dir, mode=0o755, exist_ok=True) - entry_path = os.path.join(entries_dir, "parabola.conf") + entry_path = os.path.join(entries_dir, "antergos.conf") with open(entry_path, 'w') as entry_file: for line in conf['default']: entry_file.write(line) - entry_path = os.path.join(entries_dir, "parabola-fallback.conf") + entry_path = os.path.join(entries_dir, "antergos-fallback.conf") with open(entry_path, 'w') as entry_file: for line in conf['fallback']: entry_file.write(line) if self.settings.get('feature_lts'): - entry_path = os.path.join(entries_dir, "parabola-lts.conf") + entry_path = os.path.join(entries_dir, "antergos-lts.conf") with open(entry_path, 'w') as entry_file: for line in conf['lts']: entry_file.write(line) - entry_path = os.path.join(entries_dir, "parabola-lts-fallback.conf") + entry_path = os.path.join(entries_dir, "antergos-lts-fallback.conf") with open(entry_path, 'w') as entry_file: for line in conf['lts_fallback']: entry_file.write(line) @@ -543,7 +542,7 @@ self.settings.set('bootloader_installation_successful', False) def freeze_unfreeze_xfs(self): - """ Freeze and unfreeze xfs, as hack for grub installing """ + """ Freeze and unfreeze xfs, as hack for grub(2) installing """ if not os.path.exists("/usr/bin/xfs_freeze"): return diff -Nur Cnchi-0.12.0/cnchi/installation/glamp.py Cnchi-0.12.0.orig/cnchi/installation/glamp.py --- Cnchi-0.12.0/cnchi/installation/glamp.py 2016-02-19 23:35:10.418447127 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/glamp.py 1969-12-31 21:00:00.000000000 -0300 @@ -1,175 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# glamp.py -# -# Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola -# -# This file is part of Cnchi. -# -# Cnchi 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 3 of the License, or -# (at your option) any later version. -# -# Cnchi 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. -# -# The following additional terms are in effect as per Section 7 of the license: -# -# The preservation of all legal notices and author attributions in -# the material or in the Appropriate Legal Notices displayed -# by works containing it is required. -# -# You should have received a copy of the GNU General Public License -# along with Cnchi; If not, see . - - -""" -GLAMP stack is a group of open source software to get web servers up -and running. The acronym stands for GNU/Linux, Apache, MySQL, and PHP. -Since the server is already running Parabola, the GNU/Linux -part is taken care of. -""" - - -import os -import logging -import shutil - -try: - from installation import chroot -except ImportError: - import chroot - -DEST_DIR = '/install' - - -def chroot_run(cmd): - chroot.run(cmd, DEST_DIR) - - -def setup(): - try: - logging.debug("Doing Mariadb setup...") - mariadb_setup() - logging.debug("Mariadb setup done. Doing Apache setup...") - apache_setup() - logging.debug("Apache setup done. Doing PHP setup...") - php_setup() - logging.debug("PHP setup done.") - except (FileExistsError, OSError) as io_error: - logging.error(io_error) - - -def mariadb_setup(): - cmd = [ - "mysql_install_db", - "--user=mysql", - "--basedir=/usr", - "--datadir=/var/lib/mysql"] - chroot_run(cmd) - - cmd = ["systemctl", "enable", "mysqld"] - chroot_run(cmd) - - # TODO: Warn user to run mysql_secure_installation - - -def apache_setup(): - # Allow site virtualization - httpd_path = os.path.join(DEST_DIR, 'etc/httpd/conf/httpd.conf') - with open(httpd_path, 'a') as httpd_conf: - httpd_conf.write('IncludeOptional conf/sites-enabled/*.conf\n') - httpd_conf.write('IncludeOptional conf/mods-enabled/*.conf\n') - - # We create config directories - dirs = [ - "etc/httpd/conf/sites-available", - "etc/httpd/conf/sites-enabled", - "etc/httpd/conf/mods-enabled"] - - for path in dirs: - path = os.path.join(DEST_DIR, path) - os.makedirs(path, mode=0o755, exist_ok=True) - - # Copy a2ensite and a2dissite scripts - scripts = ["a2ensite", "a2dissite"] - for script in scripts: - try: - src = os.path.join("/usr/share/cnchi/scripts", script) - dst = os.path.join(DEST_DIR, 'usr/local/bin', script) - shutil.copy2(src, dst) - os.chmod(dst, 0o755) - except (FileExistsError, shutil.Error) as file_error: - logging.warning(file_error) - - # Create localhost.conf in /etc/httpd/conf/sites-available/ - localhost_path = os.path.join(DEST_DIR, "etc/httpd/conf/sites-available/localhost.conf") - with open(localhost_path, 'a') as localhost_conf: - localhost_conf.write('\n# phpmyadmin alias and directory setup\n') - localhost_conf.write('Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"\n') - localhost_conf.write('\n') - localhost_conf.write(' DirectoryIndex index.html index.php\n') - localhost_conf.write(' AllowOverride All\n') - localhost_conf.write(' Options FollowSymlinks\n') - localhost_conf.write(' Require all granted\n') - localhost_conf.write('\n') - - # We activate the virtual localhost site - chroot_run(["a2ensite", "localhost"]) - - cmd = ["systemctl", "enable", "httpd"] - chroot_run(cmd) - - -def php_setup(): - # Comment mpm_event_module - httpd_path = os.path.join(DEST_DIR, 'etc/httpd/conf/httpd.conf') - with open(httpd_path, 'r') as load_module: - lines = load_module.readlines() - with open(httpd_path, 'w') as load_module: - for line in lines: - if "LoadModule mpm_event_module" in line: - line = '# LoadModule mpm_event_module modules/mod_mpm_event.so\n' - load_module.write(line) - - # Add mpm_prefork_module and php5_module - php_path = os.path.join(DEST_DIR, 'etc/httpd/conf/mods-enabled/php.conf') - with open(php_path, 'w') as php_conf: - php_conf.write("LoadModule mpm_prefork_module /etc/httpd/modules/mod_mpm_prefork.so\n") - php_conf.write("LoadModule php5_module /etc/httpd/modules/libphp5.so\n") - php_conf.write("Include conf/extra/php5_module.conf\n") - - # PHP extensions that will be activated - so_extensions = ["mysql", "mcrypt", "mssql", "mysqli", "openssl", "iconv", "imap", "zip", "bz2"] - - php_ini_path = os.path.join(DEST_DIR, 'etc/php/php.ini') - with open(php_ini_path, 'r') as php_ini: - lines = php_ini.readlines() - - with open(php_ini_path, 'w') as php_ini: - for line in lines: - # Uncomment extensions - for so_ext in so_extensions: - ext = ";extension={0}.so".format(so_ext) - if line.startswith(ext): - line = line[1:] - # Add PhpMyAdmin system path (/etc/webapps/ and /usr/share/webapps/) - # to make sure PHP can access and read files under those directories - if "open_basedir =" in line: - line = 'open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/\n' - php_ini.write(line) - - # Create a symlink (sites-enabled/localhost.conf) to sites-available/localhost.conf - # Not necessary, a2ensite does this for us - # source = os.path.join(DEST_DIR, 'etc/httpd/conf/sites-available/localhost.conf') - # link_name = os.path.join(DEST_DIR, 'etc/httpd/conf/sites-enabled/localhost.conf') - # os.symlink(source, link_name) - - -if __name__ == '__main__': - setup() diff -Nur Cnchi-0.12.0/cnchi/installation/glemp.py Cnchi-0.12.0.orig/cnchi/installation/glemp.py --- Cnchi-0.12.0/cnchi/installation/glemp.py 2016-02-19 23:34:42.652611620 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/glemp.py 1969-12-31 21:00:00.000000000 -0300 @@ -1,142 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# glemp.py -# -# Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola -# -# This file is part of Cnchi. -# -# Cnchi 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 3 of the License, or -# (at your option) any later version. -# -# Cnchi 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. -# -# The following additional terms are in effect as per Section 7 of the license: -# -# The preservation of all legal notices and author attributions in -# the material or in the Appropriate Legal Notices displayed -# by works containing it is required. -# -# You should have received a copy of the GNU General Public License -# along with Cnchi; If not, see . - - -""" -GLEMP stack is a group of open source software to get web servers up -and running. The acronym stands for Linux, nginx (pronounced Engine x), -MySQL, and PHP. Since the server is already running Antergos, the linux -part is taken care of. -""" - - -import os -import logging - -try: - from installation import chroot -except ImportError: - import chroot - -DEST_DIR = '/install' - - -def chroot_run(cmd): - chroot.run(cmd, DEST_DIR) - - -def setup(): - try: - logging.debug("Doing Mariadb setup...") - mariadb_setup() - logging.debug("Mariadb setup done. Doing Nginx setup...") - nginx_setup() - logging.debug("Nginx setup done. Doing PHP-fpm setup...") - php_setup() - logging.debug("PHP-fpm setup done.") - except (FileExistsError, OSError) as io_error: - logging.error(io_error) - - -def mariadb_setup(): - cmd = [ - "mysql_install_db", - "--user=mysql", - "--basedir=/usr", - "--datadir=/var/lib/mysql"] - chroot_run(cmd) - - cmd = ["systemctl", "enable", "mysqld"] - chroot_run(cmd) - - # TODO: Warn user to run mysql_secure_installation - - -def nginx_setup(): - cmd = ["systemctl", "enable", "nginx"] - chroot_run(cmd) - - # We need to tell nginx to run php using php-fpm. - path = os.path.join(DEST_DIR, "etc/nginx/nginx.conf") - with open(path, 'r') as nginx_conf: - lines = nginx_conf.readlines() - - sections = {"http": False, "server": False, "location": False} - with open(path, 'w') as nginx_conf: - for line in lines: - if "http {" in line: - sections["http"] = True - - if sections["http"] and "server {" in line: - sections["server"] = True - - if sections["http"] and sections["server"] and "#location ~ \.php$ {" in line: - nginx_conf.write(" location ~ \.php$ {\n") - nginx_conf.write(" fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;\n") - nginx_conf.write(" fastcgi_index index.php;\n") - nginx_conf.write(" root /usr/share/nginx/html;\n") - nginx_conf.write(" include fastcgi.conf;\n") - nginx_conf.write(" }\n\n") - sections = {"http": False, "server": False, "location": False} - - nginx_conf.write(line) - - -def php_setup(): - # Setup /etc/php/php.ini - php_ini_path = os.path.join(DEST_DIR, 'etc/php/php.ini') - with open(php_ini_path, 'r') as php_ini: - lines = php_ini.readlines() - - # PHP extensions that will be activated - so_extensions = ["mysql", "mcrypt", "mssql", "mysqli", "openssl", "iconv", "imap", "zip", "bz2"] - - php_ini_path = os.path.join(DEST_DIR, 'etc/php/php.ini') - with open(php_ini_path, 'r') as php_ini: - lines = php_ini.readlines() - - with open(php_ini_path, 'w') as php_ini: - for line in lines: - # Uncomment extensions - for so_ext in so_extensions: - ext = ";extension={0}.so".format(so_ext) - if line.startswith(ext): - line = line[1:] - # Add PhpMyAdmin system path (/etc/webapps/ and /usr/share/webapps/) - # to make sure PHP can access and read files under those directories - if "open_basedir =" in line: - line = 'open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/\n' - php_ini.write(line) - - cmd = ["systemctl", "enable", "php-fpm"] - chroot_run(cmd) - - -if __name__ == '__main__': - setup() diff -Nur Cnchi-0.12.0/cnchi/installation/install.py Cnchi-0.12.0.orig/cnchi/installation/install.py --- Cnchi-0.12.0/cnchi/installation/install.py 2016-02-19 23:30:21.520796142 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/install.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # installation.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -399,7 +398,7 @@ try: cmd = ["pacman-key", "--init", "--gpgdir", dest_path] subprocess.check_call(cmd) - cmd = ["pacman-key", "--populate", "--gpgdir", dest_path, "archlinux", "parabola"] + cmd = ["pacman-key", "--populate", "--gpgdir", dest_path, "archlinux", "antergos"] subprocess.check_call(cmd) except subprocess.CalledProcessError as process_error: txt = "Error regenerating gnupg files with pacman-key, command {0} failed: {1}".format( @@ -514,13 +513,13 @@ os.chmod(crypttab_path, 0o666) with open(crypttab_path, 'a') as crypttab_file: - line = "cryptParabolaHome /dev/disk/by-uuid/{0} {1} luks\n".format(uuid, home_keyfile) + line = "cryptAntergosHome /dev/disk/by-uuid/{0} {1} luks\n".format(uuid, home_keyfile) crypttab_file.write(line) logging.debug("Added %s to crypttab", line) os.chmod(crypttab_path, 0o600) # Add line to fstab - txt = "/dev/mapper/cryptParabolaHome {0} {1} defaults 0 0".format(mount_point, myfmt) + txt = "/dev/mapper/cryptAntergosHome {0} {1} defaults 0 0".format(mount_point, myfmt) all_lines.append(txt) logging.debug("Added %s to fstab", txt) continue @@ -668,7 +667,7 @@ @staticmethod def update_pacman_conf(): - """ Add multilib repos """ + """ Add Antergos and multilib repos """ path = os.path.join(DEST_DIR, "etc/pacman.conf") if os.path.exists(path): paclines = [] @@ -681,6 +680,10 @@ paclines[i] = "[multilib]\n" paclines[i+1] = "Include = /etc/pacman.d/mirrorlist\n" break + paclines.append("\n") + paclines.append("[antergos]\n") + paclines.append("SigLevel = PackageRequired\n") + paclines.append("Include = /etc/pacman.d/antergos-mirrorlist\n") with open(path, "w") as f: f.write("".join(paclines)) else: @@ -759,22 +762,22 @@ firewall.run(["enable"]) services.append('ufw') - if self.settings.get("feature_glamp") and not self.settings.get("feature_glemp"): + if self.settings.get("feature_lamp") and not self.settings.get("feature_lemp"): try: - from installation import glamp - logging.debug("Configuring GLAMP...") - glamp.setup() + from installation import lamp + logging.debug("Configuring LAMP...") + lamp.setup() services.extend(["httpd", "mysqld"]) except ImportError as import_error: - logging.warning("Unable to import GLAMP module: %s", str(import_error)) - elif self.settings.get("feature_glemp"): + logging.warning("Unable to import LAMP module: %s", str(import_error)) + elif self.settings.get("feature_lemp"): try: - from installation import glemp - logging.debug("Configuring GLEMP...") - glemp.setup() + from installation import lemp + logging.debug("Configuring LEMP...") + lemp.setup() services.extend(["nginx", "mysqld", "php-fpm"]) except ImportError as import_error: - logging.warning("Unable to import GLEMP module: %s", str(import_error)) + logging.warning("Unable to import LEMP module: %s", str(import_error)) self.enable_services(services) @@ -889,7 +892,7 @@ audio_system = "pulse" with open(fluid_path, "w") as fluid_conf: - fluid_conf.write('# Created by Cnchi, Parabola installer\n') + fluid_conf.write('# Created by Cnchi, Antergos installer\n') fluid_conf.write('SYNTHOPTS="-is -a {0} -m alsa_seq -r 48000"\n\n'.format(audio_system)) def configure_system(self): @@ -943,6 +946,7 @@ except FileExistsError: logging.warning("File %s already exists.", mirrorlist_dst_path) + # Add Antergos repo to /etc/pacman.conf self.update_pacman_conf() logging.debug("pacman.conf has been created successfully") diff -Nur Cnchi-0.12.0/cnchi/installation/lamp.py Cnchi-0.12.0.orig/cnchi/installation/lamp.py --- Cnchi-0.12.0/cnchi/installation/lamp.py 1969-12-31 21:00:00.000000000 -0300 +++ Cnchi-0.12.0.orig/cnchi/installation/lamp.py 2016-01-29 08:56:41.000000000 -0200 @@ -0,0 +1,174 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# lamp.py +# +# Copyright © 2013-2015 Antergos +# +# This file is part of Cnchi. +# +# Cnchi 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 3 of the License, or +# (at your option) any later version. +# +# Cnchi 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. +# +# The following additional terms are in effect as per Section 7 of the license: +# +# The preservation of all legal notices and author attributions in +# the material or in the Appropriate Legal Notices displayed +# by works containing it is required. +# +# You should have received a copy of the GNU General Public License +# along with Cnchi; If not, see . + + +""" +LAMP stack is a group of open source software to get web servers up +and running. The acronym stands for Linux, Apache, MySQL, and PHP. +Since the server is already running Antergos, the linux +part is taken care of. +""" + + +import os +import logging +import shutil + +try: + from installation import chroot +except ImportError: + import chroot + +DEST_DIR = '/install' + + +def chroot_run(cmd): + chroot.run(cmd, DEST_DIR) + + +def setup(): + try: + logging.debug("Doing Mariadb setup...") + mariadb_setup() + logging.debug("Mariadb setup done. Doing Apache setup...") + apache_setup() + logging.debug("Apache setup done. Doing PHP setup...") + php_setup() + logging.debug("PHP setup done.") + except (FileExistsError, OSError) as io_error: + logging.error(io_error) + + +def mariadb_setup(): + cmd = [ + "mysql_install_db", + "--user=mysql", + "--basedir=/usr", + "--datadir=/var/lib/mysql"] + chroot_run(cmd) + + cmd = ["systemctl", "enable", "mysqld"] + chroot_run(cmd) + + # TODO: Warn user to run mysql_secure_installation + + +def apache_setup(): + # Allow site virtualization + httpd_path = os.path.join(DEST_DIR, 'etc/httpd/conf/httpd.conf') + with open(httpd_path, 'a') as httpd_conf: + httpd_conf.write('IncludeOptional conf/sites-enabled/*.conf\n') + httpd_conf.write('IncludeOptional conf/mods-enabled/*.conf\n') + + # We create config directories + dirs = [ + "etc/httpd/conf/sites-available", + "etc/httpd/conf/sites-enabled", + "etc/httpd/conf/mods-enabled"] + + for path in dirs: + path = os.path.join(DEST_DIR, path) + os.makedirs(path, mode=0o755, exist_ok=True) + + # Copy a2ensite and a2dissite scripts + scripts = ["a2ensite", "a2dissite"] + for script in scripts: + try: + src = os.path.join("/usr/share/cnchi/scripts", script) + dst = os.path.join(DEST_DIR, 'usr/local/bin', script) + shutil.copy2(src, dst) + os.chmod(dst, 0o755) + except (FileExistsError, shutil.Error) as file_error: + logging.warning(file_error) + + # Create localhost.conf in /etc/httpd/conf/sites-available/ + localhost_path = os.path.join(DEST_DIR, "etc/httpd/conf/sites-available/localhost.conf") + with open(localhost_path, 'a') as localhost_conf: + localhost_conf.write('\n# phpmyadmin alias and directory setup\n') + localhost_conf.write('Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"\n') + localhost_conf.write('\n') + localhost_conf.write(' DirectoryIndex index.html index.php\n') + localhost_conf.write(' AllowOverride All\n') + localhost_conf.write(' Options FollowSymlinks\n') + localhost_conf.write(' Require all granted\n') + localhost_conf.write('\n') + + # We activate the virtual localhost site + chroot_run(["a2ensite", "localhost"]) + + cmd = ["systemctl", "enable", "httpd"] + chroot_run(cmd) + + +def php_setup(): + # Comment mpm_event_module + httpd_path = os.path.join(DEST_DIR, 'etc/httpd/conf/httpd.conf') + with open(httpd_path, 'r') as load_module: + lines = load_module.readlines() + with open(httpd_path, 'w') as load_module: + for line in lines: + if "LoadModule mpm_event_module" in line: + line = '# LoadModule mpm_event_module modules/mod_mpm_event.so\n' + load_module.write(line) + + # Add mpm_prefork_module and php5_module + php_path = os.path.join(DEST_DIR, 'etc/httpd/conf/mods-enabled/php.conf') + with open(php_path, 'w') as php_conf: + php_conf.write("LoadModule mpm_prefork_module /etc/httpd/modules/mod_mpm_prefork.so\n") + php_conf.write("LoadModule php5_module /etc/httpd/modules/libphp5.so\n") + php_conf.write("Include conf/extra/php5_module.conf\n") + + # PHP extensions that will be activated + so_extensions = ["mysql", "mcrypt", "mssql", "mysqli", "openssl", "iconv", "imap", "zip", "bz2"] + + php_ini_path = os.path.join(DEST_DIR, 'etc/php/php.ini') + with open(php_ini_path, 'r') as php_ini: + lines = php_ini.readlines() + + with open(php_ini_path, 'w') as php_ini: + for line in lines: + # Uncomment extensions + for so_ext in so_extensions: + ext = ";extension={0}.so".format(so_ext) + if line.startswith(ext): + line = line[1:] + # Add PhpMyAdmin system path (/etc/webapps/ and /usr/share/webapps/) + # to make sure PHP can access and read files under those directories + if "open_basedir =" in line: + line = 'open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/\n' + php_ini.write(line) + + # Create a symlink (sites-enabled/localhost.conf) to sites-available/localhost.conf + # Not necessary, a2ensite does this for us + # source = os.path.join(DEST_DIR, 'etc/httpd/conf/sites-available/localhost.conf') + # link_name = os.path.join(DEST_DIR, 'etc/httpd/conf/sites-enabled/localhost.conf') + # os.symlink(source, link_name) + + +if __name__ == '__main__': + setup() diff -Nur Cnchi-0.12.0/cnchi/installation/lemp.py Cnchi-0.12.0.orig/cnchi/installation/lemp.py --- Cnchi-0.12.0/cnchi/installation/lemp.py 1969-12-31 21:00:00.000000000 -0300 +++ Cnchi-0.12.0.orig/cnchi/installation/lemp.py 2016-01-29 08:56:41.000000000 -0200 @@ -0,0 +1,141 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# lemp.py +# +# Copyright © 2013-2015 Antergos +# +# This file is part of Cnchi. +# +# Cnchi 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 3 of the License, or +# (at your option) any later version. +# +# Cnchi 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. +# +# The following additional terms are in effect as per Section 7 of the license: +# +# The preservation of all legal notices and author attributions in +# the material or in the Appropriate Legal Notices displayed +# by works containing it is required. +# +# You should have received a copy of the GNU General Public License +# along with Cnchi; If not, see . + + +""" +LEMP stack is a group of open source software to get web servers up +and running. The acronym stands for Linux, nginx (pronounced Engine x), +MySQL, and PHP. Since the server is already running Antergos, the linux +part is taken care of. +""" + + +import os +import logging + +try: + from installation import chroot +except ImportError: + import chroot + +DEST_DIR = '/install' + + +def chroot_run(cmd): + chroot.run(cmd, DEST_DIR) + + +def setup(): + try: + logging.debug("Doing Mariadb setup...") + mariadb_setup() + logging.debug("Mariadb setup done. Doing Nginx setup...") + nginx_setup() + logging.debug("Nginx setup done. Doing PHP-fpm setup...") + php_setup() + logging.debug("PHP-fpm setup done.") + except (FileExistsError, OSError) as io_error: + logging.error(io_error) + + +def mariadb_setup(): + cmd = [ + "mysql_install_db", + "--user=mysql", + "--basedir=/usr", + "--datadir=/var/lib/mysql"] + chroot_run(cmd) + + cmd = ["systemctl", "enable", "mysqld"] + chroot_run(cmd) + + # TODO: Warn user to run mysql_secure_installation + + +def nginx_setup(): + cmd = ["systemctl", "enable", "nginx"] + chroot_run(cmd) + + # We need to tell nginx to run php using php-fpm. + path = os.path.join(DEST_DIR, "etc/nginx/nginx.conf") + with open(path, 'r') as nginx_conf: + lines = nginx_conf.readlines() + + sections = {"http": False, "server": False, "location": False} + with open(path, 'w') as nginx_conf: + for line in lines: + if "http {" in line: + sections["http"] = True + + if sections["http"] and "server {" in line: + sections["server"] = True + + if sections["http"] and sections["server"] and "#location ~ \.php$ {" in line: + nginx_conf.write(" location ~ \.php$ {\n") + nginx_conf.write(" fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;\n") + nginx_conf.write(" fastcgi_index index.php;\n") + nginx_conf.write(" root /usr/share/nginx/html;\n") + nginx_conf.write(" include fastcgi.conf;\n") + nginx_conf.write(" }\n\n") + sections = {"http": False, "server": False, "location": False} + + nginx_conf.write(line) + + +def php_setup(): + # Setup /etc/php/php.ini + php_ini_path = os.path.join(DEST_DIR, 'etc/php/php.ini') + with open(php_ini_path, 'r') as php_ini: + lines = php_ini.readlines() + + # PHP extensions that will be activated + so_extensions = ["mysql", "mcrypt", "mssql", "mysqli", "openssl", "iconv", "imap", "zip", "bz2"] + + php_ini_path = os.path.join(DEST_DIR, 'etc/php/php.ini') + with open(php_ini_path, 'r') as php_ini: + lines = php_ini.readlines() + + with open(php_ini_path, 'w') as php_ini: + for line in lines: + # Uncomment extensions + for so_ext in so_extensions: + ext = ";extension={0}.so".format(so_ext) + if line.startswith(ext): + line = line[1:] + # Add PhpMyAdmin system path (/etc/webapps/ and /usr/share/webapps/) + # to make sure PHP can access and read files under those directories + if "open_basedir =" in line: + line = 'open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/\n' + php_ini.write(line) + + cmd = ["systemctl", "enable", "php-fpm"] + chroot_run(cmd) + + +if __name__ == '__main__': + setup() diff -Nur Cnchi-0.12.0/cnchi/installation/mkinitcpio.py Cnchi-0.12.0.orig/cnchi/installation/mkinitcpio.py --- Cnchi-0.12.0/cnchi/installation/mkinitcpio.py 2016-02-19 23:36:56.995310355 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/mkinitcpio.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # mkinitcpio.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -97,7 +96,7 @@ cmd = ['sh', '-c', 'LANG={0} /usr/bin/mkinitcpio -p linux'.format(locale)] chroot.run(cmd, dest_dir) if settings.get('feature_lts'): - cmd = ['sh', '-c', 'LANG={0} /usr/bin/mkinitcpio -p linux-libre-lts'.format(locale)] + cmd = ['sh', '-c', 'LANG={0} /usr/bin/mkinitcpio -p linux-lts'.format(locale)] chroot.run(cmd, dest_dir) # chroot.umount_special_dirs(dest_dir) diff -Nur Cnchi-0.12.0/cnchi/installation/select_packages.py Cnchi-0.12.0.orig/cnchi/installation/select_packages.py --- Cnchi-0.12.0/cnchi/installation/select_packages.py 2016-02-20 00:14:32.357662164 -0200 +++ Cnchi-0.12.0.orig/cnchi/installation/select_packages.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # select_packages.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -163,7 +162,7 @@ self.queue_event('info', _("Getting package list...")) try: - url = ''.format(info.CNCHI_VERSION.rsplit('.')[-2]) + url = 'http://install.antergos.com/packages-{0}.xml'.format(info.CNCHI_VERSION.rsplit('.')[-2]) logging.debug("Getting url %s...", url) req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) packages_xml = urllib.request.urlopen(req, timeout=10) @@ -236,7 +235,7 @@ try: # Detect which hardware drivers are needed hardware_install = hardware.HardwareInstall( - #use_proprietary_graphic_drivers=self.settings.get('feature_graphic_drivers')) + use_proprietary_graphic_drivers=self.settings.get('feature_graphic_drivers')) driver_names = hardware_install.get_found_driver_names() if len(driver_names) > 0: logging.debug("Hardware module detected these drivers: %s", driver_names) @@ -324,8 +323,8 @@ for xml_feature in xml_features.iter('feature'): feature = xml_feature.attrib.get("name") - # If GLEMP is selected, do not install glamp even if it's selected - if feature == "glamp" and self.settings.get("feature_glemp"): + # If LEMP is selected, do not install lamp even if it's selected + if feature == "lamp" and self.settings.get("feature_lemp"): continue # Add packages from each feature @@ -369,9 +368,9 @@ pkg = "libreoffice-fresh-{0}".format(lang_code) self.packages.append(pkg) - # Add iceweasel language package - if self.settings.get('feature_iceweasel'): - # Iceweasel is available in these languages + # Add firefox language package + if self.settings.get('feature_firefox'): + # Firefox is available in these languages lang_codes = [ 'ach', 'af', 'an', 'ar', 'as', 'ast', 'az', 'be', 'bg', 'bn-bd', 'bn-in', 'br', 'bs', 'ca', 'cs', 'cy', 'da', 'de', 'dsb', 'el', @@ -388,5 +387,5 @@ lang_code = self.settings.get('language_code') lang_code = lang_code.replace('_', '-') if lang_code in lang_codes: - pkg = "iceweasel-i18n-{0}".format(lang_code) + pkg = "firefox-i18n-{0}".format(lang_code) self.packages.append(pkg) diff -Nur Cnchi-0.12.0/cnchi/language.py Cnchi-0.12.0.orig/cnchi/language.py --- Cnchi-0.12.0/cnchi/language.py 2016-02-19 21:46:21.342287789 -0200 +++ Cnchi-0.12.0.orig/cnchi/language.py 2016-01-29 08:56:41.000000000 -0200 @@ -88,7 +88,7 @@ "It does not yet properly handle RAID, btrfs subvolumes, or other advanced " "setups. Please proceed with caution as data loss is possible!\n\n" "If you find any bugs, please report them at {0}") - txt = txt.format("labs.parabola.nu") + txt = txt.format("bugs.antergos.com") txt_markup = "{0}\n\n{1}".format(txt_bold, txt) label = self.ui.get_object("welcome_label") label.set_markup(txt_markup) @@ -167,7 +167,7 @@ self.forward_button.set_sensitive(True) self.show_all() - # Launch rank mirrors process to optimize Parabola mirrorlists + # Launch rank mirrors process to optimize Arch and Antergos mirrorlists if not self.testing and not self.disable_rank_mirrors and not self.rank_mirrors_launched: proc = AutoRankmirrorsProcess(self.settings) proc.daemon = True diff -Nur Cnchi-0.12.0/cnchi/logging_utils.py Cnchi-0.12.0.orig/cnchi/logging_utils.py --- Cnchi-0.12.0/cnchi/logging_utils.py 2016-02-19 21:50:05.455558690 -0200 +++ Cnchi-0.12.0.orig/cnchi/logging_utils.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # logging_utils.py # # Copyright © 2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -96,18 +95,18 @@ BUGSNAG_ERROR = "Cannot find /etc/raven.conf file" return bugsnag_api -# def get_url_for_id_request(self): -# build_server = None -# if self.api_key: -# build_srv = ['http://build', 'parabola', 'nu'] -# build_srv_query = ['/hook', 'cnchi='] -# build_server = '.'.join(build_srv) + '?'.join(build_srv_query) + self.api_key -# return build_server + def get_url_for_id_request(self): + build_server = None + if self.api_key: + build_srv = ['http://build', 'antergos', 'com'] + build_srv_query = ['/hook', 'cnchi='] + build_server = '.'.join(build_srv) + '?'.join(build_srv_query) + self.api_key + return build_server def bugsnag_before_notify_callback(self, notification=None): if notification is not None: if self.after_location_screen and not self.have_install_id: self.get_and_save_install_id() - notification.user = {"id": self.id, "name": "Parabola User", "install_id": self.install} - return notification + notification.user = {"id": self.id, "name": "Antergos User", "install_id": self.install} + return notification \ No newline at end of file diff -Nur Cnchi-0.12.0/cnchi/main_window.py Cnchi-0.12.0.orig/cnchi/main_window.py --- Cnchi-0.12.0/cnchi/main_window.py 2016-02-19 21:53:41.061759531 -0200 +++ Cnchi-0.12.0.orig/cnchi/main_window.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # main_window.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -125,7 +124,7 @@ self.header = self.header_ui.get_object("header") self.logo = self.header_ui.get_object("logo") - path = os.path.join(data_dir, "images", "parabola", "parabola-logo-mini2.png") + path = os.path.join(data_dir, "images", "antergos", "antergos-logo-mini2.png") self.logo.set_from_file(path) # To honor our css @@ -194,7 +193,7 @@ self.pages = dict() self.pages["welcome"] = welcome.Welcome(self.params) - if os.path.exists('/home/root/.config/openbox'): + if os.path.exists('/home/antergos/.config/openbox'): # In minimal iso, load language screen now self.pages["language"] = language.Language(self.params) @@ -211,19 +210,19 @@ title = "Cnchi {0}".format(info.CNCHI_VERSION) self.set_title(title) self.header.set_title(title) - self.header.set_subtitle(_("Parabola Installer")) + self.header.set_subtitle(_("Antergos Installer")) self.header.set_show_close_button(True) self.set_geometry() # Set window icon - icon_path = os.path.join(data_dir, "images", "parabola", "parabola-icon.png") + icon_path = os.path.join(data_dir, "images", "antergos", "antergos-icon.png") self.set_icon_from_file(icon_path) # Set the first page to show # If minimal iso is detected, skip the welcome page. - if os.path.exists('/home/root/.config/openbox'): + if os.path.exists('/home/antergos/.config/openbox'): self.current_page = self.pages["language"] self.settings.set('timezone_start', True) else: @@ -258,14 +257,14 @@ self.progressbar_step = 0 # Do not hide progress bar for minimal iso as it would break the widget alignment on language page. - if not os.path.exists('/home/root/.config/openbox'): + if not os.path.exists('/home/antergos/.config/openbox'): # Hide progress bar self.progressbar.hide() misc.gtk_refresh() def load_pages(self): - if not os.path.exists('/home/root/.config/openbox'): + if not os.path.exists('/home/antergos/.config/openbox'): self.pages["language"] = language.Language(self.params) self.pages["check"] = check.Check(self.params) self.pages["location"] = location.Location(self.params) @@ -293,7 +292,7 @@ self.pages["slides"] = slides.Slides(self.params) diff = 2 - if os.path.exists('/home/root/.config/openbox'): + if os.path.exists('/home/antergos/.config/openbox'): # In minimal (openbox) we don't have a welcome screen diff = 3 diff -Nur Cnchi-0.12.0/cnchi/misc/keyboard_widget.py Cnchi-0.12.0.orig/cnchi/misc/keyboard_widget.py --- Cnchi-0.12.0/cnchi/misc/keyboard_widget.py 2016-02-20 00:23:24.174938773 -0200 +++ Cnchi-0.12.0.orig/cnchi/misc/keyboard_widget.py 2016-01-29 08:56:41.000000000 -0200 @@ -5,7 +5,6 @@ # # Copyright 2013 Manjaro (QT version) # Copyright © 2013-2015 Antergos (GTK version) -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -89,7 +88,7 @@ self.layout = "us" self.variant = None - self.font = "Droid Sans" + self.font = "Helvetica" self.space = 6 @@ -103,7 +102,7 @@ # broken: ad (Andorra), lk (Sri Lanka), brai (Braille) # ?!?: us:chr - self.font = "Droid Sans" + self.font = "Helvetica" # Load fonts from ttf-aboriginal-sans package diff -Nur Cnchi-0.12.0/cnchi/parted3/fs_module.py Cnchi-0.12.0.orig/cnchi/parted3/fs_module.py --- Cnchi-0.12.0/cnchi/parted3/fs_module.py 2016-02-20 00:48:07.592890467 -0200 +++ Cnchi-0.12.0.orig/cnchi/parted3/fs_module.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # fs_module.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -307,7 +306,7 @@ def resize_fat(part, new_size_in_mb): """ Resize a fat partition """ # https://bbs.archlinux.org/viewtopic.php?id=131728 - # the only GNU/Linux tool that was capable of resizing fat32, isn't capable of it anymore? + # the only Linux tool that was capable of resizing fat32, isn't capable of it anymore? return False diff -Nur Cnchi-0.12.0/cnchi/rank_mirrors.py Cnchi-0.12.0.orig/cnchi/rank_mirrors.py --- Cnchi-0.12.0/cnchi/rank_mirrors.py 2016-02-19 22:00:23.107190678 -0200 +++ Cnchi-0.12.0.orig/cnchi/rank_mirrors.py 2016-01-29 08:56:41.000000000 -0200 @@ -5,7 +5,6 @@ # # Copyright © 2013-2015 Antergos # Copyright © 2012, 2013 Xyne -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -56,9 +55,10 @@ super().__init__() self.rankmirrors_pid = None self.json_obj = None - self.parabola_mirrorlist = "/etc/pacman.d/mirrorlist" - self.parabola_mirror_status = "https://www.parabola.nu/mirrors/status/json/" - self.parabola_mirrorlist_ranked = [] + self.antergos_mirrorlist = "/etc/pacman.d/antergos-mirrorlist" + self.arch_mirrorlist = "/etc/pacman.d/mirrorlist" + self.arch_mirror_status = "http://www.archlinux.org/mirrors/status/json/" + self.arch_mirrorlist_ranked = [] self.settings = settings @staticmethod @@ -74,12 +74,29 @@ except subprocess.CalledProcessError as why: logging.warning("Can't synchronize cached writes to persistent storage: %s", why) + def update_mirrorlist(self): + """ Make sure we have the latest antergos-mirrorlist files """ + with misc.raised_privileges(): + try: + cmd = ['pacman', '-Syy', '--noconfirm', '--noprogressbar', '--quiet', 'antergos-mirrorlist'] + with open(os.devnull, 'w') as fnull: + subprocess.call(cmd, stdout=fnull, stderr=subprocess.STDOUT) + # Use the new downloaded mirrorlist (.pacnew) files (if any) + pacnew_path = self.antergos_mirrorlist + ".pacnew" + if os.path.exists(pacnew_path): + shutil.copy(pacnew_path, self.antergos_mirrorlist) + except subprocess.CalledProcessError as why: + logging.debug('Update of antergos-mirrorlist package failed with error: %s', why) + except OSError as why: + logging.debug('Error copying new mirrorlist files: %s', why) + self.sync() + def get_mirror_stats(self): """Retrieve the current mirror status JSON data.""" if not self.json_obj: try: with requests.Session() as session: - self.json_obj = session.get(self.parabola_mirror_status).json() + self.json_obj = session.get(self.arch_mirror_status).json() except requests.RequestException as err: logging.debug('Failed to retrieve mirror status information: %s', err) @@ -180,8 +197,56 @@ return rated_mirrors - def filter_and_sort_Parabola_mirrorlist(self): - output = '# Parabola mirrorlist generated by Cnchi #\n' + def uncomment_antergos_mirrors(self): + """ Uncomment Antergos mirrors and comment out auto selection so + rankmirrors can find the best mirror. """ + + autoselect = "http://mirrors.antergos.com/$repo/$arch" + + if os.path.exists(self.antergos_mirrorlist): + with open(self.antergos_mirrorlist) as mirrors: + lines = [x.strip() for x in mirrors.readlines()] + + for i in range(len(lines)): + if lines[i].startswith("Server") and autoselect in lines[i]: + # Comment out auto selection + lines[i] = "#" + lines[i] + elif lines[i].startswith("#Server") and autoselect not in lines[i]: + # Uncomment Antergos mirror + lines[i] = lines[i].lstrip("#") + + # sourceforge server does not get updated as often as necessary + if "sourceforge" in lines[i]: + lines[i] = "#" + lines[i] + + with misc.raised_privileges(): + # Write new one + with open(self.antergos_mirrorlist, 'w') as mirrors: + mirrors.write("\n".join(lines) + "\n") + self.sync() + + def run_rankmirrors(self): + if os.path.exists("/usr/bin/rankmirrors"): + # Uncomment Antergos mirrors and comment out auto selection so + # rankmirrors can find the best mirror. + self.uncomment_antergos_mirrors() + + with misc.raised_privileges(): + try: + # Store rankmirrors output in a temporary file + with tempfile.TemporaryFile(mode='w+t') as temp_file: + cmd = ['rankmirrors', '-n', '0', '-r', 'antergos', self.antergos_mirrorlist] + subprocess.call(cmd, stdout=temp_file) + temp_file.seek(0) + # Copy new mirrorlist to the old one + with open(self.antergos_mirrorlist, 'w') as antergos_mirrorlist_file: + antergos_mirrorlist_file.write(temp_file.read()) + except subprocess.CalledProcessError as why: + logging.debug('Error running rankmirrors on Antergos mirrorlist: %s', why) + self.sync() + + def filter_and_sort_arch_mirrorlist(self): + output = '# Arch Linux mirrorlist generated by Cnchi #\n' mlist = self.get_mirror_stats() mirrors = self.sort_mirrors_by_speed(mirrors=mlist) @@ -190,10 +255,10 @@ line = "Server = {0}{1}/os/{2}\n".format(mirror['url'], '$repo', '$arch') output += line - # Write modified Parabola mirrorlist + # Write modified Arch mirrorlist with misc.raised_privileges(): - with open(self.parabola_mirrorlist, 'w') as parabola_mirrors: - parabola_mirrors.write(output) + with open(self.arch_mirrorlist, 'w') as arch_mirrors: + arch_mirrors.write(output) self.sync() def run(self): @@ -203,11 +268,16 @@ while not misc.has_connection(): time.sleep(2) # Delay, try again after 4 seconds - logging.debug("Updating mirrorlist...") + logging.debug("Updating both mirrorlists (Arch and Antergos)...") self.update_mirrorlist() - logging.debug("Filtering and sorting Parabola mirrors...") - self.filter_and_sort_parabola_mirrorlist() + logging.debug("Filtering and sorting Arch mirrors...") + self.filter_and_sort_arch_mirrorlist() + + logging.debug("Running rankmirrors command to sort Antergos mirrors...") + self.run_rankmirrors() + self.arch_mirrorlist_ranked = [x for x in self.arch_mirrorlist_ranked if x] + self.settings.set('rankmirrors_result', self.arch_mirrorlist_ranked) logging.debug("Auto mirror selection has been run successfully.") diff -Nur Cnchi-0.12.0/cnchi/show_message.py Cnchi-0.12.0.orig/cnchi/show_message.py --- Cnchi-0.12.0/cnchi/show_message.py 2016-02-19 22:01:27.929186653 -0200 +++ Cnchi-0.12.0.orig/cnchi/show_message.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # show_message.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -56,7 +55,7 @@ destroy_with_parent=True, message_type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.CLOSE, - text=_("Parabola Installer - Error")) + text=_("Antergos Installer - Error")) msg_dialog.format_secondary_text(my_message) msg_dialog.run() msg_dialog.destroy() @@ -69,7 +68,7 @@ destroy_with_parent=True, message_type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.CLOSE, - text=_("Parabola Installer - Warning")) + text=_("Antergos Installer - Warning")) msg_dialog.format_secondary_text(my_message) msg_dialog.run() msg_dialog.destroy() @@ -82,7 +81,7 @@ destroy_with_parent=True, message_type=Gtk.MessageType.INFO, buttons=Gtk.ButtonsType.CLOSE, - text=_("Parabola Installer - Information")) + text=_("Antergos Installer - Information")) msg_dialog.format_secondary_text(my_message) msg_dialog.run() msg_dialog.destroy() @@ -95,7 +94,7 @@ destroy_with_parent=True, message_type=Gtk.MessageType.QUESTION, buttons=Gtk.ButtonsType.YES_NO, - text=_("Parabola Installer - Confirmation")) + text=_("Antergos Installer - Confirmation")) msg_dialog.format_secondary_text(my_message) response = msg_dialog.run() msg_dialog.destroy() diff -Nur Cnchi-0.12.0/cnchi/slides.py Cnchi-0.12.0.orig/cnchi/slides.py --- Cnchi-0.12.0/cnchi/slides.py 2016-02-19 22:03:44.053006981 -0200 +++ Cnchi-0.12.0.orig/cnchi/slides.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # slides.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -79,7 +78,7 @@ if len(self.info_label.get_label()) <= 0: self.set_message(_("Please wait...")) - self.header.set_subtitle(_("Installing Parabola...")) + self.header.set_subtitle(_("Installing Antergos...")) def prepare(self, direction): # We don't load webkit until we reach this screen @@ -196,14 +195,14 @@ boot_warn = _("IMPORTANT: There may have been a problem with the bootloader\n" "installation which could prevent your system from booting properly. Before\n" "rebooting, you may want to verify whether or not the bootloader is installed and\n" - "configured. The Parabola Wiki contains troubleshooting information:\n" - "\thttps://wiki.parabola.nu/GRUB\n" + "configured. The Arch Linux Wiki contains troubleshooting information:\n" + "\thttps://wiki.archlinux.org/index.php/GRUB\n" "\nWould you like to view the wiki page now?") response = show.question(self.get_toplevel(), boot_warn) if response == Gtk.ResponseType.YES: import webbrowser misc.drop_privileges() - webbrowser.open('https://wiki.parabola.nu/GRUB') + webbrowser.open('https://wiki.archlinux.org/index.php/GRUB') install_ok = _("Installation Complete!\nDo you want to restart your system now?") response = show.question(self.get_toplevel(), install_ok) diff -Nur Cnchi-0.12.0/cnchi/timezone.py Cnchi-0.12.0.orig/cnchi/timezone.py --- Cnchi-0.12.0/cnchi/timezone.py 2016-02-19 22:07:26.844930355 -0200 +++ Cnchi-0.12.0.orig/cnchi/timezone.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # timezone.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -258,6 +257,62 @@ def on_switch_ntp_activate(self, ntp_switch): self.settings['use_timesyncd'] = ntp_switch.get_active() + +class AutoTimezoneProcess(multiprocessing.Process): + def __init__(self, coords_queue, settings): + super(AutoTimezoneProcess, self).__init__() + self.coords_queue = coords_queue + self.settings = settings + + def run(self): + # Calculate logo hash + logo = "data/images/antergos/antergos-logo-mini2.png" + logo_path = os.path.join(self.settings.get("cnchi"), logo) + with open(logo_path, "rb") as logo_file: + logo_bytes = logo_file.read() + logo_hasher = hashlib.sha1() + logo_hasher.update(logo_bytes) + logo_digest = logo_hasher.digest() + + # Wait until there is an Internet connection available + if not misc.has_connection(): + logging.warning("Can't get network status. Cnchi will try again in a moment") + while not misc.has_connection(): + time.sleep(4) # Wait 4 seconds and try again + + logging.debug("A working network connection has been detected.") + + # Do not start looking for our timezone until we've reached the language screen + # (welcome.py sets timezone_start to true when next is clicked) + while not self.settings.get('timezone_start'): + time.sleep(2) + + # OK, now get our timezone + + logging.debug("We have connection. Let's get our timezone") + try: + url = urllib.request.Request( + url="http://geo.antergos.com", + data=logo_digest, + headers={"User-Agent": "Antergos Installer", "Connection": "close"}) + with urllib.request.urlopen(url) as conn: + coords = conn.read().decode('utf-8').strip() + + if coords == "0 0": + # Sometimes server returns 0 0, we treat it as an error + coords = None + except Exception as general_error: + logging.error(general_error) + coords = None + + if coords: + coords = coords.split() + logging.debug( + _("Timezone (latitude %s, longitude %s) detected."), + coords[0], + coords[1]) + self.coords_queue.put(coords) + if __name__ == '__main__': def _(x): return x diff -Nur Cnchi-0.12.0/cnchi/updater.py Cnchi-0.12.0.orig/cnchi/updater.py --- Cnchi-0.12.0/cnchi/updater.py 2016-02-19 22:09:05.772799172 -0200 +++ Cnchi-0.12.0.orig/cnchi/updater.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # updater.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -40,9 +39,9 @@ import misc.misc as misc import requests -_update_info_url = "" -_master_zip_url = "" -_update_info = "" +_update_info_url = "https://raw.github.com/Antergos/Cnchi/master/update.info" +_master_zip_url = "https://github.com/Antergos/Cnchi/archive/master.zip" +_update_info = "/usr/share/cnchi/update.info" _src_dir = os.path.dirname(__file__) or '.' _base_dir = os.path.join(_src_dir, "..") diff -Nur Cnchi-0.12.0/cnchi/user_info.py Cnchi-0.12.0.orig/cnchi/user_info.py --- Cnchi-0.12.0/cnchi/user_info.py 2016-02-19 22:10:32.367590738 -0200 +++ Cnchi-0.12.0.orig/cnchi/user_info.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # user_info.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -195,9 +194,9 @@ # Do not use this, is confusing for others when testing dev version ''' if self.settings.get('z_hidden'): - self.settings.set('fullname', 'Parabola Testing') + self.settings.set('fullname', 'Antergos Testing') self.settings.set('hostname', 'Testing Machine') - self.settings.set('username', 'parabola') + self.settings.set('username', 'antergos') self.settings.set('password', 'testing') self.settings.set('require_password', True) else: diff -Nur Cnchi-0.12.0/cnchi/welcome.py Cnchi-0.12.0.orig/cnchi/welcome.py --- Cnchi-0.12.0/cnchi/welcome.py 2016-02-19 22:11:48.189216528 -0200 +++ Cnchi-0.12.0.orig/cnchi/welcome.py 2016-01-29 08:56:41.000000000 -0200 @@ -4,7 +4,6 @@ # welcome.py # # Copyright © 2013-2015 Antergos -# Copyright © 2016 Parabola # # This file is part of Cnchi. # @@ -75,13 +74,13 @@ def translate_ui(self): """ Translates all ui elements """ if not self.disable_tryit: - txt = _("Use Parabola without making any changes to your system.") + "\n" + txt = _("Use Antergos without making any changes to your system.") + "\n" else: txt = "" self.labels['tryit'].set_markup(txt) self.labels['tryit'].set_name('tryit_label') - txt = _("Create a permanent place for Parabola on your system.") + txt = _("Create a permanent place for Antergos on your system.") self.labels['installit'].set_markup(txt) self.labels['installit'].set_name('installit_label') @@ -94,7 +93,7 @@ txt = _("Install It") self.buttons['graph'].set_label(txt) - txt = _("Welcome to Parabola!") + txt = _("Welcome to Antergos!") self.header.set_subtitle(txt) def quit_cnchi(self): diff -Nur Cnchi-0.12.0/utils/download_package_list.py Cnchi-0.12.0.orig/utils/download_package_list.py --- Cnchi-0.12.0/utils/download_package_list.py 2016-02-20 01:05:40.793106408 -0200 +++ Cnchi-0.12.0.orig/utils/download_package_list.py 2016-01-29 08:56:41.000000000 -0200 @@ -1,28 +1,8 @@ -# download_package_list.py -# -# Copyright Antergos -# Copyright 2016 Parabola -# -# 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 3 of the License, 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-1301, USA. - import urllib.request import urllib.error try: - packages_xml = urllib.request.urlopen('') + packages_xml = urllib.request.urlopen('http://install.antergos.com/packages-0.8.xml') except urllib.error.URLError as e: # If the installer can't retrieve the remote file, try to install with a local # copy, that may not be updated diff -Nur Cnchi-0.12.0/utils/info.py Cnchi-0.12.0.orig/utils/info.py --- Cnchi-0.12.0/utils/info.py 2016-02-19 21:43:19.124426725 -0200 +++ Cnchi-0.12.0.orig/utils/info.py 2016-01-29 08:56:41.000000000 -0200 @@ -3,8 +3,7 @@ # # info.py # -# Copyright © 2013-2016 Antergos -# Copyright © 2016 Parabola +# Copyright © 2013-2015 Antergos # # This file is part of Cnchi. # @@ -31,7 +30,7 @@ """ Set some Cnchi global constants """ CNCHI_VERSION = "0.12.47" -CNCHI_WEBSITE = "https://www.parabola.nu" +CNCHI_WEBSITE = "http://www.antergos.com" CNCHI_RELEASE_STAGE = "production" if __name__ == '__main__':