pyqtdeploy files
This commit is contained in:
parent
6b6666c618
commit
138fe3041f
50
packages/pyqtdeploy/README.md
Normal file
50
packages/pyqtdeploy/README.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
This directory contains the files needed for building pyqtdeploy bundle.
|
||||
|
||||
Now you can manually build the bundle for linux. Assuming your sysroot
|
||||
dir will be in SYSROOTDIR (you'll need about 6GB free space there for
|
||||
building Qt) and sources - in SOURCEDIR, the build steps are following:
|
||||
|
||||
1. cd $SOURCEDIR && exec /path/to/PyBitmessage/packages/pyqtdeploy/download.sh
|
||||
1. cd /path/to/PyBitmessage/packages/pyqtdeploy
|
||||
1. pyqtdeploy-sysroot --source-dir $SOURCEDIR --sysroot $SYSROOTDIR --target linux-64 --plugin-dir plugins sysroot.json
|
||||
1. virtualenv depends
|
||||
1. source depends/bin/activate
|
||||
1. pip install enum34 msgpack qtpy stem
|
||||
1. deactivate
|
||||
1. pyqtdeploy-build --sysroot $SYSROOTDIR --target linux-64 pybitmessage.pdy
|
||||
1. cd build-linux-64
|
||||
1. mv resources/src resources/pybitmessage
|
||||
1. sed -i "s|src/|pybitmessage/|g" resources/pyqtdeploy.qrc
|
||||
1. $SYSROOTDIR/host/bin/qmake
|
||||
1. make
|
||||
|
||||
The resulting PyBitmessage binary may require some shared libraries,
|
||||
particularly openssl.
|
||||
|
||||
There is also a possible issue with pyexpat related to `sqlite3`:
|
||||
|
||||
```
|
||||
2020-07-10 18:36:01,135 - WARNING - Using default logger configuration
|
||||
2020-07-10 18:36:01,517 - CRITICAL - Unhandled exception
|
||||
Traceback (most recent call last):
|
||||
File ":/src/bitmessagemain.py", line 477, in main
|
||||
File ":/src/bitmessagemain.py", line 354, in start
|
||||
File ":/src/bitmessageqt/__init__.py", line 4288, in run
|
||||
File ":/src/bitmessageqt/__init__.py", line 595, in __init__
|
||||
File ":/src/bitmessageqt/bitmessageui.py", line 542, in setupUi
|
||||
File ":/src/bitmessageqt/blacklist.py", line 18, in __init__
|
||||
File ":/src/bitmessageqt/widgets.py", line 25, in load
|
||||
File ":/PyQt5/uic/__init__.pyo", line 226, in loadUi
|
||||
File ":/PyQt5/uic/Loader/loader.pyo", line 72, in loadUi
|
||||
File ":/PyQt5/uic/uiparser.pyo", line 1013, in parse
|
||||
File ":/xml/etree/ElementTree.py", line 1182, in parse
|
||||
File ":/xml/etree/ElementTree.py", line 651, in parse
|
||||
File ":/xml/etree/ElementTree.py", line 1476, in __init__
|
||||
File ":/xml/parsers/expat.py", line 4, in <module>
|
||||
SystemError: _PyImport_FixupExtension: module pyexpat not loaded
|
||||
```
|
||||
|
||||
---
|
||||
ref:
|
||||
(pyqtdeploy v2.5.1 User Guide)[https://www.riverbankcomputing.com/static/Docs/pyqtdeploy/index.html]
|
||||
(medium article)[https://medium.com/@Lola_Dam/packaging-pyqt-application-using-pyqtdeploy-for-both-linux-and-android-32ac7824708b]
|
9
packages/pyqtdeploy/download.sh
Executable file
9
packages/pyqtdeploy/download.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
wget https://www.zlib.net/fossils/zlib-1.2.11.tar.gz
|
||||
wget http://download.qt.io/official_releases/qt/5.12/5.12.2/single/qt-everywhere-src-5.12.2.tar.xz
|
||||
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz
|
||||
wget https://www.riverbankcomputing.com/static/Downloads/sip/4.19.23/sip-4.19.23.tar.gz
|
||||
wget https://www.riverbankcomputing.com/static/Downloads/PyQt5/5.13.2/PyQt5-5.13.2.tar.gz
|
||||
wget https://ftp.openssl.org/source/openssl-1.1.1g.tar.gz
|
||||
wget https://github.com/libffi/libffi/releases/download/v3.3/libffi-3.3.tar.gz
|
||||
wget https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.xz
|
58
packages/pyqtdeploy/plugins/libffi.py
Normal file
58
packages/pyqtdeploy/plugins/libffi.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
# Copyright (c) 2019, Riverbank Computing Limited
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
from pyqtdeploy import ComponentBase, ComponentOption
|
||||
|
||||
|
||||
class libffiComponent(ComponentBase):
|
||||
"""The libffi component."""
|
||||
|
||||
# The component options.
|
||||
options = [
|
||||
ComponentOption(
|
||||
'source', required=True,
|
||||
help="The archive containing the libffi source code."),
|
||||
ComponentOption(
|
||||
'static_msvc_runtime', type=bool,
|
||||
help="Set if the MSVC runtime should be statically linked."),
|
||||
]
|
||||
|
||||
def build(self, sysroot):
|
||||
"""Build libffi for the target."""
|
||||
|
||||
archive = sysroot.find_file(self.source)
|
||||
sysroot.unpack_archive(archive)
|
||||
|
||||
sysroot.run(
|
||||
'./configure', '--enable-static',
|
||||
'--prefix=' + sysroot.sysroot_dir)
|
||||
sysroot.run(sysroot.host_make)
|
||||
sysroot.run(sysroot.host_make, 'install')
|
||||
|
||||
def configure(self, sysroot):
|
||||
"""Complete the configuration of the component."""
|
||||
|
||||
sysroot.verify_source(self.source)
|
2
packages/pyqtdeploy/pybitmessage.pdy
Normal file
2
packages/pyqtdeploy/pybitmessage.pdy
Normal file
File diff suppressed because one or more lines are too long
109
packages/pyqtdeploy/sysroot.json
Normal file
109
packages/pyqtdeploy/sysroot.json
Normal file
|
@ -0,0 +1,109 @@
|
|||
{
|
||||
"Description": "The sysroot for PyBitmessage.",
|
||||
|
||||
"android|macos|win#openssl": {
|
||||
"android#source": "openssl-1.1.0l.tar.gz",
|
||||
"macos|win#source": "openssl-1.0.2t.tar.gz",
|
||||
"win#no_asm": true
|
||||
},
|
||||
|
||||
"linux|macos|win#zlib": {
|
||||
"source": "zlib-1.2.11.tar.gz",
|
||||
"static_msvc_runtime": true
|
||||
},
|
||||
|
||||
"libffi": {
|
||||
"source": "libffi-3.3.tar.gz"
|
||||
},
|
||||
|
||||
"qt5": {
|
||||
"android-32#qt_dir": "android_armv7",
|
||||
"android-64#qt_dir": "android_arm64_v8a",
|
||||
"ios#qt_dir": "ios",
|
||||
|
||||
"linux|macos|win#source": "qt-everywhere-src-5.12.2.tar.xz",
|
||||
"edition": "opensource",
|
||||
|
||||
"android|linux#ssl": "openssl-runtime",
|
||||
"ios#ssl": "securetransport",
|
||||
"macos|win#ssl": "openssl-linked",
|
||||
|
||||
"configure_options": [
|
||||
"-no-gif", "-qt-libpng", "-qt-libjpeg",
|
||||
"-no-dbus", "-no-cups", "-fontconfig",
|
||||
"-qt-harfbuzz", "-qt-pcre", "-no-sql-db2",
|
||||
"-no-sql-ibase", "-no-sql-mysql", "-no-sql-sqlite",
|
||||
"-no-sql-sqlite2", "-no-sql-oci", "-no-sql-odbc",
|
||||
"-no-sql-psql", "-no-sql-tds", "-qt-sqlite", "-ccache"
|
||||
],
|
||||
"skip": [
|
||||
"qt3d", "qtactiveqt", "qtcanvas3d",
|
||||
"qtcharts", "qtdatavis3d", "qtdeclarative",
|
||||
"qtdoc", "qtgamepad", "qtgraphicaleffects", "qtlocation",
|
||||
"qtpurchasing", "qtquickcontrols", "qtquickcontrols2",
|
||||
"qtscript", "qtscxml", "qtsensors", "qtserialbus",
|
||||
"qtserialport", "qtspeech", "qtsvg", "qttools",
|
||||
"qtvirtualkeyboard", "qtwayland",
|
||||
"qtwebchannel", "qtwebengine", "qtwebglplugin",
|
||||
"qtwebsockets", "qtwebview", "qtxmlpatterns"
|
||||
],
|
||||
|
||||
"disabled_features": [
|
||||
"concurrent", "future",
|
||||
"cups", "printer", "printdialog", "printpreviewdialog",
|
||||
"printpreviewwidget", "sql", "sqlmodel", "testlib"
|
||||
],
|
||||
|
||||
"static_msvc_runtime": true
|
||||
},
|
||||
|
||||
"python": {
|
||||
"build_host_from_source": false,
|
||||
"build_target_from_source": true,
|
||||
"dynamic_loading": true,
|
||||
"source": "Python-2.7.18.tar.xz"
|
||||
},
|
||||
|
||||
"sip": {
|
||||
"module_name": "PyQt5.sip",
|
||||
"source": "sip-4.19.23.tar.gz"
|
||||
},
|
||||
|
||||
"pyqt5": {
|
||||
"android#disabled_features": [
|
||||
"PyQt_Desktop_OpenGL", "PyQt_Printer", "PyQt_PrintDialog",
|
||||
"PyQt_PrintPreviewDialog", "PyQt_PrintPreviewWidget"
|
||||
],
|
||||
"android#modules": [
|
||||
"QtCore", "QtGui", "QtNetwork", "QtWidgets", "QtAndroidExtras"
|
||||
],
|
||||
|
||||
"ios#disabled_features": [
|
||||
"PyQt_Desktop_OpenGL", "PyQt_MacOSXOnly",
|
||||
"PyQt_MacCocoaViewContainer", "PyQt_Printer",
|
||||
"PyQt_PrintDialog", "PyQt_PrintPreviewDialog",
|
||||
"PyQt_PrintPreviewWidget", "PyQt_Process",
|
||||
"PyQt_NotBootstrapped"
|
||||
],
|
||||
"ios|macos#modules": [
|
||||
"QtCore", "QtGui", "QtNetwork", "QtWidgets", "QtMacExtras"
|
||||
],
|
||||
|
||||
"linux#disabled_features": [
|
||||
"PyQt_Desktop_OpenGL", "PyQt_Printer", "PyQt_PrintDialog",
|
||||
"PyQt_PrintPreviewDialog", "PyQt_PrintPreviewWidget"
|
||||
],
|
||||
"linux#modules": [
|
||||
"QtCore", "QtGui", "QtNetwork", "QtWidgets", "QtXml",
|
||||
"QtX11Extras"
|
||||
],
|
||||
|
||||
"win#disabled_features": ["PyQt_Desktop_OpenGL"],
|
||||
"win#modules": [
|
||||
"QtCore", "QtGui", "QtNetwork", "QtWidgets", "QtWinExtras"
|
||||
],
|
||||
|
||||
"source": "PyQt5-5.13.2.tar.gz"
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user