Giter Club home page Giter Club logo

qt-debug-pkgbuild's Introduction

This repository is now archived. Nowadays, Archlinux provides debug information as part of their official packages, via their Debuginfod server. When you set DEBUGINFOD_URLS="https://debuginfod.archlinux.org/" in your environment, tools like gdb will automatically download debug information.

qt-debug-pkgbuild

Archlinux PKGBUILDs for Qt5/PyQt5 with debugging enabled.

A note on branches

  • upstream: The vanilla Archlinux upstream packages.
  • master: Based on upstream, adds debugging symbols.

Precompiled binary packages

Binary packages for the master branch are available as an unofficial Archlinux repo. See the qutebrowser documentation for details.

Workflow

Until Qt 5.7, the patched PKGBUILDs lived in the master branch, and the upstream branch (with the vanilla Archlinux PKGBUILDs) got merged into upstream after updating. However, this caused frequent merge conflicts as the patched lines are close to the version number.

Since Qt 5.7, there are no merges anymore - instead, the updated upstream PKGBUILDs live in the upstream branch, and patching is automated using patch.sh.

Here is how an update looks:

Update upstream

  • git checkout upstream
  • bash update.sh
  • git status, add new files
  • git diff, review upstream changes
  • `git commit -am "Update to Qt 5.x.y"
  • git push

Update patched PKGBUILDs

  • git checkout master
  • git rm -r qt5-* pyqt*
  • git checkout upstream -- qt5-\* pyqt\* pkglist
  • git reset HEAD . (unstage all changes)
  • bash patch.sh
  • git status, add/delete files
  • git diff --staged, review
  • git commit
  • Add new makedepends in Dockerfile if needed
  • git commit
  • git push

Rebuild

  • bash build_segfault.sh

qt-debug-pkgbuild's People

Contributors

foxboron avatar the-compiler avatar vilhalmer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

qt-debug-pkgbuild's Issues

cannot install packages: "The requested URL returned error: 404"

error when I try to install any package from your repo

error: failed retrieving file 'qt5-webkit-debug-5.212.0alpha3-8-x86_64.pkg.tar.xz' from qutebrowser.org : The requested URL returned error: 404
warning: failed to retrieve some files

error: failed retrieving file 'qt5-translations-debug-5.14.0-1-any.pkg.tar.xz' from qutebrowser.org : The requested URL returned error: 404
warning: failed to retrieve some files

error: failed retrieving file 'qt5-networkauth-debug-5.14.0-1-x86_64.pkg.tar.xz' from qutebrowser.org : The requested URL returned error: 404
warning: failed to retrieve some files

error: failed to commit transaction (failed to retrieve some files)
Errors occurred, no packages were upgraded.

Support multiple arguments to patch.sh

$ bash patch.sh qt5-{base,imageformats,virtualkeyboard,webkit}                                               
+ ((  4 == 0  ))
+ packages='qt5-base qt5-imageformats qt5-virtualkeyboard qt5-webkit'
+ patch_qt 'qt5-base qt5-imageformats qt5-virtualkeyboard qt5-webkit'
+ for pkg in '"$@"'
+ [[ qt5-base qt5-imageformats qt5-virtualkeyboard qt5-webkit != *qt5-* ]]
+ grep -q _orig_pkgname qt5-base qt5-imageformats qt5-virtualkeyboard qt5-webkit/PKGBUILD
grep: qt5-base: Is a directory
grep: qt5-imageformats: Is a directory
grep: qt5-virtualkeyboard: Is a directory
+ sed -i 's|^pkgname=.*|&-debug\n_orig_pkgname=${pkgname/-debug/}|' qt5-base qt5-imageformats qt5-virtualkeyboard qt5-webkit/PKGBUILD
sed: couldn't edit qt5-base: not a regular file

Installation of pyqt5 package fails

The first (i.e. non py2) configure.py step in the PKGBUILD fails. After some research, the run_command(' '.join([quote(a) for a in argv]), verbose) step on line 2619 of the configure.py fails to produce any output in src/PyQt5_gpl-5.13.0/QtCore. It then checks for the existence of a file in there, doesn't find it, and errors out.

Here's the log:

┌─[ignormies][~/git/qt-debug-pkgbuild/pyqt5]
└──▪ makepkg -si
==> Making package: pyqt5-debug 5.13.0-1 (Mon 14 Oct 2019 10:57:28 AM PDT)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found PyQt5_gpl-5.13.0.tar.gz
==> Validating source files with sha256sums...
    PyQt5_gpl-5.13.0.tar.gz ... Passed
==> Extracting sources...
  -> Extracting PyQt5_gpl-5.13.0.tar.gz with bsdtar
==> Starting prepare()...
==> Removing existing $pkgdir/ directory...
==> Starting build()...
Querying qmake about your Qt installation...
Determining the details of your Qt installation...
This is the GPL version of PyQt 5.13.0 (licensed under the GNU General Public
License) for Python 3.7.4 on linux.
Found the license file pyqt-gpl.sip.
Checking to see if the QtGui module should be built...
Checking to see if the QtHelp module should be built...
Checking to see if the QtMultimedia module should be built...
Checking to see if the QtMultimediaWidgets module should be built...
Checking to see if the QtNetwork module should be built...
Checking to see if the QtOpenGL module should be built...
Checking to see if the QtPrintSupport module should be built...
Checking to see if the QtQml module should be built...
Checking to see if the QtQuick module should be built...
Checking to see if the QtSql module should be built...
Checking to see if the QtSvg module should be built...
Checking to see if the QtTest module should be built...
Checking to see if the QtWebKit module should be built...
Checking to see if the QtWebKitWidgets module should be built...
Checking to see if the QtWidgets module should be built...
Checking to see if the QtXml module should be built...
Checking to see if the QtXmlPatterns module should be built...
Checking to see if the QtDesigner module should be built...
Checking to see if the QAxContainer module should be built...
Checking to see if the QtDBus module should be built...
Checking to see if the _QOpenGLFunctions_2_0 module should be built...
Checking to see if the _QOpenGLFunctions_2_1 module should be built...
Checking to see if the _QOpenGLFunctions_4_1_Core module should be built...
Checking to see if the QtSensors module should be built...
Checking to see if the QtSerialPort module should be built...
Checking to see if the QtX11Extras module should be built...
Checking to see if the QtBluetooth module should be built...
Checking to see if the QtMacExtras module should be built...
Checking to see if the QtPositioning module should be built...
Checking to see if the QtWinExtras module should be built...
Checking to see if the QtQuickWidgets module should be built...
Checking to see if the QtWebSockets module should be built...
Checking to see if the Enginio module should be built...
Checking to see if the QtWebChannel module should be built...
Checking to see if the QtLocation module should be built...
Checking to see if the QtNfc module should be built...
Checking to see if the QtNetworkAuth module should be built...
Checking to see if the QtRemoteObjects module should be built...
Checking to see if the dbus support module should be built...
Qt v5.13.1 is being used.
The qmake executable is /usr/bin/qmake.
Qt is built as a shared library.
SIP 4.19.19 is being used.
The sip executable is /usr/bin/sip.
These PyQt5 modules will be built: QtCore, QtGui, QtHelp, QtMultimedia,
QtMultimediaWidgets, QtNetwork, QtOpenGL, QtPrintSupport, QtQml, QtQuick,
QtSql, QtSvg, QtTest, QtWebKit, QtWebKitWidgets, QtWidgets, QtXml,
QtXmlPatterns, QtDesigner, QtDBus, _QOpenGLFunctions_2_0,
_QOpenGLFunctions_2_1, _QOpenGLFunctions_4_1_Core, QtSensors, QtSerialPort,
QtX11Extras, QtBluetooth, QtPositioning, QtQuickWidgets, QtWebSockets,
QtWebChannel, QtLocation, QtNfc, QtNetworkAuth, QtRemoteObjects.
The PyQt5 Python package will be installed in /usr/lib/python3.7/site-packages.
A debug version of PyQt5 will be built.
PyQt5 is being built with generated docstrings.
PyQt5 is being built with 'protected' redefined as 'public'.
The Designer plugin will be installed in /usr/lib/qt/plugins/designer.
The qmlscene plugin will be installed in /usr/lib/qt/plugins/PyQt5.
The QScintilla API file will be installed in /usr/share/qt/qsci/api/python.
The PyQt5 PEP 484 stub files will be installed in
/usr/lib/python3.7/site-packages/PyQt5.
The dbus support module will be installed in
/usr/lib/python3.7/site-packages/dbus/mainloop.
pyuic5, pyrcc5 and pylupdate5 will be installed in /usr/bin.
The interpreter used by pyuic5 is /usr/bin/python.
Generating the C++ source for the QtCore module...
Error: Unable to create the C++ code.
==> ERROR: A failure occurred in build().
    Aborting...

cannot open any Qt5 app: "error while loading shared libraries: libicui18n.so.64: cannot open shared object file: No such file or directory"

Hi
I have installed your packages on my Arch Linux with the following command:

sudo pacman -S qt5-base-debug qt5-declarative-debug qt5-graphicaleffects-debug qt5-imageformats-debug qt5-location-debug qt5-multimedia-debug qt5-quickcontrols-debug qt5-quickcontrols2-debug qt5-script-debug qt5-sensors-debug qt5-speech-debug qt5-svg-debug qt5-tools-debug qt5-wayland-debug qt5-webchannel-debug qt5-webengine-debug qt5-websockets-debug qt5-x11extras-debug qt5-xmlpatterns-debug qt5-webkit-debug qt5-translations-debug qt5-networkauth-debug

Terminal shows this error when I try to open any Qt5 app:
error while loading shared libraries: libicui18n.so.64: cannot open shared object file: No such file or directory

update.sh has problems with new qt5-quick3d package

https://projects.archlinux.org/kde-build.git/plain/qt-opt-packages?h=qt returns a new entry qt5-quick3d

Unfortunately, the qt5-quick3d package has no trunk directory, which means that after you try cloning the repo using svntogit, the cp below fails trying to find packages/trunk. This doesn't break anything, but you do get an (ignored) error when the script is run. qt5-quick3d also gets added to pkglist even though it actually isn't provided.

(as an aside, why not use asp export $pkg instead of the git clone approach?)

Blacklist qt5-doc package

It takes a long time to build, but doesn't actually provide any value over the normal qt5-doc one (I think?).

Release temp packages

When building with --temp we should have a way to mark them as "okay" and release

gdb can't find not source code

The built package doesn't contain the source code. Thus gdb would complain as follows,

(gdb) n
8056 kernel/qwidget.cpp: No such file or directory.

I noticed if I use OPTIONS+=(debug strip) for makepkg, a seperate package qt5-base-debug will be built and installing this package will put the source code into /usr/src/debug/qtbase-everywhere-src-5.14.2/src/. So makepkg can avoid this issue.

qt5-webengine: Enable debug build of Chromium

Chromium provides an option to build in the debug mode, which can be enabled in qt5-webengine with the following patch:

diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD
index 977c658..ff70366 100644
--- a/trunk/PKGBUILD
+++ b/trunk/PKGBUILD
@@ -44,7 +44,7 @@ build() {
   cd build
 
   export PATH="$srcdir/bin:$PATH"
-  qmake ../${_pkgfqn} -- \
+  qmake ../${_pkgfqn} -config debug -- \
     -proprietary-codecs \
     -system-ffmpeg \
     -webp \

In this mode DCHECK* assertions are enabled, making debugging easier. For example, the following check helps me find the actual reason to nextcloud/desktop#941.

[2817:2817:1219/211037.742179:FATAL:render_process_host_impl.cc(887)] Check failed: map_.empty(). 

Could you consider adding this option to the qt5-webengine-debug package?

Cache Docker image

Rebuilding the docker image every time takes considerable time - we should cache a docker image with the deps installed (maybe even build that in a Travis cronjob) and then only do an incremental update from there when building.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.