diff --git a/kdesrc-build-setup b/kdesrc-build-setup index 2f2a06e..5c437a3 100755 --- a/kdesrc-build-setup +++ b/kdesrc-build-setup @@ -220,9 +220,6 @@ modules. EOF } -my $dev = getYesNoAnswer('Do you already have commit ' . - 'access to the KDE repositories?'); - # If the user appears to be using a proxy, ask for it directly, otherwise # prompt for one. my $proxy = $ENV{http_proxy} // ''; @@ -345,17 +342,14 @@ print $output <getOption('install-session-driver'); if (!pretending()) { - if (! -e "$destDir/kde-env-user.sh") { - copy($userSample, "$destDir/kde-env-user.sh") or do { - warning ("b[*] Unable to install b[$userSample]: $!"); - warning ("b[*] You should create b[~/.config/kde-env-user.sh] yourself or fix the error and re-run"); - }; - } - if ($ctx->getOption('install-session-driver') && !chmod (0744, "$ENV{HOME}/.xsession")) { error ("\tb[r[*] Error making b[~/.xsession] executable: $!"); error ("\tb[r[*] If this file is not executable you may not be able to login!"); diff --git a/sample-kde-env-master.sh b/sample-kde-env-master.sh index 883a770..b115bd6 100644 --- a/sample-kde-env-master.sh +++ b/sample-kde-env-master.sh @@ -1,56 +1,52 @@ #!/bin/sh # -# This sets the various environment variables needed to start a KDE desktop -# built by kdesrc-build, or to run programs/build programs/etc. in the same -# environment. +# This sets the various environment variables needed to start Plasma (or other KDE +# software built by kdesrc-build), or to run programs/build programs/etc. in the +# same environment, ideally without clashing with system-built KDE or Qt. # # This should not produce any output in order to make it usable by # non-interactive scripts. # -# See also the sample xsession setup script which requires this file. +# See also the sample xsession setup script, which requires this file. # # Use by copying this script to $XDG_CONFIG_HOME/kde-env-master.sh (this will # be done for you by kdesrc-build and/or kdesrc-build-setup, later). 99% of the # time this means ~/.config/kde-env-master.sh # # NOTHING IN THIS FILE IS MODIFIABLE, OTHERWISE WARNINGS WILL BE GENERATED +# (instead make your changes in your ~/.bashrc, ~/.bash_profile, or whatever else +# you are using) # === Load user environment settings (i.e. not set through kdesrc-buildrc) XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" - -# ALL USER MODS GO HERE ↴ -if test -f "$XDG_CONFIG_HOME/kde-env-user.sh"; then - . "$XDG_CONFIG_HOME/kde-env-user.sh" -fi +export XDG_CONFIG_HOME # === Modifiable variables. Should be set automatically by kdesrc-build based # on kdesrc-buildrc settings. Nothing below this line is user-modifiable! -# kdesrc-build: filter | The KDESRC_BUILD_TESTING stuff is to allow the script to -# kdesrc-build: filter | be executable by testsuite. It is filtered from destination. -if ! test -n "$KDESRC_BUILD_TESTING"; then # kdesrc-build: filter +# The KDESRC_BUILD_TESTING stuff is to allow the script to # kdesrc-build: filter +# be executable by testsuite. It is filtered from destination. # kdesrc-build: filter +if ! test -n "$KDESRC_BUILD_TESTING"; then # kdesrc-build: filter # Where KDE libraries and applications are installed to. -kde_prefix="<% kdedir %>" # E.g. "$HOME/kde-4" +kde_prefix="<% kdedir %>" # E.g. "$HOME/kf5" -# Where Qt is installed to. If using the system Qt, leave blank or set to -# 'auto' and this script will try to auto-detect. -qt_prefix="<% qtdir %>" # E.g. "$HOME/qt4" or "/usr" on many systems. -else # kdesrc-build: filter -kde_prefix="$HOME/kde" # kdesrc-build: filter -qt_prefix="$HOME/qt4" # kdesrc-build: filter -fi # kdesrc-build: filter +# Where Qt is installed to. If using the system Qt, leave blank and this script +# will try to auto-detect. +qt_prefix="<% qtdir %>" # E.g. "$HOME/qt5" or "/usr" on many systems. +else # kdesrc-build: filter +kde_prefix="$HOME/kf5" # kdesrc-build: filter +qt_prefix="$HOME/qt5" # kdesrc-build: filter +fi # kdesrc-build: filter # === End of modifiable variables. -# Set defaults if these are unset or null. ':' is a null command -: ${lib_suffix:=""} -: ${user_path:=""} -: ${KDEHOME:="$HOME/.kde4-self"} +# Default qmake executable if we don't find a better one +qmake=qmake -# Find system Qt +# Find system Qt5 if test -z "$qt_prefix"; then - # Find right qmake - for qmake_candidate in qmake-qt4 qmake4 qmake; do + # Find right qmake, look for specific executables first + for qmake_candidate in qmake-qt5 qmake5; do if ${qmake_candidate} --version >/dev/null 2>&1; then qmake="$qmake_candidate" break; @@ -60,14 +56,6 @@ if test -z "$qt_prefix"; then qt_prefix=$(${qmake} -query QT_INSTALL_PREFIX 2>/dev/null) test -z "$qt_prefix" && qt_prefix="/usr" # Emergency fallback? - - echo "Using Qt found in $qt_prefix" -fi - -# Try to auto-determine lib suffix if not set. This requires KDE to already -# have been installed though. -if test -z "$lib_suffix" && test -x "$kde_prefix/bin/kde4-config"; then - lib_suffix=$("$kde_prefix/bin/kde4-config" --libsuffix 2>/dev/null) fi # Add path elements to a colon-separated environment variable, @@ -78,36 +66,42 @@ path_add() { eval curVal=\$'{'$1'-}' - if [ -n "$curVal" ]; then - eval "$1"="$2:$curVal"; + if test -n "$curVal"; then + eval "$1"="$2:'$curVal'"; else - eval "$1"="$2" + eval "$1"="'$2'" fi } -# Initialize some variables based on Qt and KDE install paths. -# Since this should be run as .xsession there's no guarantee of any -# user-specific variables being set already. -libname="lib$lib_suffix" - # Now add the necessary directories, starting with Qt (although we don't add Qt # if it's system Qt to avoid moving /usr up in the PATH. +# Note that LD_LIBRARY_PATH *should* be extraneous with KF5 and Qt5 if test "x$qt_prefix" != "x/usr"; then - path_add "PATH" "$qt_prefix/bin"; - path_add "LD_LIBRARY_PATH" "$qt_prefix/$libname"; - path_add "PKG_CONFIG_PATH" "$qt_prefix/$libname/pkgconfig"; - path_add "MANPATH" "$qt_prefix/share/man"; + path_add "PATH" "$(${qmake} -query QT_INSTALL_BINS 2>/dev/null)"; + path_add "PKG_CONFIG_PATH" "$(${qmake} -query QT_INSTALL_LIBS 2>/dev/null)/pkgconfig"; +fi + +# There doesn't seem to be a great way to get this from CMake easily +# but we can reason that if there's a /usr/lib64, there will likely end +# up being a $kde_prefix/lib64 once kdesrc-build gets done installing it +libname=lib +if test -d /usr/lib64; then + libname=lib64 fi # Now add KDE-specific paths. path_add "PATH" "$kde_prefix/bin"; -path_add "LD_LIBRARY_PATH" "$kde_prefix/$libname"; -path_add "PKG_CONFIG_PATH" "$kde_prefix/$libname/pkgconfig"; +# For some reason I've seen both of lib and lib64 used. I think due +# to qmake vs. cmake modules +if test $libname = lib64; then + path_add "PKG_CONFIG_PATH" "$kde_prefix/lib64/pkgconfig"; +fi +path_add "PKG_CONFIG_PATH" "$kde_prefix/lib/pkgconfig"; path_add "MANPATH" "$kde_prefix/share/man"; path_add "CMAKE_PREFIX_PATH" "$kde_prefix"; -path_add "KDEDIRS" "$kde_prefix"; -path_add "QML_IMPORT_PATH" "$kde_prefix/$libname/kde4/imports"; -path_add "STRIGI_PLUGIN_PATH" "$kde_prefix/$libname/strigi"; +path_add "QML2_IMPORT_PATH" "$kde_prefix/$libname/qml"; +path_add "QT_PLUGIN_PATH" "$kde_prefix/$libname/qt5/plugins" # phonon likes this one +path_add "QT_PLUGIN_PATH" "$kde_prefix/$libname/plugins" # others like this more # For Python bindings support. path_add "PYTHONPATH" "$kde_prefix/$libname/site-packages"; @@ -116,30 +110,13 @@ path_add "PYTHONPATH" "$kde_prefix/$libname/site-packages"; path_add "XDG_DATA_DIRS" "$kde_prefix/share"; path_add "XDG_CONFIG_DIRS" "$kde_prefix/etc/xdg"; -# -### Some Convenience stuff -# -if test -n "$user_path"; then - path_add "PATH" "$user_path" -fi - -test -d "$HOME/local/bin" && path_add "PATH" "$HOME/local/bin" -test -d "$HOME/local/man" && path_add "MANPATH" "$HOME/local/man" - # Finally, export the variables. export CMAKE_PREFIX_PATH -export KDEDIRS -export LD_LIBRARY_PATH export PATH export PKG_CONFIG_PATH export PYTHONPATH -export QML_IMPORT_PATH -export STRIGI_PLUGIN_PATH +export QML2_IMPORT_PATH +export QT_PLUGIN_PATH export XDG_DATA_DIRS export XDG_CONFIG_DIRS export MANPATH -export KDEHOME - -if ! test -e "$KDEHOME"; then - mkdir -p "$KDEHOME" >/dev/null 2>&1 -fi diff --git a/sample-kde-env-user.sh b/sample-kde-env-user.sh deleted file mode 100644 index b1bce52..0000000 --- a/sample-kde-env-user.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -# -# This is a sample user customization script. Unlike other example environment -# setup files, this one can be modified by the user, and kdesrc-build will not -# warn about it or overwrite it. -# -# This file should be installed to $XDG_CONFIG_HOME/kde-env-user.sh (which -# normally means ~/.config/kde-env-user.sh) -# -# As long as it is found here, the kdesrc-build sample session and environment -# setup scripts will pull in settings from that file first. - -### Variables supported by the environment script: - -# Directory to use for KDE configuration and other user customizations. -# Syntax uses existing value if set, otherwise sets a different one. -# You can also leave blank, but this risks interfering with system KDE. -KDEHOME="$HOME/.kde4-self" - -# "Bitness" suffix to use for library directories. If left blank, will try to -# auto-detect from installed KDE's compiled defaults, which may still leave -# this blank. -lib_suffix="" # Or 32, or 64, as appropriate for your system. -# lib_suffix="32" -# lib_suffix="64" - -# Additional paths to add to PATH, can be left blank. -user_path="" # Set to colon-separated PATH to add to the Qt/KDE paths. - -### KDE-specific environment variables: -# KDE supports various environment variables that might be useful for your -# kdesrc-build desktop. See also: -# https://techbase.kde.org/KDE_System_Administration/Environment_Variables - -KDE_COLOR_DEBUG=1 -export KDE_COLOR_DEBUG # Be sure to "export" variables you set yourself. - -# If more user customizations to the environment are needed, you can add them -# here.