commit:     618852ed64e5fbfc546bee4444c7663164646eac
Author:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 22 20:53:17 2024 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Fri Mar 22 20:54:55 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=618852ed

app-admin/calamares: add 3.3.5

- adds (maksed) qt6 support
- adds gentoo branding (read from /etc/os-release)
- drop tests requiring toml

Closes: https://bugs.gentoo.org/865265
Closes: https://bugs.gentoo.org/925724
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>

 app-admin/calamares/Manifest                       |   1 +
 app-admin/calamares/calamares-3.3.5.ebuild         | 167 ++++++++++++++
 .../calamares/files/calamares-gentoo-branding.desc | 239 +++++++++++++++++++++
 profiles/base/package.use.mask                     |   4 +
 4 files changed, 411 insertions(+)

diff --git a/app-admin/calamares/Manifest b/app-admin/calamares/Manifest
index 9301d4735645..30eda62874ab 100644
--- a/app-admin/calamares/Manifest
+++ b/app-admin/calamares/Manifest
@@ -1 +1,2 @@
 DIST calamares-3.2.60.tar.gz 4260547 BLAKE2B 
edf300ce9d534cd506b2341b3ce314bbde7fcc6dac40ad2307e549bbeab7a63ddfe6d7ae8c8176ee1ad4e4b02c9eadcd5efc66872e1f464c39200d8d117dca80
 SHA512 
dfc01212f74694f10d40dd1d1ad61db384c83021dc9cd4753027a9cf40b92c8e8b2d5032df76533a8f22c05448aba546c9bb21c38c03fb0cb8d7de35fb79fb7f
+DIST calamares-3.3.5.tar.gz 4722988 BLAKE2B 
bc3270fbc2f804c46008f1f0a106719b779a07d7d5d3cc9f1ab17da7597ebb5dfebc8793036e19570b0048afb667df4b9fed55e813374d7465513ea048e00ffc
 SHA512 
6846e13455e4fa38bd4d5061eece1baf5a972700f489dc1e35d988cfb5359650c63f79f9453431f1aff722af696260504c27f0c000490d781ab5fe03a5c46cf2

diff --git a/app-admin/calamares/calamares-3.3.5.ebuild 
b/app-admin/calamares/calamares-3.3.5.ebuild
new file mode 100644
index 000000000000..18227c7ccfcf
--- /dev/null
+++ b/app-admin/calamares/calamares-3.3.5.ebuild
@@ -0,0 +1,167 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_TEST="true"
+PYTHON_COMPAT=( python3_{10..11} )
+
+inherit ecm python-single-r1
+
+DESCRIPTION="Distribution-independent installer framework"
+HOMEPAGE="https://calamares.io";
+SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.gz";
+
+LICENSE="GPL-3"
+SLOT="5"
+KEYWORDS="~amd64"
+IUSE="+networkmanager qt6 +upower"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+QT5_MIN="5.15.0"
+KF_QT5_MIN="5.78"
+QT6_MIN="6.5.0"
+KF_QT6_MIN="5.240"
+
+BDEPEND="
+       qt6? (
+               >=dev-qt/qttools-${QT6_MIN}:6[linguist]
+               >=kde-frameworks/extra-cmake-modules-${KF_QT6_MIN}
+       )
+       !qt6? (
+               >=dev-qt/linguist-tools-${QT5_MIN}:5
+               >=kde-frameworks/extra-cmake-modules-${KF_QT5_MIN}
+       )
+"
+COMMON_DEPEND="${PYTHON_DEPS}
+       dev-cpp/yaml-cpp:=
+       $(python_gen_cond_dep '
+               >=dev-libs/boost-1.72.0:=[python,${PYTHON_USEDEP}]
+               dev-libs/libpwquality[${PYTHON_USEDEP}]
+       ')
+       qt6? (
+               
>=dev-qt/qtbase-${QT6_MIN}:6[concurrent,dbus,gui,network,widgets,xml]
+               >=dev-qt/qtdeclarative-${QT6_MIN}:6
+               >=dev-qt/qtsvg-${QT6_MIN}:6
+               >=dev-qt/qtwebengine-${QT6_MIN}:6[widgets]
+               dev-qt/kdsingleapplication[qt6]
+               >=kde-frameworks/kconfig-${KF_QT6_MIN}:6
+               >=kde-frameworks/kcoreaddons-${KF_QT6_MIN}:6
+               >=kde-frameworks/kcrash-${KF_QT6_MIN}:6
+               >=kde-frameworks/ki18n-${KF_QT6_MIN}:6
+               >=kde-frameworks/kpackage-${KF_QT6_MIN}:6
+               >=kde-frameworks/kparts-${KF_QT6_MIN}:6
+               >=kde-frameworks/kservice-${KF_QT6_MIN}:6
+               >=kde-frameworks/kwidgetsaddons-${KF_QT6_MIN}:6
+               sys-auth/polkit-qt[qt6(-)]
+               >=sys-libs/kpmcore-24.01.75:6=
+       )
+       !qt6? (
+               >=dev-qt/qtconcurrent-${QT5_MIN}:5
+               >=dev-qt/qtdbus-${QT5_MIN}:5
+               >=dev-qt/qtdeclarative-${QT5_MIN}:5
+               >=dev-qt/qtgui-${QT5_MIN}:5
+               >=dev-qt/qtnetwork-${QT5_MIN}:5
+               >=dev-qt/qtsvg-${QT5_MIN}:5
+               >=dev-qt/qtwebengine-${QT5_MIN}:5[widgets]
+               >=dev-qt/qtwidgets-${QT5_MIN}:5
+               >=dev-qt/qtxml-${QT5_MIN}:5
+               dev-qt/kdsingleapplication[-qt6]
+               >=kde-frameworks/kconfig-${KF_QT5_MIN}:5
+               >=kde-frameworks/kcoreaddons-${KF_QT5_MIN}:5
+               >=kde-frameworks/kcrash-${KF_QT5_MIN}:5
+               >=kde-frameworks/ki18n-${KF_QT5_MIN}:5
+               >=kde-frameworks/kpackage-${KF_QT5_MIN}:5
+               >=kde-frameworks/kparts-${KF_QT5_MIN}:5
+               >=kde-frameworks/kservice-${KF_QT5_MIN}:5
+               >=kde-frameworks/kwidgetsaddons-${KF_QT5_MIN}:5
+               sys-auth/polkit-qt[qt5(+)]
+               >=sys-libs/kpmcore-20.04.0:5=
+       )
+       sys-apps/dbus
+       sys-apps/dmidecode
+       virtual/libcrypt:=
+"
+DEPEND="${COMMON_DEPEND}
+       test? (
+               !qt6? ( dev-qt/qttest:5 )
+       )
+"
+RDEPEND="${COMMON_DEPEND}
+       app-admin/sudo
+       dev-libs/libatasmart
+       net-misc/rsync
+       || (
+               sys-boot/grub:2
+               sys-apps/systemd[boot(-)]
+               sys-apps/systemd-utils[boot]
+       )
+       sys-boot/os-prober
+       sys-fs/squashfs-tools
+       sys-libs/timezone-data
+       virtual/udev
+       networkmanager? ( net-misc/networkmanager )
+       upower? ( sys-power/upower )
+"
+
+src_prepare() {
+       ecm_src_prepare
+       export PYTHON_INCLUDE_DIRS="$(python_get_includedir)" \
+                       PYTHON_INCLUDE_PATH="$(python_get_library_path)"\
+                       PYTHON_CFLAGS="$(python_get_CFLAGS)"\
+                       PYTHON_LIBS="$(python_get_LIBS)"
+
+       sed -i -e 's:pkexec /usr/bin/calamares:calamares-pkexec:' \
+               calamares.desktop || die
+       sed -i -e 's:Icon=calamares:Icon=drive-harddisk:' \
+               calamares.desktop || die
+
+       cp "${FILESDIR}/calamares-gentoo-branding.desc" 
src/branding/default/branding.desc || die "Failed to overwrite branding file"
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DINSTALL_CONFIG=ON
+               -DINSTALL_COMPLETION=ON
+               -DINSTALL_POLKIT=ON
+               -DCMAKE_DISABLE_FIND_PACKAGE_LIBPARTED=ON
+               -DWITH_PYTHON=ON
+               # Use system instead
+               -DWITH_PYBIND11=OFF
+               -DBUILD_APPDATA=ON
+               -DWITH_QT6="$(usex qt6)"
+       )
+
+       ecm_src_configure
+}
+
+src_test() {
+       local myctestargs=(
+               # Skipped tests:
+               # load-dracut: tries and fails to find Dracut config
+               # libcalamaresnetworktest: needs network
+               # libcalamaresutilstest: inspects /tmp (expects namespace?)
+               #
+               # Need investigation:
+               # test_libcalamaresuipaste
+               # validate-netinstall
+               # validate-services-systemd
+               # localetest
+               # machineidtest
+               # packagechoosertest
+               #
+               # Requires removed dev-python/toml
+               # lint-displaymanager
+               #
+               # E1101
+               # lint-dummypython
+               -E 
"(load-dracut|libcalamaresnetworktest|libcalamaresutilstest|test_libcalamaresuipaste|validate-netinstall|validate-services-systemd|localetest|machineidtest|packagechoosertest|lint-displaymanager|lint-dummypython)"
+       )
+
+       cmake_src_test
+}
+
+src_install() {
+       ecm_src_install
+       dobin "${FILESDIR}"/calamares-pkexec
+}

diff --git a/app-admin/calamares/files/calamares-gentoo-branding.desc 
b/app-admin/calamares/files/calamares-gentoo-branding.desc
new file mode 100644
index 000000000000..9b107b45e3e2
--- /dev/null
+++ b/app-admin/calamares/files/calamares-gentoo-branding.desc
@@ -0,0 +1,239 @@
+# SPDX-FileCopyrightText: no
+# SPDX-License-Identifier: CC0-1.0
+#
+# Product branding information. This influences some global
+# user-visible aspects of Calamares, such as the product
+# name, window behavior, and the slideshow during installation.
+#
+# Additional styling can be done using the stylesheet.qss
+# file, also in the branding directory.
+---
+componentName:  default
+
+
+### WELCOME / OVERALL WORDING
+#
+# These settings affect some overall phrasing and looks,
+# which are most visible in the welcome page.
+
+# This selects between different welcome texts. When false, uses
+# the traditional "Welcome to the %1 installer.", and when true,
+# uses "Welcome to the Calamares installer for %1." This allows
+# to distinguish this installer from other installers for the
+# same distribution.
+welcomeStyleCalamares:   true
+
+# Should the welcome image (productWelcome, below) be scaled
+# up beyond its natural size? If false, the image does not grow
+# with the window but remains the same size throughout (this
+# may have surprising effects on HiDPI monitors).
+welcomeExpandingLogo:   true
+
+### WINDOW CONFIGURATION
+#
+# The settings here affect the placement of the Calamares
+# window through hints to the window manager and initial
+# sizing of the Calamares window.
+
+# Size and expansion policy for Calamares.
+#  - "normal" or unset, expand as needed, use *windowSize*
+#  - "fullscreen", start as large as possible, ignore *windowSize*
+#  - "noexpand", don't expand automatically, use *windowSize*
+windowExpanding:    normal
+
+# Size of Calamares window, expressed as w,h. Both w and h
+# may be either pixels (suffix px) or font-units (suffix em).
+#   e.g.    "800px,600px"
+#           "60em,480px"
+# This setting is ignored if "fullscreen" is selected for
+# *windowExpanding*, above. If not set, use constants defined
+# in CalamaresUtilsGui, 800x520.
+windowSize: 800px,520px
+
+# Placement of Calamares window. Either "center" or "free".
+# Whether "center" actually works does depend on the window
+# manager in use (and only makes sense if you're not using
+# *windowExpanding* set to "fullscreen").
+windowPlacement: center
+
+### PANELS CONFIGURATION
+#
+# Calamares has a main content area, and two panels (navigation
+# and progress / sidebar). The panels can be controlled individually,
+# or switched off. If both panels are switched off, the layout of
+# the main content area loses its margins, on the assumption that
+# you're doing something special.
+
+# Kind of sidebar (panel on the left, showing progress).
+#  - "widget" or unset, use traditional sidebar (logo, items)
+#  - "none", hide it entirely
+#  - "qml", use calamares-sidebar.qml from branding folder
+# In addition, you **may** specify a side, separated by a comma,
+# from the kind. Valid sides are:
+#  - "left" (if not specified, uses this)
+#  - "right"
+#  - "top"
+#  - "bottom"
+# For instance, "widget,right" is valid; so is "qml", which defaults
+# to putting the sidebar on the left. Also valid is "qml,top".
+# While "widget,top" is valid, the widgets code is **not** flexible
+# and results will be terrible.
+sidebar: widget
+
+# Kind of navigation (button panel on the bottom).
+#  - "widget" or unset, use traditional navigation
+#  - "none", hide it entirely
+#  - "qml", use calamares-navigation.qml from branding folder
+# In addition, you **may** specify a side, separated by a comma,
+# from the kind. The same sides are valid as for *sidebar*,
+# except the default is *bottom*.
+navigation: widget
+
+
+### STRINGS, IMAGES AND COLORS
+#
+# This section contains the "branding proper" of names
+# and images, rather than global-look settings.
+
+# These are strings shown to the user in the user interface.
+# There is no provision for translating them -- since they
+# are names, the string is included as-is.
+#
+# The four Url strings are the Urls used by the buttons in
+# the welcome screen, and are not shown to the user. Clicking
+# on the "Support" button, for instance, opens the link supportUrl.
+# If a Url is empty, the corresponding button is not shown.
+#
+# bootloaderEntryName is how this installation / distro is named
+# in the boot loader (e.g. in the GRUB menu).
+#
+# These strings support substitution from /etc/os-release
+# if KDE Frameworks 5.58 are available at build-time. When
+# enabled, ${varname} is replaced by the equivalent value
+# from os-release. All the supported var-names are in all-caps,
+# and are listed on the FreeDesktop.org site,
+#       https://www.freedesktop.org/software/systemd/man/os-release.html
+# Note that ANSI_COLOR and CPE_NAME don't make sense here, and
+# are not supported (the rest are). Remember to quote the string
+# if it contains substitutions, or you'll get YAML exceptions.
+#
+# The *Url* entries are used on the welcome page, and they
+# are visible as buttons there if the corresponding *show* keys
+# are set to "true" (they can also be overridden).
+strings:
+    productName:         ${PRETTY_NAME}
+    shortProductName:    ${NAME}
+    version:             ${VERSION_ID}
+    shortVersion:        ${VERSION_ID}
+    versionedName:       ${PRETTY_NAME} ${VERSION_ID}
+    shortVersionedName:  ${NAME} ${VERSION_ID}
+    bootloaderEntryName: ${NAME}
+    productUrl:          ${HOME_URL}
+    supportUrl:          ${SUPPORT_URL}
+    knownIssuesUrl:      ${BUG_REPORT_URL}
+    releaseNotesUrl:     ${HOME_URL}
+    donateUrl:           ${HOME_URL}
+
+# These images are loaded from the branding module directory.
+#
+# productBanner is an optional image, which if present, will be shown
+#       on the welcome page of the application, above the welcome text.
+#       It is intended to have a width much greater than height.
+#       It is displayed at 64px height (also on HiDPI).
+#       Recommended size is 64px tall, and up to 460px wide.
+# productIcon is used as the window icon, and will (usually) be used
+#       by the window manager to represent the application. This image
+#       should be square, and may be displayed by the window manager
+#       as small as 16x16 (but possibly larger).
+# productLogo is used as the logo at the top of the left-hand column
+#       which shows the steps to be taken. The image should be square,
+#       and is displayed at 80x80 pixels (also on HiDPI).
+# productWallpaper is an optional image, which if present, will replace
+#       the normal solid background on every page of the application.
+#       It can be any size and proportion,
+#       and will be tiled to fit the entire window.
+#       For a non-tiled wallpaper, the size should be the same as
+#       the overall window, see *windowSize* above (800x520).
+# productWelcome is shown on the welcome page of the application in
+#       the middle of the window, below the welcome text. It can be
+#       any size and proportion, and will be scaled to fit inside
+#       the window. Use `welcomeExpandingLogo` to make it non-scaled.
+#       Recommended size is 320x150.
+#
+# These filenames can also use substitutions from os-release (see above).
+images:
+    # productBanner:       "banner.png"
+    productIcon:         "squid.png"
+    productLogo:         "squid.png"
+    # productWallpaper:    "wallpaper.png"
+    productWelcome:      "languages.png"
+
+# Colors for text and background components.
+#
+#  - SidebarBackground is the background of the sidebar
+#  - SidebarText is the (foreground) text color
+#  - SidebarBackgroundCurrent sets the background of the current step.
+#    Optional, and defaults to the application palette.
+#  - SidebarTextCurrent is the text color of the current step.
+#
+# These colors can **also** be set through the stylesheet, if the
+# branding component also ships a stylesheet.qss. Then they are
+# the corresponding CSS attributes of #sidebarApp.
+style:
+   SidebarBackground:        "#292F34"
+   SidebarText:              "#FFFFFF"
+   SidebarTextCurrent:       "#292F34"
+   SidebarBackgroundCurrent: "#D35400"
+
+### SLIDESHOW
+#
+# The slideshow is displayed during execution steps (e.g. when the
+# installer is actually writing to disk and doing other slow things).
+
+# The slideshow can be a QML file (recommended) which can display
+# arbitrary things -- text, images, animations, or even play a game --
+# during the execution step. The QML **is** abruptly stopped when the
+# execution step is done, though, so maybe a game isn't a great idea.
+#
+# The slideshow can also be a sequence of images (not recommended unless
+# you don't want QML at all in your Calamares). The images are displayed
+# at a rate of 1 every 2 seconds during the execution step.
+#
+# To configure a QML file, list a single filename:
+#   slideshow:               "show.qml"
+# To configure images, like the filenames (here, as an inline list):
+#   slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ]
+slideshow:               "show.qml"
+
+# There are two available APIs for a QML slideshow:
+#  - 1 (the default) loads the entire slideshow when the installation-
+#      slideshow page is shown and starts the QML then. The QML
+#      is never stopped (after installation is done, times etc.
+#      continue to fire).
+#  - 2 loads the slideshow on startup and calls onActivate() and
+#      onLeave() in the root object. After the installation is done,
+#      the show is stopped (first by calling onLeave(), then destroying
+#      the QML components).
+#
+# An image slideshow does not need to have the API defined.
+slideshowAPI: 2
+
+
+# These options are to customize online uploading of logs to pastebins:
+#  - type      : Defines the kind of pastebin service to be used. Currently
+#                it accepts two values:
+#                - none    :    disables the pastebin functionality
+#                - fiche   :    use fiche pastebin server
+#  - url       : Defines the address of pastebin service to be used.
+#                Takes string as input. Important bits are the host and port,
+#                the scheme is not used.
+#  - sizeLimit : Defines maximum size limit (in KiB) of log file to be pasted.
+#                The option must be set, to have the log option work.
+#                Takes integer as input. If < 0, no limit will be forced,
+#                else only last (approximately) 'n' KiB of log file will be 
pasted.
+#                Please note that upload size may be slightly over the limit 
(due
+#                to last minute logging), so provide a suitable value.
+uploadServer :
+    type :    "fiche"
+    url :     "http://termbin.com:9999";
+    sizeLimit : -1

diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask
index f7d287da3287..b65aebba34ee 100644
--- a/profiles/base/package.use.mask
+++ b/profiles/base/package.use.mask
@@ -6,6 +6,10 @@
 # This file is only for generic masks. For arch-specific masks (i.e.
 # mask everywhere, unmask on arch/*) use arch/base.
 
+# Andrew Ammerlaan <andrewammerl...@gentoo.org> (2024-03-22)
+# Building with qt6 requires (masked) kde-frameworks:6
+app-admin/calamares qt6
+
 # Viorel Munteanu <cea...@gentoo.org> (2024-03-19)
 # The live version needs a new BDEPEND for doc
 =app-emulation/virtualbox-9999 doc

Reply via email to