SHA256
1
0
forked from pool/qemu

Accepting request 1007904 from home:dfaggioli:devel:Virtualization

- Fix bsc#1204001. Patches are not upstream, and have been picked up
  and backported from the ML. This is something we usually prefer to
  avoid, but this is urgent, and the patches looks fine, with high
  chances for them to be included as they are (and if they're not, we
  will revisit this, i.e., drop them and re-include the ones that are
  actually committed)
* Patches added:
  linux-user-add-more-compat-ioctl-definit.patch
  linux-user-drop-conditionals-for-obsolet.patch
  linux-user-remove-conditionals-for-many-.patch
  meson-enforce-a-minimum-Linux-kernel-hea.patch
- Improve the output of update_git.sh, by including the list of
  repos to which we have downstream patches.
- Fix: bsc#1202665, CVE-2022-2962
* Patches added:
  net-tulip-Restrict-DMA-engine-to-memorie.patch

OBS-URL: https://build.opensuse.org/request/show/1007904
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=735
This commit is contained in:
Dario Faggioli 2022-10-04 12:37:05 +00:00 committed by Git OBS Bridge
parent d889bd32da
commit d4b795b3fc
9 changed files with 471 additions and 2 deletions

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dd2a3b0dd5a7afd9f7bf34d986fa29521b25e75ef3f83312f7332668abeae2e9
size 40104
oid sha256:16313b28799b38f8a397b8c3886445780eaff2dc86234f366d8ee5fdfcdb5046
size 44932

View File

@ -0,0 +1,66 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:03 +0100
Subject: linux-user: add more compat ioctl definitions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
GLibc changes prevent us from including linux/fs.h anymore,
and we previously adjusted to this in
commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532
Author: Daniel P. Berrangé <berrange@redhat.com>
Date: Tue Aug 2 12:41:34 2022 -0400
linux-user: fix compat with glibc >= 2.36 sys/mount.h
That change required adding compat ioctl definitions on the
QEMU side for any ioctls that we would otherwise obtain
from linux/fs.h. This commit adds more that were initially
missed, due to their usage being conditionalized in QEMU.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/syscall.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 9d92e56e3996dc2174a4af9d0491..5acb463d5e11311b2108358c7c01 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -111,6 +111,31 @@
#define FS_IOC32_SETFLAGS _IOW('f', 2, int)
#define FS_IOC32_GETVERSION _IOR('v', 1, int)
#define FS_IOC32_SETVERSION _IOW('v', 2, int)
+
+#define BLKGETSIZE64 _IOR(0x12,114,size_t)
+#define BLKDISCARD _IO(0x12,119)
+#define BLKIOMIN _IO(0x12,120)
+#define BLKIOOPT _IO(0x12,121)
+#define BLKALIGNOFF _IO(0x12,122)
+#define BLKPBSZGET _IO(0x12,123)
+#define BLKDISCARDZEROES _IO(0x12,124)
+#define BLKSECDISCARD _IO(0x12,125)
+#define BLKROTATIONAL _IO(0x12,126)
+#define BLKZEROOUT _IO(0x12,127)
+
+#define FIBMAP _IO(0x00,1)
+#define FIGETBSZ _IO(0x00,2)
+
+struct file_clone_range {
+ __s64 src_fd;
+ __u64 src_offset;
+ __u64 src_length;
+ __u64 dest_offset;
+};
+
+#define FICLONE _IOW(0x94, 9, int)
+#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
+
#else
#include <linux/fs.h>
#endif

View File

@ -0,0 +1,134 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:06 +0100
Subject: linux-user: drop conditionals for obsolete kernel header versions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
Given our newly enforced 4.18 baseline for the kernel headers version,
we can drop any conditional checks for older versions.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/linux_loop.h | 4 ----
linux-user/syscall.c | 14 ++------------
tests/tcg/i386/test-i386.c | 10 +++-------
3 files changed, 5 insertions(+), 23 deletions(-)
diff --git a/linux-user/linux_loop.h b/linux-user/linux_loop.h
index f80b96f1ff92c71bc1232b733d37..5a9e0edef2729642bfca8f146e6d 100644
--- a/linux-user/linux_loop.h
+++ b/linux-user/linux_loop.h
@@ -31,10 +31,6 @@ enum {
#include <asm/posix_types.h> /* for __kernel_old_dev_t */
#include <asm/types.h> /* for __u64 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) /* This is a guess. */
-#define __kernel_old_dev_t __kernel_dev_t
-#endif
-
/* Backwards compatibility version */
struct loop_info {
int lo_number; /* ioctl r/o */
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 5acb463d5e11311b2108358c7c01..d7c0d4a45d3907f1ef28fe93f9b6 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -2525,16 +2525,12 @@ set_timeout:
case NETLINK_DROP_MEMBERSHIP:
case NETLINK_BROADCAST_ERROR:
case NETLINK_NO_ENOBUFS:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
case NETLINK_LISTEN_ALL_NSID:
case NETLINK_CAP_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
case NETLINK_EXT_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
case NETLINK_GET_STRICT_CHK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) */
break;
default:
goto unimplemented;
@@ -2903,16 +2899,12 @@ get_timeout:
case NETLINK_PKTINFO:
case NETLINK_BROADCAST_ERROR:
case NETLINK_NO_ENOBUFS:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
case NETLINK_LISTEN_ALL_NSID:
case NETLINK_CAP_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
case NETLINK_EXT_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
case NETLINK_GET_STRICT_CHK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) */
if (get_user_u32(len, optlen)) {
return -TARGET_EFAULT;
}
@@ -2929,7 +2921,6 @@ get_timeout:
return -TARGET_EFAULT;
}
break;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
case NETLINK_LIST_MEMBERSHIPS:
{
uint32_t *results;
@@ -2960,7 +2951,6 @@ get_timeout:
unlock_user(results, optval_addr, 0);
break;
}
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) */
default:
goto unimplemented;
}
diff --git a/tests/tcg/i386/test-i386.c b/tests/tcg/i386/test-i386.c
index ac8d5a3c1f8b6eacf32649155c98..bd7ebb9d68b9e90673ed16a6f4cd 100644
--- a/tests/tcg/i386/test-i386.c
+++ b/tests/tcg/i386/test-i386.c
@@ -1231,10 +1231,6 @@ static inline int modify_ldt(int func, void * ptr, unsigned long bytecount)
return syscall(__NR_modify_ldt, func, ptr, bytecount);
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 66)
-#define modify_ldt_ldt_s user_desc
-#endif
-
#define MK_SEL(n) (((n) << 3) | 7)
uint8_t seg_data1[4096];
@@ -1272,7 +1268,7 @@ uint8_t seg_data2[4096];
/* NOTE: we use Linux modify_ldt syscall */
void test_segs(void)
{
- struct modify_ldt_ldt_s ldt;
+ struct user_desc ldt;
long long ldt_table[3];
int res, res2;
char tmp;
@@ -1374,7 +1370,7 @@ extern char code16_func3;
void test_code16(void)
{
- struct modify_ldt_ldt_s ldt;
+ struct user_desc ldt;
int res, res2;
/* build a code segment */
@@ -1781,7 +1777,7 @@ void test_exceptions(void)
}
{
- struct modify_ldt_ldt_s ldt;
+ struct user_desc ldt;
ldt.entry_number = 1;
ldt.base_addr = (unsigned long)&seg_data1;
ldt.limit = (sizeof(seg_data1) + 0xfff) >> 12;

View File

@ -0,0 +1,101 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:04 +0100
Subject: linux-user: remove conditionals for many fs.h ioctls
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
These ioctls have been defined in linux/fs.h for a long time
* BLKGETSIZE64 - <2.6.12 (linux.git epoch)
* BLKDISCARD - 2.6.28 (d30a2605be9d5132d95944916e8f578fcfe4f976)
* BLKIOMIN - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKIOOPT - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKALIGNOFF - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKPBSZGET - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKDISCARDZEROES - 2.6.32 (98262f2762f0067375f83824d81ea929e37e6bfe)
* BLKSECDISCARD - 2.6.36 (8d57a98ccd0b4489003473979da8f5a1363ba7a3)
* BLKROTATIONAL - 3.2 (ef00f59c95fe6e002e7c6e3663cdea65e253f4cc)
* BLKZEROOUT - 3.6 (66ba32dc167202c3cf8c86806581a9393ec7f488)
* FIBMAP - <2.6.12 (linux.git epoch)
* FIGETBSZ - <2.6.12 (linux.git epoch)
and when building with latest glibc, we'll see compat definitions
in syscall.c anyway thanks to the previous patch. Thus we can
assume they always exist and remove the conditional checks.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/ioctls.h | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index f182d40190ed43ffa1bbc4fd09cb..071f7ca2537560e3c923c9a18abb 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -96,9 +96,7 @@
IOCTL(BLKROGET, IOC_R, MK_PTR(TYPE_INT))
IOCTL(BLKRRPART, 0, TYPE_NULL)
IOCTL(BLKGETSIZE, IOC_R, MK_PTR(TYPE_ULONG))
-#ifdef BLKGETSIZE64
IOCTL(BLKGETSIZE64, IOC_R, MK_PTR(TYPE_ULONGLONG))
-#endif
IOCTL(BLKFLSBUF, 0, TYPE_NULL)
IOCTL(BLKRASET, 0, TYPE_INT)
IOCTL(BLKRAGET, IOC_R, MK_PTR(TYPE_LONG))
@@ -107,33 +105,15 @@
IOCTL_SPECIAL(BLKPG, IOC_W, do_ioctl_blkpg,
MK_PTR(MK_STRUCT(STRUCT_blkpg_ioctl_arg)))
-#ifdef BLKDISCARD
IOCTL(BLKDISCARD, IOC_W, MK_PTR(MK_ARRAY(TYPE_ULONGLONG, 2)))
-#endif
-#ifdef BLKIOMIN
IOCTL(BLKIOMIN, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKIOOPT
IOCTL(BLKIOOPT, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKALIGNOFF
IOCTL(BLKALIGNOFF, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKPBSZGET
IOCTL(BLKPBSZGET, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKDISCARDZEROES
IOCTL(BLKDISCARDZEROES, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKSECDISCARD
IOCTL(BLKSECDISCARD, IOC_W, MK_PTR(MK_ARRAY(TYPE_ULONGLONG, 2)))
-#endif
-#ifdef BLKROTATIONAL
IOCTL(BLKROTATIONAL, IOC_R, MK_PTR(TYPE_SHORT))
-#endif
-#ifdef BLKZEROOUT
IOCTL(BLKZEROOUT, IOC_W, MK_PTR(MK_ARRAY(TYPE_ULONGLONG, 2)))
-#endif
IOCTL(FDMSGON, 0, TYPE_NULL)
IOCTL(FDMSGOFF, 0, TYPE_NULL)
@@ -149,17 +129,13 @@
IOCTL(FDTWADDLE, 0, TYPE_NULL)
IOCTL(FDEJECT, 0, TYPE_NULL)
-#ifdef FIBMAP
IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG))
-#endif
#ifdef FICLONE
IOCTL(FICLONE, IOC_W, TYPE_INT)
IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range)))
#endif
-#ifdef FIGETBSZ
IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG))
-#endif
#ifdef CONFIG_FIEMAP
IOCTL_SPECIAL(FS_IOC_FIEMAP, IOC_W | IOC_R, do_ioctl_fs_ioc_fiemap,
MK_PTR(MK_STRUCT(STRUCT_fiemap)))

View File

@ -0,0 +1,62 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:05 +0100
Subject: meson: enforce a minimum Linux kernel headers version >= 4.18
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
Various areas of QEMU have a dependency on Linux kernel header
definitions. This falls under the scope of our supported platforms
matrix, but historically we've not checked for a minimum kernel
headers version. This has made it unclear when we can drop support
for older kernel headers.
* Alpine 3.14: 5.10
* CentOS 8: 4.18
* CentOS 9: 5.14
* Debian 10: 4.19
* Debian 11: 5.10
* Fedora 35: 5.19
* Fedora 36: 5.19
* OpenSUSE 15.3: 5.3.0
* Ubuntu 20.04: 5.4
* Ubuntu 22.04: 5.15
The above ignores the 3rd version digit since distros update their
packages periodically and such updates don't generally affect public
APIs to the extent that it matters for our build time check.
Overall, we can set the baseline to 4.18 currently.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
meson.build | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/meson.build b/meson.build
index 09145d35aa3e684e92da7895ac67..a923eedefd56bc1401a111d6d8f7 100644
--- a/meson.build
+++ b/meson.build
@@ -248,6 +248,18 @@ if targetos == 'linux'
add_project_arguments('-isystem', meson.current_source_dir() / 'linux-headers',
'-isystem', 'linux-headers',
language: ['c', 'cpp'])
+
+ if not cc.compiles('''
+ #include <linux/version.h>
+ int main(void) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
+#error "QEMU requires Linux kernel headers version >= 4.18.0"
+#endif
+ return 0;
+ }''')
+ error('QEMU requires Linux kernel headers version >= 4.18.0')
+endif
+
endif
add_project_arguments('-iquote', '.',

View File

@ -0,0 +1,60 @@
From: Zheyu Ma <zheyuma97@gmail.com>
Date: Sun, 21 Aug 2022 20:43:43 +0800
Subject: net: tulip: Restrict DMA engine to memories
Git-commit: 36a894aeb64a2e02871016da1c37d4a4ca109182
References: bsc#1202665, CVE-2022-2962
The DMA engine is started by I/O access and then itself accesses the
I/O registers, triggering a reentrancy bug.
The following log can reveal it:
==5637==ERROR: AddressSanitizer: stack-overflow
#0 0x5595435f6078 in tulip_xmit_list_update qemu/hw/net/tulip.c:673
#1 0x5595435f204a in tulip_write qemu/hw/net/tulip.c:805:13
#2 0x559544637f86 in memory_region_write_accessor qemu/softmmu/memory.c:492:5
#3 0x5595446379fa in access_with_adjusted_size qemu/softmmu/memory.c:554:18
#4 0x5595446372fa in memory_region_dispatch_write qemu/softmmu/memory.c
#5 0x55954468b74c in flatview_write_continue qemu/softmmu/physmem.c:2825:23
#6 0x559544683662 in flatview_write qemu/softmmu/physmem.c:2867:12
#7 0x5595446833f3 in address_space_write qemu/softmmu/physmem.c:2963:18
#8 0x5595435fb082 in dma_memory_rw_relaxed qemu/include/sysemu/dma.h:87:12
#9 0x5595435fb082 in dma_memory_rw qemu/include/sysemu/dma.h:130:12
#10 0x5595435fb082 in dma_memory_write qemu/include/sysemu/dma.h:171:12
#11 0x5595435fb082 in stl_le_dma qemu/include/sysemu/dma.h:272:1
#12 0x5595435fb082 in stl_le_pci_dma qemu/include/hw/pci/pci.h:910:1
#13 0x5595435fb082 in tulip_desc_write qemu/hw/net/tulip.c:101:9
#14 0x5595435f7e3d in tulip_xmit_list_update qemu/hw/net/tulip.c:706:9
#15 0x5595435f204a in tulip_write qemu/hw/net/tulip.c:805:13
Fix this bug by restricting the DMA engine to memories regions.
Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
hw/net/tulip.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/net/tulip.c b/hw/net/tulip.c
index 097e905bec296dd1c5e96771ef63..b9e42c322ab1fb92416adfc5fda9 100644
--- a/hw/net/tulip.c
+++ b/hw/net/tulip.c
@@ -70,7 +70,7 @@ static const VMStateDescription vmstate_pci_tulip = {
static void tulip_desc_read(TULIPState *s, hwaddr p,
struct tulip_descriptor *desc)
{
- const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
+ const MemTxAttrs attrs = { .memory = true };
if (s->csr[0] & CSR0_DBO) {
ldl_be_pci_dma(&s->dev, p, &desc->status, attrs);
@@ -88,7 +88,7 @@ static void tulip_desc_read(TULIPState *s, hwaddr p,
static void tulip_desc_write(TULIPState *s, hwaddr p,
struct tulip_descriptor *desc)
{
- const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
+ const MemTxAttrs attrs = { .memory = true };
if (s->csr[0] & CSR0_DBO) {
stl_be_pci_dma(&s->dev, p, desc->status, attrs);

View File

@ -1,3 +1,31 @@
-------------------------------------------------------------------
Tue Oct 4 11:49:53 UTC 2022 - Dario Faggioli <dfaggioli@suse.com>
- Fix bsc#1204001. Patches are not upstream, and have been picked up
and backported from the ML. This is something we usually prefer to
avoid, but this is urgent, and the patches looks fine, with high
chances for them to be included as they are (and if they're not, we
will revisit this, i.e., drop them and re-include the ones that are
actually committed)
* Patches added:
linux-user-add-more-compat-ioctl-definit.patch
linux-user-drop-conditionals-for-obsolet.patch
linux-user-remove-conditionals-for-many-.patch
meson-enforce-a-minimum-Linux-kernel-hea.patch
-------------------------------------------------------------------
Tue Oct 4 11:07:14 UTC 2022 - Dario Faggioli <dfaggioli@suse.com>
- Improve the output of update_git.sh, by including the list of
repos to which we have downstream patches.
-------------------------------------------------------------------
Fri Sep 30 14:16:50 UTC 2022 - Dario Faggioli <dfaggioli@suse.com>
- Fix: bsc#1202665, CVE-2022-2962
* Patches added:
net-tulip-Restrict-DMA-engine-to-memorie.patch
-------------------------------------------------------------------
Fri Sep 30 12:48:20 UTC 2022 - Dirk Müller <dmueller@suse.com>

View File

@ -189,6 +189,11 @@ Patch00026: Make-installed-scripts-explicitly-python.patch
Patch00027: meson-install-ivshmem-client-and-ivshmem.patch
Patch00028: meson-remove-pkgversion-from-CONFIG_STAM.patch
Patch00029: linux-user-use-max-as-default-CPU-model-.patch
Patch00030: net-tulip-Restrict-DMA-engine-to-memorie.patch
Patch00031: linux-user-add-more-compat-ioctl-definit.patch
Patch00032: linux-user-remove-conditionals-for-many-.patch
Patch00033: meson-enforce-a-minimum-Linux-kernel-hea.patch
Patch00034: linux-user-drop-conditionals-for-obsolet.patch
# Patches applied in roms/seabios/:
Patch01000: seabios-switch-to-python3-as-needed.patch
Patch01001: enable-cross-compilation-on-ARM.patch

View File

@ -1069,6 +1069,19 @@ else # not LATEST
echo "To modify package patches, use the frombundle branch as the basis for updating"
echo "the $GIT_BRANCH branch with the new patch queue, e.g., like this:"
echo " git checkout -f --recurse-submodules -B $GIT_BRANCH frombundle"
echo "in the following repositories:"
for R in $(grep "Patches applied" $PKG.spec | awk '{print $(NF)}'|sed 's/:$//'); do
for (( i=0; i <$REPO_COUNT; i++ )); do
if [ "${R}" = "project" ]; then
echo " * ${LOCAL_REPO_MAP[0]}"
continue 2
fi
if [ "${R}" = "${PATCH_PATH_MAP[$i]}" ]; then
echo " * ${LOCAL_REPO_MAP[$i]}"
continue 2
fi
done
done
echo "Then make your changes and, when done, export them back to the package with:"
echo " bash ./update_git.sh git2pkg"
;;