summaryrefslogtreecommitdiff
path: root/source/l/qt/qt.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/qt/qt.SlackBuild')
-rwxr-xr-xsource/l/qt/qt.SlackBuild301
1 files changed, 43 insertions, 258 deletions
diff --git a/source/l/qt/qt.SlackBuild b/source/l/qt/qt.SlackBuild
index 8954243b..3c4ca01d 100755
--- a/source/l/qt/qt.SlackBuild
+++ b/source/l/qt/qt.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2015 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,36 +20,22 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Merged some ideas from Alex Sarmardzic's script for qt4 at SlackBuilds.org
-# ^^ Modified by Robby Workman <rworkman@slackware.com> for QT4 & KDE4
+# This script builds Qt, packages it without WebKit, upgrades the machine to
+# a WebKit-less Qt, builds a WebKit package, merges the two packages, and
+# finally upgrades the machine to a combined package.
-# We're using qt-copy instead of a released qt version, as this git release
-# has at least one bugfix strongly recommended by the kde developers.
-
-# Obtained from:
-# git clone git://gitorious.org/+kde-developers/qt/kde-qt.git
-# git checkout origin/4.5.3-patched
-# git checkout origin/4.6.0-stable-patched
-# git checkout origin/4.6.1-patched
-# git checkout origin/4.7.0-patched
-#
-# Alternate method (we don't use this):
-# wget http://qt.gitorious.org/qt/kde-qt/archive-tarball/4.6.2-patched
-#
-# Modifications 2010, 2011, 2012 Eric Hameleers, Eindhoven, NL
-# qt 4.7.3, 4.7.4, 4.8.0, 4.8.1, 4.8.2, 4.8.4 are built from original nokia sources.
-
-PKGNAM=qt
-VERSION=$(ls qt-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
-BUILD=${BUILD:-2}
-
-NUMJOBS=${NUMJOBS:--j7}
+QTVERSION=$(ls qt-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
+# Adjust the combined package $BUILD in qt-nowebkit.SlackBuild:
+QTBUILD=$(grep BUILD= qt-nowebkit.SlackBuild | cut -f 2 -d - | cut -f 1 -d \})
+WEBKITVERSION=$(ls qtwebkit/qtwebkit-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
+# This $BUILD doesn't really need to change as long as these are combined:
+WEBKITBUILD=$(grep BUILD= qtwebkit/qtwebkit.SlackBuild | cut -f 2 -d - | cut -f 1 -d \})
# Automatically determine the architecture we're building on:
MARCH=$( uname -m )
if [ -z "$ARCH" ]; then
case "$MARCH" in
- i?86) export ARCH=i486 ;;
+ i?86) export ARCH=i586 ;;
armv7hl) export ARCH=$MARCH ;;
arm*) export ARCH=arm ;;
# Unless $ARCH is already set, use uname -m for all other archs:
@@ -57,246 +43,45 @@ if [ -z "$ARCH" ]; then
esac
fi
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-elif [ "$ARCH" = "armv7hl" ]; then
- # To prevent "qatomic_armv6.h error: output number 2 not directly addressable"
- # More permanent solution is to patch gcc:
- # http://bazaar.launchpad.net/~linaro-toolchain-dev/gcc-linaro/4.6/revision/106731
- SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -fno-strict-volatile-bitfields"
- LIBDIRSUFFIX=""
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-case "$ARCH" in
- arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
- *) TARGET=$ARCH-slackware-linux ;;
-esac
-
-CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
-cd $TMP
-rm -rf qt-everywhere-opensource-src-$VERSION
-tar xvf $CWD/qt-everywhere-opensource-src-$VERSION.tar.xz # For qt releases
-cd qt-everywhere-opensource-src-$VERSION || exit 1
-
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-if [ $ARCH = "i486" ]; then
- sed -i -e "s/QMAKE_CFLAGS_RELEASE += -O2/QMAKE_CFLAGS_RELEASE += $SLKCFLAGS/" mkspecs/common/gcc-base.conf || exit 1
+# Build Qt and package it without WebKit:
+rm -f $TMP/qt-${QTVERSION}-${ARCH}-${QTBUILD}.txz
+./qt-nowebkit.SlackBuild
+if [ ! -r $TMP/qt-${QTVERSION}-${ARCH}-${QTBUILD}.txz ]; then
+ echo "FATAL: Failed to build Qt package without WebKit."
+ exit 1
fi
-# Fix path to mysql header
-zcat $CWD/qt.mysql.h.diff.gz | patch -p1 --verbose || exit 1
-
-# gcc doesn't support flag "-fuse-ld=gold":
-zcat $CWD/qt.ld-gold.patch.gz | patch -p1 --verbose || exit 1
-
-# Stupid idea - remove it:
-zcat $CWD/qt.webkit-no_Werror.patch.gz | patch -p1 --verbose || exit 1
-
-export CFLAGS="$SLKCFLAGS"
-export CXXFLAGS="$SLKCFLAGS"
-export OPENSOURCE_CXXFLAGS="$SLKCFLAGS"
-./configure \
- -confirm-license \
- -opensource \
- -prefix /usr/lib${LIBDIRSUFFIX}/qt \
- -fast \
- -system-libpng \
- -system-libjpeg \
- -system-zlib \
- -system-sqlite \
- -plugin-sql-sqlite \
- -dbus \
- -webkit \
- -no-phonon \
- -nomake examples \
- -nomake demos \
- -nomake docs \
- -no-separate-debug-info \
- -no-pch
- # No-precompiled-headers is ccache-friendly.
-
-# Sometimes a failure happens when parallelizing make. Try again if make fails,
-# but make a failure the second time around (single threaded) a fatal error:
-make $NUMJOBS || make || exit 1
-make install INSTALL_ROOT=$PKG || exit 1
-
-# The infamous qt -> qt-${VERSION} link that keeps the full path out of .la files:
-( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf qt qt-${VERSION} )
-
-# Add a missing Qt.pc which is needed by KDE applications:
-mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig
-cat <<EOF > $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/Qt.pc
-prefix=/usr/lib${LIBDIRSUFFIX}/qt
-bindir=\${prefix}/bin
-datadir=\${prefix}
-docdir=\${prefix}/doc
-headerdir=\${prefix}/include
-importdir=\${prefix}/imports
-libdir=\${prefix}/lib
-moc=\${bindir}/moc
-plugindir=\${prefix}/plugins
-qmake=\${bindir}/qmake
-sysconfdir=\${prefix}/etc/settings
-translationdir=\${prefix}/translations
-
-Name: Qt
-Description: Qt Configuration
-Version: $VERSION
-EOF
-
-# libjscore is used internally. Prevent a false dependency on this in the .la and .pc files:
-sed -i "s,-ljscore,,g" $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/*.la $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/*.pc
-sed -i "s,-L../JavaScriptCore/release,,g" $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/*.la $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/*.pc
-
-# libwebcore is used internally. Prevent a false dependency on this in the .la and .pc files:
-sed -i \
- -e "s#-L/usr/lib${LIBDIRSUFFIX}/qt/lib -L../../WebCore/release -L../../JavaScriptCore/release -L/usr/X11R6/lib$LIBDIRSUFFIX -lwebcore##g" \
- -e "s#-L/usr/lib${LIBDIRSUFFIX}/qt/lib -L../../WebCore/release -L../../JavaScriptCore/release -L/usr/X11R6/lib -lwebcore##g" \
- -e "s# -lwebcore##g" \
- $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/libQtWebKit.la $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/QtWebKit.pc
-
-# Link the shared libraries into /usr/lib:
-( cd $PKG/usr/lib${LIBDIRSUFFIX}
- for file in qt/lib/*.so* ; do
- ln -sf $file .
- done
-)
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-
-# Add profile scripts
-mkdir -p $PKG/etc/profile.d
-sed -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" $CWD/profile.d/qt4.sh \
- > $PKG/etc/profile.d/qt4.sh
-sed -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" $CWD/profile.d/qt4.csh \
- > $PKG/etc/profile.d/qt4.csh
-chmod 0755 $PKG/etc/profile.d/*
-
-# Put a ton of links to more "normal" places. I'd just use a prefix of /usr, but it
-# creates a ton of new (and ambiguously named) /usr directories...
-mkdir -p $PKG/usr/bin
-( cd $PKG/usr/lib${LIBDIRSUFFIX}/qt/bin
- for file in * ; do
- ( cd $PKG/usr/bin ; ln -sf /usr/lib${LIBDIRSUFFIX}/qt/bin/$file . )
- done
-)
+# Upgrade system to Qt (without WebKit):
+/sbin/upgradepkg --reinstall --install-new $TMP/qt-${QTVERSION}-${ARCH}-${QTBUILD}.txz
+
+# Build standalone WebKit package (qtwebkit):
+rm -f $TMP/qtwebkit-${WEBKITVERSION}-${ARCH}-${WEBKITBUILD}.txz
+( cd qtwebkit
+ ./qtwebkit.SlackBuild )
+if [ ! -r $TMP/qtwebkit-${WEBKITVERSION}-${ARCH}-${WEBKITBUILD}.txz ]; then
+ echo "FATAL: Failed to build QtWebKit standalone package."
+ rm -f $TMP/qt-${QTVERSION}-${ARCH}-${QTBUILD}.txz
+ exit 1
+fi
-mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
-( cd $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig
- for file in *.pc ; do
- ( cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig ; ln -sf /usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/$file . )
- done
+# Combine the packages:
+rm -rf $TMP/package-qt
+mkdir -p $TMP/package-qt
+( cd $TMP/package-qt
+ /sbin/explodepkg $TMP/qtwebkit-${WEBKITVERSION}-${ARCH}-${WEBKITBUILD}.txz
+ /sbin/explodepkg $TMP/qt-${QTVERSION}-${ARCH}-${QTBUILD}.txz
+ cat $TMP/package-qtwebkit/install/doinst.sh | grep '^(' >> install/doinst.sh
+ mv usr/doc/qtwebkit-* usr/doc/qt-*
+ /sbin/makepkg -l y -c n ../qt-${QTVERSION}-${ARCH}-${QTBUILD}.txz
)
-# Install Qt's private headers - at least Gentoo and Fedora are adding these
-# and some software has (inevitably) started depending on them:
-# We're using `rsync -R` as easy way to preserve relative path names:
-rsync -aR \
- include/Qt{Core,Declarative,Gui,Script}/private \
- src/{corelib,declarative,gui,script}/*/*_p.h \
- ${PKG}/usr/lib${LIBDIRSUFFIX}/qt/
-
-# Add menu entries for all those hidden but great Qt applications:
-# Qt logo:
-convert $PKG/usr/lib$LIBDIRSUFFIX/qt/doc/src/images/qt-logo.png -resize 48x48 $PKG/usr/share/icons/hicolor/48x48/apps/qt-logo.png
-convert $PKG/usr/lib$LIBDIRSUFFIX/qt/doc/src/images/qt-logo.png -resize 48x48 $PKG/usr/share/icons/hicolor/48x48/apps/qt-logo.png
-# Assistant icons
-install -p -m644 -D tools/assistant/tools/assistant/images/assistant.png $PKG/usr/share/icons/hicolor/32x32/apps/assistant.png
-install -p -m644 -D tools/assistant/tools/assistant/images/assistant-128.png $PKG/usr/share/icons/hicolor/128x128/apps/assistant.png
-# Designer icon
-install -p -m644 -D tools/designer/src/designer/images/designer.png $PKG/usr/share/icons/hicolor/128x128/apps/designer.png
-# Linguist icons
-for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do
- size=$(echo $(basename ${icon}) | cut -d- -f2)
- install -p -m644 -D ${icon} $PKG/usr/share/icons/hicolor/${size}x${size}/apps/linguist.png
-done
-
-# And the .desktop files
-mkdir -p $PKG/usr/share/applications
-cat <<EOF > $PKG/usr/share/applications/designer.desktop
-[Desktop Entry]
-Name=Qt4 Designer
-GenericName=Interface Designer
-Comment=Design GUIs for Qt4 applications
-Exec=designer
-Icon=designer
-MimeType=application/x-designer;
-Terminal=false
-Encoding=UTF-8
-Type=Application
-Categories=Qt;Development;
-EOF
-cat <<EOF > $PKG/usr/share/applications/assistant.desktop
-[Desktop Entry]
-Name=Qt4 Assistant
-Comment=Shows Qt4 documentation and examples
-Exec=assistant
-Icon=assistant
-Terminal=false
-Encoding=UTF-8
-Type=Application
-Categories=Qt;Development;Documentation;
-EOF
-cat <<EOF > $PKG/usr/share/applications/linguist.desktop
-[Desktop Entry]
-Name=Qt4 Linguist
-Comment=Add translations to Qt4 applications
-Exec=linguist
-Icon=linguist
-MimeType=text/vnd.trolltech.linguist;application/x-linguist;
-Terminal=false
-Encoding=UTF-8
-Type=Application
-Categories=Qt;Development;
-EOF
-cat <<EOF > $PKG/usr/share/applications/qtconfig.desktop
-[Desktop Entry]
-Name=Qt4 Config
-Comment=Configure Qt4 behavior, styles, fonts
-Exec=qtconfig
-Icon=qt-logo
-Terminal=false
-Encoding=UTF-8
-Type=Application
-Categories=Qt;Settings;
-EOF
-
-# Add a documentation directory:
-mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
-cp -a *GPL_EXCEPTION* FAQ* INSTALL KNOWN* LICENSE* README* changes-* \
- $PKG/usr/doc/$PKGNAM-$VERSION
-if [ -d $PKG/usr/lib${LIBDIRSUFFIX}/qt/doc/html ]; then
- ( cd $PKG/usr/doc/$PKGNAM-$VERSION
- ln -sf /usr/lib${LIBDIRSUFFIX}/qt/doc/html .
- )
-fi
+# Remove intermediate qtwebkit package:
+rm -f $TMP/qtwebkit-${WEBKITVERSION}-${ARCH}-${WEBKITBUILD}.txz
-mkdir -p $PKG/install
-zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-cat $CWD/slack-desc > $PKG/install/slack-desc
+# Upgrade system to the combined Qt/WebKit package:
+/sbin/upgradepkg --reinstall --install-new $TMP/qt-${QTVERSION}-${ARCH}-${QTBUILD}.txz
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+# Done.