Skip to content

Commit

Permalink
Work torwards a unified patch-and-build script for #94
Browse files Browse the repository at this point in the history
  • Loading branch information
pcolby committed Dec 27, 2022
1 parent 00fb025 commit 0def081
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 77 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
build
qt-everywhere-opensource-src-*
qt-everywhere-src-*
64 changes: 26 additions & 38 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ set -o errexit -o noclobber -o nounset -o pipefail # or set -Ceuo pipefail
shopt -s inherit_errexit

: "${QT_VERSION:=5.15.1}" # The version used by Polar FlowSync.
: "${QT_NAME:=qt-everywhere-opensource-src-$QT_VERSION}"
: "${QT_NAME:=qt-everywhere-src-$QT_VERSION}"
: "${SCRIPT_DIR:="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"}"
: "${OUTPUT_DIR:=$SCRIPT_DIR}"

function require {
local C
Expand All @@ -20,47 +22,33 @@ function require {
done
}

require cp curl mkdir patch sed tar
require cp mkdir patch sed tar wget

SELF_DIR="$(dirname "${BASH_SOURCE[0]}")"

# Fetch the Qt source, if not already present.
function fetchSource {
if [ ! -e "$SELF_DIR/$QT_NAME.tar.gz" ]; then
echo "Fetching $QT_NAME.tar.gz"
"$CURL" --location \
"http://download.qt.io/archive/qt/5.5/$QT_VERSION/single/$QT_NAME.tar.gz" \
--output "$QT_NAME.tar.gz"
fi
}

# Extract source, if not already extracted.
function extractSource {
if [ ! -e "$SELF_DIR/$QT_NAME" ]; then
fetchSource || return
echo "Extracting $QT_NAME.tar.gz"
"$TAR" xzf "$SELF_DIR/$QT_NAME.tar.gz" -C "$SELF_DIR" || return
fi
# Fetch (if not already) and extract (if not already) the Qt source.
[[ -e "$OUTPUT_DIR/$QT_NAME" ]] || {
qtArchive="$OUTPUT_DIR/$QT_NAME.tar.xz"
[[ -e "$qtArchive" ]] || {
echo "Fetching $qtArchive"
"$WGET" -q -O "$qtArchive" \
"https://download.qt.io/archive/qt/${QT_VERSION%.*}/${QT_VERSION}/single/${QT_NAME}.tar.xz"
}
echo "Extracting $qtArchive"
"$TAR" xJf "$qtArchive" -C "$OUTPUT_DIR"
}

# Patch the source with our hook code.
function patchSource {
extractSource || return
NETWORK_ACCESS_DIR="$SELF_DIR/$QT_NAME/qtbase/src/network/access/"
if [ ! -e "$NETWORK_ACCESS_DIR/qnetworkaccessmanager.ori" ]; then
echo "Backing up $NETWORK_ACCESS_DIR/qnetworkaccessmanager.cpp"
"$CP" -a \
"$NETWORK_ACCESS_DIR/qnetworkaccessmanager.cpp" \
"$NETWORK_ACCESS_DIR/qnetworkaccessmanager.ori" || return
fi
echo "Applying qnetworkaccessmanager.patch"
"$SED" -e '1,2 s/\\/\//g' "$SELF_DIR/qnetworkaccessmanager.patch" | \
"$PATCH" --directory "$SELF_DIR/$QT_NAME" --forward --strip 0 ; RC=$?
if [ $RC -eq 1 ]; then
echo 'Assuming patch is already applied and continuing.'
return 0
fi
return $RC
NETWORK_ACCESS_DIR="$OUTPUT_DIR/$QT_NAME/qtbase/src/network/access/"
[[ -e "$NETWORK_ACCESS_DIR/qnetworkaccessmanager.ori" ]] || {
echo 'Backing up qnetworkaccessmanager.cpp'
"$CP" -a \
"$NETWORK_ACCESS_DIR/qnetworkaccessmanager.cpp" \
"$NETWORK_ACCESS_DIR/qnetworkaccessmanager.ori"
echo "Applying qnetworkaccessmanager.patch"
"$PATCH" --directory "$OUTPUT_DIR/$QT_NAME" --forward --strip 0 < "$OUTPUT_DIR/qnetworkaccessmanager.patch" || {
rc=$?
[[ "$rc" -eq 1 ]] || exit "$rc"
echo 'Assuming patch is already applied and continuing'
}
}

# Configure the Qt build.
Expand Down
33 changes: 0 additions & 33 deletions diff.cmd

This file was deleted.

10 changes: 5 additions & 5 deletions qnetworkaccessmanager.patch
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
--- qtbase\src\network\access\qnetworkaccessmanager.cpp 2013-08-26 04:03:34.000000000 +1000
+++ qtbase\src\network\access\qnetworkaccessmanager.new 2016-01-27 13:24:14.382664262 +1100
@@ -71,6 +71,8 @@
--- ./qtbase/src/network/access/qnetworkaccessmanager.cpp 2020-09-02 20:15:07.000000000 +1000
+++ ./qtbase/src/network/access/qnetworkaccessmanager.new 2022-12-27 17:17:28.577375419 +1100
@@ -95,6 +95,8 @@

#include "qthread.h"
#include "qnetconmonitor_p.h"

+#include "QtCore/qstandardpaths.h"
+
QT_BEGIN_NAMESPACE

Q_GLOBAL_STATIC(QNetworkAccessFileBackendFactory, fileBackend)
@@ -701,6 +703,67 @@
@@ -876,6 +878,67 @@
*/
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)
{
Expand Down
30 changes: 30 additions & 0 deletions update-diff.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bash

set -o errexit -o noclobber -o nounset -o pipefail # or set -Ceuo pipefail
shopt -s inherit_errexit

: "${QT_VERSION:=5.15.1}" # The version used by Polar FlowSync.
: "${QT_NAME:=qt-everywhere-src-$QT_VERSION}"
: "${SCRIPT_DIR:="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"}"
: "${OUTPUT_DIR:=$SCRIPT_DIR}"

function require {
local C
for c in "$@"; do
local -u V="${c//[^[:word:]]/_}";
if [ -v "$V" ]; then continue; fi
C=$(command -v "$c") || { echo "Required command not found: $c" >&2; exit 1; }
declare -gr "$V"="$C"
done
}

require diff

echo "Updating $SCRIPT_DIR/qnetworkaccessmanager.patch"
pushd "$OUTPUT_DIR/$QT_NAME"
mv ./qtbase/src/network/access/qnetworkaccessmanager.cpp ./qtbase/src/network/access/qnetworkaccessmanager.new
mv ./qtbase/src/network/access/qnetworkaccessmanager.ori ./qtbase/src/network/access/qnetworkaccessmanager.cpp
"$DIFF" -u './qtbase/src/network/access/qnetworkaccessmanager'.{cpp,new} >| "$SCRIPT_DIR/qnetworkaccessmanager.patch" || true
mv ./qtbase/src/network/access/qnetworkaccessmanager.cpp ./qtbase/src/network/access/qnetworkaccessmanager.ori
mv ./qtbase/src/network/access/qnetworkaccessmanager.new ./qtbase/src/network/access/qnetworkaccessmanager.cpp
popd

0 comments on commit 0def081

Please sign in to comment.