Эх сурвалжийг харах

working buildroot 2022.08.1

Reinhard Russinger 2 жил өмнө
parent
commit
938b2f9f47

+ 0 - 1
Make-bb-kernel_noRT.sh

@@ -23,7 +23,6 @@ cd ..
 rm -rf buildroot
 git clone https://gogs.reru.org/PUBLIC_REPOS/buildroot.git ./buildroot
 cd buildroot
-#good#git checkout 51761e0f932278784d71574343fda9b789f65885
 git checkout 2021.08.1
 git checkout -b gfawrk
 for i in ../GfA/patches/*.patch

+ 1 - 1
board/GfA/Display001/BUILD

@@ -1 +1 @@
-831
+834

+ 6 - 2
board/GfA/Display001/rootfs/etc/init.d/rcS

@@ -68,6 +68,11 @@ if [ "$BASEBOARD" == "DISPLAY002_DI4" -o "$BASEBOARD" == "DISPLAY002_RS485" ]; t
 	echo 255 > /sys/class/leds/led_brightness/brightness
 fi
 
+if [ "$BASEBOARD" == "DISPLAY001" ]; then
+	/root/fw_update.sh
+	/root/gfa_spi -s
+fi
+
 # --- set ddr3ram controller queue
 devmem2 0x4c000054 w 0x00FFFF10
 # --- get spi tiva rtc
@@ -122,11 +127,10 @@ if [ "$BASEBOARD" == "DISPLAY002_DI4" -o "$BASEBOARD" == "DISPLAY002_RS485" ]; t
 fi
 
 if [ "$BASEBOARD" == "DISPLAY001" ]; then
-	/root/fw_update.sh
 	/root/gfa_spi -b 100
-	/root/gfa_spi -s
 fi
 
+/root/GfACheck4_3Display.sh
 #rdate time.memod.de
 
 BOOTCNT=`cat /etc/BOOTCNT`

+ 13 - 0
board/GfA/Display001/rootfs/etc/network/if-post-down.d/gfa-dns

@@ -0,0 +1,13 @@
+#!/bin/bash
+WRKPATH=/etc/network
+DESTFILE=/etc/resolv.conf
+
+/bin/sed --follow-symlinks -i "/\# $IFACE/d" $DESTFILE
+
+readarray -t DNSSERVERS < <(/usr/bin/awk -f $WRKPATH/readInterfaces.awk $WRKPATH/interfaces device=$IFACE output=dns-nameservers)
+for a in "${DNSSERVERS[@]}"; do
+    if [[ ! -z $(/bin/grep "$a" "$DESTFILE") ]]; then
+        /bin/sed --follow-symlinks -i "/$a/d" $DESTFILE
+    fi
+done    
+

+ 13 - 0
board/GfA/Display001/rootfs/etc/network/if-up.d/gfa-dns

@@ -0,0 +1,13 @@
+#!/bin/bash
+WRKPATH=/etc/network
+DESTFILE=/etc/resolv.conf
+
+readarray -t DNSSERVERS < <(/usr/bin/awk -f $WRKPATH/readInterfaces.awk $WRKPATH/interfaces device=$IFACE output=dns-nameservers)
+
+for DNS in "${DNSSERVERS[@]}"; do
+    if [[ -z $(/bin/grep "$DNS" "$DESTFILE") ]]; then
+#        /bin/sed --follow-symlinks -i "1 s/^/$a\n/" $DESTFILE
+        echo "$DNS # $IFACE" >> $DESTFILE
+    fi         
+done    
+

+ 1 - 1
board/GfA/Display001/rootfs/etc/network/interfaces

@@ -7,7 +7,7 @@ iface eth0 inet static
 	address 192.168.0.125
 	netmask 255.255.255.0
 	gateway 192.168.0.10
-	post-up echo "nameserver 192.168.0.10" > /etc/resolv.conf
+	dns-nameservers 192.168.0.10
 
 iface eth1 inet dhcp
 #---

+ 113 - 0
board/GfA/Display001/rootfs/etc/network/readInterfaces.awk

@@ -0,0 +1,113 @@
+BEGIN {
+
+    start = 0;
+
+    if (ARGC < 3 || ARGC > 5) {
+        print "awk -f readInterfaces.awk <interfaces file> device=<eth device> [output=all|dns-nameservers] [debug=1]"
+        exit 1;
+    }
+
+    outAll = 0
+    outDNSNameservers = 0 
+
+    for (i = 2; i < ARGC; i++) {
+        split(ARGV[i], arg, "=");
+        if (arg[1] == "device")
+            device = arg[2];
+        else if (arg[1] == "output" && arg[2] == "all")
+            outAll = 1;
+        else if (arg[1] == "output" && arg[2] == "dns-nameservers")
+            outDNSNameservers = 1;
+        else if (arg[1] == "debug" && arg[2] == "1")
+            debug = 1;
+    }
+
+    if (!length(device)) {
+        print "awk -f readInterfaces.awk <interfaces file> device=<eth device> [output=all|dns-nameservers] [debug=1]"
+        exit 1;
+    }
+}
+
+{
+    # Look for iface line and if the interface comes with the device name
+    # scan whether it is dhcp or static or manual
+    # e.g. iface eth0 inet [static | dhcp | manual]
+    if ($1 == "iface")  {
+        # Ethernet name matches - switch the line scanning on
+        if ($2 == device) {
+            if (debug)
+                print $0;
+            # It's a DHCP interface
+            if (match($0, / dhcp/)) {
+                print "dhcp";
+                gotTypeNoAddr = 1;
+                exit 0;
+                # It's a static network interface. We want to scan the
+                # addresses after the static line
+            }
+            else if (match ($0, / static/)) {
+                static = 1;
+                next;
+            }
+            else if (match ($0, / manual/)) {
+                print "manual";
+                gotTypeNoAddr = 1;
+                exit 0;
+            }
+            # If it is other inteface line, switch it off
+            # Go to the next line
+        }
+        else {
+            static = 0;
+            next;
+        }
+    }
+    else if ($1 == "auto") {
+        static = 0;
+        next;
+    }
+
+    # At here, it means we are after the iface static line of
+    # after the device we are searching for
+    # Scan for the static content
+    if (static) {
+        # 2nd field to end of the line
+        if (length($1)) {
+            interface[$1] = interface[$1] " " substr($0, index($0, $2));
+            gotAddr = 1;
+        }
+    }
+}
+
+END {
+    if (gotAddr) {
+        if(!outDNSNameservers)
+            printf("%s %s %s\n", interface["address"], interface["netmask"], interface["gateway"]);
+        if (outAll) {
+            delete interface["address"];
+            delete interface["netmask"];
+            delete interface["gateway"];
+            for (field in interface) {
+                printf("%s %s\n", field, interface[field]);
+            }
+        }
+
+        if (outDNSNameservers) {
+            for (field in interface) {
+                if (field == "dns-nameservers") {
+                    split(interface[field], dnsnames);
+                    for (dns in dnsnames) {
+                        printf("nameserver %s\n", dnsnames[dns]);
+                        }
+                    }
+            }
+        }        
+        exit 0;
+    }
+    else {
+        if (gotTypeNoAddr)
+            exit 0;
+        else
+            exit 1;
+    }
+}

+ 27 - 0
board/GfA/Display001/rootfs/etc/ppp/ip-down.d/gfa_dns

@@ -0,0 +1,27 @@
+#!/bin/bash
+# This script is called with the following arguments:
+#    Arg  Name                          Example
+#    $1   Interface name                ppp0
+#    $2   The tty                       ttyO1
+#    $3   The link speed                38400
+#    $4   Local IP number               12.34.56.78
+#    $5   Peer  IP number               12.34.56.99
+#    $6   Optional ``ipparam'' value    foo
+
+WRKPATH=/etc/ppp
+DESTFILE=/etc/resolv.conf
+
+if [ -e "$WRKPATH/resolv.conf" ]; then
+    
+    /bin/sed --follow-symlinks -i "/\# $1/d" $DESTFILE
+    
+    readarray -t DNSSERVERS < <(cat $WRKPATH/resolv.conf)
+
+    for DNS in "${DNSSERVERS[@]}"; do
+        if [[ ! -z $(/bin/grep "$DNS" "$DESTFILE") ]]; then
+            /bin/sed --follow-symlinks -i "/$DNS/d" $DESTFILE
+        fi
+    done
+
+    rm $WRKPATH/resolv.conf
+fi    

+ 26 - 0
board/GfA/Display001/rootfs/etc/ppp/ip-up.d/gfa_dns

@@ -0,0 +1,26 @@
+#!/bin/bash
+# This script is called with the following arguments:
+#    Arg  Name                          Example
+#    $1   Interface name                ppp0
+#    $2   The tty                       ttyO1
+#    $3   The link speed                38400
+#    $4   Local IP number               12.34.56.78
+#    $5   Peer  IP number               12.34.56.99
+#    $6   Optional ``ipparam'' value    foo
+
+WRKPATH=/etc/ppp
+DESTFILE=/etc/resolv.conf
+
+if [ -e "$WRKPATH/resolv.conf" ]; then
+
+    /bin/sed --follow-symlinks -i "/\# $1/d" $DESTFILE
+    
+    readarray -t DNSSERVERS < <(cat $WRKPATH/resolv.conf)
+
+    for DNS in "${DNSSERVERS[@]}"; do
+        if [[ -z $(/bin/grep "$DNS" "$DESTFILE") ]]; then
+#            /bin/sed --follow-symlinks -i "1 s/^/$DNS \# $1\n/" $DESTFILE
+	echo "$DNS # $1" >> $DESTFILE
+        fi
+    done
+fi    

+ 11 - 1
board/GfA/Display001/rootfs/etc/wpa_supplicant/wpa_supplicant.conf

@@ -8,5 +8,15 @@ network={
         key_mgmt=WPA-PSK
         pairwise=CCMP TKIP
         group=CCMP TKIP
-	psk=cb9c5e664b8c1a992d788aa647921de668e37ba930a979f876b6f3c63084d708
+		psk=cb9c5e664b8c1a992d788aa647921de668e37ba930a979f876b6f3c63084d708
+}
+
+network={
+        ssid="rugast"
+        scan_ssid=1
+        proto=RSN
+        key_mgmt=WPA-PSK
+        pairwise=CCMP TKIP
+        group=CCMP TKIP
+        psk=43317c3661fa1bb7bf0213a313a38c3bd0adc7112d39967d20de87d0486add8a
 }

+ 38 - 0
board/GfA/Display001/rootfs/root/GfACheck4_3Display.sh

@@ -0,0 +1,38 @@
+#!/bin/bash
+KERNELREL=`uname -r`
+DTSFILE=`cat /proc/device-tree/vendorinfo/display_dtb`
+TOUCHCONTR=`cat /sys/devices/platform/ocp/4819c000.i2c/i2c-2/2-0038/input/input2/name`
+
+if [ $KERNELREL == "4.4.104-bone-rt-r21" ]; then
+    echo -e "$DTSFILE\n$TOUCHCONTR\n"
+    if [[ $TOUCHCONTR == "EP0430M"* ]]; then
+        echo "4.3\" Display, check if Right DTS"
+        
+        if [ $TOUCHCONTR == "EP0430MG1" ] && [ $DTSFILE != "Display001_4_2020.dtb" -a $DTSFILE != "Display001_4_nopruss_2020.dtb" ]; then
+        	if [[ $DTSFILE == *"_nopruss"* ]]; then
+         	    echo "switch to new2020 nopruss";
+         	    /root/DisplayTo_4_3inch_nopruss_2020.sh
+         	    reboot
+        	else
+        	    echo "switch to new2020";
+        	    /root/DisplayTo_4_3inch_2020.sh
+        	    reboot
+        	fi
+        fi
+        if [ $TOUCHCONTR == "EP0430M09" ] && [ $DTSFILE != "Display001_4.dtb" -a $DTSFILE != "Display001_4_nopruss.dtb" ] ; then
+        	if [[ $DTSFILE == *"_nopruss"* ]]; then
+         	    echo "switch to old nopruss";
+         	    /root/DisplayTo_4_3inch_nopruss.sh
+         	    reboot
+        	else
+        	    echo "switch to old";
+        	    /root/DisplayTo_4_3inch.sh
+        	    reboot
+        	fi
+        	
+        fi
+        
+    fi
+else
+    echo "Kernelrelease ($KERNELREL) not applicable"
+fi

BIN
board/GfA/Display001/rootfs/var/GfA/Display_GSM


+ 0 - 8
board/GfA/Display001/rootfs/var/GfA/Display_GSM.ini

@@ -1,7 +1,4 @@
 [Common]
-IMEI=359628044457757
-IMSI=232077611422745
-SCID=89430700001536045457
 SMSF=0
 NUM=+436643339123
 SENTSTART=0
@@ -18,11 +15,6 @@ MEADR=001
 
 [GPRS]
 CMDPORT=11114
-GIP=webaut
-GPORT=11114
-GSERV=none
-GNUN=
-GNPW=
 
 [IMSI=23207]
 PROVIDER=HoT

+ 0 - 4
board/GfA/Display001/rootfs/var/GfA/pppd.sh

@@ -11,7 +11,3 @@ PPPD_RETVAL=$?
 echo "PPPD: Retval = $PPPD_RETVAL"
 echo `date`"--PPPD: Retval = $PPPD_RETVAL" >> $VENDOR_PATH/pppd_retval.log
 
-f if [ $PPPD_RETVAL != 0 ] && [ $PPPD_RETVAL != 1 ] && [ $PPPD_RETVAL != 6 ];then
-	echo "Modem Err $PPPD_RETVAL"
-	$VENDOR_PATH/gsm_MSQ "*AT+cfun=1,1"
-fi

+ 87 - 0
board/GfA/Display001/uboot_2013.10/uboot-013-gcc11.patch

@@ -0,0 +1,87 @@
+From 4de8e7a1fb120b4f6b4052e84c600eeb7969dc4d Mon Sep 17 00:00:00 2001
+From: Florin Sarbu <florin@resin.io>
+Date: Sat, 28 Feb 2018 11:50:33 +0100
+Subject: [PATCH] Add compiler-gcc11.h header file
+
+This file is derived from compiler-gcc5.h
+
+Upstream-Status: Inappropriate [upstream u-boot does not use compiler-gccX.h anymore]
+Signed-off-by: Florin Sarbu <florin@resin.io>
+---
+ include/linux/compiler-gcc11.h | 65 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 65 insertions(+)
+ create mode 100644 include/linux/compiler-gcc11.h
+
+diff --git a/include/linux/compiler-gcc11.h b/include/linux/compiler-gcc11.h
+new file mode 100644
+index 0000000..622117b
+--- /dev/null
++++ b/include/linux/compiler-gcc11.h
+@@ -0,0 +1,65 @@
++#ifndef __LINUX_COMPILER_H
++#error "Please don't include <linux/compiler-gcc11.h> directly, include <linux/compiler.h> instead."
++#endif
++
++#define __used				__attribute__((__used__))
++#define __must_check			__attribute__((warn_unused_result))
++#define __compiler_offsetof(a, b)	__builtin_offsetof(a, b)
++
++/* Mark functions as cold. gcc will assume any path leading to a call
++   to them will be unlikely.  This means a lot of manual unlikely()s
++   are unnecessary now for any paths leading to the usual suspects
++   like BUG(), printk(), panic() etc. [but let's keep them for now for
++   older compilers]
++
++   Early snapshots of gcc 4.3 don't support this and we can't detect this
++   in the preprocessor, but we can live with this because they're unreleased.
++   Maketime probing would be overkill here.
++
++   gcc also has a __attribute__((__hot__)) to move hot functions into
++   a special section, but I don't see any sense in this right now in
++   the kernel context */
++#define __cold			__attribute__((__cold__))
++
++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
++
++#ifndef __CHECKER__
++# define __compiletime_warning(message) __attribute__((warning(message)))
++# define __compiletime_error(message) __attribute__((error(message)))
++#endif /* __CHECKER__ */
++
++/*
++ * Mark a position in code as unreachable.  This can be used to
++ * suppress control flow warnings after asm blocks that transfer
++ * control elsewhere.
++ *
++ * Early snapshots of gcc 4.5 don't support this and we can't detect
++ * this in the preprocessor, but we can live with this because they're
++ * unreleased.  Really, we need to have autoconf for the kernel.
++ */
++#define unreachable() __builtin_unreachable()
++
++/* Mark a function definition as prohibited from being cloned. */
++#define __noclone	__attribute__((__noclone__))
++
++/*
++ * Tell the optimizer that something else uses this function or variable.
++ */
++#define __visible __attribute__((externally_visible))
++
++/*
++ * GCC 'asm goto' miscompiles certain code sequences:
++ *
++ *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
++ *
++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
++ *
++ * (asm goto is automatically volatile - the naming reflects this.)
++ */
++#define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
++
++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
++#define __HAVE_BUILTIN_BSWAP32__
++#define __HAVE_BUILTIN_BSWAP64__
++#define __HAVE_BUILTIN_BSWAP16__
++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
+-- 
+2.7.4

+ 4 - 19
configs/Display001_4.4.104-bone-rt-21_Qt5.15.2_defconfig

@@ -2,15 +2,14 @@ BR2_arm=y
 BR2_cortex_a8=y
 BR2_ARM_INSTRUCTIONS_THUMB2=y
 BR2_DL_DIR="~/buildroot_dl"
-BR2_HOST_DIR="/opt/GfA/TC_L44104_C103_QT5-15-2_GfA_v1_0"
+BR2_HOST_DIR="/opt/GfA/TC_L44104_C1030_QT5152_V02"
 # BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
 BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_32_X=y
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_PACKAGE_HOST_GDB=y
 BR2_PACKAGE_HOST_GDB_TUI=y
-BR2_PACKAGE_HOST_GDB_PYTHON=y
+BR2_PACKAGE_HOST_GDB_PYTHON3=y
 BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
 BR2_TARGET_OPTIMIZATION="-pipe"
 BR2_TARGET_GENERIC_HOSTNAME="GfA"
@@ -202,18 +201,9 @@ BR2_PACKAGE_UBOOT_TOOLS=y
 BR2_PACKAGE_USB_MODESWITCH_DATA=y
 BR2_PACKAGE_USBMOUNT=y
 BR2_PACKAGE_USBUTILS=y
+BR2_PACKAGE_NODEJS=y
+BR2_PACKAGE_NODEJS_NPM=y
 BR2_PACKAGE_PYTHON=y
-BR2_PACKAGE_PYTHON_BZIP2=y
-BR2_PACKAGE_PYTHON_BSDDB=y
-BR2_PACKAGE_PYTHON_CODECSCJK=y
-BR2_PACKAGE_PYTHON_CURSES=y
-BR2_PACKAGE_PYTHON_READLINE=y
-BR2_PACKAGE_PYTHON_SSL=y
-BR2_PACKAGE_PYTHON_SQLITE=y
-BR2_PACKAGE_PYTHON_PYEXPAT=y
-BR2_PACKAGE_PYTHON_HASHLIB=y
-BR2_PACKAGE_PYTHON_PAHO_MQTT=y
-BR2_PACKAGE_PYTHON_PYUDEV=y
 BR2_PACKAGE_TCL=y
 BR2_PACKAGE_EXPECT=y
 BR2_PACKAGE_TCLLIB=y
@@ -249,15 +239,12 @@ BR2_PACKAGE_DTC_PROGRAMS=y
 BR2_PACKAGE_LIBGUDEV=y
 BR2_PACKAGE_LIBHID=y
 BR2_PACKAGE_LIBIIO=y
-BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
 BR2_PACKAGE_LIBQMI=y
 BR2_PACKAGE_LIBV4L=y
 BR2_PACKAGE_JANSSON=y
 BR2_PACKAGE_LIBXSLT=y
 BR2_PACKAGE_LIBMPEG2=y
 BR2_PACKAGE_LIBYUV=y
-BR2_PACKAGE_CANFESTIVAL=y
-BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
 BR2_PACKAGE_LIBCURL_CURL=y
 BR2_PACKAGE_LIBGSASL=y
 BR2_PACKAGE_LIBIDN=y
@@ -304,7 +291,6 @@ BR2_PACKAGE_MUTT_POP3=y
 BR2_PACKAGE_BRIDGE_UTILS=y
 BR2_PACKAGE_CAN_UTILS=y
 BR2_PACKAGE_CIVETWEB=y
-BR2_PACKAGE_CIVETWEB_WITH_LUA=y
 BR2_PACKAGE_CONNTRACK_TOOLS=y
 BR2_PACKAGE_CRDA=y
 BR2_PACKAGE_DHCPCD=y
@@ -414,4 +400,3 @@ BR2_PACKAGE_GFASPISTUB=y
 BR2_PACKAGE_GFASERVICES=y
 BR2_PACKAGE_GFASERVICESDEBUG=y
 BR2_PACKAGE_GFATIVAFLASHPLUGIN=y
-BR2_PACKAGE_GFATIVAFLASHPLUGINDEBUG=y

+ 0 - 26
patches/0108-revert-to-glibc-2.30-due-to-time64-issues.patch

@@ -1,26 +0,0 @@
-diff --git a/package/glibc/2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427/glibc.hash b/package/glibc/2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427/glibc.hash
-new file mode 100644
-index 0000000..6677d32
---- /dev/null
-+++ b/package/glibc/2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427/glibc.hash
-@@ -0,0 +1,7 @@
-+# Locally calculated (fetched from Github)
-+sha256  4462f56696332efbc5b0c2f86d7aa75a2a02c3d44bc4345fa42b5bab1225de5c  glibc-2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427.tar.gz
-+
-+# Hashes for license files
-+sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
-+sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB
-+sha256  35bdb41dc0bcb10702ddacbd51ec4c0fe6fb3129f734e8c85fc02e4d3eb0ce3f  LICENSES
-diff --git a/package/glibc/glibc.mk b/package/glibc/glibc.mk
-index 1eff245..29b9fad 100644
---- a/package/glibc/glibc.mk
-+++ b/package/glibc/glibc.mk
-@@ -11,7 +11,7 @@ else
- # Generate version string using:
- #   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2-
- # When updating the version, please also update localedef
--GLIBC_VERSION = 2.33-46-gedfd11197ecf3629bbb4b66c5814da09a61a7f9f
-+GLIBC_VERSION = 2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427
- # Upstream doesn't officially provide an https download link.
- # There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
- # sometimes the connection times out. So use an unofficial github mirror.

+ 45 - 0
patches/0111-qtwebenine-use-only-3-Cpu-s.__patch

@@ -0,0 +1,45 @@
+From 5901d178ea1c75ffbd8f2f477d80490fe200401a Mon Sep 17 00:00:00 2001
+From: Reinhard Russinger <reinhard@russinger.at>
+Date: Sat, 17 Apr 2021 08:57:10 +0000
+Subject: [PATCH] qtwebenine use only 3 Cpu's
+
+---
+ package/qt5/qt5webengine/qt5webengine.mk | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
+index 64c9c96..786c1b3 100644
+--- a/package/qt5/qt5webengine/qt5webengine.mk
++++ b/package/qt5/qt5webengine/qt5webengine.mk
+@@ -29,6 +29,15 @@ endif
+ 
+ QT5WEBENGINE_DEPENDENCIES += host-libpng host-libnss libnss
+ 
++ifeq ($(BR2_PACKAGE_QT5BASE_FONTCONFIG),y)
++	QT5WEBENGINE_DEPENDENCIES += host-freetype
++endif
++
++ifeq ($(BR2_PACKAGE_QT5BASE_JPEG),y)
++	QT5WEBENGINE_DEPENDENCIES += host-libjpeg
++endif
++ 
++
+ QT5WEBENGINE_CONF_OPTS += WEBENGINE_CONFIG+=use_system_ffmpeg
+ 
+ ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y)
+@@ -51,7 +60,11 @@ define QT5WEBENGINE_PYTHON2_SYMLINK
+ endef
+ QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK
+ 
+-QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)"
++##QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)"
++QT5WEBENGINE_ENV += NINJAFLAGS="-j3"
++
++##P_JOBS=$(shell echo $(PARALLEL_JOBS)/2) | bc)
++##QT5WEBENGINE_ENV += NINJAFLAGS="-j$(P_JOBS)"
+ 
+ define QT5WEBENGINE_CREATE_HOST_PKG_CONFIG
+ 	sed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/host-pkg-config
+-- 
+2.7.4
+

+ 17 - 0
patches/0115-qt5webengine-revert-parallel-build-to-all-cpu.__patch

@@ -0,0 +1,17 @@
+diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
+index 786c1b3c9a..fca0d7104f 100644
+--- a/package/qt5/qt5webengine/qt5webengine.mk
++++ b/package/qt5/qt5webengine/qt5webengine.mk
+@@ -60,11 +60,7 @@ define QT5WEBENGINE_PYTHON2_SYMLINK
+ endef
+ QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK
+ 
+-##QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)"
+-QT5WEBENGINE_ENV += NINJAFLAGS="-j3"
+-
+-##P_JOBS=$(shell echo $(PARALLEL_JOBS)/2) | bc)
+-##QT5WEBENGINE_ENV += NINJAFLAGS="-j$(P_JOBS)"
++QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)"
+ 
+ define QT5WEBENGINE_CREATE_HOST_PKG_CONFIG
+ 	sed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/host-pkg-config

+ 13 - 0
patches/0117-qt5webengine-add-host-freetype.patch

@@ -0,0 +1,13 @@
+diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
+index 64c9c96cc2..99a8811508 100644
+--- a/package/qt5/qt5webengine/qt5webengine.mk
++++ b/package/qt5/qt5webengine/qt5webengine.mk
+@@ -8,7 +8,7 @@ QT5WEBENGINE_VERSION = $(QT5_VERSION)
+ QT5WEBENGINE_SITE = $(QT5_SITE)
+ QT5WEBENGINE_SOURCE = qtwebengine-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBENGINE_VERSION).tar.xz
+ QT5WEBENGINE_DEPENDENCIES = ffmpeg libglib2 libvpx libxkbcommon opus webp \
+-	qt5declarative qt5webchannel host-bison host-flex host-gperf \
++	qt5declarative qt5webchannel host-freetype host-bison host-flex host-gperf \
+ 	host-pkgconf host-python
+ QT5WEBENGINE_INSTALL_STAGING = YES
+ 

+ 34 - 0
patches/0118-glibc-to-2.28.patch

@@ -0,0 +1,34 @@
+diff --git a/package/glibc/2.33-46-gedfd11197ecf3629bbb4b66c5814da09a61a7f9f/glibc.hash b/package/glibc/2.33-46-gedfd11197ecf3629bbb4b66c5814da09a61a7f9f/glibc.hash
+deleted file mode 100644
+index 4b8d8297ec..0000000000
+--- a/package/glibc/2.33-46-gedfd11197ecf3629bbb4b66c5814da09a61a7f9f/glibc.hash
++++ /dev/null
+@@ -1,7 +0,0 @@
+-# Locally calculated (fetched from Github)
+-sha256  3e2004b16ec6b79a19a88ed4736719ef9e419f9d8e7013faced654c0339e23dc  glibc-2.33-46-gedfd11197ecf3629bbb4b66c5814da09a61a7f9f.tar.gz
+-
+-# Hashes for license files
+-sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
+-sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB
+-sha256  b33d0bd9f685b46853548814893a6135e74430d12f6d94ab3eba42fc591f83bc  LICENSES
+diff --git a/package/glibc/glibc.hash b/package/glibc/glibc.hash
+deleted file mode 100644
+index 5316f03b10..0000000000
+--- a/package/glibc/glibc.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# This hash file is not used; instead, update the
+-# hash files in the per-version sub-directories.
+diff --git a/package/glibc/glibc.mk b/package/glibc/glibc.mk
+index 1eff245588..4f2b8a2caf 100644
+--- a/package/glibc/glibc.mk
++++ b/package/glibc/glibc.mk
+@@ -11,7 +11,7 @@ else
+ # Generate version string using:
+ #   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2-
+ # When updating the version, please also update localedef
+-GLIBC_VERSION = 2.33-46-gedfd11197ecf3629bbb4b66c5814da09a61a7f9f
++GLIBC_VERSION = glibc-2.28
+ # Upstream doesn't officially provide an https download link.
+ # There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
+ # sometimes the connection times out. So use an unofficial github mirror.