mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-02-13 03:41:54 +00:00
Merge branch 'develop' into master
This commit is contained in:
commit
0991afaa30
20 changed files with 4288 additions and 127 deletions
22
build.sh
22
build.sh
|
@ -78,9 +78,9 @@ fi
|
|||
|
||||
#_get_repo source https://github.com/ysurac/openmptcprouter-source "master"
|
||||
if [ "$OMR_OPENWRT" = "default" ]; then
|
||||
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "a439f1bb478b4b8b4134dbed76266c0032625b6b"
|
||||
_get_repo feeds/packages https://github.com/openwrt/packages "05769970213a5f9ffb81506b18da288890c05949"
|
||||
_get_repo feeds/luci https://github.com/openwrt/luci "a805a3178f902fe609d3d4a6c7b6b5b1dad88838"
|
||||
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "bfc433efd4a0c6875a92981d1bd2a5e3e60c61c6"
|
||||
_get_repo feeds/packages https://github.com/openwrt/packages "85dbb482017faec4d69c21b57a5a0afb8095f48a"
|
||||
_get_repo feeds/luci https://github.com/openwrt/luci "833e25d24a8cbf8dd587ee4424ef49b3e4e5f210"
|
||||
elif [ "$OMR_OPENWRT" = "master" ]; then
|
||||
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "master"
|
||||
_get_repo feeds/packages https://github.com/openwrt/packages "master"
|
||||
|
@ -236,6 +236,16 @@ if ! patch -Rf -N -p1 -s --dry-run < ../../patches/nanqinlang.patch; then
|
|||
fi
|
||||
echo "Done"
|
||||
|
||||
# Add BBR2 patch, only working on 64bits images for now
|
||||
if [ "$OMR_TARGET" = "x86_64" ] || [ "$OMR_TARGET" = "bpi-r64" ] || [ "$OMR_TARGET" = "rpi4" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "r2s" ] || [ "$OMR_TARGET" = "rpi3" ]; then
|
||||
echo "Checking if BBRv2 patch is set or not"
|
||||
if ! patch -Rf -N -p1 -s --dry-run < ../../patches/bbr2.patch; then
|
||||
echo "apply..."
|
||||
patch -N -p1 -s < ../../patches/bbr2.patch
|
||||
fi
|
||||
echo "Done"
|
||||
fi
|
||||
|
||||
echo "Checking if smsc75xx patch is set or not"
|
||||
if ! patch -Rf -N -p1 -s --dry-run < ../../patches/smsc75xx.patch; then
|
||||
echo "apply..."
|
||||
|
@ -270,6 +280,12 @@ if ! patch -Rf -N -p1 -s --dry-run < ../../patches/download-ipv4.patch; then
|
|||
fi
|
||||
echo "Done"
|
||||
|
||||
echo "Remove check rsync"
|
||||
if [ "$(grep rsync include/prereq-build.mk)" != "" ]; then
|
||||
patch -N -p1 -s < ../../patches/check-rsync.patch
|
||||
fi
|
||||
echo "Done"
|
||||
|
||||
if [ -f target/linux/mediatek/patches-5.4/0999-hnat.patch ]; then
|
||||
rm -f target/linux/mediatek/patches-5.4/0999-hnat.patch
|
||||
fi
|
||||
|
|
3
config
3
config
|
@ -25,6 +25,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_USE_TERMIOS=y
|
|||
CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=32
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y
|
||||
CONFIG_BUSYBOX_CONFIG_IOSTAT=y
|
||||
CONFIG_BUSYBOX_CONFIG_LOADKMAP=y
|
||||
CONFIG_BUSYBOX_CONFIG_LSPCI=y
|
||||
|
@ -47,10 +48,12 @@ CONFIG_KERNEL_DEBUG_PINCTRL=y
|
|||
CONFIG_KERNEL_DEVTMPFS=y
|
||||
CONFIG_KERNEL_DEVTMPFS_MOUNT=y
|
||||
CONFIG_KERNEL_DIRECT_IO=y
|
||||
CONFIG_KERNEL_DMA_ACPI=y
|
||||
CONFIG_KERNEL_FANOTIFY=y
|
||||
CONFIG_KERNEL_FHANDLE=y
|
||||
CONFIG_KERNEL_IPC_NS=y
|
||||
# CONFIG_KERNEL_MAGIC_SYSRQ is not set
|
||||
CONFIG_KERNEL_MMC_SDHCI_ACPI=y
|
||||
CONFIG_KERNEL_NAMESPACES=y
|
||||
CONFIG_KERNEL_NET_NS=y
|
||||
CONFIG_KERNEL_PID_NS=y
|
||||
|
|
|
@ -7,3 +7,4 @@ CONFIG_PACKAGE_uboot-mediatek=y
|
|||
CONFIG_PACKAGE_uboot-envtools=y
|
||||
CONFIG_PACKAGE_mt7622-preloader=y
|
||||
CONFIG_KERNEL_ARM64_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||
|
|
|
@ -6,3 +6,4 @@ CONFIG_PACKAGE_luci-app-advanced-reboot=y
|
|||
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||
|
|
|
@ -4,3 +4,10 @@ CONFIG_TARGET_ipq40xx_generic_DEVICE_p2w_r619ac-128m=y
|
|||
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_PACKAGE_ipq-wifi-p2w_r619ac=y
|
||||
CONFIG_DEFAULT_ath10k-firmware-qca4019-ct=y
|
||||
CONFIG_DEFAULT_kmod-ath10k-ct=y
|
||||
CONFIG_PACKAGE_kmod-ath10k-ct=y
|
||||
CONFIG_ATH10K-CT_LEDS=y
|
||||
CONFIG_PACKAGE_ath10k-firmware-qca4019-ct=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||
|
|
|
@ -3,3 +3,4 @@ CONFIG_TARGET_rockchip_armv8=y
|
|||
CONFIG_TARGET_rockchip_armv8_DEVICE_friendlyarm_nanopi-r2s=y
|
||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||
|
|
|
@ -4,3 +4,4 @@ CONFIG_TARGET_bcm27xx_bcm2710_DEVICE_rpi-3=y
|
|||
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
||||
CONFIG_PACKAGE_kmod-ath9k=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||
|
|
|
@ -6,3 +6,4 @@ CONFIG_PACKAGE_kmod-ath9k=y
|
|||
CONFIG_PACKAGE_bcm27xx-eeprom=y
|
||||
CONFIG_PACKAGE_bcm27xx-userland=y
|
||||
CONFIG_KERNEL_ARM64_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||
|
|
|
@ -9,3 +9,4 @@ CONFIG_PACKAGE_kmod-ath9k=y
|
|||
CONFIG_GRUB_IMAGES=y
|
||||
CONFIG_EFI_IMAGES=y
|
||||
# CONFIG_VMDK_IMAGES is not set
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||
|
|
27
patches/bbr2.patch
Normal file
27
patches/bbr2.patch
Normal file
|
@ -0,0 +1,27 @@
|
|||
--- a/package/kernel/linux/modules/netsupport.mk 2020-11-22 17:39:14.462349527 +0100
|
||||
+++ b/package/kernel/linux/modules/netsupport.mk 2020-11-22 17:41:37.719620332 +0100
|
||||
@@ -948,6 +948,24 @@
|
||||
|
||||
$(eval $(call KernelPackage,tcp-bbr))
|
||||
|
||||
+define KernelPackage/tcp-bbr2
|
||||
+ SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
+ TITLE:=BBRv2 TCP congestion control
|
||||
+ KCONFIG:= \
|
||||
+ CONFIG_TCP_CONG_ADVANCED=y \
|
||||
+ CONFIG_TCP_CONG_BBR2
|
||||
+ FILES:=$(LINUX_DIR)/net/ipv4/tcp_bbr2.ko
|
||||
+ AUTOLOAD:=$(call AutoLoad,74,tcp_bbr2)
|
||||
+endef
|
||||
+
|
||||
+define KernelPackage/tcp-bbr2/description
|
||||
+ Kernel module for BBRv2 (Bottleneck Bandwidth and RTT) TCP congestion
|
||||
+ control. It requires the fq ("Fair Queue") pacing packet scheduler.
|
||||
+ For kernel 4.13+, TCP internal pacing is implemented as fallback.
|
||||
+endef
|
||||
+
|
||||
+$(eval $(call KernelPackage,tcp-bbr2))
|
||||
+
|
||||
define KernelPackage/tcp-nanqinlang
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=BBR NANQINLANG TCP congestion control
|
14
patches/check-rsync.patch
Normal file
14
patches/check-rsync.patch
Normal file
|
@ -0,0 +1,14 @@
|
|||
diff --git a/include/prereq-build.mk b/include/prereq-build.mk
|
||||
index e7314b253b58..5045fabdfbde 100644
|
||||
--- a/include/prereq-build.mk
|
||||
+++ b/include/prereq-build.mk
|
||||
@@ -170,9 +170,6 @@ $(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \
|
||||
$(eval $(call SetupHostCommand,file,Please install the 'file' package, \
|
||||
file --version 2>&1 | grep file))
|
||||
|
||||
-$(eval $(call SetupHostCommand,rsync,Please install 'rsync', \
|
||||
- rsync --version </dev/null))
|
||||
-
|
||||
$(STAGING_DIR_HOST)/bin/mkhash: $(SCRIPT_DIR)/mkhash.c
|
||||
mkdir -p $(dir $@)
|
||||
$(CC) -O2 -I$(TOPDIR)/tools/include -o $@ $<
|
|
@ -1,9 +1,9 @@
|
|||
--- a/feeds/luci/luci.mk 2020-10-13 09:58:19.887513368 +0200
|
||||
+++ b/feeds/luci/luci.mk 2020-10-13 09:04:51.724277184 +0200
|
||||
@@ -34,6 +34,7 @@
|
||||
LUCI_LANG.mr=Marāṭhī (Marathi)
|
||||
LUCI_LANG.ms=Bahasa Melayu (Malay)
|
||||
LUCI_LANG.nb_NO=Norsk (Norwegian)
|
||||
LUCI_LANG.nl=Nederlands (Dutch)
|
||||
+LUCI_LANG.oc=Occitan
|
||||
LUCI_LANG.pl=Polski (Polish)
|
||||
LUCI_LANG.pt_BR=Português do Brasil (Brazilian Portuguese)
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||
|
||||
do_mount_root() {
|
||||
mount_root
|
||||
boot_run_hook preinit_mount_root
|
||||
[ -e /dev/sda1 ] && mount /dev/sda1 /boot >/dev/null 2>&1
|
||||
[ -f /boot/sysupgrade.tgz ] && {
|
||||
mv /boot/sysupgrade.tgz /
|
||||
}
|
||||
[ -e /dev/sda1 ] && umount /boot >/dev/null 2>&1
|
||||
[ -f /sysupgrade.tgz ] && {
|
||||
echo "- config restore -"
|
||||
cd /
|
||||
tar xzf sysupgrade.tgz
|
||||
}
|
||||
}
|
||||
[ -n "$(mount | grep ext4 | grep ro)" ] && {
|
||||
[ -e /dev/mmcblk0p2 ] && {
|
||||
echo "Checking ext4 FS on mmcblk0p2..."
|
||||
/usr/sbin/e2fsck -y -f /dev/mmcblk0p2 >/dev/null 2>&1
|
||||
}
|
||||
[ -e /dev/sda2 ] && {
|
||||
echo "Checking ext4 FS on sda2..."
|
||||
/usr/sbin/e2fsck -y -f /dev/sda2 >/dev/null 2>&1
|
||||
}
|
||||
}
|
||||
[ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_mount_root
|
391
root/package/base-files/files/sbin/sysupgrade
Executable file
391
root/package/base-files/files/sbin/sysupgrade
Executable file
|
@ -0,0 +1,391 @@
|
|||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
# initialize defaults
|
||||
export MTD_ARGS=""
|
||||
export MTD_CONFIG_ARGS=""
|
||||
export INTERACTIVE=0
|
||||
export VERBOSE=1
|
||||
export SAVE_CONFIG=1
|
||||
export SAVE_OVERLAY=0
|
||||
export SAVE_OVERLAY_PATH=
|
||||
export SAVE_PARTITIONS=1
|
||||
export SAVE_INSTALLED_PKGS=0
|
||||
export SKIP_UNCHANGED=0
|
||||
export CONF_IMAGE=
|
||||
export CONF_BACKUP_LIST=0
|
||||
export CONF_BACKUP=
|
||||
export CONF_RESTORE=
|
||||
export NEED_IMAGE=
|
||||
export HELP=0
|
||||
export FORCE=0
|
||||
export TEST=0
|
||||
export UMOUNT_ETCBACKUP_DIR=0
|
||||
|
||||
# parse options
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
-i) export INTERACTIVE=1;;
|
||||
-v) export VERBOSE="$(($VERBOSE + 1))";;
|
||||
-q) export VERBOSE="$(($VERBOSE - 1))";;
|
||||
-n) export SAVE_CONFIG=0;;
|
||||
-c) export SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/etc;;
|
||||
-o) export SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/;;
|
||||
-p) export SAVE_PARTITIONS=0;;
|
||||
-k) export SAVE_INSTALLED_PKGS=1;;
|
||||
-u) export SKIP_UNCHANGED=1;;
|
||||
-b|--create-backup) export CONF_BACKUP="$2" NEED_IMAGE=1; shift;;
|
||||
-r|--restore-backup) export CONF_RESTORE="$2" NEED_IMAGE=1; shift;;
|
||||
-l|--list-backup) export CONF_BACKUP_LIST=1;;
|
||||
-f) export CONF_IMAGE="$2"; shift;;
|
||||
-F|--force) export FORCE=1;;
|
||||
-T|--test) export TEST=1;;
|
||||
-h|--help) export HELP=1; break;;
|
||||
-*)
|
||||
echo "Invalid option: $1" >&2
|
||||
exit 1
|
||||
;;
|
||||
*) break;;
|
||||
esac
|
||||
shift;
|
||||
done
|
||||
|
||||
export CONFFILES=/tmp/sysupgrade.conffiles
|
||||
export CONF_TAR=/tmp/sysupgrade.tgz
|
||||
export ETCBACKUP_DIR=/etc/backup
|
||||
export INSTALLED_PACKAGES=${ETCBACKUP_DIR}/installed_packages.txt
|
||||
|
||||
IMAGE="$1"
|
||||
|
||||
[ -z "$IMAGE" -a -z "$NEED_IMAGE" -a $CONF_BACKUP_LIST -eq 0 -o $HELP -gt 0 ] && {
|
||||
cat <<EOF
|
||||
Usage: $0 [<upgrade-option>...] <image file or URL>
|
||||
$0 [-q] [-i] [-c] [-u] [-o] [-k] <backup-command> <file>
|
||||
|
||||
upgrade-option:
|
||||
-f <config> restore configuration from .tar.gz (file or url)
|
||||
-i interactive mode
|
||||
-c attempt to preserve all changed files in /etc/
|
||||
-o attempt to preserve all changed files in /, except those
|
||||
from packages but including changed confs.
|
||||
-u skip from backup files that are equal to those in /rom
|
||||
-n do not save configuration over reflash
|
||||
-p do not attempt to restore the partition table after flash.
|
||||
-k include in backup a list of current installed packages at
|
||||
$INSTALLED_PACKAGES
|
||||
-T | --test
|
||||
Verify image and config .tar.gz but do not actually flash.
|
||||
-F | --force
|
||||
Flash image even if image checks fail, this is dangerous!
|
||||
-q less verbose
|
||||
-v more verbose
|
||||
-h | --help display this help
|
||||
|
||||
backup-command:
|
||||
-b | --create-backup <file>
|
||||
create .tar.gz of files specified in sysupgrade.conf
|
||||
then exit. Does not flash an image. If file is '-',
|
||||
i.e. stdout, verbosity is set to 0 (i.e. quiet).
|
||||
-r | --restore-backup <file>
|
||||
restore a .tar.gz created with sysupgrade -b
|
||||
then exit. Does not flash an image. If file is '-',
|
||||
the archive is read from stdin.
|
||||
-l | --list-backup
|
||||
list the files that would be backed up when calling
|
||||
sysupgrade -b. Does not create a backup file.
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
[ -n "$IMAGE" -a -n "$NEED_IMAGE" ] && {
|
||||
cat <<-EOF
|
||||
-b|--create-backup and -r|--restore-backup do not perform a firmware upgrade.
|
||||
Do not specify both -b|-r and a firmware image.
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# prevent messages from clobbering the tarball when using stdout
|
||||
[ "$CONF_BACKUP" = "-" ] && export VERBOSE=0
|
||||
|
||||
missing_lines() {
|
||||
local file1 file2 line
|
||||
file1="$1"
|
||||
file2="$2"
|
||||
oIFS="$IFS"
|
||||
IFS=":"
|
||||
while read line; do
|
||||
set -- $line
|
||||
grep -q "^$1:" "$file2" || echo "$*"
|
||||
done < "$file1"
|
||||
IFS="$oIFS"
|
||||
}
|
||||
|
||||
list_conffiles() {
|
||||
awk '
|
||||
BEGIN { conffiles = 0 }
|
||||
/^Conffiles:/ { conffiles = 1; next }
|
||||
!/^ / { conffiles = 0; next }
|
||||
conffiles == 1 { print }
|
||||
' /usr/lib/opkg/status
|
||||
}
|
||||
|
||||
list_changed_conffiles() {
|
||||
# Cannot handle spaces in filenames - but opkg cannot either...
|
||||
list_conffiles | while read file csum; do
|
||||
[ -r "$file" ] || continue
|
||||
|
||||
echo "${csum} ${file}" | busybox sha256sum -sc - || echo "$file"
|
||||
done
|
||||
}
|
||||
|
||||
add_conffiles() {
|
||||
local file="$1"
|
||||
( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
|
||||
/etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
|
||||
\( -type f -o -type l \) $find_filter 2>/dev/null;
|
||||
list_changed_conffiles ) | sort -u > "$file"
|
||||
return 0
|
||||
}
|
||||
|
||||
add_overlayfiles() {
|
||||
local file="$1"
|
||||
|
||||
local packagesfiles=$1.packagesfiles
|
||||
touch "$packagesfiles"
|
||||
|
||||
if [ "$SAVE_OVERLAY_PATH" = / ]; then
|
||||
local conffiles=$1.conffiles
|
||||
local keepfiles=$1.keepfiles
|
||||
|
||||
list_conffiles | cut -f2 -d ' ' | sort -u > "$conffiles"
|
||||
|
||||
# backup files from /etc/sysupgrade.conf and /lib/upgrade/keep.d, but
|
||||
# ignore those aready controlled by opkg conffiles
|
||||
find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
|
||||
/etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
|
||||
\( -type f -o -type l \) 2>/dev/null | sort -u |
|
||||
grep -h -v -x -F -f $conffiles > "$keepfiles"
|
||||
|
||||
# backup conffiles, but only those changed if '-u'
|
||||
[ $SKIP_UNCHANGED = 1 ] &&
|
||||
list_changed_conffiles | sort -u > "$conffiles"
|
||||
|
||||
# do not backup files from packages, except those listed
|
||||
# in conffiles and keep.d
|
||||
{
|
||||
find /usr/lib/opkg/info -type f -name "*.list" -exec cat {} \;
|
||||
find /usr/lib/opkg/info -type f -name "*.control" -exec sed \
|
||||
-ne '/^Alternatives/{s/^Alternatives: //;s/, /\n/g;p}' {} \; |
|
||||
cut -f2 -d:
|
||||
} | grep -v -x -F -f $conffiles |
|
||||
grep -v -x -F -f $keepfiles | sort -u > "$packagesfiles"
|
||||
rm -f "$keepfiles" "$conffiles"
|
||||
fi
|
||||
|
||||
# busybox grep bug when file is empty
|
||||
[ -s "$packagesfiles" ] || echo > $packagesfiles
|
||||
|
||||
( cd /overlay/upper/; find .$SAVE_OVERLAY_PATH \( -type f -o -type l \) $find_filter | sed \
|
||||
-e 's,^\.,,' \
|
||||
-e '\,^/etc/board.json$,d' \
|
||||
-e '\,/[^/]*-opkg$,d' \
|
||||
-e '\,^/etc/urandom.seed$,d' \
|
||||
-e "\,^$INSTALLED_PACKAGES$,d" \
|
||||
-e '\,^/usr/lib/opkg/.*,d' \
|
||||
) | grep -v -x -F -f $packagesfiles > "$file"
|
||||
|
||||
rm -f "$packagesfiles"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
if [ $SAVE_OVERLAY = 1 ]; then
|
||||
[ ! -d /overlay/upper/etc ] && {
|
||||
echo "Cannot find '/overlay/upper/etc', required for '-c'" >&2
|
||||
exit 1
|
||||
}
|
||||
sysupgrade_init_conffiles="add_overlayfiles"
|
||||
else
|
||||
sysupgrade_init_conffiles="add_conffiles"
|
||||
fi
|
||||
|
||||
find_filter=""
|
||||
if [ $SKIP_UNCHANGED = 1 ]; then
|
||||
[ ! -d /rom/ ] && {
|
||||
echo "'/rom/' is required by '-u'"
|
||||
exit 1
|
||||
}
|
||||
find_filter='( ( -exec test -e /rom/{} ; -exec cmp -s /{} /rom/{} ; ) -o -print )'
|
||||
fi
|
||||
|
||||
include /lib/upgrade
|
||||
|
||||
do_save_conffiles() {
|
||||
local conf_tar="$1"
|
||||
|
||||
[ -z "$(rootfs_type)" ] && {
|
||||
echo "Cannot save config while running from ramdisk." >&2
|
||||
ask_bool 0 "Abort" && exit
|
||||
rm -f "$conf_tar"
|
||||
return 0
|
||||
}
|
||||
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
|
||||
ask_bool 0 "Edit config file list" && vi "$CONFFILES"
|
||||
|
||||
if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then
|
||||
echo "${INSTALLED_PACKAGES}" >> "$CONFFILES"
|
||||
mkdir -p "$ETCBACKUP_DIR"
|
||||
# Avoid touching filesystem on each backup
|
||||
RAMFS="$(mktemp -d -t sysupgrade.XXXXXX)"
|
||||
mkdir -p "$RAMFS/upper" "$RAMFS/work"
|
||||
mount -t overlay overlay -o lowerdir=$ETCBACKUP_DIR,upperdir=$RAMFS/upper,workdir=$RAMFS/work $ETCBACKUP_DIR &&
|
||||
UMOUNT_ETCBACKUP_DIR=1 || {
|
||||
echo "Cannot mount '$ETCBACKUP_DIR' as tmpfs to avoid touching disk while saving the list of installed packages." >&2
|
||||
ask_bool 0 "Abort" && exit
|
||||
}
|
||||
|
||||
# Format: pkg-name<TAB>{rom,overlay,unkown}
|
||||
# rom is used for pkgs in /rom, even if updated later
|
||||
find /usr/lib/opkg/info -name "*.control" \( \
|
||||
\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
|
||||
\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
|
||||
\( -exec echo {} unknown \; \) \
|
||||
\) | sed -e 's,.*/,,;s/\.control /\t/' > ${INSTALLED_PACKAGES}
|
||||
fi
|
||||
|
||||
v "Saving config files..."
|
||||
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
|
||||
tar c${TAR_V}zf "$conf_tar" -T "$CONFFILES" 2>/dev/null
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Failed to create the configuration backup."
|
||||
rm -f "$conf_tar"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
[ "$UMOUNT_ETCBACKUP_DIR" -eq 1 ] && {
|
||||
umount "$ETCBACKUP_DIR"
|
||||
rm -rf "$RAMFS"
|
||||
}
|
||||
rm -f "$CONFFILES"
|
||||
}
|
||||
|
||||
if [ $CONF_BACKUP_LIST -eq 1 ]; then
|
||||
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
|
||||
[ "$SAVE_INSTALLED_PKGS" -eq 1 ] && echo ${INSTALLED_PACKAGES} >> "$CONFFILES"
|
||||
cat "$CONFFILES"
|
||||
rm -f "$CONFFILES"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$CONF_BACKUP" ]; then
|
||||
do_save_conffiles "$CONF_BACKUP"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ -n "$CONF_RESTORE" ]; then
|
||||
if [ "$CONF_RESTORE" != "-" ] && [ ! -f "$CONF_RESTORE" ]; then
|
||||
echo "Backup archive '$CONF_RESTORE' not found." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
|
||||
cp /etc/passwd /etc/group /etc/shadow /tmp
|
||||
tar -C / -x${TAR_V}zf "$CONF_RESTORE"
|
||||
missing_lines /tmp/passwd /etc/passwd >> /etc/passwd
|
||||
missing_lines /tmp/group /etc/group >> /etc/group
|
||||
missing_lines /tmp/shadow /etc/shadow >> /etc/shadow
|
||||
rm /tmp/passwd /tmp/group /tmp/shadow
|
||||
exit $?
|
||||
fi
|
||||
|
||||
type platform_check_image >/dev/null 2>/dev/null || {
|
||||
echo "Firmware upgrade is not implemented for this platform." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
case "$IMAGE" in
|
||||
http://*|\
|
||||
https://*)
|
||||
wget -O/tmp/sysupgrade.img "$IMAGE" || exit 1
|
||||
IMAGE=/tmp/sysupgrade.img
|
||||
;;
|
||||
esac
|
||||
|
||||
IMAGE="$(readlink -f "$IMAGE")"
|
||||
|
||||
case "$IMAGE" in
|
||||
'')
|
||||
echo "Image file not found." >&2
|
||||
exit 1
|
||||
;;
|
||||
/tmp/*) ;;
|
||||
*)
|
||||
v "Image not in /tmp, copying..."
|
||||
cp -f "$IMAGE" /tmp/sysupgrade.img
|
||||
IMAGE=/tmp/sysupgrade.img
|
||||
;;
|
||||
esac
|
||||
|
||||
json_load "$(/usr/libexec/validate_firmware_image "$IMAGE")" || {
|
||||
echo "Failed to check image"
|
||||
exit 1
|
||||
}
|
||||
json_get_var valid "valid"
|
||||
[ "$valid" -eq 0 ] && {
|
||||
if [ $FORCE -eq 1 ]; then
|
||||
echo "Image check failed but --force given - will update anyway!" >&2
|
||||
else
|
||||
echo "Image check failed." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -n "$CONF_IMAGE" ]; then
|
||||
case "$(get_magic_word $CONF_IMAGE cat)" in
|
||||
# .gz files
|
||||
1f8b) ;;
|
||||
*)
|
||||
echo "Invalid config file. Please use only .tar.gz files" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
get_image "$CONF_IMAGE" "cat" > "$CONF_TAR"
|
||||
export SAVE_CONFIG=1
|
||||
elif ask_bool $SAVE_CONFIG "Keep config files over reflash"; then
|
||||
[ $TEST -eq 1 ] || do_save_conffiles "$CONF_TAR"
|
||||
export SAVE_CONFIG=1
|
||||
else
|
||||
[ $TEST -eq 1 ] || rm -f "$CONF_TAR"
|
||||
export SAVE_CONFIG=0
|
||||
fi
|
||||
|
||||
if [ $TEST -eq 1 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
install_bin /sbin/upgraded
|
||||
v "Commencing upgrade. Closing all shell sessions."
|
||||
|
||||
COMMAND='/lib/upgrade/do_stage2'
|
||||
|
||||
if [ -n "$FAILSAFE" ]; then
|
||||
printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade
|
||||
lock -u /tmp/.failsafe
|
||||
else
|
||||
json_init
|
||||
json_add_string prefix "$RAM_ROOT"
|
||||
json_add_string path "$IMAGE"
|
||||
[ $FORCE -eq 1 ] && json_add_boolean force 1
|
||||
[ $SAVE_CONFIG -eq 1 ] && json_add_string backup "$CONF_TAR"
|
||||
json_add_string command "$COMMAND"
|
||||
json_add_object options
|
||||
json_add_int save_partitions "$SAVE_PARTITIONS"
|
||||
json_close_object
|
||||
|
||||
ubus call system sysupgrade "$(json_dump)"
|
||||
fi
|
432
root/rules.mk
Normal file
432
root/rules.mk
Normal file
|
@ -0,0 +1,432 @@
|
|||
#
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
# Copyright (C) 2016 LEDE Project
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
ifneq ($(__rules_inc),1)
|
||||
__rules_inc=1
|
||||
|
||||
ifeq ($(DUMP),)
|
||||
-include $(TOPDIR)/.config
|
||||
endif
|
||||
include $(TOPDIR)/include/debug.mk
|
||||
include $(TOPDIR)/include/verbose.mk
|
||||
|
||||
ifneq ($(filter check,$(MAKECMDGOALS)),)
|
||||
CHECK:=1
|
||||
DUMP:=1
|
||||
endif
|
||||
|
||||
export TMP_DIR:=$(TOPDIR)/tmp
|
||||
export TMPDIR:=$(TMP_DIR)
|
||||
|
||||
qstrip=$(strip $(subst ",,$(1)))
|
||||
#"))
|
||||
|
||||
empty:=
|
||||
space:= $(empty) $(empty)
|
||||
comma:=,
|
||||
merge=$(subst $(space),,$(1))
|
||||
confvar=$(shell echo '$(foreach v,$(1),$(v)=$(subst ','\'',$($(v))))' | $(STAGING_DIR_HOST)/bin/mkhash md5)
|
||||
strip_last=$(patsubst %.$(lastword $(subst .,$(space),$(1))),%,$(1))
|
||||
|
||||
paren_left = (
|
||||
paren_right = )
|
||||
chars_lower = a b c d e f g h i j k l m n o p q r s t u v w x y z
|
||||
chars_upper = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
|
||||
|
||||
define sep
|
||||
|
||||
endef
|
||||
|
||||
define newline
|
||||
|
||||
|
||||
endef
|
||||
|
||||
__tr_list = $(join $(join $(1),$(foreach char,$(1),$(comma))),$(2))
|
||||
__tr_head_stripped = $(subst $(space),,$(foreach cv,$(call __tr_list,$(1),$(2)),$$$(paren_left)subst$(cv)$(comma)))
|
||||
__tr_head = $(subst $(paren_left)subst,$(paren_left)subst$(space),$(__tr_head_stripped))
|
||||
__tr_tail = $(subst $(space),,$(foreach cv,$(1),$(paren_right)))
|
||||
__tr_template = $(__tr_head)$$(1)$(__tr_tail)
|
||||
|
||||
$(eval toupper = $(call __tr_template,$(chars_lower),$(chars_upper)))
|
||||
$(eval tolower = $(call __tr_template,$(chars_upper),$(chars_lower)))
|
||||
|
||||
version_abbrev = $(if $(if $(CHECK),,$(DUMP)),$(1),$(shell printf '%.8s' $(1)))
|
||||
|
||||
_SINGLE=export MAKEFLAGS=$(space);
|
||||
CFLAGS:=
|
||||
ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH)))))
|
||||
ARCH_PACKAGES:=$(call qstrip,$(CONFIG_TARGET_ARCH_PACKAGES))
|
||||
BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD))
|
||||
SUBTARGET:=$(call qstrip,$(CONFIG_TARGET_SUBTARGET))
|
||||
TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))
|
||||
export EXTRA_OPTIMIZATION:=$(filter-out -fno-plt,$(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION)))
|
||||
TARGET_SUFFIX=$(call qstrip,$(CONFIG_TARGET_SUFFIX))
|
||||
BUILD_SUFFIX:=$(call qstrip,$(CONFIG_BUILD_SUFFIX))
|
||||
SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
||||
BUILD_SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
||||
NPROC:=$(shell sysctl -n hw.ncpu 2>/dev/null || nproc)
|
||||
export SHELL:=/usr/bin/env bash
|
||||
|
||||
IS_PACKAGE_BUILD := $(if $(filter package/%,$(BUILD_SUBDIR)),1)
|
||||
|
||||
OPTIMIZE_FOR_CPU=$(subst i386,i486,$(ARCH))
|
||||
|
||||
ifneq (,$(findstring $(ARCH) , aarch64 aarch64_be powerpc ))
|
||||
FPIC:=-fPIC
|
||||
else
|
||||
FPIC:=-fpic
|
||||
endif
|
||||
|
||||
HOST_FPIC:=-fPIC
|
||||
|
||||
ARCH_SUFFIX:=$(call qstrip,$(CONFIG_CPU_TYPE))
|
||||
GCC_ARCH:=
|
||||
|
||||
ifneq ($(ARCH_SUFFIX),)
|
||||
ARCH_SUFFIX:=_$(ARCH_SUFFIX)
|
||||
endif
|
||||
ifneq ($(filter -march=armv%,$(TARGET_OPTIMIZATION)),)
|
||||
GCC_ARCH:=$(patsubst -march=%,%,$(filter -march=armv%,$(TARGET_OPTIMIZATION)))
|
||||
endif
|
||||
ifdef CONFIG_HAS_SPE_FPU
|
||||
TARGET_SUFFIX:=$(TARGET_SUFFIX)spe
|
||||
endif
|
||||
ifdef CONFIG_MIPS64_ABI
|
||||
ifneq ($(CONFIG_MIPS64_ABI_O32),y)
|
||||
ARCH_SUFFIX:=$(ARCH_SUFFIX)_$(call qstrip,$(CONFIG_MIPS64_ABI))
|
||||
endif
|
||||
endif
|
||||
|
||||
DEFAULT_SUBDIR_TARGETS:=clean download prepare compile update refresh prereq dist distcheck configure check check-depends
|
||||
|
||||
define DefaultTargets
|
||||
$(foreach t,$(DEFAULT_SUBDIR_TARGETS) $(1),
|
||||
.$(t):
|
||||
$(t): .$(t)
|
||||
.PHONY: $(t) .$(t)
|
||||
)
|
||||
endef
|
||||
|
||||
DL_DIR:=$(if $(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(TOPDIR)/dl)
|
||||
OUTPUT_DIR:=$(if $(call qstrip,$(CONFIG_BINARY_FOLDER)),$(call qstrip,$(CONFIG_BINARY_FOLDER)),$(TOPDIR)/bin)
|
||||
BIN_DIR:=$(OUTPUT_DIR)/targets/$(BOARD)/$(SUBTARGET)
|
||||
INCLUDE_DIR:=$(TOPDIR)/include
|
||||
SCRIPT_DIR:=$(TOPDIR)/scripts
|
||||
BUILD_DIR_BASE:=$(TOPDIR)/build_dir
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION))
|
||||
LIBC:=$(call qstrip,$(CONFIG_LIBC))
|
||||
REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))
|
||||
GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux
|
||||
DIR_SUFFIX:=_$(LIBC)$(if $(CONFIG_arm),_eabi)
|
||||
BIN_DIR:=$(BIN_DIR)$(if $(CONFIG_USE_MUSL),,-$(LIBC))
|
||||
TARGET_DIR_NAME = target-$(ARCH)$(ARCH_SUFFIX)$(DIR_SUFFIX)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
|
||||
TOOLCHAIN_DIR_NAME = toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)$(DIR_SUFFIX)
|
||||
else
|
||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
||||
GNU_TARGET_NAME=$(call qstrip,$(CONFIG_TARGET_NAME))
|
||||
else
|
||||
GNU_TARGET_NAME=$(shell gcc -dumpmachine)
|
||||
endif
|
||||
REAL_GNU_TARGET_NAME=$(GNU_TARGET_NAME)
|
||||
LIBC:=$(call qstrip,$(CONFIG_LIBC))
|
||||
TARGET_DIR_NAME:=target-$(GNU_TARGET_NAME)_$(LIBC)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
|
||||
TOOLCHAIN_DIR_NAME:=toolchain-$(GNU_TARGET_NAME)
|
||||
endif
|
||||
|
||||
ifeq ($(or $(CONFIG_EXTERNAL_TOOLCHAIN),$(CONFIG_TARGET_uml)),)
|
||||
ifeq ($(CONFIG_GCC_USE_IREMAP),y)
|
||||
iremap = -iremap$(1):$(2)
|
||||
else
|
||||
iremap = -f$(if $(CONFIG_REPRODUCIBLE_DEBUG_INFO),file,macro)-prefix-map=$(1)=$(2)
|
||||
endif
|
||||
endif
|
||||
|
||||
PACKAGE_DIR:=$(BIN_DIR)/packages
|
||||
PACKAGE_DIR_ALL:=$(TOPDIR)/staging_dir/packages/$(BOARD)
|
||||
BUILD_DIR:=$(BUILD_DIR_BASE)/$(TARGET_DIR_NAME)
|
||||
STAGING_DIR:=$(TOPDIR)/staging_dir/$(TARGET_DIR_NAME)
|
||||
BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/$(TOOLCHAIN_DIR_NAME)
|
||||
TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/$(TOOLCHAIN_DIR_NAME)
|
||||
STAMP_DIR:=$(BUILD_DIR)/stamp
|
||||
STAMP_DIR_HOST=$(BUILD_DIR_HOST)/stamp
|
||||
TARGET_ROOTFS_DIR?=$(if $(call qstrip,$(CONFIG_TARGET_ROOTFS_DIR)),$(call qstrip,$(CONFIG_TARGET_ROOTFS_DIR)),$(BUILD_DIR))
|
||||
TARGET_DIR:=$(TARGET_ROOTFS_DIR)/root-$(BOARD)
|
||||
STAGING_DIR_ROOT:=$(STAGING_DIR)/root-$(BOARD)
|
||||
STAGING_DIR_IMAGE:=$(STAGING_DIR)/image
|
||||
BUILD_LOG_DIR:=$(if $(call qstrip,$(CONFIG_BUILD_LOG_DIR)),$(call qstrip,$(CONFIG_BUILD_LOG_DIR)),$(TOPDIR)/logs)
|
||||
PKG_INFO_DIR := $(STAGING_DIR)/pkginfo
|
||||
|
||||
BUILD_DIR_HOST:=$(if $(IS_PACKAGE_BUILD),$(BUILD_DIR_BASE)/hostpkg,$(BUILD_DIR_BASE)/host)
|
||||
STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host
|
||||
STAGING_DIR_HOSTPKG:=$(TOPDIR)/staging_dir/hostpkg
|
||||
|
||||
TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space),$(PATH)))))
|
||||
TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH))
|
||||
TARGET_INIT_PATH:=$(if $(TARGET_INIT_PATH),$(TARGET_INIT_PATH),/usr/sbin:/sbin:/usr/bin:/bin)
|
||||
TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) $(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION))
|
||||
TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
||||
TARGET_ASFLAGS_DEFAULT = $(TARGET_CFLAGS)
|
||||
TARGET_ASFLAGS = $(TARGET_ASFLAGS_DEFAULT)
|
||||
TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include
|
||||
TARGET_LDFLAGS:=-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
|
||||
ifneq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
LIBGCC_S_PATH=$(realpath $(wildcard $(call qstrip,$(CONFIG_LIBGCC_ROOT_DIR))/$(call qstrip,$(CONFIG_LIBGCC_FILE_SPEC))))
|
||||
LIBGCC_S=$(if $(LIBGCC_S_PATH),-L$(dir $(LIBGCC_S_PATH)) -lgcc_s)
|
||||
LIBGCC_A=$(realpath $(lastword $(wildcard $(dir $(LIBGCC_S_PATH))/gcc/*/*/libgcc.a)))
|
||||
else
|
||||
LIBGCC_A=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.a))
|
||||
LIBGCC_S=$(if $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so),-L$(TOOLCHAIN_DIR)/lib -lgcc_s,$(LIBGCC_A))
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_64BIT),y)
|
||||
LIB_SUFFIX:=64
|
||||
endif
|
||||
|
||||
ifndef DUMP
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
-include $(TOOLCHAIN_DIR)/info.mk
|
||||
export GCC_HONOUR_COPTS:=0
|
||||
TARGET_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))-)
|
||||
TARGET_CFLAGS+= -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result
|
||||
TARGET_CPPFLAGS+= -I$(TOOLCHAIN_DIR)/usr/include
|
||||
ifeq ($(CONFIG_USE_MUSL),y)
|
||||
TARGET_CPPFLAGS+= -I$(TOOLCHAIN_DIR)/include/fortify
|
||||
endif
|
||||
TARGET_CPPFLAGS+= -I$(TOOLCHAIN_DIR)/include
|
||||
TARGET_LDFLAGS+= -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib
|
||||
TARGET_PATH:=$(TOOLCHAIN_DIR)/bin:$(TARGET_PATH)
|
||||
else
|
||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
||||
TARGET_CROSS:=$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX))
|
||||
TOOLCHAIN_ROOT_DIR:=$(call qstrip,$(CONFIG_TOOLCHAIN_ROOT))
|
||||
TOOLCHAIN_BIN_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_BIN_PATH)))
|
||||
TOOLCHAIN_INC_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_INC_PATH)))
|
||||
TOOLCHAIN_LIB_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_LIB_PATH)))
|
||||
ifneq ($(TOOLCHAIN_BIN_DIRS),)
|
||||
TARGET_PATH:=$(subst $(space),:,$(TOOLCHAIN_BIN_DIRS)):$(TARGET_PATH)
|
||||
endif
|
||||
ifneq ($(TOOLCHAIN_INC_DIRS),)
|
||||
TARGET_CPPFLAGS+= $(patsubst %,-I%,$(TOOLCHAIN_INC_DIRS))
|
||||
endif
|
||||
ifneq ($(TOOLCHAIN_LIB_DIRS),)
|
||||
TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS))
|
||||
endif
|
||||
TARGET_PATH:=$(TOOLCHAIN_DIR)/bin:$(TARGET_PATH)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(STAGING_DIR_HOSTPKG)/bin:$(TARGET_PATH)
|
||||
|
||||
ifeq ($(CONFIG_SOFT_FLOAT),y)
|
||||
SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft
|
||||
ifeq ($(CONFIG_arm),y)
|
||||
TARGET_CFLAGS+= -mfloat-abi=soft
|
||||
else
|
||||
TARGET_CFLAGS+= -msoft-float
|
||||
endif
|
||||
else
|
||||
SOFT_FLOAT_CONFIG_OPTION:=
|
||||
ifeq ($(CONFIG_arm),y)
|
||||
TARGET_CFLAGS+= -mfloat-abi=hard
|
||||
endif
|
||||
endif
|
||||
|
||||
export PATH:=$(TARGET_PATH)
|
||||
export STAGING_DIR STAGING_DIR_HOST STAGING_DIR_HOSTPKG
|
||||
export SH_FUNC:=. $(INCLUDE_DIR)/shell.sh;
|
||||
|
||||
PKG_CONFIG:=$(STAGING_DIR_HOST)/bin/pkg-config
|
||||
|
||||
export PKG_CONFIG
|
||||
|
||||
HOSTCC:=gcc
|
||||
HOSTCXX:=g++
|
||||
HOST_CPPFLAGS:=-I$(STAGING_DIR_HOST)/include $(if $(IS_PACKAGE_BUILD),-I$(STAGING_DIR_HOSTPKG)/include -I$(STAGING_DIR)/host/include)
|
||||
HOST_CFLAGS:=-O2 $(HOST_CPPFLAGS)
|
||||
HOST_LDFLAGS:=-L$(STAGING_DIR_HOST)/lib $(if $(IS_PACKAGE_BUILD),-L$(STAGING_DIR_HOSTPKG)/lib -L$(STAGING_DIR)/host/lib)
|
||||
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
TARGET_AR:=$(TARGET_CROSS)gcc-ar
|
||||
TARGET_RANLIB:=$(TARGET_CROSS)gcc-ranlib
|
||||
TARGET_NM:=$(TARGET_CROSS)gcc-nm
|
||||
else
|
||||
TARGET_AR:=$(TARGET_CROSS)ar
|
||||
TARGET_RANLIB:=$(TARGET_CROSS)ranlib
|
||||
TARGET_NM:=$(TARGET_CROSS)nm
|
||||
endif
|
||||
|
||||
BUILD_KEY=$(TOPDIR)/key-build
|
||||
|
||||
FAKEROOT:=$(STAGING_DIR_HOST)/bin/fakeroot
|
||||
|
||||
TARGET_CC:=$(TARGET_CROSS)gcc
|
||||
TARGET_CXX:=$(TARGET_CROSS)g++
|
||||
KPATCH:=$(SCRIPT_DIR)/patch-kernel.sh
|
||||
SED:=$(STAGING_DIR_HOST)/bin/sed -i -e
|
||||
ESED:=$(STAGING_DIR_HOST)/bin/sed -E -i -e
|
||||
CP:=cp -fpR
|
||||
LN:=ln -sf
|
||||
XARGS:=xargs -r
|
||||
|
||||
BASH:=bash
|
||||
TAR:=tar
|
||||
FIND:=find
|
||||
PATCH:=patch
|
||||
PYTHON:=python
|
||||
|
||||
INSTALL_BIN:=install -m0755
|
||||
INSTALL_SUID:=install -m4755
|
||||
INSTALL_DIR:=install -d -m0755
|
||||
INSTALL_DATA:=install -m0644
|
||||
INSTALL_CONF:=install -m0600
|
||||
|
||||
TARGET_CC_NOCACHE:=$(TARGET_CC)
|
||||
TARGET_CXX_NOCACHE:=$(TARGET_CXX)
|
||||
HOSTCC_NOCACHE:=$(HOSTCC)
|
||||
HOSTCXX_NOCACHE:=$(HOSTCXX)
|
||||
export TARGET_CC_NOCACHE
|
||||
export TARGET_CXX_NOCACHE
|
||||
export HOSTCC_NOCACHE
|
||||
export HOSTCXX_NOCACHE
|
||||
|
||||
ifneq ($(CONFIG_CCACHE),)
|
||||
TARGET_CC:= ccache_cc
|
||||
TARGET_CXX:= ccache_cxx
|
||||
HOSTCC:= ccache $(HOSTCC)
|
||||
HOSTCXX:= ccache $(HOSTCXX)
|
||||
export CCACHE_BASEDIR:=$(TOPDIR)
|
||||
export CCACHE_DIR:=$(if $(call qstrip,$(CONFIG_CCACHE_DIR)),$(call qstrip,$(CONFIG_CCACHE_DIR)),$(TOPDIR)/.ccache)
|
||||
export CCACHE_COMPILERCHECK:=%compiler% -dumpmachine; %compiler% -dumpversion
|
||||
endif
|
||||
|
||||
TARGET_CONFIGURE_OPTS = \
|
||||
AR="$(TARGET_AR)" \
|
||||
AS="$(TARGET_CC) -c $(TARGET_ASFLAGS)" \
|
||||
LD=$(TARGET_CROSS)ld \
|
||||
NM="$(TARGET_NM)" \
|
||||
CC="$(TARGET_CC)" \
|
||||
GCC="$(TARGET_CC)" \
|
||||
CXX="$(TARGET_CXX)" \
|
||||
RANLIB="$(TARGET_RANLIB)" \
|
||||
STRIP=$(TARGET_CROSS)strip \
|
||||
OBJCOPY=$(TARGET_CROSS)objcopy \
|
||||
OBJDUMP=$(TARGET_CROSS)objdump \
|
||||
SIZE=$(TARGET_CROSS)size
|
||||
|
||||
# strip an entire directory
|
||||
ifneq ($(CONFIG_NO_STRIP),)
|
||||
RSTRIP:=:
|
||||
STRIP:=:
|
||||
else
|
||||
ifneq ($(CONFIG_USE_STRIP),)
|
||||
STRIP:=$(TARGET_CROSS)strip $(call qstrip,$(CONFIG_STRIP_ARGS))
|
||||
else
|
||||
ifneq ($(CONFIG_USE_SSTRIP),)
|
||||
STRIP:=$(STAGING_DIR_HOST)/bin/sstrip $(call qstrip,$(CONFIG_SSTRIP_ARGS))
|
||||
endif
|
||||
endif
|
||||
RSTRIP= \
|
||||
export CROSS="$(TARGET_CROSS)" \
|
||||
$(if $(PKG_BUILD_ID),KEEP_BUILD_ID=1) \
|
||||
$(if $(CONFIG_KERNEL_KALLSYMS),NO_RENAME=1) \
|
||||
$(if $(CONFIG_KERNEL_PROFILING),KEEP_SYMBOLS=1); \
|
||||
NM="$(TARGET_CROSS)nm" \
|
||||
STRIP="$(STRIP)" \
|
||||
STRIP_KMOD="$(SCRIPT_DIR)/strip-kmod.sh" \
|
||||
PATCHELF="$(STAGING_DIR_HOST)/bin/patchelf" \
|
||||
$(SCRIPT_DIR)/rstrip.sh
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IPV6),y)
|
||||
DISABLE_IPV6:=
|
||||
else
|
||||
DISABLE_IPV6:=--disable-ipv6
|
||||
endif
|
||||
|
||||
TAR_OPTIONS:=-xf -
|
||||
|
||||
ifeq ($(CONFIG_BUILD_LOG),y)
|
||||
BUILD_LOG:=1
|
||||
endif
|
||||
|
||||
export BISON_PKGDATADIR:=$(STAGING_DIR_HOST)/share/bison
|
||||
export M4:=$(STAGING_DIR_HOST)/bin/m4
|
||||
|
||||
define shvar
|
||||
V_$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
|
||||
endef
|
||||
|
||||
define shexport
|
||||
export $(call shvar,$(1))=$$(call $(1))
|
||||
endef
|
||||
|
||||
# Execute commands under flock
|
||||
# $(1) => The shell expression.
|
||||
# $(2) => The lock name. If not given, the global lock will be used.
|
||||
ifneq ($(wildcard $(STAGING_DIR_HOST)/bin/flock),)
|
||||
define locked
|
||||
SHELL= \
|
||||
flock \
|
||||
$(TMP_DIR)/.$(if $(2),$(strip $(2)),global).flock \
|
||||
-c '$(subst ','\'',$(1))'
|
||||
endef
|
||||
else
|
||||
locked=$(1)
|
||||
endif
|
||||
|
||||
# Recursively copy paths into another directory, purge dangling
|
||||
# symlinks before.
|
||||
# $(1) => File glob expression
|
||||
# $(2) => Destination directory
|
||||
define file_copy
|
||||
for src_dir in $(sort $(foreach d,$(wildcard $(1)),$(dir $(d)))); do \
|
||||
( cd $$src_dir; find -type f -or -type d ) | \
|
||||
( cd $(2); while :; do \
|
||||
read FILE; \
|
||||
[ -z "$$FILE" ] && break; \
|
||||
[ -L "$$FILE" ] || continue; \
|
||||
echo "Removing symlink $(2)/$$FILE"; \
|
||||
rm -f "$$FILE"; \
|
||||
done; ); \
|
||||
done; \
|
||||
$(CP) $(1) $(2)
|
||||
endef
|
||||
|
||||
# Calculate sha256sum of any plain file within a given directory
|
||||
# $(1) => Input directory
|
||||
# $(2) => If set, recurse into subdirectories
|
||||
define sha256sums
|
||||
(cd $(1); find . $(if $(2),,-maxdepth 1) -type f -not -name 'sha256sums' -printf "%P\n" | sort | \
|
||||
xargs -r $(STAGING_DIR_HOST)/bin/mkhash -n sha256 | sed -ne 's!^\(.*\) \(.*\)$$!\1 *\2!p' > sha256sums)
|
||||
endef
|
||||
|
||||
# file extension
|
||||
ext=$(word $(words $(subst ., ,$(1))),$(subst ., ,$(1)))
|
||||
|
||||
all:
|
||||
FORCE: ;
|
||||
.PHONY: FORCE
|
||||
|
||||
check: FORCE
|
||||
@true
|
||||
|
||||
val.%:
|
||||
@$(if $(filter undefined,$(origin $*)),\
|
||||
echo "$* undefined" >&2, \
|
||||
echo '$(subst ','"'"',$($*))' \
|
||||
)
|
||||
|
||||
var.%:
|
||||
@$(if $(filter undefined,$(origin $*)),\
|
||||
echo "$* undefined" >&2, \
|
||||
echo "$*='"'$(subst ','"'\"'\"'"',$($*))'"'" \
|
||||
)
|
||||
|
||||
endif #__rules_inc
|
|
@ -57,11 +57,12 @@ diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
|
|||
index 2033bb8683033..90ccc71231c1a 100644
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1874,6 +1874,7 @@ struct xhci_hcd {
|
||||
@@ -1874,7 +1874,8 @@ struct xhci_hcd {
|
||||
#define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34)
|
||||
#define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35)
|
||||
#define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(36)
|
||||
+#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(37)
|
||||
#define XHCI_DISABLE_SPARSE BIT_ULL(38)
|
||||
|
||||
unsigned int num_active_eps;
|
||||
unsigned int limit_active_eps;
|
||||
|
|
|
@ -3288,14 +3288,14 @@ diff -aurN linux-5.4.64/net/ipv4/syncookies.c linux-5.4.64.mptcp/net/ipv4/syncoo
|
|||
* the ACK carries the same options again (see RFC1122 4.2.3.8)
|
||||
*/
|
||||
@@ -387,15 +421,15 @@
|
||||
/* Try to redo what tcp_v4_send_synack did. */
|
||||
req->rsk_window_clamp = tp->window_clamp ? :dst_metric(&rt->dst, RTAX_WINDOW);
|
||||
(req->rsk_window_clamp > full_space || req->rsk_window_clamp == 0))
|
||||
req->rsk_window_clamp = full_space;
|
||||
|
||||
- tcp_select_initial_window(sk, tcp_full_space(sk), req->mss,
|
||||
- tcp_select_initial_window(sk, full_space, req->mss,
|
||||
- &req->rsk_rcv_wnd, &req->rsk_window_clamp,
|
||||
- ireq->wscale_ok, &rcv_wscale,
|
||||
- dst_metric(&rt->dst, RTAX_INITRWND));
|
||||
+ tp->ops->select_initial_window(sk, tcp_full_space(sk), req->mss,
|
||||
+ tp->ops->select_initial_window(sk, full_space, req->mss,
|
||||
+ &req->rsk_rcv_wnd, &req->rsk_window_clamp,
|
||||
+ ireq->wscale_ok, &rcv_wscale,
|
||||
+ dst_metric(&rt->dst, RTAX_INITRWND));
|
||||
|
@ -4028,16 +4028,6 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c
|
|||
#ifdef CONFIG_MMU
|
||||
case TCP_ZEROCOPY_RECEIVE: {
|
||||
struct tcp_zerocopy_receive zc;
|
||||
@@ -3862,7 +4143,9 @@
|
||||
if (sk->sk_state == TCP_SYN_SENT || sk->sk_state == TCP_SYN_RECV)
|
||||
TCP_INC_STATS(sock_net(sk), TCP_MIB_ATTEMPTFAILS);
|
||||
|
||||
+ WARN_ON(sk->sk_state == TCP_CLOSE);
|
||||
tcp_set_state(sk, TCP_CLOSE);
|
||||
+
|
||||
tcp_clear_xmit_timers(sk);
|
||||
if (req)
|
||||
reqsk_fastopen_remove(sk, req, false);
|
||||
@@ -3878,6 +4161,8 @@
|
||||
|
||||
int tcp_abort(struct sock *sk, int err)
|
||||
|
@ -4592,12 +4582,13 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp
|
|||
{
|
||||
int eaten;
|
||||
struct sk_buff *tail = skb_peek_tail(&sk->sk_receive_queue);
|
||||
@@ -4774,7 +4838,7 @@
|
||||
@@ -4774,8 +4838,8 @@
|
||||
int avail = tp->rcv_nxt - tp->copied_seq;
|
||||
|
||||
if (avail < sk->sk_rcvlowat && !tcp_rmem_pressure(sk) &&
|
||||
- !sock_flag(sk, SOCK_DONE))
|
||||
+ !sock_flag(sk, SOCK_DONE) && !mptcp(tp))
|
||||
- !sock_flag(sk, SOCK_DONE) &&
|
||||
+ !sock_flag(sk, SOCK_DONE) && !mptcp(tp) &&
|
||||
tcp_receive_window(tp) > inet_csk(sk)->icsk_ack.rcv_mss)
|
||||
return;
|
||||
|
||||
sk->sk_data_ready(sk);
|
||||
|
@ -6714,14 +6705,14 @@ diff -aurN linux-5.4.64/net/ipv6/syncookies.c linux-5.4.64.mptcp/net/ipv6/syncoo
|
|||
goto out_free;
|
||||
|
||||
@@ -241,15 +259,15 @@
|
||||
}
|
||||
(req->rsk_window_clamp > full_space || req->rsk_window_clamp == 0))
|
||||
req->rsk_window_clamp = full_space;
|
||||
|
||||
req->rsk_window_clamp = tp->window_clamp ? :dst_metric(dst, RTAX_WINDOW);
|
||||
- tcp_select_initial_window(sk, tcp_full_space(sk), req->mss,
|
||||
- tcp_select_initial_window(sk, full_space, req->mss,
|
||||
- &req->rsk_rcv_wnd, &req->rsk_window_clamp,
|
||||
- ireq->wscale_ok, &rcv_wscale,
|
||||
- dst_metric(dst, RTAX_INITRWND));
|
||||
+ tp->ops->select_initial_window(sk, tcp_full_space(sk), req->mss,
|
||||
+ tp->ops->select_initial_window(sk, full_space, req->mss,
|
||||
+ &req->rsk_rcv_wnd, &req->rsk_window_clamp,
|
||||
+ ireq->wscale_ok, &rcv_wscale,
|
||||
+ dst_metric(dst, RTAX_INITRWND));
|
||||
|
|
3371
root/target/linux/generic/hack-5.4/693-tcp_bbr2.patch
Normal file
3371
root/target/linux/generic/hack-5.4/693-tcp_bbr2.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,54 +0,0 @@
|
|||
From 97fdec52fff8079d3af104e8723602a3cb9d2a11 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Thu, 20 Jun 2019 23:06:41 +0200
|
||||
Subject: [PATCH] net: dts: add second gmac for bananapi r2
|
||||
|
||||
---
|
||||
arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
index 2b760f90f38c..fad09608b86c 100644
|
||||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
@@ -143,13 +143,25 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ gmac1: mac@1 {
|
||||
+ compatible = "mediatek,eth-mac";
|
||||
+ reg = <1>;
|
||||
+ label = "wan";
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&ephy0>;
|
||||
+ };
|
||||
+
|
||||
mdio: mdio-bus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
- switch@0 {
|
||||
- compatible = "mediatek,mt7530";
|
||||
+ ephy0: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
+ };
|
||||
+
|
||||
+ switch@1f {
|
||||
+ compatible = "mediatek,mt7530";
|
||||
+ reg = <0x1f>;
|
||||
reset-gpios = <&pio 33 0>;
|
||||
core-supply = <&mt6323_vpa_reg>;
|
||||
io-supply = <&mt6323_vemc3v3_reg>;
|
||||
@@ -158,10 +170,12 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
+/* Disabled, is now handled by gmac1 (eth1/wan) via phy-handle!
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
label = "wan";
|
||||
};
|
||||
+*/
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
|
@ -1,26 +1,12 @@
|
|||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts 2020-04-19 11:02:56.505715879 +0200
|
||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts 2020-04-19 11:03:53.620780390 +0200
|
||||
@@ -196,7 +196,7 @@
|
||||
gmac1: mac@1 {
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <1>;
|
||||
- label = "wan";
|
||||
+ label = "lan";
|
||||
phy-mode = "rgmii";
|
||||
phy-handle = <&ephy0>;
|
||||
local-mac-address = [00 0a 35 00 00 02];
|
||||
@@ -221,31 +221,31 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts.anc 2020-11-16 15:48:00.852410183 +0100
|
||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts 2020-11-16 15:49:23.878965822 +0100
|
||||
@@ -210,27 +210,27 @@
|
||||
|
||||
-/* Disabled, is now handled by gmac1 (eth1/wan) via phy-handle!
|
||||
+/* Disabled, is now handled by gmac1 (eth1/lan) via phy-handle!
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
- label = "wan";
|
||||
+ label = "lan";
|
||||
};
|
||||
*/
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
|
Loading…
Reference in a new issue