Commit 54ad694d authored by Thomas Schöps's avatar Thomas Schöps Committed by Friedrich W. H. Kossebau

AppImage: Update dependencies.

Qt: 5.9.8 -> 5.12.0
LLVM/Clang: 8.0.0 -> 8.0.1
KF5: v5.54.0 -> v5.61.0
parent a580d920
FROM centos:6.10
RUN yum -y update && yum -y install wget && yum -y install centos-release-scl epel-release && yum -y update && yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils wget tar bzip2 git libtool which fuse fuse-devel libpng-devel automake cppunit-devel cmake glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel libxml2-devel libstdc++-devel libXrender-devel patch xcb-util-keysyms-devel libXi-devel libudev-devel.x86_64 openssl-devel sqlite-devel.x86_64 gperftools.x86_64 gperf.x86_64 libicu-devel.x86_64 boost-devel.x86_64 libxslt-devel.x86_64 docbook-style-xsl.noarch python27.x86_64 cmake3.x86_64 ruby bison flex bison-devel ruby-devel flex-devel xz xz-devel pcre-devel pcre2-devel pcre pcre2 mesa-libEGL-devel mesa-libGL-devel glib-devel gettext perl-URI.noarch bzip2-devel.x86_64 subversion-devel.x86_64 subversion.x86_64 sqlite2-devel.x86_64 hunspell-devel aspell-devel hspell-devel vim sudo unzip xkeyboard-config
RUN yum -y update && yum -y install wget && yum -y install centos-release-scl epel-release && yum -y update && yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils wget tar bzip2 git libtool which fuse fuse-devel libjpeg-devel libpng-devel automake cppunit-devel cmake glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel libxml2-devel libstdc++-devel libXrender-devel libXcomposite libXcomposite-devel patch xcb-util-keysyms-devel libXi-devel libudev-devel.x86_64 openssl-devel sqlite-devel.x86_64 gperftools.x86_64 gperf.x86_64 libicu-devel.x86_64 boost-devel.x86_64 libxslt-devel.x86_64 docbook-style-xsl.noarch python27.x86_64 cmake3.x86_64 bison flex bison-devel flex-devel xz xz-devel pcre-devel pcre2-devel pcre pcre2 mesa-libEGL-devel mesa-libGL-devel glib-devel gettext perl-URI.noarch bzip2-devel.x86_64 subversion-devel.x86_64 subversion.x86_64 sqlite2-devel.x86_64 hunspell-devel aspell-devel hspell-devel vim sudo unzip xkeyboard-config libffi libffi-devel hyphen hyphen-devel
RUN cd /tmp && wget http://opensource.wandisco.com/rhel/6/svn-1.9/RPMS/x86_64/subversion-1.9.4-3.x86_64.rpm http://opensource.wandisco.com/rhel/6/svn-1.9/RPMS/x86_64/subversion-devel-1.9.4-3.x86_64.rpm http://opensource.wandisco.com/rhel/6/svn-1.9/RPMS/x86_64/serf-1.3.7-1.x86_64.rpm && yum -y install subversion* serf*; rm subversion* serf*
RUN echo ". /opt/rh/devtoolset-6/enable && chmod +x /opt/rh/python27/enable && . /opt/rh/python27/enable" >> /root/.bashrc
ENV LANG=en_US.UTF-8 PYTHON_VERSION=3.6.7 QTVERSION=5.9.8 QTVERSION_SHORT=5.9 LLVM_VERSION=8.0.0 LLVM_ROOT=/opt/llvm/ LD_LIBRARY_PATH=$QTDIR/lib/
ENV LANG=en_US.UTF-8 PYTHON_VERSION=3.6.7 QTVERSION=5.12.0 QTVERSION_SHORT=5.12 LLVM_VERSION=8.0.1 LLVM_ROOT=/opt/llvm/ RUBY_VERSION=1.9.3-p484 GLIB_VERSION_SHORT=2.61 GLIB_VERSION=2.61.2 LD_LIBRARY_PATH=$QTDIR/lib/
ENV QTDIR=/opt/qt5
RUN bash -c "ln -sf /opt/rh/devtoolset-6/root/usr/bin/g++ /usr/bin/g++ && ln -sf /opt/rh/devtoolset-6/root/usr/bin/c++ /usr/bin/c++"
# Build Qt5
RUN bash -c "mkdir -p /qt && cd /qt && wget https://download.qt.io/archive/qt/${QTVERSION_SHORT}/${QTVERSION}/single/qt-everywhere-opensource-src-${QTVERSION}.tar.xz"
RUN bash -c "cd /qt && tar xvf qt-everywhere-opensource-src-${QTVERSION}.tar.xz"
RUN bash -c "export MAKEFLAGS=-j$(nproc) && cd /qt/qt-everywhere-opensource-src-${QTVERSION} && ./configure -v -skip qt3d -skip qtconnectivity -skip qtgamepad -skip qtlocation -skip qtcharts -skip qtremoteobjects -skip qtscxml -skip qtsensors -skip qtpurchasing -platform linux-g++ -qt-pcre -qt-xcb -qt-xkbcommon-x11 -xkb-config-root /usr/share/X11/xkb -no-pch -nomake tests -nomake examples -confirm-license -opensource -prefix $QTDIR && make -j$(nproc) || make -j 1 install; make -j$(nproc) install && rm -Rf /qt"
# Build Qt5. Version 5.12.0 seems to be the latest that comes with xkbcommon, which is not available on CentOS 6: https://forum.qt.io/topic/104664/building-qt-5-12-on-centos-6
RUN bash -c "mkdir -p /qt && cd /qt && wget https://download.qt.io/archive/qt/${QTVERSION_SHORT}/${QTVERSION}/single/qt-everywhere-src-${QTVERSION}.tar.xz"
RUN bash -c "cd /qt && tar xvf qt-everywhere-src-${QTVERSION}.tar.xz"
RUN bash -c "export MAKEFLAGS=-j$(nproc) && cd /qt/qt-everywhere-src-${QTVERSION} && ./configure -v -skip qt3d -skip qtconnectivity -skip qtgamepad -skip qtlocation -skip qtcharts -skip qtremoteobjects -skip qtscxml -skip qtsensors -skip qtpurchasing -platform linux-g++ -qt-pcre -qt-xcb -qt-xkbcommon-x11 -no-pch -nomake tests -nomake examples -confirm-license -opensource -prefix $QTDIR && make -j$(nproc) || make -j 1 install; make -j$(nproc) install && rm -Rf /qt"
RUN ln -sf $QTDIR/bin/qmake /usr/bin/qmake-qt5
# Build qtwebkit
RUN bash -c "mkdir -p /qtwk && cd /qtwk && wget https://download.qt.io/archive/qt/${QTVERSION_SHORT}/5.9.1/submodules/qtwebkit-opensource-src-5.9.1.tar.xz"
RUN bash -c "cd /qtwk/ && tar xvf qtwebkit-opensource-src-5.9.1.tar.xz"
RUN bash -c "cd /qtwk/qtwebkit-opensource-src-5.9.1 && $QTDIR/bin/qmake && make -j$(nproc) || make -j$(nproc) && make -j$(nproc) install && rm -Rf /qtwk"
# Build Ruby >= 1.9, required for qtwebkit
RUN bash -c "mkdir -p /ruby && cd /ruby && wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-${RUBY_VERSION}.tar.gz"
RUN bash -c "cd /ruby/ && tar zxvf ruby-${RUBY_VERSION}.tar.gz"
RUN bash -c "cd /ruby/ruby-${RUBY_VERSION} && ./configure && make -j$(nproc) && make -j$(nproc) install && rm -Rf /ruby"
# Build Python
RUN bash -c "mkdir -p /python && cd /python && wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz && tar xvf Python-$PYTHON_VERSION.tar.xz && cd /python/Python-$PYTHON_VERSION && mkdir -p /usr/lib/pkgconfig && ./configure --prefix=/usr --enable-shared && make -j$(nproc) install && rm -Rf /python"
# Install ninja (1.8.2 latest working with libc of centos:6.10)
RUN bash -c "yum install unzip && mkdir -p /tmp/deploy && cd /tmp/deploy && wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip && unzip ninja-linux.zip && mv -f ninja /usr/local/bin && cd .. && rm -Rf deploy"
# Install meson, required to build recent versions of glib
RUN bash -c "ldconfig && pip3 install meson"
# Build glib >= 2.36, required for qtwebkit
RUN bash -c "mkdir -p /glib && cd /glib && wget http://ftp.gnome.org/pub/GNOME/sources/glib/${GLIB_VERSION_SHORT}/glib-${GLIB_VERSION}.tar.xz"
RUN bash -c "cd /glib/ && tar xvf glib-${GLIB_VERSION}.tar.xz"
RUN bash -c ". /opt/rh/devtoolset-6/enable && cd /glib/glib-${GLIB_VERSION} && meson -D libmount=false _build && ninja -C _build && ninja -C _build install && rm -Rf /glib"
# Build ICU >= 52.1, required for qtwebkit
RUN bash -c "mkdir -p /icu && cd /icu && wget https://github.com/unicode-org/icu/releases/download/release-52-2/icu4c-52_2-src.tgz"
RUN bash -c "cd /icu/ && tar xvf icu4c-52_2-src.tgz"
RUN bash -c ". /opt/rh/devtoolset-6/enable && cd /icu/icu/source && ./configure --prefix /opt/icu4c-52_2 && make -j$(nproc) && make -j$(nproc) install && rm -Rf /icu && echo "/opt/icu4c-52_2/lib/" > /etc/ld.so.conf.d/icu4c-52_2.conf && ldconfig"
# Build qtwebkit
RUN bash -c "mkdir -p /qtwk && cd /qtwk && wget https://github.com/qt/qtwebkit/archive/v5.212.0-alpha3.tar.gz"
RUN bash -c "cd /qtwk/ && tar xvf v5.212.0-alpha3.tar.gz"
# libxml2 2.6.0 "will probably work" according to https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux
RUN bash -c ". /opt/rh/python27/enable && . /opt/rh/devtoolset-6/enable && sed -i 's/find_package(LibXml2 2.8.0 REQUIRED)/find_package(LibXml2 2.6.0 REQUIRED)/g' /qtwk/qtwebkit-5.212.0-alpha3/Source/cmake/OptionsQt.cmake && mkdir -p /qtwk/qtwebkit-5.212.0-alpha3/WebKitBuild/Release && cd /qtwk/qtwebkit-5.212.0-alpha3/WebKitBuild/Release && PKG_CONFIG_PATH=/opt/icu4c-52_2/lib/pkgconfig/:${PKG_CONFIG_PATH} cmake3 -DPORT=Qt -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=${QTDIR}/lib/cmake/Qt5 -DENABLE_GEOLOCATION=0 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_WEB_AUDIO=0 -DENABLE_VIDEO=0 ../.. && make -j$(nproc) && make -j$(nproc) install && rm -Rf /qtwk"
# Build Clang/LLVM
RUN bash -c "mkdir -p /llvm && cd /llvm && wget https://releases.llvm.org/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz"
RUN bash -c "mkdir -p /llvm && cd /llvm && wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz"
RUN bash -c "cd /llvm && tar xvf llvm-${LLVM_VERSION}.src.tar.xz && cd llvm-${LLVM_VERSION}.src"
RUN bash -c "cd /llvm/llvm-${LLVM_VERSION}.src/tools && wget https://llvm.org/releases/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz"
RUN bash -c "cd /llvm/llvm-${LLVM_VERSION}.src/tools && wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz"
RUN bash -c "cd /llvm/llvm-${LLVM_VERSION}.src/tools && tar xvf cfe-${LLVM_VERSION}.src.tar.xz"
RUN bash -c ". /opt/rh/python27/enable && . /opt/rh/devtoolset-6/enable && python --version && cd /llvm/llvm-${LLVM_VERSION}.src && mkdir -p build && cd build && cmake3 -G Ninja .. -DCMAKE_INSTALL_PREFIX=/opt/llvm/ -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_TARGETS_TO_BUILD=X86 && ninja install && rm -Rf /llvm"
# Build Python
RUN bash -c "mkdir -p /python && cd /python && wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz && tar xvf Python-$PYTHON_VERSION.tar.xz && cd /python/Python-$PYTHON_VERSION && mkdir -p /usr/lib/pkgconfig && ./configure --prefix=/usr --enable-shared && make -j$(nproc) install && rm -Rf /python"
CMD /bin/bash
......@@ -4,7 +4,7 @@ To build the AppImage, you basically just have to:
```
docker pull centos:6.10
docker build <path/to/this/folder/where/Dockerfile>
docker build <path/to/this_directory_containing_the_Dockerfile>
```
Building the image will take several hours at least.
......
diff --git a/autotests/kconfigtest.cpp b/autotests/kconfigtest.cpp
index 410b5b8..9af3b46 100644
--- a/autotests/kconfigtest.cpp
+++ b/autotests/kconfigtest.cpp
@@ -38,7 +38,7 @@
#include <utime.h>
#endif
#ifndef Q_OS_WIN
-#include <unistd.h> // gethostname
+#include <unistd.h> // getuid
#endif
KCONFIGGROUP_DECLARE_ENUM_QOBJECT(KConfigTest, Testing)
@@ -546,14 +546,8 @@ void KConfigTest::testPath()
QCOMPARE(group.readPathEntry("withBraces", QString()), QString("file://" + HOMEPATH));
QVERIFY(group.hasKey("URL"));
QCOMPARE(group.readEntry("URL", QString()), QString("file://" + HOMEPATH));
-#if !defined(Q_OS_WIN32) && !defined(Q_OS_MAC)
- // I don't know if this will work on windows
- // This test hangs on OS X
QVERIFY(group.hasKey("hostname"));
- char hostname[256];
- QVERIFY(::gethostname(hostname, sizeof(hostname)) == 0);
- QCOMPARE(group.readEntry("hostname", QString()), QString::fromLatin1(hostname));
-#endif
+ QCOMPARE(group.readEntry("hostname", QString()), QStringLiteral("(hostname)")); // the $ got removed because empty var name
QVERIFY(group.hasKey("noeol"));
QCOMPARE(group.readEntry("noeol", QString()), QString("foo"));
diff --git a/docs/options.md b/docs/options.md
index c634c00..4a6e9bc 100644
--- a/docs/options.md
+++ b/docs/options.md
@@ -67,18 +67,15 @@ environment variables (and `XDG_CONFIG_HOME` in particular).
Shell Expansion
---------------
-If an entry is marked with `$e`, environment variables and shell commands will
-be expanded.
+If an entry is marked with `$e`, environment variables will be expanded.
Name[$e]=$USER
- Host[$e]=$(hostname)
When the "Name" entry is read `$USER` will be replaced with the value of the
-`$USER` environment variable, and `$(hostname)` will be replaced with the output
-of the `hostname` command.
+`$USER` environment variable.
-Note that the application will replace `$USER` and `$(hostname)` with their
-respective expanded values after saving. To prevent this combine the `$e` option
+Note that the application will replace `$USER` with its
+expanded value after saving. To prevent this combine the `$e` option
with `$i` (immmutable) option. For example:
Name[$ei]=$USER
diff --git a/src/core/kconfig.cpp b/src/core/kconfig.cpp
index e1b11ed..f6824ce 100644
--- a/src/core/kconfig.cpp
+++ b/src/core/kconfig.cpp
@@ -28,19 +28,6 @@
#include <cstdlib>
#include <fcntl.h>
-#ifdef _MSC_VER
-static inline FILE *popen(const char *cmd, const char *mode)
-{
- return _popen(cmd, mode);
-}
-static inline int pclose(FILE *stream)
-{
- return _pclose(stream);
-}
-#else
-#include <unistd.h>
-#endif
-
#include "kconfigbackend_p.h"
#include "kconfiggroup.h"
@@ -183,29 +170,7 @@ QString KConfigPrivate::expandString(const QString &value)
int nDollarPos = aValue.indexOf(QLatin1Char('$'));
while (nDollarPos != -1 && nDollarPos + 1 < aValue.length()) {
// there is at least one $
- if (aValue[nDollarPos + 1] == QLatin1Char('(')) {
- int nEndPos = nDollarPos + 1;
- // the next character is not $
- while ((nEndPos <= aValue.length()) && (aValue[nEndPos] != QLatin1Char(')'))) {
- nEndPos++;
- }
- nEndPos++;
- QString cmd = aValue.mid(nDollarPos + 2, nEndPos - nDollarPos - 3);
-
- QString result;
-
-// FIXME: wince does not have pipes
-#ifndef _WIN32_WCE
- FILE *fs = popen(QFile::encodeName(cmd).data(), "r");
- if (fs) {
- QTextStream ts(fs, QIODevice::ReadOnly);
- result = ts.readAll().trimmed();
- pclose(fs);
- }
-#endif
- aValue.replace(nDollarPos, nEndPos - nDollarPos, result);
- nDollarPos += result.length();
- } else if (aValue[nDollarPos + 1] != QLatin1Char('$')) {
+ if (aValue[nDollarPos + 1] != QLatin1Char('$')) {
int nEndPos = nDollarPos + 1;
// the next character is not $
QStringRef aVarName;
......@@ -27,9 +27,9 @@ fi
if [ -z "$KDEV_PG_QT_VERSION" ]; then
KDEV_PG_QT_VERSION=v2.2.0
fi
KF5_VERSION=v5.54.0
KDE_PLASMA_BREEZE_VERSION=v5.13.5 # latest version still supporting Qt 5.9
LIBKSYSGUARD_VERSION=v5.15.5 # latest version still supporting Qt 5.9
KF5_VERSION=v5.61.0
KDE_PLASMA_BREEZE_VERSION=v5.16.4
LIBKSYSGUARD_VERSION=v5.16.4
KDE_APPLICATION_VERSION=v19.04.3
GRANTLEE_VERSION=v5.1.0
OKTETA_VERSION=v0.26.2
......@@ -155,7 +155,7 @@ function build_framework
if [ -z "$SKIP_FRAMEWORKS" ]; then
build_framework extra-cmake-modules -DBUILD_HTML_DOCS=OFF -DBUILD_MAN_DOCS=OFF
(PATCH_FILE=$SCRIPT_DIR/kconfig_no_execution_of_values.patch build_framework kconfig)
build_framework kconfig
build_framework kguiaddons
build_framework ki18n
build_framework kitemviews
......@@ -427,7 +427,7 @@ export APPIMAGE_STARTUP_XDG_DATA_DIRS=\$XDG_DATA_DIRS
export APPIMAGE_STARTUP_PATH=\$PATH
export APPIMAGE_STARTUP_PYTHONHOME=\$PYTHONHOME
export KDEV_CLANG_BUILTIN_DIR=\$DIR/opt/llvm/lib/clang/8.0.0/include
export KDEV_CLANG_BUILTIN_DIR=\$DIR/opt/llvm/lib/clang/${LLVM_VERSION}/include
export KDEV_DISABLE_PLUGINS="KDevWelcomePage;KDevManPage"
cd \$HOME
......
......@@ -2,12 +2,20 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt
index da34e23..87fef63 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -86,7 +86,7 @@ else()
PURPOSE "Needed to build audio notification support when Canberra isn't available")
if (NOT ANDROID)
# This is REQUIRED since you cannot tell CMake "either one of those two optional ones are required"
- set_package_properties(Phonon4Qt5 PROPERTIES TYPE REQUIRED)
+# set_package_properties(Phonon4Qt5 PROPERTIES TYPE REQUIRED)
endif()
if (Phonon4Qt5_FOUND)
add_definitions(-DHAVE_PHONON4QT5)
@@ -81,11 +81,11 @@
add_definitions(-DHAVE_CANBERRA)
elseif(NOT ANDROID)
# This is REQUIRED since you cannot tell CMake "either one of those two optional ones are required"
- find_package(Phonon4Qt5 4.6.60 NO_MODULE REQUIRED)
- set_package_properties(Phonon4Qt5 PROPERTIES
- DESCRIPTION "Qt-based audio library"
- PURPOSE "Needed to build audio notification support when Canberra isn't available")
- add_definitions(-DHAVE_PHONON4QT5)
+# find_package(Phonon4Qt5 4.6.60 NO_MODULE REQUIRED)
+# set_package_properties(Phonon4Qt5 PROPERTIES
+# DESCRIPTION "Qt-based audio library"
+# PURPOSE "Needed to build audio notification support when Canberra isn't available")
+# add_definitions(-DHAVE_PHONON4QT5)
endif()
remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment