Git commit 75bfc43675938761ee0f23efa36ebbfd70ea0322 by Andrew Shark. Committed on 18/02/2024 at 11:02. Pushed by ashark into branch 'master'.
Use distro-dependencies defined in repo-metadata Distro dependencies (data/pkg) moved here: https://invent.kde.org/sysadmin/repo-metadata/-/tree/master/distro-dependencies D +0 -104 data/pkg/alpine.ini D +0 -126 data/pkg/arch.ini D +0 -175 data/pkg/debian.ini D +0 -166 data/pkg/fedora.ini D +0 -39 data/pkg/freebsd.ini D +0 -32 data/pkg/gentoo.ini D +0 -36 data/pkg/mageia.ini D +0 -158 data/pkg/opensuse.ini M +1 -0 doc/man-kdesrc-build.1.docbook M +1 -0 doc/supported-cmdline-params.docbook M +5 -0 kdesrc-build M +29 -38 modules/ksb/FirstRun.pm https://invent.kde.org/sdk/kdesrc-build/-/commit/75bfc43675938761ee0f23efa36ebbfd70ea0322 diff --git a/data/pkg/alpine.ini b/data/pkg/alpine.ini deleted file mode 100644 index 3eef1ea4..00000000 --- a/data/pkg/alpine.ini +++ /dev/null @@ -1,104 +0,0 @@ -[pkg/alpine/unknown] -alpine-sdk -attr-dev -autoconf -automake -bison -boost-dev -clang-extra-tools -cmake -corrosion -curl-dev -cyrus-sasl-dev -doxygen -eudev-dev -exiv2-dev -ffmpeg-dev -flex -giflib-dev -gperf -gpgme-dev -grantlee-dev -graphviz -gst-plugins-base-dev -gstreamer-dev -kdsoap-dev -lcms2-dev -libaccounts-qt-dev -libcanberra-dev -libdbusmenu-qt-dev -libdisplay-info-dev -libdmtx-dev -libepoxy-dev -libgcrypt-dev -libgit2-dev -libical-dev -libinput-dev -libnl3-dev -libqalculate-dev -libqrencode-dev -libsecret-dev -libva-dev -libxcvt-dev -libxkbfile-dev -libxmlb-dev -libxrender-dev -libxslt-dev -libxtst-dev -linux-pam-dev -lm-sensors-dev -lmdb-dev -meson -modemmanager-dev -mpv-dev -musl-fts-dev -networkmanager-dev -ninja -olm-dev -openjpeg-dev -openldap-dev -pcre-dev -pipewire-dev -polkit-elogind-dev -pulseaudio-dev -py3-sphinx -py3-setuptools -qca-dev -qcoro-dev -qt5-qtbase-dev -qt5-qtdeclarative-dev -qt5-qtmultimedia-dev -qt5-qtnetworkauth-dev -qt5-qtquickcontrols2-dev -qt5-qtscript-dev -qt5-qtsensors-dev -qt5-qtsvg-dev -qt5-qttools-dev -qt5-qtwayland-dev -qt5-qtx11extras-dev -qt5-qtxmlpatterns-dev -qt6-qt5compat-dev -qt6-qtbase-dev -qt6-qtmultimedia-dev -qt6-qtpositioning-dev -qt6-qtsensors-dev -qt6-qtspeech-dev -qt6-qtsvg-dev -qt6-qttools-dev -qt6-qtwayland-dev -qt6-qtwebengine-dev -qt6-qtwebview-dev -qtkeychain-dev -signond-dev -stb -texinfo -utfcpp -wayland-protocols -xapian-core-dev -xcb-util-cursor-dev -xcb-util-image-dev -xcb-util-keysyms-dev -xcb-util-wm-dev -xkeyboard-config-dev -xmlto -yaml-dev diff --git a/data/pkg/arch.ini b/data/pkg/arch.ini deleted file mode 100644 index 4a9077af..00000000 --- a/data/pkg/arch.ini +++ /dev/null @@ -1,126 +0,0 @@ -[pkg/arch/unknown] -# Basic build tools - -# .. gnu -autoconf -automake -bison -flex -gcc -gperf -make - -# .. llvm -clang -cmake - -# .. build systems -ninja -meson - -# .. rust -corrosion - -# .. others -boost -docbook-xsl -doxygen -intltool -pkg-config -git -gi-docgen - -# Qt-related -qt6 -poppler-qt6 -qca-qt6 -qtkeychain-qt6 -qcoro-qt6 -qt5-base -qt5-script -qt5-websockets -qt5-svg -qt5-tools -qt5-x11extras -qca-qt5 -libaccounts-qt -libdbusmenu-qt5 -poppler-qt5 -qtkeychain-qt5 -phonon-qt5 -packagekit - -# Others/Unsorted -wayland-protocols -qrencode -signond -xapian-core -qgpgme -kdsoap -xsd -xerces-c -vlc -ruby-sass -eigen -mlt -freecell-solver -sane -vala -check -libolm -xmlto -itstool -libdisplay-info -python-sphinx -python-setuptools -enchant -jasper -openexr -libutempter -docbook-xsl -shared-mime-info -giflib -libxss -upower -udisks2 -xorg-server-devel -libpwquality -libfakekey -eigen -xapian-core -libdmtx -ruby-test-unit -plymouth -libical -openal -libxmlb -exiv2 -lmdb -libqalculate -libraw -mpv -sccache -python-cairo -python-pip -flatpak -xf86-input-wacom -black-hole-solver -fluidsynth -libgit2 -microsoft-gsl -power-profiles-daemon - -#plasma-desktop -xdotool - -# appstream -gobject-introspection -xf86-input-evdev -python-chai - -#okular -libspectre -libzip -discount -djvulibre -ebook-tools diff --git a/data/pkg/debian.ini b/data/pkg/debian.ini deleted file mode 100644 index fbce96cd..00000000 --- a/data/pkg/debian.ini +++ /dev/null @@ -1,175 +0,0 @@ -[pkg/debian/unknown] -# Basic build tools -bison -build-essential -cmake -flex -gettext -git -gperf -libssl-dev -intltool -meson -ninja-build -shared-mime-info -clang-format -apt-file -# Qt-related -qtwayland5-private-dev -libdbusmenu-qt5-dev -libqt5svg5-dev -libqt5waylandclient5-dev -libqt5x11extras5-dev -qtbase5-private-dev -qtdeclarative5-dev -qtmultimedia5-dev -qtquickcontrols2-5-dev -qtscript5-dev -qttools5-dev -qtwayland5-dev-tools -qtxmlpatterns5-dev-tools -qt6-tools-dev -qt6-declarative-dev -qt6-wayland -qt6-wayland-dev -qt6-wayland-dev-tools -qt6-base-private-dev -qt6-speech-dev -qt6-multimedia-dev -libqt6svg6-dev -libqt6core5compat6-dev -libqt6opengl6-dev -libqt6shadertools6-dev -packagekit -# Frameworks dependencies -# .. polkit-qt-1 -libpolkit-gobject-1-dev -libpolkit-agent-1-dev -# .. kdoctools -libxml2-dev -libxml2-utils -libxslt-dev -docbook -docbook-xsl -docbook-xml -# .. libksysguard -libnl-3-dev -libnl-route-3-dev -libsensors-dev -# .. kwindowsystem -libwayland-dev -libxcb-icccm4-dev -libxcb-keysyms1-dev -libxcb-res0-dev -libxcb-xfixes0-dev -libxcb-xkb-dev -libxcb-xtest0-dev -libxfixes-dev -libxrender-dev -wayland-protocols -# .. kwallet -libgcrypt-dev -libgpgme11-dev -libgpgmepp-dev -# .. kactivities -libboost-dev -# .. kfilemetadata -libattr1-dev -# .. kidletime -libxcb-sync-dev -libx11-xcb-dev -# .. kcalendarcore -libical-dev -# .. khtml -libjpeg-dev -libgif-dev -# .. kjs -libpcre3-dev -# .. kglobalaccel -libxcb-record0-dev -# .. knotifications -libcanberra-dev -# .. karchive -liblzma-dev -libbz2-dev -# .. plasma-workspace -libqalculate-dev -libxft-dev -libxtst-dev -libappstreamqt-dev -libpackagekitqt5-dev -libxcursor-dev -# And others -qt5keychain-dev -libopenal-dev -libopenjp2-7-dev -qtlocation5-dev -libraw-dev -libsane-dev -libsndfile1-dev -libxcb-glx0-dev -liblmdb-dev -libsm-dev -libqrencode-dev -python3-setuptools -# .. optional discover backends -libjcat-dev -libfwupd-dev -libsnapd-qt-dev -libflatpak-dev -# kwin -libgbm-dev -libdrm-dev -libxcvt-dev -libxcb-randr0-dev -libepoxy-dev -libxcb-composite0-dev -libxcb-shm0-dev -libxcb-cursor-dev -libxcb-damage0-dev -libxcb-image0-dev -libxcb-util-dev -libxcb-present-dev -libxcb-xinerama0-dev -libxkbcommon-x11-dev -# plasma -libqalculate-dev -libxcb-randr0-dev -libxft-dev -libxtst-dev -# powerdevil -libxcb-dpms0-dev -# plasma-nm -libnm-dev -modemmanager-dev -# plasma-pa -libpulse-dev -# plymouth-kcm -libplymouth-dev -# kscreenlocker -libpam0g-dev -# kpipewire -libpipewire-0.3-dev -libavcodec-dev -libavformat-dev -libswscale-dev -# libkexiv2 -libexiv2-dev -# kcalc -graphviz -doxygen -xsltproc -xmlto -# poppler -libnss3-dev -libtiff-dev -# gpgme -texinfo -# appstream -libyaml-dev -libsystemd-dev -libgirepository1.0-dev -libstemmer-dev -itstool -gi-docgen -libzstd-dev diff --git a/data/pkg/fedora.ini b/data/pkg/fedora.ini deleted file mode 100644 index 23784adc..00000000 --- a/data/pkg/fedora.ini +++ /dev/null @@ -1,166 +0,0 @@ -[pkg/fedora/unknown] -appstream-qt-devel -aha -bison -boost-devel -bzip2 -cfitsio-devel -chmlib-devel -cmake -cyrus-sasl-devel -dbusmenu-qt5-devel -djvulibre-devel -docbook-style-xsl -docbook-utils -doxygen -ebook-tools-devel -eigen3-devel -erfa-devel -exiv2-devel -flatpak-devel -flex -fuse3-devel -fuse-devel -gcc -gcc-c++ -gettext -gettext-devel -giflib-devel -git -glew-devel -gobject-introspection-devel -gperf -gpgmepp-devel -gsl-devel -gstreamer1-plugins-base-devel -ibus-devel -intltool -itstool -json-c-devel -kcolorpicker-devel -kdsoap-devel -kf5-kdnssd-devel -kf5-kplotting-devel -kf5-libkdcraw-devel -kimageannotator-devel -libaccounts-qt5-devel -libavcodec-free-devel -libavfilter-free-devel -libavformat-free-devel -libavutil-free-devel -libblack-hole-solver-devel -libcap-devel -libcanberra-devel -libdisplay-info-devel -libepoxy-devel -libfakekey-devel -libfreecell-solver-devel -libgcrypt-devel -libgit2-devel -libical-devel -libindi-devel -libjpeg-turbo-devel -libpcap-devel -libqalculate-devel -libmtp-devel -libnl3-devel -libnova-devel -LibRaw-devel -libsass-devel -libsmbclient-devel -libsndfile-devel -libsodium-devel -libspectre-devel -libswscale-free-devel -libssh-devel -libtirpc-devel -libuuid-devel -libva-devel -libwacom-devel -libXcursor-devel -libXft-devel -libxcvt-devel -libXext-devel -libXtst-devel -libXxf86vm-devel -libxkbcommon-devel -libxkbcommon-x11-devel -libxkbfile-devel -libxml2 -libzip-devel -lm_sensors-devel -make -meson -mpv-libs-devel -openal-soft-devel -openexr-devel -openjpeg2-devel -pam-devel -pcre-devel -phonon-qt5-devel -pipewire-devel -pipewire-utils -pkgconfig(dbus-1) -pkgconfig(gbm) -pkgconfig(gl) -pkgconfig(gstreamer-1.0) -pkgconfig(libassuan) -pkgconfig(libattr) -pkgconfig(libnm) -pkgconfig(libpng) -pkgconfig(libqrencode) -pkgconfig(libxml-2.0) -pkgconfig(libxslt) -pkgconfig(lmdb) -pkgconfig(ModemManager) -pkgconfig(openssl) -pkgconfig(polkit-gobject-1) -pkgconfig(sm) -pkgconfig(wayland-client) -pkgconfig(wayland-protocols) -pkgconfig(xapian-core) -pkgconfig(xcb-cursor) -pkgconfig(xcb-ewmh) -pkgconfig(xcb-keysyms) -pkgconfig(xcb-util) -pkgconfig(xfixes) -pkgconfig(xrender) -python -python3-chai -python3-psutil -python3-sphinx -python3-setuptools -qaccessibilityclient-devel -qcoro-qt5-devel -qgpgme-devel -plymouth-devel -qt5-*-devel -qt5-qtbase-static -qt5-qttools-static -qt6-*-devel -qtkeychain-qt5-devel -PackageKit -SDL2-devel -sassc -shared-mime-info -signon-devel -stellarsolver-devel -systemd-devel -texinfo -wcslib-devel -xdotool -xmlto -xorg-x11-drv-evdev-devel -xorg-x11-drv-libinput-devel -xorg-x11-drv-wacom-devel -xkeyboard-config-devel -# wayland -expat-devel -# poppler -nss-devel -libcurl-devel -# appstream -libyaml-devel -libstemmer-devel -gi-docgen -guidelines-support-library-devel diff --git a/data/pkg/freebsd.ini b/data/pkg/freebsd.ini deleted file mode 100644 index 0e636add..00000000 --- a/data/pkg/freebsd.ini +++ /dev/null @@ -1,39 +0,0 @@ -[pkg/freebsd/unknown] -automake -bison -boost-all -cmake -docbook-xsl -doxygen -eigen -gettext -gettext-tools -glib -gmake -gobject-introspection -gperf -gpgme -gtk-doc -intltool -itstool -libqrencode -libxmlb -libyaml -lmdb -meson -mlt7 -ninja -pkgconf -py39-gi-docgen -python3 -# Qt -qt6 -qt5 -qt5-wayland -snowballstemmer -texinfo -vala -wayland-protocols -xorg -# wayland -xmlto diff --git a/data/pkg/gentoo.ini b/data/pkg/gentoo.ini deleted file mode 100644 index ca4ac056..00000000 --- a/data/pkg/gentoo.ini +++ /dev/null @@ -1,32 +0,0 @@ -[pkg/gentoo/unknown] -dev-libs/icu -dev-libs/libdbusmenu-qt -dev-qt/designer:5 -dev-qt/linguist-tools:5 -dev-qt/linguist -dev-qt/pixeltool -dev-qt/qdoc:5 -dev-qt/qtconcurrent:5 -dev-qt/qtcore:5 -dev-qt/qtdbus:5 -dev-qt/qtdeclarative:5 -dev-qt/qtdiag:5 -dev-qt/qtgui:5 -dev-qt/qthelp:5 -dev-qt/qtmultimedia:5 -dev-qt/qtnetwork:5 -dev-qt/qtpaths:5 -dev-qt/qtprintsupport:5 -dev-qt/qtquickcontrols:5 -dev-qt/qtsql:5 -dev-qt/qttest:5 -dev-qt/qtwidgets:5 -dev-qt/qtx11extras:5 -dev-qt/qtxml:5 -dev-util/cmake -dev-util/gperf -dev-util/meson -dev-util/ninja -dev-vcs/git -sys-devel/clang -virtual/libintl diff --git a/data/pkg/mageia.ini b/data/pkg/mageia.ini deleted file mode 100644 index 2b881cbc..00000000 --- a/data/pkg/mageia.ini +++ /dev/null @@ -1,36 +0,0 @@ -[pkg/mageia/unknown] -bison -boost -cmake -docbook-style-xsl -docbook-utils -flex -gcc -gcc-c++ -gettext -gettext-devel -giflib -git -gperf -intltool -lib64lmdb-devel -libdbusmenu-qt5-devel -make -pkgconfig(dbus-1) -pkgconfig(gl) -pkgconfig(gstreamer-1.0) -pkgconfig(libattr) -pkgconfig(libnm) -pkgconfig(libpng) -pkgconfig(libqrencode) -pkgconfig(libxml-2.0) -pkgconfig(libxslt) -pkgconfig(ModemManager) -pkgconfig(openssl) -pkgconfig(polkit-gobject-1) -pkgconfig(sm) -pkgconfig(wayland-client) -pkgconfig(xcb-keysyms) -pkgconfig(xrender) -python -shared-mime-info diff --git a/data/pkg/opensuse.ini b/data/pkg/opensuse.ini deleted file mode 100644 index 5daa8537..00000000 --- a/data/pkg/opensuse.ini +++ /dev/null @@ -1,158 +0,0 @@ -[pkg/opensuse/unknown] -bison -clang -cmake -cmake(packagekitqt5) -cmake(packagekitqt6) -cmake(QCoro6) -cmake(Qt5Core) -cmake(Qt5Multimedia) -cmake(Qt5Qml) -cmake(Qt5QuickControls2) -cmake(Qt5QuickTemplates2) -cmake(Qt5Script) -cmake(Qt5Sensors) -cmake(Qt5Svg) -cmake(Qt5UiTools) -cmake(Qt5WaylandClient) -cmake(Qt5WebEngine) -cmake(Qt5WebView) -cmake(Qt5X11Extras) -cmake(Qt5XmlPatterns) -cmake(Qt6Concurrent) -cmake(Qt6Core) -cmake(Qt6Core5Compat) -cmake(Qt6DBus) -cmake(Qt6Gui) -cmake(Qt6LinguistTools) -cmake(Qt6Multimedia) -cmake(Qt6Network) -cmake(Qt6PrintSupport) -cmake(Qt6Qml) -cmake(Qt6Quick) -cmake(Qt6QuickControls2) -cmake(Qt6QuickTemplates2) -cmake(Qt6QuickTest) -cmake(Qt6QuickWidgets) -cmake(Qt6Sensors) -cmake(Qt6ShaderTools) -cmake(Qt6Sql) -cmake(Qt6Svg) -cmake(Qt6Test) -cmake(Qt6TextToSpeech) -cmake(Qt6ToolsTools) -cmake(Qt6UiTools) -cmake(Qt6WaylandClient) -cmake(Qt6WaylandCompositor) -cmake(Qt6WebSockets) -cmake(Qt6Widgets) -docbook-xsl-stylesheets -docbook_4 -doxygen -flex -libsndfile-devel -gettext-runtime -gettext-tools -giflib-devel -git -gperf -graphviz -gtk-doc -gtk3-devel -intltool -itstool -libAppStreamQt-devel -libboost_headers-devel -libdbusmenu-qt5-devel -libdisplay-info-devel -libepub-devel -libqt5-qtbase-common-devel -libqt5-qtbase-private-headers-devel -libqt5-qtimageformats-devel -libqt5-qtwayland-private-headers-devel -libQt5Core-private-headers-devel -libQt5DesignerComponents5 -libsensors4-devel -libxml2-tools -lmdb-devel -make -meson -ninja -olm-devel -openjpeg2-devel -pkgconfig(accounts-qt5) -pkgconfig(epoxy) -pkgconfig(exiv2) -pkgconfig(gbm) -pkgconfig(gobject-introspection-1.0) -pkgconfig(libattr) -pkgconfig(libavcodec) -pkgconfig(libavfilter) -pkgconfig(libavformat) -pkgconfig(libcanberra) -pkgconfig(libcec) -pkgconfig(libevdev) -pkgconfig(libfakekey) -pkgconfig(libical) -pkgconfig(libnl-3.0) -pkgconfig(libnm) -pkgconfig(libopenssl) -pkgconfig(libpcre) -pkgconfig(libpipewire-0.3) -pkgconfig(libpng) -pkgconfig(libqalculate) -pkgconfig(libqrencode) -pkgconfig(libsignon-qt5) -pkgconfig(libswscale) -pkgconfig(libudev) -pkgconfig(libva) -pkgconfig(libxcvt) -pkgconfig(libxml-2.0) -pkgconfig(libxslt) -pkgconfig(ModemManager) -pkgconfig(nss) -pkgconfig(pam) -pkgconfig(sm) -pkgconfig(wayland-protocols) -pkgconfig(wayland-server) -pkgconfig(xcb-cursor) -pkgconfig(xcb-ewmh) -pkgconfig(xcb-keysyms) -pkgconfig(xcb-util) -pkgconfig(xcursor) -pkgconfig(xfixes) -pkgconfig(xft) -pkgconfig(xkbfile) -pkgconfig(xorg-evdev) -pkgconfig(xorg-libinput) -pkgconfig(xorg-server) -pkgconfig(xorg-synaptics) -pkgconfig(xrender) -pkgconfig(xtst) -pkgconfig(xxf86vm) -pkgconfig(yaml-0.1) -plymouth-devel -polkit-devel -python3-setuptools -qcoro-qt5-devel -qt6-core-private-devel -qt6-gui-private-devel -qt6-printsupport-private-devel -qt6-quick-private-devel -qt6-waylandclient-private-devel -shared-mime-info -snowball-devel -vlc-devel -qt6-multimediawidgets-devel -openal-soft-devel -libxapian-devel -cyrus-sasl-devel -qt6-webenginewidgets-devel -qt6-networkauth-devel -zxing-cpp-devel -libpoppler-qt6-devel -liblcms2-devel -qt6-statemachine-devel -AppStream-devel -xdotool -openldap2-devel diff --git a/doc/man-kdesrc-build.1.docbook b/doc/man-kdesrc-build.1.docbook index 5483e425..514db8ae 100644 --- a/doc/man-kdesrc-build.1.docbook +++ b/doc/man-kdesrc-build.1.docbook @@ -131,6 +131,7 @@ combining short options into one at this point. (E.g. running software installed by &kdesrc-build; accessible. This is exactly equivalent to using "--install-distro-packages --generate-config" at the same time. + In kdesrc-build (perl implementation) it additionally uses "--install-distro-packages-perl". </para> </listitem> </varlistentry> diff --git a/doc/supported-cmdline-params.docbook b/doc/supported-cmdline-params.docbook index 2a8014b6..25ccfc7c 100644 --- a/doc/supported-cmdline-params.docbook +++ b/doc/supported-cmdline-params.docbook @@ -558,6 +558,7 @@ software to run. <option><link linkend="cmdline-install-distro-packages">--install-distro-packages</link></option> <option><link linkend="cmdline-generate-config">--generate-config</link></option> at the same time. + In kdesrc-build (perl implementation) it additionally uses "--install-distro-packages-perl". </para> </listitem> </varlistentry> diff --git a/kdesrc-build b/kdesrc-build index 1db44550..01e9a08b 100755 --- a/kdesrc-build +++ b/kdesrc-build @@ -89,9 +89,13 @@ eval { my @setup_steps; if (grep { $_ eq "--initial-setup" } @ARGV) { + push @setup_steps, "install-distro-packages-perl"; # pl2py: kdesrc-specific, not going to kde-builder push @setup_steps, "install-distro-packages"; push @setup_steps, "generate-config"; } else { + if (grep {$_ eq "--install-distro-packages-perl"} @ARGV) { # pl2py: kdesrc-specific, not going to kde-builder + push @setup_steps, "install-distro-packages-perl"; + } if (grep {$_ eq "--install-distro-packages"} @ARGV) { push @setup_steps, "install-distro-packages"; } @@ -112,6 +116,7 @@ if ($@) { say STDERR <<DONE; * kdesrc-build was unable to load initial setup support for some reason. * Did you remember to install the base dependencies for kdesrc-build? +* Ensure you have run --install-distro-packages-perl (included in --initial-setup) before you run further steps. * https://community.kde.org/Get_Involved/development/Set_up_a_development_environment#Install_basic_tools $@ diff --git a/modules/ksb/FirstRun.pm b/modules/ksb/FirstRun.pm index 2c61a111..790f6fd2 100644 --- a/modules/ksb/FirstRun.pm +++ b/modules/ksb/FirstRun.pm @@ -47,9 +47,29 @@ sub setupUserSystem my $os = ksb::OSSupport->new; eval { + if (grep { $_ eq "install-distro-packages-perl" } @setup_steps) { + say colorize("=== install-distro-packages-perl ==="); + my $perl_distro_deps_path = "$baseDir/data/perl-dependencies"; + _installSystemPackages($os, $perl_distro_deps_path); + } if (grep { $_ eq "install-distro-packages" } @setup_steps) { say colorize("=== install-distro-packages ==="); - _installSystemPackages($os); + + # The distro dependencies are listed in sysadmin/repo-metadata repository + # First, we need to download metadata with Application. + + eval { + require ksb::Application; # Do not import in the beginning, because perl packages may not yet be installed. + }; + if ($@){ + # We get here when even no perl-json-xs is installed. If it is, the other message will be shown. + say colorize (" r[b[*] r[Could not load Application. Ensure you have run b[--install-distro-packages-perl]r[ first."); + } + + ksb::Application->new(); # invokes _downloadKDEProjectMetadata internally + + my $metadata_distro_deps_path = ($ENV{XDG_STATE_HOME} // "$ENV{HOME}/.local/state") . "/sysadmin-repo-metadata/distro-dependencies"; + _installSystemPackages($os, $metadata_distro_deps_path); } if (grep { $_ eq "generate-config" } @setup_steps) { say colorize("=== generate-config ==="); @@ -82,9 +102,10 @@ sub _readPackages { my $vendor = shift; my $version = shift; + my $deps_data_path = shift; my %packages; - open(my $file, '<', "$baseDir/data/pkg/$vendor.ini") or _throw("Cannot open file \"$baseDir/data/pkg/$vendor.ini\""); + open(my $file, '<', "$deps_data_path/$vendor.ini") or _throw("Cannot open file \"$baseDir/data/pkg/$vendor.ini\""); my $cur_file; my $cur_value; my $commit = sub { @@ -110,38 +131,6 @@ sub _readPackages $commit->(); - # <editor-fold desc="Perl specific dependencies additions"> - # pl2py: This is perl specific, not going to kde-builder - my %packages2; - open(my $file2, '<', "$baseDir/data/perl-dependencies/$vendor.ini") or _throw("Cannot open file \"$baseDir/data/pkg/$vendor.ini\""); - my $cur_file2; - my $cur_value2; - my $commit2 = sub { - return unless $cur_file2; - $packages2{$cur_file2} = ($cur_value2 =~ s/ *$//r); - $cur_value2 = ''; - }; - - while(my $line = <$file2>) { - next if $line =~ /^\s*#/; - chomp $line; - - my ($fname) = ($line =~ /^\[ *([^ ]+) *\]$/); - if ($fname) { - $commit2->(); - $cur_file2 = $fname; - } - else { - $cur_value2 .= "$line\n"; - } - } - close($file2); - $commit2->(); - - # Merging - $packages{$cur_file} = $packages{$cur_file} . $packages2{$cur_file2}; - # </editor-fold> - return \%packages; } @@ -154,6 +143,7 @@ sub _throw sub _installSystemPackages { my $os = shift; + my $deps_data_path = shift; my $vendor = $os->vendorID; my $osVersion = $os->vendorVersion; @@ -161,7 +151,7 @@ sub _installSystemPackages b[-] Installing b[system packages] for b[$vendor]... DONE - my @packages = _findBestVendorPackageList($os); + my @packages = _findBestVendorPackageList($os, $deps_data_path); if (!@packages) { say colorize (" r[b[*] Packages could not be installed, because kdesrc-build does not know your distribution (" . $vendor .")"); return; @@ -399,6 +389,7 @@ sub _findBestInstallCmd sub _findBestVendorPackageList { my $os = shift; + my $deps_data_path = shift; # Debian handles Ubuntu also my @supportedDistros = qw/alpine arch debian fedora freebsd gentoo mageia opensuse/; @@ -406,13 +397,13 @@ sub _findBestVendorPackageList my $bestVendor = $os->bestDistroMatch(@supportedDistros); my $version = $os->vendorVersion(); say colorize (" Installing packages for b[$bestVendor]/b[$version]"); - return _packagesForVendor($bestVendor, $version); + return _packagesForVendor($bestVendor, $version, $deps_data_path); } sub _packagesForVendor { - my ($vendor, $version) = @_; - my $packagesRef = _readPackages($vendor, $version); + my ($vendor, $version, $deps_data_path) = @_; + my $packagesRef = _readPackages($vendor, $version, $deps_data_path); foreach my $opt ("pkg/$vendor/$version", "pkg/$vendor/unknown") { next unless exists $packagesRef->{$opt};