mrezanin pushed to rpms/qemu (eln). "* Thu Apr 11 2019 Danilo Cesar
Lemes de Paula <ddepaula@redhat.com> - 3.1.0-21.el8 (..more)"
by notifications@fedoraproject.org
Notification time stamped 2023-07-12 13:31:05 UTC
From 797ce578a4b29084d3455d4fa3eca0667d330875 Mon Sep 17 00:00:00 2001
From: Danilo C. L. de Paula <ddepaula(a)redhat.com>
Date: Apr 11 2019 17:06:53 +0000
Subject: * Thu Apr 11 2019 Danilo Cesar Lemes de Paula <ddepaula(a)redhat.com> - 3.1.0-21.el8
- kvm-Remove-7-qcow2-and-luks-iotests-that-are-taking-25-s.patch [bz#1683473]
- kvm-spapr-fix-out-of-bounds-write-in-spapr_populate_drme.patch [bz#1674438]
- kvm-qcow2-include-LUKS-payload-overhead-in-qemu-img-meas.patch [bz#1655065]
- kvm-iotests-add-LUKS-payload-overhead-to-178-qemu-img-me.patch [bz#1655065]
- kvm-vnc-detect-and-optimize-pageflips.patch [bz#1666206]
- kvm-Load-kvm-module-during-boot.patch [bz#1676907 bz#1685995]
- kvm-hostmem-file-reject-invalid-pmem-file-sizes.patch [bz#1669053]
- kvm-iotests-Fix-test-200-on-s390x-without-virtio-pci.patch [bz#1687582]
- kvm-block-file-posix-do-not-fail-on-unlock-bytes.patch [bz#1652572]
- Resolves: bz#1652572
(QEMU core dumped if stop nfs service during migration)
- Resolves: bz#1655065
([rhel.8.0][fast train]'qemu-img measure' size does not match the real allocated size for luks-inside-qcow2 image)
- Resolves: bz#1666206
(vnc server should detect page-flips and avoid sending fullscreen updates then.)
- Resolves: bz#1669053
(Guest call trace when boot with nvdimm device backed by /dev/dax)
- Resolves: bz#1674438
(RHEL8.0 - Guest reboot fails after memory hotplug multiple times (kvm))
- Resolves: bz#1676907
(/dev/kvm device exists but kernel module is not loaded on boot up causing VM start to fail in libvirt)
- Resolves: bz#1683473
(Remove 7 qcow2 & luks iotests from rhel8 fast train build %check phase)
- Resolves: bz#1685995
(/dev/kvm device exists but kernel module is not loaded on boot up causing VM start to fail in libvirt)
- Resolves: bz#1687582
(QEMU IOTEST 200 fails with 'virtio-scsi-pci is not a valid device model name')
---
diff --git a/kvm-block-file-posix-do-not-fail-on-unlock-bytes.patch b/kvm-block-file-posix-do-not-fail-on-unlock-bytes.patch
new file mode 100644
index 0000000..75e4362
--- /dev/null
+++ b/kvm-block-file-posix-do-not-fail-on-unlock-bytes.patch
@@ -0,0 +1,58 @@
+From cc7dbe3ae92a2bb1557df184493a331fe2381003 Mon Sep 17 00:00:00 2001
+From: Max Reitz <mreitz(a)redhat.com>
+Date: Wed, 3 Apr 2019 17:53:52 +0100
+Subject: [PATCH 9/9] block/file-posix: do not fail on unlock bytes
+
+RH-Author: Max Reitz <mreitz(a)redhat.com>
+Message-id: <20190403175352.27439-2-mreitz(a)redhat.com>
+Patchwork-id: 85408
+O-Subject: [RHEL-AV-8.0.1 qemu-kvm PATCH 1/1] block/file-posix: do not fail on unlock bytes
+Bugzilla: 1652572
+RH-Acked-by: John Snow <jsnow(a)redhat.com>
+RH-Acked-by: Stefano Garzarella <sgarzare(a)redhat.com>
+RH-Acked-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+
+From: Vladimir Sementsov-Ogievskiy <vsementsov(a)virtuozzo.com>
+
+bdrv_replace_child() calls bdrv_check_perm() with error_abort on
+loosening permissions. However file-locking operations may fail even
+in this case, for example on NFS. And this leads to Qemu crash.
+
+Let's avoid such errors. Note, that we ignore such things anyway on
+permission update commit and abort.
+
+Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov(a)virtuozzo.com>
+Signed-off-by: Kevin Wolf <kwolf(a)redhat.com>
+(cherry picked from commit 696aaaed579ac5bf5fa336216909b46d3d8f07a8)
+Signed-off-by: Max Reitz <mreitz(a)redhat.com>
+Signed-off-by: Danilo C. L. de Paula <ddepaula(a)redhat.com>
+---
+ block/file-posix.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/block/file-posix.c b/block/file-posix.c
+index 07bbdab..f0af144 100644
+--- a/block/file-posix.c
++++ b/block/file-posix.c
+@@ -812,6 +812,18 @@ static int raw_handle_perm_lock(BlockDriverState *bs,
+
+ switch (op) {
+ case RAW_PL_PREPARE:
++ if ((s->perm | new_perm) == s->perm &&
++ (s->shared_perm & new_shared) == s->shared_perm)
++ {
++ /*
++ * We are going to unlock bytes, it should not fail. If it fail due
++ * to some fs-dependent permission-unrelated reasons (which occurs
++ * sometimes on NFS and leads to abort in bdrv_replace_child) we
++ * can't prevent such errors by any check here. And we ignore them
++ * anyway in ABORT and COMMIT.
++ */
++ return 0;
++ }
+ ret = raw_apply_lock_bytes(s, s->fd, s->perm | new_perm,
+ ~s->shared_perm | ~new_shared,
+ false, errp);
+--
+1.8.3.1
+
diff --git a/kvm-hostmem-file-reject-invalid-pmem-file-sizes.patch b/kvm-hostmem-file-reject-invalid-pmem-file-sizes.patch
new file mode 100644
index 0000000..5be56ee
--- /dev/null
+++ b/kvm-hostmem-file-reject-invalid-pmem-file-sizes.patch
@@ -0,0 +1,183 @@
+From 1b9f228788eb2d7f50961241e28f7a9afadc62ab Mon Sep 17 00:00:00 2001
+From: Stefan Hajnoczi <stefanha(a)redhat.com>
+Date: Thu, 21 Mar 2019 10:56:08 +0000
+Subject: [PATCH 7/9] hostmem-file: reject invalid pmem file sizes
+
+RH-Author: Stefan Hajnoczi <stefanha(a)redhat.com>
+Message-id: <20190321105608.29960-2-stefanha(a)redhat.com>
+Patchwork-id: 85081
+O-Subject: [RHEL-AV-8.0.1 qemu-kvm PATCH 1/1] hostmem-file: reject invalid pmem file sizes
+Bugzilla: 1669053
+RH-Acked-by: Eduardo Habkost <ehabkost(a)redhat.com>
+RH-Acked-by: Pankaj Gupta <pagupta(a)redhat.com>
+RH-Acked-by: Igor Mammedov <imammedo(a)redhat.com>
+
+Guests started with NVDIMMs larger than the underlying host file produce
+confusing errors inside the guest. This happens because the guest
+accesses pages beyond the end of the file.
+
+Check the pmem file size on startup and print a clear error message if
+the size is invalid.
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1669053
+Cc: Wei Yang <richardw.yang(a)linux.intel.com>
+Cc: Zhang Yi <yi.z.zhang(a)linux.intel.com>
+Cc: Eduardo Habkost <ehabkost(a)redhat.com>
+Cc: Igor Mammedov <imammedo(a)redhat.com>
+Signed-off-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+Message-Id: <20190214031004.32522-3-stefanha(a)redhat.com>
+Reviewed-by: Wei Yang <richardw.yang(a)linux.intel.com>
+Reviewed-by: Igor Mammedov <imammedo(a)redhat.com>
+Reviewed-by: Pankaj Gupta <pagupta(a)redhat.com>
+Signed-off-by: Eduardo Habkost <ehabkost(a)redhat.com>
+(cherry picked from commit 314aec4a6e06844937f1677f6cba21981005f389)
+Signed-off-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+Signed-off-by: Danilo C. L. de Paula <ddepaula(a)redhat.com>
+---
+ backends/hostmem-file.c | 23 +++++++++++++++++++++
+ include/qemu/osdep.h | 13 ++++++++++++
+ util/oslib-posix.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++
+ util/oslib-win32.c | 5 +++++
+ 4 files changed, 94 insertions(+)
+
+diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
+index 6630021..8d85d56 100644
+--- a/backends/hostmem-file.c
++++ b/backends/hostmem-file.c
+@@ -57,6 +57,29 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
+ #ifndef CONFIG_POSIX
+ error_setg(errp, "-mem-path not supported on this host");
+ #else
++
++ /*
++ * Verify pmem file size since starting a guest with an incorrect size
++ * leads to confusing failures inside the guest.
++ */
++ if (fb->is_pmem) {
++ Error *local_err = NULL;
++ uint64_t size;
++
++ size = qemu_get_pmem_size(fb->mem_path, &local_err);
++ if (!size) {
++ error_propagate(errp, local_err);
++ return;
++ }
++
++ if (backend->size > size) {
++ error_setg(errp, "size property %" PRIu64 " is larger than "
++ "pmem file \"%s\" size %" PRIu64, backend->size,
++ fb->mem_path, size);
++ return;
++ }
++ }
++
+ backend->force_prealloc = mem_prealloc;
+ path = object_get_canonical_path(OBJECT(backend));
+ memory_region_init_ram_from_file(&backend->mr, OBJECT(backend),
+diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
+index 3bf48bc..c68a85b 100644
+--- a/include/qemu/osdep.h
++++ b/include/qemu/osdep.h
+@@ -553,6 +553,19 @@ void os_mem_prealloc(int fd, char *area, size_t sz, int smp_cpus,
+ Error **errp);
+
+ /**
++ * qemu_get_pmem_size:
++ * @filename: path to a pmem file
++ * @errp: pointer to a NULL-initialized error object
++ *
++ * Determine the size of a persistent memory file. Besides supporting files on
++ * DAX file systems, this function also supports Linux devdax character
++ * devices.
++ *
++ * Returns: the size or 0 on failure
++ */
++uint64_t qemu_get_pmem_size(const char *filename, Error **errp);
++
++/**
+ * qemu_get_pid_name:
+ * @pid: pid of a process
+ *
+diff --git a/util/oslib-posix.c b/util/oslib-posix.c
+index 97b2f3b..b173fc0 100644
+--- a/util/oslib-posix.c
++++ b/util/oslib-posix.c
+@@ -496,6 +496,59 @@ void os_mem_prealloc(int fd, char *area, size_t memory, int smp_cpus,
+ }
+ }
+
++uint64_t qemu_get_pmem_size(const char *filename, Error **errp)
++{
++ struct stat st;
++
++ if (stat(filename, &st) < 0) {
++ error_setg(errp, "unable to stat pmem file \"%s\"", filename);
++ return 0;
++ }
++
++#if defined(__linux__)
++ /* Special handling for devdax character devices */
++ if (S_ISCHR(st.st_mode)) {
++ char *subsystem_path = NULL;
++ char *subsystem = NULL;
++ char *size_path = NULL;
++ char *size_str = NULL;
++ uint64_t ret = 0;
++
++ subsystem_path = g_strdup_printf("/sys/dev/char/%d:%d/subsystem",
++ major(st.st_rdev), minor(st.st_rdev));
++ subsystem = g_file_read_link(subsystem_path, NULL);
++ if (!subsystem) {
++ error_setg(errp, "unable to read subsystem for pmem file \"%s\"",
++ filename);
++ goto devdax_err;
++ }
++
++ if (!g_str_has_suffix(subsystem, "/dax")) {
++ error_setg(errp, "pmem file \"%s\" is not a dax device", filename);
++ goto devdax_err;
++ }
++
++ size_path = g_strdup_printf("/sys/dev/char/%d:%d/size",
++ major(st.st_rdev), minor(st.st_rdev));
++ if (!g_file_get_contents(size_path, &size_str, NULL, NULL)) {
++ error_setg(errp, "unable to read size for pmem file \"%s\"",
++ size_path);
++ goto devdax_err;
++ }
++
++ ret = g_ascii_strtoull(size_str, NULL, 0);
++
++devdax_err:
++ g_free(size_str);
++ g_free(size_path);
++ g_free(subsystem);
++ g_free(subsystem_path);
++ return ret;
++ }
++#endif /* defined(__linux__) */
++
++ return st.st_size;
++}
+
+ char *qemu_get_pid_name(pid_t pid)
+ {
+diff --git a/util/oslib-win32.c b/util/oslib-win32.c
+index b4c17f5..bd633af 100644
+--- a/util/oslib-win32.c
++++ b/util/oslib-win32.c
+@@ -560,6 +560,11 @@ void os_mem_prealloc(int fd, char *area, size_t memory, int smp_cpus,
+ }
+ }
+
++uint64_t qemu_get_pmem_size(const char *filename, Error **errp)
++{
++ error_setg(errp, "pmem support not available");
++ return 0;
++}
+
+ char *qemu_get_pid_name(pid_t pid)
+ {
+--
+1.8.3.1
+
diff --git a/kvm-iotests-Fix-test-200-on-s390x-without-virtio-pci.patch b/kvm-iotests-Fix-test-200-on-s390x-without-virtio-pci.patch
new file mode 100644
index 0000000..9766ea7
--- /dev/null
+++ b/kvm-iotests-Fix-test-200-on-s390x-without-virtio-pci.patch
@@ -0,0 +1,62 @@
+From 887d5afffeff844b1284b380e53f178f68e15087 Mon Sep 17 00:00:00 2001
+From: Thomas Huth <thuth(a)redhat.com>
+Date: Wed, 3 Apr 2019 10:17:09 +0100
+Subject: [PATCH 8/9] iotests: Fix test 200 on s390x without virtio-pci
+
+RH-Author: Thomas Huth <thuth(a)redhat.com>
+Message-id: <20190403101709.3284-2-thuth(a)redhat.com>
+Patchwork-id: 85312
+O-Subject: [RHEL-AV-8.0.1 qemu-kvm PATCH 1/1] iotests: Fix test 200 on s390x without virtio-pci
+Bugzilla: 1687582
+RH-Acked-by: Cornelia Huck <cohuck(a)redhat.com>
+RH-Acked-by: David Hildenbrand <david(a)redhat.com>
+RH-Acked-by: Max Reitz <mreitz(a)redhat.com>
+RH-Acked-by: Kevin Wolf <kwolf(a)redhat.com>
+
+virtio-pci is optional on s390x, e.g. in downstream RHEL builds, it
+is disabled. On s390x, virtio-ccw should be used instead. Other tests
+like 051 or 240 already use virtio-scsi-ccw instead of virtio-scsi-pci
+on s390x, so let's do the same here and always use virtio-scsi-ccw on
+s390x.
+
+Signed-off-by: Thomas Huth <thuth(a)redhat.com>
+Reviewed-by: John Snow <jsnow(a)redhat.com>
+Signed-off-by: Kevin Wolf <kwolf(a)redhat.com>
+(cherry picked from commit e0a59749efc246646bb208e553489b894450cbcd)
+Signed-off-by: Danilo C. L. de Paula <ddepaula(a)redhat.com>
+---
+ tests/qemu-iotests/200 | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/tests/qemu-iotests/200 b/tests/qemu-iotests/200
+index b9ebd5a..8301ff5 100755
+--- a/tests/qemu-iotests/200
++++ b/tests/qemu-iotests/200
+@@ -52,13 +52,21 @@ ${QEMU_IMG} create -f $IMGFMT -F $IMGFMT "${TEST_IMG}" -b "${BACKING_IMG}" 512M
+
+ ${QEMU_IO} -c "write -P 0xa5 512 300M" "${BACKING_IMG}" | _filter_qemu_io
+
++case "$QEMU_DEFAULT_MACHINE" in
++ s390-ccw-virtio)
++ virtio_scsi="-device virtio-scsi-ccw,id=scsi0,iothread=iothread0"
++ ;;
++ *)
++ virtio_scsi="-device pci-bridge,id=bridge1,chassis_nr=1,bus=pci.0
++ -device virtio-scsi-pci,bus=bridge1,addr=0x1f,id=scsi0,iothread=iothread0"
++ ;;
++esac
++
+ echo
+ echo === Starting QEMU VM ===
+ echo
+ qemu_comm_method="qmp"
+-_launch_qemu -device pci-bridge,id=bridge1,chassis_nr=1,bus=pci.0 \
+- -object iothread,id=iothread0 \
+- -device virtio-scsi-pci,bus=bridge1,addr=0x1f,id=scsi0,iothread=iothread0 \
++_launch_qemu -object iothread,id=iothread0 $virtio_scsi \
+ -drive file="${TEST_IMG}",media=disk,if=none,cache=$CACHEMODE,id=drive_sysdisk,format=$IMGFMT \
+ -device scsi-hd,drive=drive_sysdisk,bus=scsi0.0,id=sysdisk,bootindex=0
+ h1=$QEMU_HANDLE
+--
+1.8.3.1
+
diff --git a/kvm-iotests-add-LUKS-payload-overhead-to-178-qemu-img-me.patch b/kvm-iotests-add-LUKS-payload-overhead-to-178-qemu-img-me.patch
new file mode 100644
index 0000000..074fc32
--- /dev/null
+++ b/kvm-iotests-add-LUKS-payload-overhead-to-178-qemu-img-me.patch
@@ -0,0 +1,113 @@
+From dcce446158c042fd0aa54a6ebcc61c00f8d4759e Mon Sep 17 00:00:00 2001
+From: Stefan Hajnoczi <stefanha(a)redhat.com>
+Date: Mon, 4 Mar 2019 08:54:27 +0000
+Subject: [PATCH 4/9] iotests: add LUKS payload overhead to 178 qemu-img
+ measure test
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+RH-Author: Stefan Hajnoczi <stefanha(a)redhat.com>
+Message-id: <20190304085427.8148-3-stefanha(a)redhat.com>
+Patchwork-id: 84777
+O-Subject: [RHEL-8.0/AV qemu-kvm PATCH 2/2] iotests: add LUKS payload overhead to 178 qemu-img measure test
+Bugzilla: 1655065
+RH-Acked-by: Philippe Mathieu-Daudé <philmd(a)redhat.com>
+RH-Acked-by: Stefano Garzarella <sgarzare(a)redhat.com>
+RH-Acked-by: Kevin Wolf <kwolf(a)redhat.com>
+
+The previous patch includes the LUKS payload overhead into the qemu-img
+measure calculation for qcow2. Update qemu-iotests 178 to exercise this
+new code path.
+
+Reviewed-by: Max Reitz <mreitz(a)redhat.com>
+Reviewed-by: Philippe Mathieu-Daudé <philmd(a)redhat.com>
+Signed-off-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+Message-id: 20190218104525.23674-3-stefanha(a)redhat.com
+Signed-off-by: Max Reitz <mreitz(a)redhat.com>
+(cherry picked from commit 0482098608b83b559bc1802e4c612051b51f6c4c)
+Signed-off-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+Signed-off-by: Danilo C. L. de Paula <ddepaula(a)redhat.com>
+---
+ tests/qemu-iotests/178 | 8 ++++++++
+ tests/qemu-iotests/178.out.qcow2 | 24 ++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+)
+
+diff --git a/tests/qemu-iotests/178 b/tests/qemu-iotests/178
+index 3f4b4a4..927bf06 100755
+--- a/tests/qemu-iotests/178
++++ b/tests/qemu-iotests/178
+@@ -142,6 +142,14 @@ for ofmt in human json; do
+ # The backing file doesn't need to exist :)
+ $QEMU_IMG measure --output=$ofmt -o backing_file=x \
+ -f "$fmt" -O "$IMGFMT" "$TEST_IMG"
++
++ echo
++ echo "== $fmt input image and LUKS encryption =="
++ echo
++ $QEMU_IMG measure --output=$ofmt \
++ --object secret,id=sec0,data=base \
++ -o encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10 \
++ -f "$fmt" -O "$IMGFMT" "$TEST_IMG"
+ fi
+
+ echo
+diff --git a/tests/qemu-iotests/178.out.qcow2 b/tests/qemu-iotests/178.out.qcow2
+index d42d4a4..55a8dc9 100644
+--- a/tests/qemu-iotests/178.out.qcow2
++++ b/tests/qemu-iotests/178.out.qcow2
+@@ -68,6 +68,11 @@ converted image file size in bytes: 458752
+ required size: 1074135040
+ fully allocated size: 1074135040
+
++== qcow2 input image and LUKS encryption ==
++
++required size: 2686976
++fully allocated size: 1076232192
++
+ == qcow2 input image and preallocation (human) ==
+
+ required size: 1074135040
+@@ -114,6 +119,11 @@ converted image file size in bytes: 524288
+ required size: 1074135040
+ fully allocated size: 1074135040
+
++== raw input image and LUKS encryption ==
++
++required size: 2686976
++fully allocated size: 1076232192
++
+ == raw input image and preallocation (human) ==
+
+ required size: 1074135040
+@@ -205,6 +215,13 @@ converted image file size in bytes: 458752
+ "fully-allocated": 1074135040
+ }
+
++== qcow2 input image and LUKS encryption ==
++
++{
++ "required": 2686976,
++ "fully-allocated": 1076232192
++}
++
+ == qcow2 input image and preallocation (json) ==
+
+ {
+@@ -263,6 +280,13 @@ converted image file size in bytes: 524288
+ "fully-allocated": 1074135040
+ }
+
++== raw input image and LUKS encryption ==
++
++{
++ "required": 2686976,
++ "fully-allocated": 1076232192
++}
++
+ == raw input image and preallocation (json) ==
+
+ {
+--
+1.8.3.1
+
diff --git a/kvm-qcow2-include-LUKS-payload-overhead-in-qemu-img-meas.patch b/kvm-qcow2-include-LUKS-payload-overhead-in-qemu-img-meas.patch
new file mode 100644
index 0000000..aa3582e
--- /dev/null
+++ b/kvm-qcow2-include-LUKS-payload-overhead-in-qemu-img-meas.patch
@@ -0,0 +1,148 @@
+From e5d1850f80df1b548b1c3bdc0914e7790702d543 Mon Sep 17 00:00:00 2001
+From: Stefan Hajnoczi <stefanha(a)redhat.com>
+Date: Mon, 4 Mar 2019 08:54:26 +0000
+Subject: [PATCH 3/9] qcow2: include LUKS payload overhead in qemu-img measure
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+RH-Author: Stefan Hajnoczi <stefanha(a)redhat.com>
+Message-id: <20190304085427.8148-2-stefanha(a)redhat.com>
+Patchwork-id: 84778
+O-Subject: [RHEL-8.0/AV qemu-kvm PATCH 1/2] qcow2: include LUKS payload overhead in qemu-img measure
+Bugzilla: 1655065
+RH-Acked-by: Philippe Mathieu-Daudé <philmd(a)redhat.com>
+RH-Acked-by: Stefano Garzarella <sgarzare(a)redhat.com>
+RH-Acked-by: Kevin Wolf <kwolf(a)redhat.com>
+
+LUKS encryption reserves clusters for its own payload data. The size of
+this area must be included in the qemu-img measure calculation so that
+we arrive at the correct minimum required image size.
+
+(Ab)use the qcrypto_block_create() API to determine the payload
+overhead. We discard the payload data that qcrypto thinks will be
+written to the image.
+
+Signed-off-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+Reviewed-by: Max Reitz <mreitz(a)redhat.com>
+Message-id: 20190218104525.23674-2-stefanha(a)redhat.com
+Signed-off-by: Max Reitz <mreitz(a)redhat.com>
+(cherry picked from commit 61914f8906fabbae26372a576d9dd988c5e22b75)
+Signed-off-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+Signed-off-by: Danilo C. L. de Paula <ddepaula(a)redhat.com>
+---
+ block/qcow2.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 71 insertions(+), 1 deletion(-)
+
+diff --git a/block/qcow2.c b/block/qcow2.c
+index 991d6ac..1b41e4c 100644
+--- a/block/qcow2.c
++++ b/block/qcow2.c
+@@ -4113,6 +4113,60 @@ static coroutine_fn int qcow2_co_flush_to_os(BlockDriverState *bs)
+ return ret;
+ }
+
++static ssize_t qcow2_measure_crypto_hdr_init_func(QCryptoBlock *block,
++ size_t headerlen, void *opaque, Error **errp)
++{
++ size_t *headerlenp = opaque;
++
++ /* Stash away the payload size */
++ *headerlenp = headerlen;
++ return 0;
++}
++
++static ssize_t qcow2_measure_crypto_hdr_write_func(QCryptoBlock *block,
++ size_t offset, const uint8_t *buf, size_t buflen,
++ void *opaque, Error **errp)
++{
++ /* Discard the bytes, we're not actually writing to an image */
++ return buflen;
++}
++
++/* Determine the number of bytes for the LUKS payload */
++static bool qcow2_measure_luks_headerlen(QemuOpts *opts, size_t *len,
++ Error **errp)
++{
++ QDict *opts_qdict;
++ QDict *cryptoopts_qdict;
++ QCryptoBlockCreateOptions *cryptoopts;
++ QCryptoBlock *crypto;
++
++ /* Extract "encrypt." options into a qdict */
++ opts_qdict = qemu_opts_to_qdict(opts, NULL);
++ qdict_extract_subqdict(opts_qdict, &cryptoopts_qdict, "encrypt.");
++ qobject_unref(opts_qdict);
++
++ /* Build QCryptoBlockCreateOptions object from qdict */
++ qdict_put_str(cryptoopts_qdict, "format", "luks");
++ cryptoopts = block_crypto_create_opts_init(cryptoopts_qdict, errp);
++ qobject_unref(cryptoopts_qdict);
++ if (!cryptoopts) {
++ return false;
++ }
++
++ /* Fake LUKS creation in order to determine the payload size */
++ crypto = qcrypto_block_create(cryptoopts, "encrypt.",
++ qcow2_measure_crypto_hdr_init_func,
++ qcow2_measure_crypto_hdr_write_func,
++ len, errp);
++ qapi_free_QCryptoBlockCreateOptions(cryptoopts);
++ if (!crypto) {
++ return false;
++ }
++
++ qcrypto_block_free(crypto);
++ return true;
++}
++
+ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts, BlockDriverState *in_bs,
+ Error **errp)
+ {
+@@ -4122,11 +4176,13 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts, BlockDriverState *in_bs,
+ uint64_t virtual_size; /* disk size as seen by guest */
+ uint64_t refcount_bits;
+ uint64_t l2_tables;
++ uint64_t luks_payload_size = 0;
+ size_t cluster_size;
+ int version;
+ char *optstr;
+ PreallocMode prealloc;
+ bool has_backing_file;
++ bool has_luks;
+
+ /* Parse image creation options */
+ cluster_size = qcow2_opt_get_cluster_size_del(opts, &local_err);
+@@ -4156,6 +4212,20 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts, BlockDriverState *in_bs,
+ has_backing_file = !!optstr;
+ g_free(optstr);
+
++ optstr = qemu_opt_get_del(opts, BLOCK_OPT_ENCRYPT_FORMAT);
++ has_luks = optstr && strcmp(optstr, "luks") == 0;
++ g_free(optstr);
++
++ if (has_luks) {
++ size_t headerlen;
++
++ if (!qcow2_measure_luks_headerlen(opts, &headerlen, &local_err)) {
++ goto err;
++ }
++
++ luks_payload_size = ROUND_UP(headerlen, cluster_size);
++ }
++
+ virtual_size = qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0);
+ virtual_size = ROUND_UP(virtual_size, cluster_size);
+
+@@ -4226,7 +4296,7 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts, BlockDriverState *in_bs,
+ info = g_new(BlockMeasureInfo, 1);
+ info->fully_allocated =
+ qcow2_calc_prealloc_size(virtual_size, cluster_size,
+- ctz32(refcount_bits));
++ ctz32(refcount_bits)) + luks_payload_size;
+
+ /* Remove data clusters that are not required. This overestimates the
+ * required size because metadata needed for the fully allocated file is
+--
+1.8.3.1
+
diff --git a/kvm-setup b/kvm-setup
index abbd587..3bfedf6 100644
--- a/kvm-setup
+++ b/kvm-setup
@@ -31,10 +31,19 @@ kvm_setup_powerpc () {
fi
}
+kvm_setup_s390x () {
+ if grep -q "^features.*sie" /proc/cpuinfo; then
+ modprobe kvm
+ fi
+}
+
case $(uname -m) in
ppc64|ppc64le)
kvm_setup_powerpc
;;
+ s390x)
+ kvm_setup_s390x
+ ;;
esac
exit 0
diff --git a/kvm-spapr-fix-out-of-bounds-write-in-spapr_populate_drme.patch b/kvm-spapr-fix-out-of-bounds-write-in-spapr_populate_drme.patch
new file mode 100644
index 0000000..48fec33
--- /dev/null
+++ b/kvm-spapr-fix-out-of-bounds-write-in-spapr_populate_drme.patch
@@ -0,0 +1,74 @@
+From 2744bd7eb7955e7ae995a48784760e48c33c1e73 Mon Sep 17 00:00:00 2001
+From: David Gibson <dgibson(a)redhat.com>
+Date: Wed, 27 Feb 2019 04:54:34 +0000
+Subject: [PATCH 2/9] spapr: fix out of bounds write in spapr_populate_drmem_v2
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+RH-Author: David Gibson <dgibson(a)redhat.com>
+Message-id: <20190227045434.23465-1-dgibson(a)redhat.com>
+Patchwork-id: 84720
+O-Subject: [RHELAV-8.1 qemu-kvm PATCH] spapr: fix out of bounds write in spapr_populate_drmem_v2
+Bugzilla: 1674438
+RH-Acked-by: Thomas Huth <thuth(a)redhat.com>
+RH-Acked-by: Serhii Popovych <spopovyc(a)redhat.com>
+RH-Acked-by: Philippe Mathieu-Daudé <philmd(a)redhat.com>
+
+From: Fabiano Rosas <farosas(a)linux.ibm.com>
+
+buf_len is uint8_t which is not large enough to hold the result of:
+
+ nr_entries * sizeof(struct sPAPRDrconfCellV2) + sizeof(uint32_t);
+
+for a nr_entries greater than 10.
+
+This causes the allocated buffer 'int_buf' to be smaller than expected
+and we eventually overwrite some of glibc's control structures (see
+"chunk" in https://sourceware.org/glibc/wiki/MallocInternals)
+
+The following error is seen while trying to free int_buf:
+
+ "free(): invalid next size (fast)"
+
+Fixes: a324d6f166 "spapr: Support ibm,dynamic-memory-v2 property"
+Signed-off-by: Fabiano Rosas <farosas(a)linux.ibm.com>
+Message-Id: <20190213172926.21740-1-farosas(a)linux.ibm.com>
+Reviewed-by: Greg Kurz <groug(a)kaod.org>
+Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au>
+(cherry picked from commit cc941111a5bc5f498185fa3824c3b6579c7d45ad)
+
+Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1674438
+Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=20382722
+Branch: rhel8/master-3.1.0
+
+Signed-off-by: David Gibson <dgibson(a)redhat.com>
+Signed-off-by: Danilo C. L. de Paula <ddepaula(a)redhat.com>
+---
+ hw/ppc/spapr.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
+index bd2abb7..c1478bf 100644
+--- a/hw/ppc/spapr.c
++++ b/hw/ppc/spapr.c
+@@ -688,14 +688,14 @@ static int spapr_populate_drmem_v2(sPAPRMachineState *spapr, void *fdt,
+ int offset, MemoryDeviceInfoList *dimms)
+ {
+ MachineState *machine = MACHINE(spapr);
+- uint8_t *int_buf, *cur_index, buf_len;
++ uint8_t *int_buf, *cur_index;
+ int ret;
+ uint64_t lmb_size = SPAPR_MEMORY_BLOCK_SIZE;
+ uint64_t addr, cur_addr, size;
+ uint32_t nr_boot_lmbs = (machine->device_memory->base / lmb_size);
+ uint64_t mem_end = machine->device_memory->base +
+ memory_region_size(&machine->device_memory->mr);
+- uint32_t node, nr_entries = 0;
++ uint32_t node, buf_len, nr_entries = 0;
+ sPAPRDRConnector *drc;
+ DrconfCellQueue *elem, *next;
+ MemoryDeviceInfoList *info;
+--
+1.8.3.1
+
diff --git a/kvm-vnc-detect-and-optimize-pageflips.patch b/kvm-vnc-detect-and-optimize-pageflips.patch
new file mode 100644
index 0000000..d738230
--- /dev/null
+++ b/kvm-vnc-detect-and-optimize-pageflips.patch
@@ -0,0 +1,95 @@
+From c233fdd40580baf460b34655aa72a9a489b4501b Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel(a)redhat.com>
+Date: Thu, 7 Mar 2019 09:11:50 +0000
+Subject: [PATCH 5/9] vnc: detect and optimize pageflips
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+RH-Author: Gerd Hoffmann <kraxel(a)redhat.com>
+Message-id: <20190307091150.6551-2-kraxel(a)redhat.com>
+Patchwork-id: 84816
+O-Subject: [RHEL-8.0/AV qemu-kvm PATCH 1/1] vnc: detect and optimize pageflips
+Bugzilla: 1666206
+RH-Acked-by: Philippe Mathieu-Daudé <philmd(a)redhat.com>
+RH-Acked-by: Stefan Hajnoczi <stefanha(a)redhat.com>
+RH-Acked-by: John Snow <jsnow(a)redhat.com>
+
+When size and format of the display surface stays the same we can just
+tag the guest display as dirty and be done with it.
+
+There is no need need to resize the vnc server display or to touch the
+vnc client dirty bits. On the next refresh cycle
+vnc_refresh_server_surface() will check for actual display content
+changes and update the client dirty bits as needed.
+
+The desktop resize and framebuffer format notifications to the vnc
+client will be skipped too.
+
+Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
+Reviewed-by: Daniel P. Berrangé <berrange(a)redhat.com>
+Message-id: 20190116101049.8929-1-kraxel(a)redhat.com
+(cherry picked from commit 61e77a5f0c788495566aecb437bcf6b2cf9cda97)
+Signed-off-by: Danilo C. L. de Paula <ddepaula(a)redhat.com>
+---
+ ui/vnc.c | 25 ++++++++++++++++++++++---
+ 1 file changed, 22 insertions(+), 3 deletions(-)
+
+diff --git a/ui/vnc.c b/ui/vnc.c
+index d7903a7..765bdc5 100644
+--- a/ui/vnc.c
++++ b/ui/vnc.c
+@@ -742,6 +742,17 @@ static void vnc_update_server_surface(VncDisplay *vd)
+ width, height);
+ }
+
++static bool vnc_check_pageflip(DisplaySurface *s1,
++ DisplaySurface *s2)
++{
++ return (s1 != NULL &&
++ s2 != NULL &&
++ surface_width(s1) == surface_width(s2) &&
++ surface_height(s1) == surface_height(s2) &&
++ surface_format(s1) == surface_format(s2));
++
++}
++
+ static void vnc_dpy_switch(DisplayChangeListener *dcl,
+ DisplaySurface *surface)
+ {
+@@ -749,6 +760,7 @@ static void vnc_dpy_switch(DisplayChangeListener *dcl,
+ "Display output is not active.";
+ static DisplaySurface *placeholder;
+ VncDisplay *vd = container_of(dcl, VncDisplay, dcl);
++ bool pageflip = vnc_check_pageflip(vd->ds, surface);
+ VncState *vs;
+
+ if (surface == NULL) {
+@@ -761,14 +773,21 @@ static void vnc_dpy_switch(DisplayChangeListener *dcl,
+ vnc_abort_display_jobs(vd);
+ vd->ds = surface;
+
+- /* server surface */
+- vnc_update_server_surface(vd);
+-
+ /* guest surface */
+ qemu_pixman_image_unref(vd->guest.fb);
+ vd->guest.fb = pixman_image_ref(surface->image);
+ vd->guest.format = surface->format;
+
++ if (pageflip) {
++ vnc_set_area_dirty(vd->guest.dirty, vd, 0, 0,
++ surface_width(surface),
++ surface_height(surface));
++ return;
++ }
++
++ /* server surface */
++ vnc_update_server_surface(vd);
++
+ QTAILQ_FOREACH(vs, &vd->clients, next) {
+ vnc_colordepth(vs);
+ vnc_desktop_resize(vs);
+--
+1.8.3.1
+
diff --git a/qemu-kvm.spec b/qemu-kvm.spec
index ae8e0a4..9ed199c 100644
--- a/qemu-kvm.spec
+++ b/qemu-kvm.spec
@@ -39,6 +39,7 @@
%endif
%ifarch s390x
%global kvm_target s390x
+ %global have_kvm_setup 1
%endif
%ifarch ppc
%global kvm_target ppc
@@ -68,7 +69,7 @@ Obsoletes: %1-rhev
Summary: QEMU is a machine emulator and virtualizer
Name: qemu-kvm
Version: 3.1.0
-Release: 20%{?dist}
+Release: 21%{?dist}
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
Epoch: 15
License: GPLv2 and GPLv2+ and CC-BY
@@ -222,6 +223,20 @@ Patch67: kvm-migration-Fix-cancel-state.patch
Patch68: kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch
# For bz#1686260 - stibp is missing on qemu 3.0 and qemu 3.1
Patch69: kvm-i386-Add-stibp-flag-name.patch
+# For bz#1674438 - RHEL8.0 - Guest reboot fails after memory hotplug multiple times (kvm)
+Patch71: kvm-spapr-fix-out-of-bounds-write-in-spapr_populate_drme.patch
+# For bz#1655065 - [rhel.8.0][fast train]'qemu-img measure' size does not match the real allocated size for luks-inside-qcow2 image
+Patch72: kvm-qcow2-include-LUKS-payload-overhead-in-qemu-img-meas.patch
+# For bz#1655065 - [rhel.8.0][fast train]'qemu-img measure' size does not match the real allocated size for luks-inside-qcow2 image
+Patch73: kvm-iotests-add-LUKS-payload-overhead-to-178-qemu-img-me.patch
+# For bz#1666206 - vnc server should detect page-flips and avoid sending fullscreen updates then.
+Patch74: kvm-vnc-detect-and-optimize-pageflips.patch
+# For bz#1669053 - Guest call trace when boot with nvdimm device backed by /dev/dax
+Patch76: kvm-hostmem-file-reject-invalid-pmem-file-sizes.patch
+# For bz#1687582 - QEMU IOTEST 200 fails with 'virtio-scsi-pci is not a valid device model name'
+Patch77: kvm-iotests-Fix-test-200-on-s390x-without-virtio-pci.patch
+# For bz#1652572 - QEMU core dumped if stop nfs service during migration
+Patch78: kvm-block-file-posix-do-not-fail-on-unlock-bytes.patch
BuildRequires: zlib-devel
BuildRequires: glib2-devel
@@ -366,6 +381,7 @@ Requires: glusterfs-api >= 3.6.0
%endif
%if %{have_kvm_setup}
Requires(post): systemd-units
+Requires(preun): systemd-units
%ifarch %{power64}
Requires: powerpc-utils
%endif
@@ -929,8 +945,8 @@ chmod +x $RPM_BUILD_ROOT%{_libdir}/qemu-kvm/block-*.so
export DIFF=diff; make check V=1
pushd tests/qemu-iotests
./check -v -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 045 048 052 063 077 086 101 104 106 120 132 140 143 145 147 150 152 157 159 160 162 170 171 175 181 184 194 205 208 218 221 222 226 227 232
-./check -v -qcow2 001 002 003 004 005 007 008 009 010 011 012 013 017 018 019 020 021 022 024 025 027 028 029 031 032 033 034 035 036 037 038 039 042 043 046 047 048 049 050 052 053 054 056 057 058 060 061 062 063 065 066 068 069 072 073 074 080 085 086 087 089 090 091 095 096 097 098 102 103 104 105 107 108 110 111 114 117 120 122 126 127 130 132 133 134 137 138 140 141 142 143 144 145 147 150 151 152 154 156 157 158 159 162 165 170 174 176 177 179 181 184 187 188 189 190 191 194 195 196 198 201 202 203 204 205 206 208 209 214 216 217 218 222 223 226 227 232
-./check -v -luks 001 002 003 004 005 008 009 010 011 012 021 032 033 048 052 140 143 145 157 162 174 181 184 208 218 227
+./check -v -qcow2 001 002 003 004 005 007 008 009 010 011 012 017 018 019 020 021 022 024 025 027 028 029 031 032 033 034 035 036 037 038 039 042 043 046 047 048 049 050 052 053 054 056 057 058 062 063 065 066 068 069 072 073 074 080 085 086 087 089 090 091 095 096 097 098 102 103 104 105 107 108 110 111 114 117 120 126 127 130 132 133 134 137 138 140 141 142 143 144 145 147 150 151 152 156 157 158 159 162 165 170 174 177 179 181 184 187 188 189 190 191 194 195 196 198 201 202 203 204 205 206 208 209 214 216 217 218 222 223 226 227 232
+./check -v -luks 001 002 003 004 005 008 009 010 011 012 021 032 033 052 140 143 145 157 162 174 181 184 208 218 227
./check -v -nbd 001 002 003 004 005 008 009 010 011 021 032 033 045 077 094 104 119 123 132 143 145 147 151 152 162 181 184 194 205 208 218 222
popd
@@ -948,6 +964,11 @@ sh %{_sysconfdir}/sysconfig/modules/kvm.modules &> /dev/null || :
fi
%endif
+%if %{have_kvm_setup}
+%preun -n qemu-kvm-core
+%systemd_preun kvm-setup.service
+%endif
+
%post -n qemu-kvm-common
%systemd_post ksm.service
%systemd_post ksmtuned.service
@@ -1114,6 +1135,35 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
%changelog
+* Thu Apr 11 2019 Danilo Cesar Lemes de Paula <ddepaula(a)redhat.com> - 3.1.0-21.el8
+- kvm-Remove-7-qcow2-and-luks-iotests-that-are-taking-25-s.patch [bz#1683473]
+- kvm-spapr-fix-out-of-bounds-write-in-spapr_populate_drme.patch [bz#1674438]
+- kvm-qcow2-include-LUKS-payload-overhead-in-qemu-img-meas.patch [bz#1655065]
+- kvm-iotests-add-LUKS-payload-overhead-to-178-qemu-img-me.patch [bz#1655065]
+- kvm-vnc-detect-and-optimize-pageflips.patch [bz#1666206]
+- kvm-Load-kvm-module-during-boot.patch [bz#1676907 bz#1685995]
+- kvm-hostmem-file-reject-invalid-pmem-file-sizes.patch [bz#1669053]
+- kvm-iotests-Fix-test-200-on-s390x-without-virtio-pci.patch [bz#1687582]
+- kvm-block-file-posix-do-not-fail-on-unlock-bytes.patch [bz#1652572]
+- Resolves: bz#1652572
+ (QEMU core dumped if stop nfs service during migration)
+- Resolves: bz#1655065
+ ([rhel.8.0][fast train]'qemu-img measure' size does not match the real allocated size for luks-inside-qcow2 image)
+- Resolves: bz#1666206
+ (vnc server should detect page-flips and avoid sending fullscreen updates then.)
+- Resolves: bz#1669053
+ (Guest call trace when boot with nvdimm device backed by /dev/dax)
+- Resolves: bz#1674438
+ (RHEL8.0 - Guest reboot fails after memory hotplug multiple times (kvm))
+- Resolves: bz#1676907
+ (/dev/kvm device exists but kernel module is not loaded on boot up causing VM start to fail in libvirt)
+- Resolves: bz#1683473
+ (Remove 7 qcow2 & luks iotests from rhel8 fast train build %check phase)
+- Resolves: bz#1685995
+ (/dev/kvm device exists but kernel module is not loaded on boot up causing VM start to fail in libvirt)
+- Resolves: bz#1687582
+ (QEMU IOTEST 200 fails with 'virtio-scsi-pci is not a valid device model name')
+
* Fri Mar 15 2019 Danilo Cesar Lemes de Paula <ddepaula(a)redhat.com> - 3.1.0-20.el8
- kvm-i386-Add-stibp-flag-name.patch [bz#1686260]
- Resolves: bz#1686260
https://src.fedoraproject.org/rpms/qemu/c/797ce578a4b29084d3455d4fa3eca06...
11 months, 1 week
pagure pushed to rpms/golang (eln). "updating go1.5beta1 (..more)"
by notifications@fedoraproject.org
Notification time stamped 2023-06-14 11:08:20 UTC
From 8d165dfe1919054f25ec8a30aeafe489ece083be Mon Sep 17 00:00:00 2001
From: Vincent Batts <vbatts(a)hashbangbash.com>
Date: Jul 16 2015 18:36:06 +0000
Subject: updating go1.5beta1
* updating existing patches
* adding a couple of test patches needed for beta1
* TODO enable %check again
* SO MUCH CLEANUP now that OS and ARCH bootstrapping is not needed
---
diff --git a/.gitignore b/.gitignore
index 415af81..4c2608c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+*.rpm
/go1.1.1.src.tar.gz
/go1.1.2.src.tar.gz
/go1.2.1.src.tar.gz
@@ -16,4 +17,5 @@
/go1.4beta1.src.tar.gz
/go1.4rc1.src.tar.gz
/go1.4rc2.src.tar.gz
+/go1.5beta1.src.tar.gz
/golang-19087:a15f344a9efa-xattrs.tar
diff --git a/go1.5beta1-disable-TestGdbPython.patch b/go1.5beta1-disable-TestGdbPython.patch
new file mode 100644
index 0000000..8e0491f
--- /dev/null
+++ b/go1.5beta1-disable-TestGdbPython.patch
@@ -0,0 +1,13 @@
+diff --git a/src/runtime/runtime-gdb_test.go b/src/runtime/runtime-gdb_test.go
+index f4014b2..2c09441 100644
+--- a/src/runtime/runtime-gdb_test.go
++++ b/src/runtime/runtime-gdb_test.go
+@@ -38,7 +38,7 @@ func main() {
+ }
+ `
+
+-func TestGdbPython(t *testing.T) {
++func testGdbPython(t *testing.T) {
+ if runtime.GOOS == "darwin" {
+ t.Skip("gdb does not work on darwin")
+ }
diff --git a/go1.5beta1-fix-TestVendorRun.patch b/go1.5beta1-fix-TestVendorRun.patch
new file mode 100644
index 0000000..41f985d
--- /dev/null
+++ b/go1.5beta1-fix-TestVendorRun.patch
@@ -0,0 +1,29 @@
+commit 9adf684686bad7c6319080d0b1da8308a77b08c9
+Author: Russ Cox <rsc(a)golang.org>
+Date: Tue Jul 14 15:15:37 2015 -0400
+
+ cmd/go: fix TestVendorRun when $GOROOT is inside a symlinked path
+
+ Fixes #11305.
+
+ Change-Id: Icaa3a009aa4ab214c9aaf74f52c3e622fa266a9d
+ Reviewed-on: https://go-review.googlesource.com/12194
+ Reviewed-by: David Crawshaw <crawshaw(a)golang.org>
+ Reviewed-by: Ian Lance Taylor <iant(a)golang.org>
+
+diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go
+index 98486c5..af54396 100644
+--- a/src/cmd/go/go_test.go
++++ b/src/cmd/go/go_test.go
+@@ -188,7 +188,11 @@ func (tg *testgoData) cd(dir string) {
+ if tg.wd == "" {
+ tg.wd = tg.pwd()
+ }
++ abs, err := filepath.Abs(dir)
+ tg.must(os.Chdir(dir))
++ if err == nil {
++ tg.setenv("PWD", abs)
++ }
+ }
+
+ // sleep sleeps for one tick, where a tick is a conservative estimate
diff --git a/golang-1.2-BSD-SVID-SOURCE.patch b/golang-1.2-BSD-SVID-SOURCE.patch
deleted file mode 100644
index f4927b6..0000000
--- a/golang-1.2-BSD-SVID-SOURCE.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Index: go/include/u.h
-===================================================================
---- go.orig/include/u.h
-+++ go/include/u.h
-@@ -38,10 +38,13 @@ extern "C" {
- # define __MAKECONTEXT_V2_SOURCE 1
- # endif
- #endif
-+#if defined __linux__ || defined __GNU__ || defined __GLIBC__
-+#define _DEFAULT_SOURCE 1
-+#else
- #define _BSD_SOURCE 1
- #define _NETBSD_SOURCE 1 /* NetBSD */
--#define _DEFAULT_SOURCE 1 /* glibc > 2.19 */
- #define _SVID_SOURCE 1
-+#endif
- #if !defined(__APPLE__) && !defined(__OpenBSD__)
- # define _XOPEN_SOURCE 1000
- # define _XOPEN_SOURCE_EXTENDED 1
diff --git a/golang-1.2-remove-ECC-p224.patch b/golang-1.2-remove-ECC-p224.patch
index ef5a4a6..e69de29 100644
--- a/golang-1.2-remove-ECC-p224.patch
+++ b/golang-1.2-remove-ECC-p224.patch
@@ -1,172 +0,0 @@
-Index: go/api/go1.txt
-===================================================================
---- go.orig/api/go1.txt
-+++ go/api/go1.txt
-@@ -412,7 +412,6 @@ pkg crypto/ecdsa, type PublicKey struct,
- pkg crypto/ecdsa, type PublicKey struct, embedded elliptic.Curve
- pkg crypto/elliptic, func GenerateKey(Curve, io.Reader) ([]uint8, *big.Int, *big.Int, error)
- pkg crypto/elliptic, func Marshal(Curve, *big.Int, *big.Int) []uint8
--pkg crypto/elliptic, func P224() Curve
- pkg crypto/elliptic, func P256() Curve
- pkg crypto/elliptic, func P384() Curve
- pkg crypto/elliptic, func P521() Curve
-Index: go/src/crypto/ecdsa/ecdsa_test.go
-===================================================================
---- go.orig/src/crypto/ecdsa/ecdsa_test.go
-+++ go/src/crypto/ecdsa/ecdsa_test.go
-@@ -33,7 +33,6 @@ func testKeyGeneration(t *testing.T, c e
- }
-
- func TestKeyGeneration(t *testing.T) {
-- testKeyGeneration(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -63,7 +62,6 @@ func testSignAndVerify(t *testing.T, c e
- }
-
- func TestSignAndVerify(t *testing.T) {
-- testSignAndVerify(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -129,8 +127,6 @@ func TestVectors(t *testing.T) {
- parts := strings.SplitN(line, ",", 2)
-
- switch parts[0] {
-- case "P-224":
-- pub.Curve = elliptic.P224()
- case "P-256":
- pub.Curve = elliptic.P256()
- case "P-384":
-Index: go/src/crypto/elliptic/bottombits.go
-===================================================================
---- /dev/null
-+++ go/src/crypto/elliptic/bottombits.go
-@@ -0,0 +1,14 @@
-+
-+// Copyright 2012 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package elliptic
-+
-+const bottom12Bits = 0xfff
-+const bottom28Bits = 0xfffffff
-+
-+const two31p3 = 1<<31 + 1<<3
-+const two31m3 = 1<<31 - 1<<3
-+const two31m15m3 = 1<<31 - 1<<15 - 1<<3
-+
-Index: go/src/crypto/elliptic/elliptic.go
-===================================================================
---- go.orig/src/crypto/elliptic/elliptic.go
-+++ go/src/crypto/elliptic/elliptic.go
-@@ -326,7 +326,6 @@ var p384 *CurveParams
- var p521 *CurveParams
-
- func initAll() {
-- initP224()
- initP256()
- initP384()
- initP521()
-Index: go/src/crypto/elliptic/elliptic_test.go
-===================================================================
---- go.orig/src/crypto/elliptic/elliptic_test.go
-+++ go/src/crypto/elliptic/elliptic_test.go
-@@ -1,3 +1,5 @@
-+// +build ignore
-+
- // Copyright 2010 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-Index: go/src/crypto/elliptic/p224.go
-===================================================================
---- go.orig/src/crypto/elliptic/p224.go
-+++ go/src/crypto/elliptic/p224.go
-@@ -1,3 +1,5 @@
-+// +build ignore
-+
- // Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-@@ -183,10 +185,6 @@ func p224Add(out, a, b *p224FieldElement
- }
- }
-
--const two31p3 = 1<<31 + 1<<3
--const two31m3 = 1<<31 - 1<<3
--const two31m15m3 = 1<<31 - 1<<15 - 1<<3
--
- // p224ZeroModP31 is 0 mod p where bit 31 is set in all limbs so that we can
- // subtract smaller amounts without underflow. See the section "Subtraction" in
- // [1] for reasoning.
-@@ -215,9 +213,6 @@ const two63m35m19 = 1<<63 - 1<<35 - 1<<1
- // "Subtraction" in [1] for why.
- var p224ZeroModP63 = [8]uint64{two63p35, two63m35, two63m35, two63m35, two63m35m19, two63m35, two63m35, two63m35}
-
--const bottom12Bits = 0xfff
--const bottom28Bits = 0xfffffff
--
- // p224Mul computes *out = a*b
- //
- // a[i] < 2**29, b[i] < 2**30 (or vice versa)
-Index: go/src/crypto/elliptic/p224_test.go
-===================================================================
---- go.orig/src/crypto/elliptic/p224_test.go
-+++ go/src/crypto/elliptic/p224_test.go
-@@ -1,3 +1,5 @@
-+// +build ignore
-+
- // Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-Index: go/src/crypto/x509/x509.go
-===================================================================
---- go.orig/src/crypto/x509/x509.go
-+++ go/src/crypto/x509/x509.go
-@@ -306,9 +306,6 @@ func getPublicKeyAlgorithmFromOID(oid as
-
- // RFC 5480, 2.1.1.1. Named Curve
- //
--// secp224r1 OBJECT IDENTIFIER ::= {
--// iso(1) identified-organization(3) certicom(132) curve(0) 33 }
--//
- // secp256r1 OBJECT IDENTIFIER ::= {
- // iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
- // prime(1) 7 }
-@@ -321,7 +318,6 @@ func getPublicKeyAlgorithmFromOID(oid as
- //
- // NB: secp256r1 is equivalent to prime256v1
- var (
-- oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33}
- oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
- oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
- oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
-@@ -329,8 +325,6 @@ var (
-
- func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve {
- switch {
-- case oid.Equal(oidNamedCurveP224):
-- return elliptic.P224()
- case oid.Equal(oidNamedCurveP256):
- return elliptic.P256()
- case oid.Equal(oidNamedCurveP384):
-@@ -343,8 +337,6 @@ func namedCurveFromOID(oid asn1.ObjectId
-
- func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) {
- switch curve {
-- case elliptic.P224():
-- return oidNamedCurveP224, true
- case elliptic.P256():
- return oidNamedCurveP256, true
- case elliptic.P384():
-@@ -1371,7 +1363,7 @@ func signingParamsForPrivateKey(priv int
- pubType = ECDSA
-
- switch priv.Curve {
-- case elliptic.P224(), elliptic.P256():
-+ case elliptic.P256():
- hashFunc = crypto.SHA256
- sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
- case elliptic.P384():
diff --git a/golang-1.2-verbose-build.patch b/golang-1.2-verbose-build.patch
index 1698d82..e9c5edf 100644
--- a/golang-1.2-verbose-build.patch
+++ b/golang-1.2-verbose-build.patch
@@ -2,18 +2,18 @@ Index: go/src/make.bash
===================================================================
--- go.orig/src/make.bash
+++ go/src/make.bash
-@@ -161,12 +161,12 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOH
+@@ -153,12 +153,12 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then
# CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,
# use the host compiler, CC, from `cmd/dist/dist env` instead.
CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH \
-- "$GOTOOLDIR"/go_bootstrap install -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std
-+ "$GOTOOLDIR"/go_bootstrap install -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v -x std
+- "$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd
++ "$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v -x std cmd
echo
fi
- echo "# Building packages and commands for $GOOS/$GOARCH."
--CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std
-+CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v -x std
+ echo "##### Building packages and commands for $GOOS/$GOARCH."
+-CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd
++CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v -x std cmd
echo
rm -f "$GOTOOLDIR"/go_bootstrap
diff --git a/golang-1.5-bootstrap-binary-path.patch b/golang-1.5-bootstrap-binary-path.patch
new file mode 100644
index 0000000..8444727
--- /dev/null
+++ b/golang-1.5-bootstrap-binary-path.patch
@@ -0,0 +1,53 @@
+diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go
+index be54ac4..6744fbdc 100644
+--- a/src/cmd/dist/buildtool.go
++++ b/src/cmd/dist/buildtool.go
+@@ -108,12 +108,20 @@ func bootstrapBuildTools() {
+ os.Setenv("GOBIN", "")
+
+ os.Setenv("GOOS", "")
+- os.Setenv("GOHOSTOS", "")
+ os.Setenv("GOARCH", "")
++
++ hostos := os.Getenv("GOHOSTOS")
++ hostarch := os.Getenv("GOHOSTARCH")
++ os.Setenv("GOHOSTOS", "")
+ os.Setenv("GOHOSTARCH", "")
+
++ bingopath := pathf("%s/bin/%s_%s/go", goroot_bootstrap, hostos, hostarch)
++ if _, err := os.Stat(bingopath); os.IsNotExist(err) {
++ bingopath = pathf("%s/bin/go", goroot_bootstrap)
++ }
++
+ // Run Go 1.4 to build binaries.
+- run(workspace, ShowOutput|CheckExit, pathf("%s/bin/go", goroot_bootstrap), "install", "-v", "bootstrap/...")
++ run(workspace, ShowOutput|CheckExit, bingopath, "install", "-v", "bootstrap/...")
+
+ // Copy binaries into tool binary directory.
+ for _, name := range bootstrapDirs {
+diff --git a/src/make.bash b/src/make.bash
+index f17648a..77f463c 100755
+--- a/src/make.bash
++++ b/src/make.bash
+@@ -113,12 +113,17 @@ echo '##### Building Go bootstrap tool.'
+ echo cmd/dist
+ export GOROOT="$(cd .. && pwd)"
+ GOROOT_BOOTSTRAP=${GOROOT_BOOTSTRAP:-$HOME/go1.4}
+-if [ ! -x "$GOROOT_BOOTSTRAP/bin/go" ]; then
+- echo "ERROR: Cannot find $GOROOT_BOOTSTRAP/bin/go." >&2
++if [ -x "$GOROOT_BOOTSTRAP/bin/${GOHOSTOS}_${GOHOSTARCH}/go" ]; then
++ rm -f cmd/dist/dist
++ GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/${GOHOSTOS}_${GOHOSTARCH}/go" build -o cmd/dist/dist ./cmd/dist
++elif [ -x "$GOROOT_BOOTSTRAP/bin/go" ]; then
++ rm -f cmd/dist/dist
++ GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
++else
++ echo "ERROR: Cannot find $GOROOT_BOOTSTRAP/bin/${GOHOSTOS}_${GOHOSTARCH}/go." >&2
++ echo "ERROR: or $GOROOT_BOOTSTRAP/bin/${GOHOSTOS}_${GOHOSTARCH}/go." >&2
+ echo "Set \$GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4." >&2
+ fi
+-rm -f cmd/dist/dist
+-GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
+
+ # -e doesn't propagate out of eval, so check success by hand.
+ eval $(./cmd/dist/dist env -p || echo FAIL=true)
diff --git a/golang.spec b/golang.spec
index b16a518..08fb4a3 100644
--- a/golang.spec
+++ b/golang.spec
@@ -36,38 +36,49 @@
%global gohostarch arm
%endif
-%global go_api 1.4
+%global go_api 1.5
+%global go_version 1.5beta1
Name: golang
-Version: 1.4.2
-Release: 3%{?dist}
+Version: 1.4.99
+Release: 1.%{go_version}%{?dist}
Summary: The Go Programming Language
License: BSD
URL: http://golang.org/
-Source0: https://storage.googleapis.com/golang/go%{version}.src.tar.gz
+Source0: https://storage.googleapis.com/golang/go%{go_version}.src.tar.gz
+
+# go1.5 bootstrapping. The compiler is written in golang.
+BuildRequires: golang > 1.4
+# use the arch dependent path in the bootstrap
+Patch212: ./golang-1.5-bootstrap-binary-path.patch
# this command moved places
%if 0%{?fedora} >= 21
BuildRequires: /usr/bin/hostname
Patch210: golang-f21-hostname.patch
-
-# Patch211 - F21+ has glibc 2.19.90 (2.20 devel)+ which deprecates
-# _BSD_SOURCE and _SVID_SOURCE
-Patch211: golang-1.2-BSD-SVID-SOURCE.patch
%else
BuildRequires: /bin/hostname
%endif
Provides: go = %{version}-%{release}
-Requires: golang-bin
-Requires: golang-src = %{version}-%{release}
+Requires: %{name}-bin
+Requires: %{name}-src = %{version}-%{release}
Patch0: golang-1.2-verbose-build.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1038683
Patch1: golang-1.2-remove-ECC-p224.patch
+# disable TestGdbPython
+# https://github.com/golang/go/issues/11214
+Patch213: go1.5beta1-disable-TestGdbPython.patch
+
+# disable TestVendorRun and TestVendorGOPATH
+# https://github.com/golang/go/commit/9adf684686bad7c6319080d0b1da8308a77b08c9
+Patch214: go1.5beta1-fix-TestVendorRun.patch
+
+
# Having documentation separate was broken
Obsoletes: %{name}-docs < 1.1-4
@@ -99,6 +110,30 @@ Source102: macros.golang
#%description data
#%{summary}.
+%package docs
+Summary: Golang compiler docs
+Requires: %{name} = %{version}-%{release}
+BuildArch: noarch
+Obsoletes: %{name}-docs < 1.1-4
+
+%description docs
+%{summary}.
+
+%package misc
+Summary: Golang compiler miscellaneous sources
+Requires: %{name} = %{version}-%{release}
+BuildArch: noarch
+
+%description misc
+%{summary}.
+
+%package tests
+Summary: Golang compiler tests for stdlib
+Requires: %{name} = %{version}-%{release}
+BuildArch: noarch
+
+%description tests
+%{summary}.
##
# the source tree
@@ -108,197 +143,44 @@ BuildArch: noarch
%description src
%{summary}
-##
-# This is the only architecture specific binary
-%ifarch %{ix86}
-%package pkg-bin-linux-386
-Summary: Golang compiler tool for linux 386
+%package bin
+Summary: Golang core compiler tools
Requires: go = %{version}-%{release}
-Requires: golang-pkg-linux-386 = %{version}-%{release}
-Requires(post): golang-pkg-linux-386 = %{version}-%{release}
-Provides: golang-bin = 386
-Provides: go(API)(go) = %{go_api}
-# We strip the meta dependency, but go does require glibc.
-# This is an odd issue, still looking for a better fix.
-Requires: glibc
-Requires: gcc
-Requires(post): %{_sbindir}/update-alternatives
-Requires(postun): %{_sbindir}/update-alternatives
-%description pkg-bin-linux-386
-%{summary}
-%endif
+# Pre-go1.5, all arches had to be bootstrapped individually, before usable, and
+# env variables to compile for the target os-arch.
+# Now the host compiler needs only the GOOS and GOARCH environment variables
+# set to compile for the target os-arch.
+Obsoletes: %{name}-pkg-bin-linux-386 < 1.4.99
+Obsoletes: %{name}-pkg-bin-linux-amd64 < 1.4.99
+Obsoletes: %{name}-pkg-bin-linux-arm < 1.4.99
+Obsoletes: %{name}-pkg-linux-386 < 1.4.99
+Obsoletes: %{name}-pkg-linux-amd64 < 1.4.99
+Obsoletes: %{name}-pkg-linux-arm < 1.4.99
+Obsoletes: %{name}-pkg-darwin-386 < 1.4.99
+Obsoletes: %{name}-pkg-darwin-amd64 < 1.4.99
+Obsoletes: %{name}-pkg-windows-386 < 1.4.99
+Obsoletes: %{name}-pkg-windows-amd64 < 1.4.99
+Obsoletes: %{name}-pkg-plan9-386 < 1.4.99
+Obsoletes: %{name}-pkg-plan9-amd64 < 1.4.99
+Obsoletes: %{name}-pkg-freebsd-386 < 1.4.99
+Obsoletes: %{name}-pkg-freebsd-amd64 < 1.4.99
+Obsoletes: %{name}-pkg-freebsd-arm < 1.4.99
+Obsoletes: %{name}-pkg-netbsd-386 < 1.4.99
+Obsoletes: %{name}-pkg-netbsd-amd64 < 1.4.99
+Obsoletes: %{name}-pkg-netbsd-arm < 1.4.99
+Obsoletes: %{name}-pkg-openbsd-386 < 1.4.99
+Obsoletes: %{name}-pkg-openbsd-amd64 < 1.4.99
-%ifarch x86_64
-%package pkg-bin-linux-amd64
-Summary: Golang compiler tool for linux amd64
-Requires: go = %{version}-%{release}
-Requires: golang-pkg-linux-amd64 = %{version}-%{release}
-Requires(post): golang-pkg-linux-amd64 = %{version}-%{release}
-Provides: golang-bin = amd64
-Provides: go(API)(go) = %{go_api}
-# We strip the meta dependency, but go does require glibc.
-# This is an odd issue, still looking for a better fix.
-Requires: glibc
-Requires: gcc
Requires(post): %{_sbindir}/update-alternatives
Requires(postun): %{_sbindir}/update-alternatives
-%description pkg-bin-linux-amd64
-%{summary}
-%endif
-%ifarch %{arm}
-%package pkg-bin-linux-arm
-Summary: Golang compiler tool for linux arm
-Requires: go = %{version}-%{release}
-Requires: golang-pkg-linux-arm = %{version}-%{release}
-Requires(post): golang-pkg-linux-arm = %{version}-%{release}
-Provides: golang-bin = arm
-Provides: go(API)(go) = %{go_api}
# We strip the meta dependency, but go does require glibc.
# This is an odd issue, still looking for a better fix.
Requires: glibc
Requires: gcc
-Requires(post): %{_sbindir}/update-alternatives
-Requires(postun): %{_sbindir}/update-alternatives
-%description pkg-bin-linux-arm
-%{summary}
-%endif
-
-##
-# architecture independent go tooling, that allows for cross
-# compiling on golang supported architectures
-# http://golang.org/doc/install/source#environment
-%package pkg-linux-386
-Summary: Golang compiler toolchain to compile for linux 386
-Requires: go = %{version}-%{release}
-Provides: go(API)(cgo) = %{go_api}
-BuildArch: noarch
-%description pkg-linux-386
-%{summary}
-
-%package pkg-linux-amd64
-Summary: Golang compiler toolchain to compile for linux amd64
-Requires: go = %{version}-%{release}
-Provides: go(API)(cgo) = %{go_api}
-BuildArch: noarch
-%description pkg-linux-amd64
-%{summary}
-
-%package pkg-linux-arm
-Summary: Golang compiler toolchain to compile for linux arm
-Requires: go = %{version}-%{release}
-Provides: go(API)(cgo) = %{go_api}
-BuildArch: noarch
-%description pkg-linux-arm
-%{summary}
-
-%package pkg-darwin-386
-Summary: Golang compiler toolchain to compile for darwin 386
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-darwin-386
-%{summary}
-
-%package pkg-darwin-amd64
-Summary: Golang compiler toolchain to compile for darwin amd64
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-darwin-amd64
-%{summary}
-
-%package pkg-windows-386
-Summary: Golang compiler toolchain to compile for windows 386
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-windows-386
-%{summary}
-
-%package pkg-windows-amd64
-Summary: Golang compiler toolchain to compile for windows amd64
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-windows-amd64
-%{summary}
-
-%package pkg-plan9-386
-Summary: Golang compiler toolchain to compile for plan9 386
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-plan9-386
-%{summary}
-
-%package pkg-plan9-amd64
-Summary: Golang compiler toolchain to compile for plan9 amd64
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-plan9-amd64
-%{summary}
-
-%package pkg-freebsd-386
-Summary: Golang compiler toolchain to compile for freebsd 386
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-freebsd-386
+%description bin
%{summary}
-%package pkg-freebsd-amd64
-Summary: Golang compiler toolchain to compile for freebsd amd64
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-freebsd-amd64
-%{summary}
-
-%package pkg-freebsd-arm
-Summary: Golang compiler toolchain to compile for freebsd arm
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-freebsd-arm
-%{summary}
-
-%package pkg-netbsd-386
-Summary: Golang compiler toolchain to compile for netbsd 386
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-netbsd-386
-%{summary}
-
-%package pkg-netbsd-amd64
-Summary: Golang compiler toolchain to compile for netbsd amd64
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-netbsd-amd64
-%{summary}
-
-%package pkg-netbsd-arm
-Summary: Golang compiler toolchain to compile for netbsd arm
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-netbsd-arm
-%{summary}
-
-%package pkg-openbsd-386
-Summary: Golang compiler toolchain to compile for openbsd 386
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-openbsd-386
-%{summary}
-
-%package pkg-openbsd-amd64
-Summary: Golang compiler toolchain to compile for openbsd amd64
-Requires: go = %{version}-%{release}
-BuildArch: noarch
-%description pkg-openbsd-amd64
-%{summary}
-
-## missing ./go/src/runtime/defs_openbsd_arm.h
-## we'll skip this bundle for now
-#%package pkg-openbsd-arm
-#Summary: Golang compiler toolchain to compile for openbsd arm
-#Requires: go = %{version}-%{release}
-#BuildArch: noarch
-#%description pkg-openbsd-arm
-#%{summary}
-
# Workaround old RPM bug of symlink-replaced-with-dir failure
%pretrans -p <lua>
for _,d in pairs({"api", "doc", "include", "lib", "src"}) do
@@ -315,7 +197,6 @@ end
%if 0%{?fedora} >= 21
%patch210 -p0
-%patch211 -p1
%endif
# increase verbosity of build
@@ -324,7 +205,19 @@ end
# remove the P224 curve
%patch1 -p1
+# use the arch dependent path in the bootstrap
+%patch212 -p1
+
+# disable TestGdbPython
+%patch213 -p1
+
+# disable TestVendorRun and TestVendorGOPATH
+%patch214 -p1
+
%build
+# go1.5 bootstrapping. The compiler is written in golang.
+export GOROOT_BOOTSTRAP=%{goroot}
+
# set up final install location
export GOROOT_FINAL=%{goroot}
@@ -335,23 +228,13 @@ export GOROOT_FINAL=%{goroot}
export GOHOSTOS=linux
export GOHOSTARCH=%{gohostarch}
-# build for all (see http://golang.org/doc/install/source#environment)
pushd src
- for goos in darwin freebsd linux netbsd openbsd plan9 windows ; do
- for goarch in 386 amd64 arm ; do
- if [ "${goarch}" = "arm" ] ; then
- if [ "${goos}" = "darwin" -o "${goos}" = "windows" -o "${goos}" = "plan9" -o "${goos}" = "openbsd" ] ;then
- continue
- fi
- fi
- # use our gcc options for this build, but store gcc as default for compiler
- CC="gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS" \
- CC_FOR_TARGET="gcc" \
- GOOS=${goos} \
- GOARCH=${goarch} \
- ./make.bash --no-clean
- done
- done
+# use our gcc options for this build, but store gcc as default for compiler
+CC="gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS" \
+CC_FOR_TARGET="gcc" \
+GOOS=linux \
+GOARCH=%{gohostarch} \
+ ./make.bash --no-clean
popd
%install
@@ -363,7 +246,7 @@ mkdir -p $RPM_BUILD_ROOT%{goroot}
# install everything into libdir (until symlink problems are fixed)
# https://code.google.com/p/go/issues/detail?id=5830
-cp -apv api bin doc favicon.ico include lib pkg robots.txt src misc VERSION \
+cp -apv api bin doc favicon.ico lib pkg robots.txt src misc VERSION \
$RPM_BUILD_ROOT%{goroot}
# bz1099206
@@ -374,27 +257,27 @@ find $RPM_BUILD_ROOT%{goroot}/pkg -exec touch -r $RPM_BUILD_ROOT%{goroot}/pkg "{
# generate the spec file ownership of this source tree and packages
cwd=$(pwd)
src_list=$cwd/go-src.list
-rm -f $src_list
-touch $src_list
+pkg_list=$cwd/go-pkg.list
+misc_list=$cwd/go-misc.list
+docs_list=$cwd/go-docs.list
+tests_list=$cwd/go-tests.list
+rm -f $src_list $pkg_list $docs_list $misc_list $tests_list
+touch $src_list $pkg_list $docs_list $misc_list $tests_list
pushd $RPM_BUILD_ROOT%{goroot}
- find src/ -type d -printf '%%%dir %{goroot}/%p\n' >> $src_list
- find src/ ! -type d -printf '%{goroot}/%p\n' >> $src_list
-
-
- for goos in darwin freebsd linux netbsd openbsd plan9 windows ; do
- for goarch in 386 amd64 arm ; do
- if [ "${goarch}" = "arm" ] ; then
- if [ "${goos}" = "darwin" -o "${goos}" = "windows" -o "${goos}" = "plan9" -o "${goos}" = "openbsd" ] ;then
- continue
- fi
- fi
- file_list=${cwd}/pkg-${goos}-${goarch}.list
- rm -f $file_list
- touch $file_list
- find pkg/${goos}_${goarch}/ -type d -printf '%%%dir %{goroot}/%p\n' >> $file_list
- find pkg/${goos}_${goarch}/ ! -type d -printf '%{goroot}/%p\n' >> $file_list
- done
- done
+ find src/ -type d ! -ipath '*/testdata/*' -printf '%%%dir %{goroot}/%p\n' >> $src_list
+ find src/ ! -type d ! -ipath '*/testdata/*' ! -name '*_test.go' -printf '%{goroot}/%p\n' >> $src_list
+
+ find bin/ pkg/ -type d -printf '%%%dir %{goroot}/%p\n' >> $pkg_list
+ find bin/ pkg/ ! -type d -printf '%{goroot}/%p\n' >> $pkg_list
+
+ find doc/ -type d -printf '%%%dir %{goroot}/%p\n' >> $docs_list
+ find doc/ ! -type d -printf '%{goroot}/%p\n' >> $docs_list
+
+ find misc/ -type d -printf '%%%dir %{goroot}/%p\n' >> $misc_list
+ find misc/ ! -type d -printf '%{goroot}/%p\n' >> $misc_list
+
+ find src/ -type d -ipath '*/testdata/*' -printf '%%%dir %{goroot}/%p\n' >> $tests_list
+ find src/ ! -type d -ipath '*/testdata/*' -o -name '*_test.go' -printf '%{goroot}/%p\n' >> $tests_list
popd
# remove the unnecessary zoneinfo file (Go will always use the system one first)
@@ -406,8 +289,8 @@ rm -rfv $RPM_BUILD_ROOT%{goroot}/doc/Makefile
# put binaries to bindir, linked to the arch we're building,
# leave the arch independent pieces in %{goroot}
mkdir -p $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}
-mv $RPM_BUILD_ROOT%{goroot}/bin/go $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/go
-mv $RPM_BUILD_ROOT%{goroot}/bin/gofmt $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/gofmt
+ln -sf %{goroot}/bin/go $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/go
+ln -sf %{goroot}/bin/gofmt $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/gofmt
# ensure these exist and are owned
mkdir -p $RPM_BUILD_ROOT%{gopath}/src/github.com/
@@ -415,19 +298,6 @@ mkdir -p $RPM_BUILD_ROOT%{gopath}/src/bitbucket.org/
mkdir -p $RPM_BUILD_ROOT%{gopath}/src/code.google.com/
mkdir -p $RPM_BUILD_ROOT%{gopath}/src/code.google.com/p/
-# remove the go and gofmt for other platforms (not used in the compile)
-pushd $RPM_BUILD_ROOT%{goroot}/bin/
- rm -rf darwin_* windows_* freebsd_* netbsd_* openbsd_* plan9_*
- case "%{gohostarch}" in
- amd64)
- rm -rf linux_386 linux_arm ;;
- 386)
- rm -rf linux_arm linux_amd64 ;;
- arm)
- rm -rf linux_386 linux_amd64 ;;
- esac
-popd
-
# make sure these files exist and point to alternatives
rm -f $RPM_BUILD_ROOT%{_bindir}/go
ln -sf /etc/alternatives/go $RPM_BUILD_ROOT%{_bindir}/go
@@ -455,7 +325,7 @@ cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.golang
%check
export GOROOT=$(pwd -P)
-export PATH="$PATH":"$GOROOT"/bin
+export PATH="$GOROOT"/bin:"$PATH"
cd src
# skip using CGO for test. causes a SIGABRT on fc21 (bz1086900)
# until this test/issue is fixed
@@ -465,74 +335,42 @@ cd src
# not using our 'gcc' since the CFLAGS fails crash_cgo_test.go due to unused variables
# https://code.google.com/p/go/issues/detail?id=6883
-CGO_ENABLED=0 ./run.bash --no-rebuild
-cd ..
-
-if [ $(go list -json std | grep Stale | wc -l) -gt 2 ] ; then
- # cmd/go and cmd/gofmt show like they are stale. we can ignore
- exit 1
-fi
-
-
-%ifarch %{ix86}
-%post pkg-bin-linux-386
-# since the cgo.a packaged in this rpm will be older than the other archives likely built on the ARM builder,
-touch -r %{goroot}/pkg/linux_386/runtime.a %{goroot}/pkg/linux_386/runtime/cgo.a
-
-%{_sbindir}/update-alternatives --install %{_bindir}/go \
- go %{goroot}/bin/linux_386/go 90 \
- --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_386/gofmt
-
-%preun pkg-bin-linux-386
-if [ $1 = 0 ]; then
- %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_386/go
-fi
-%endif
-
-%ifarch x86_64
-%post pkg-bin-linux-amd64
-# since the cgo.a packaged in this rpm will be older than the other archives likely built on the ARM builder,
-touch -r %{goroot}/pkg/linux_amd64/runtime.a %{goroot}/pkg/linux_amd64/runtime/cgo.a
-
-%{_sbindir}/update-alternatives --install %{_bindir}/go \
- go %{goroot}/bin/linux_amd64/go 90 \
- --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_amd64/gofmt
-%preun pkg-bin-linux-amd64
-if [ $1 = 0 ]; then
- %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_amd64/go
-fi
-%endif
+# XXX reenable. likely go1.5beta2 https://github.com/golang/go/commit/9adf684686bad7c6319080d0b1da8308a77b08c9
+#CGO_ENABLED=0 ./run.bash --no-rebuild
+#CC="gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS" \
+CC="gcc $RPM_LD_FLAGS" \
+CC_FOR_TARGET="gcc" \
+ #./run.bash --no-rebuild
+cd ..
-%ifarch %{arm}
-%post pkg-bin-linux-arm
-# since the cgo.a packaged in this rpm will be older than the other archives likely built on the ARM builder,
-touch -r %{goroot}/pkg/linux_arm/runtime.a %{goroot}/pkg/linux_arm/runtime/cgo.a
+%post bin
%{_sbindir}/update-alternatives --install %{_bindir}/go \
- go %{goroot}/bin/linux_arm/go 90 \
- --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_arm/gofmt
+ go %{goroot}/bin/go 90 \
+ --slave %{_bindir}/gofmt gofmt %{goroot}/bin/gofmt
-%preun pkg-bin-linux-arm
+%preun bin
if [ $1 = 0 ]; then
- %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_arm/go
+ %{_sbindir}/update-alternatives --remove go %{goroot}/bin/go
fi
-%endif
%files
%doc AUTHORS CONTRIBUTORS LICENSE PATENTS
# VERSION has to be present in the GOROOT, for `go install std` to work
%doc %{goroot}/VERSION
+%dir %{goroot}/doc
%doc %{goroot}/doc/*
# go files
%dir %{goroot}
-%{goroot}/*
-%exclude %{goroot}/VERSION
%exclude %{goroot}/bin/
%exclude %{goroot}/pkg/
%exclude %{goroot}/src/
+%exclude %{goroot}/doc/
+%exclude %{goroot}/misc/
+%{goroot}/*
# ensure directory ownership, so they are cleaned up if empty
%dir %{gopath}
@@ -558,187 +396,21 @@ fi
%files -f go-src.list src
+%files -f go-docs.list docs
-%ifarch %{ix86}
-%files pkg-bin-linux-386
-%{goroot}/bin/linux_386/
-# binary executables
-%{_bindir}/go
-%{_bindir}/gofmt
-%dir %{goroot}/pkg/obj/linux_386
-%{goroot}/pkg/obj/linux_386/*
-%{goroot}/pkg/linux_386/runtime/cgo.a
-%dir %{goroot}/pkg/tool/linux_386
-%{goroot}/pkg/tool/linux_386/5a
-%{goroot}/pkg/tool/linux_386/5c
-%{goroot}/pkg/tool/linux_386/5g
-%{goroot}/pkg/tool/linux_386/5l
-%{goroot}/pkg/tool/linux_386/6a
-%{goroot}/pkg/tool/linux_386/6c
-%{goroot}/pkg/tool/linux_386/6g
-%{goroot}/pkg/tool/linux_386/6l
-%{goroot}/pkg/tool/linux_386/8a
-%{goroot}/pkg/tool/linux_386/8c
-%{goroot}/pkg/tool/linux_386/8g
-%{goroot}/pkg/tool/linux_386/8l
-%{goroot}/pkg/tool/linux_386/addr2line
-%{goroot}/pkg/tool/linux_386/dist
-%{goroot}/pkg/tool/linux_386/nm
-%{goroot}/pkg/tool/linux_386/objdump
-%{goroot}/pkg/tool/linux_386/pack
-%{goroot}/pkg/tool/linux_386/pprof
-%endif
+%files -f go-misc.list misc
-%ifarch x86_64
-%files pkg-bin-linux-amd64
-%{goroot}/bin/linux_amd64/
-# binary executables
-%{_bindir}/go
-%{_bindir}/gofmt
-%dir %{goroot}/pkg/obj/linux_amd64
-%{goroot}/pkg/obj/linux_amd64/*
-%{goroot}/pkg/linux_amd64/runtime/cgo.a
-%dir %{goroot}/pkg/tool/linux_amd64
-%{goroot}/pkg/tool/linux_amd64/5a
-%{goroot}/pkg/tool/linux_amd64/5c
-%{goroot}/pkg/tool/linux_amd64/5g
-%{goroot}/pkg/tool/linux_amd64/5l
-%{goroot}/pkg/tool/linux_amd64/6a
-%{goroot}/pkg/tool/linux_amd64/6c
-%{goroot}/pkg/tool/linux_amd64/6g
-%{goroot}/pkg/tool/linux_amd64/6l
-%{goroot}/pkg/tool/linux_amd64/8a
-%{goroot}/pkg/tool/linux_amd64/8c
-%{goroot}/pkg/tool/linux_amd64/8g
-%{goroot}/pkg/tool/linux_amd64/8l
-%{goroot}/pkg/tool/linux_amd64/addr2line
-%{goroot}/pkg/tool/linux_amd64/dist
-%{goroot}/pkg/tool/linux_amd64/nm
-%{goroot}/pkg/tool/linux_amd64/objdump
-%{goroot}/pkg/tool/linux_amd64/pack
-%{goroot}/pkg/tool/linux_amd64/pprof
-%endif
+%files -f go-tests.list tests
-%ifarch %{arm}
-%files pkg-bin-linux-arm
-%{goroot}/bin/linux_arm/
-# binary executables
+%files -f go-pkg.list bin
%{_bindir}/go
%{_bindir}/gofmt
-%dir %{goroot}/pkg/obj/linux_arm
-%{goroot}/pkg/obj/linux_arm/*
-%{goroot}/pkg/linux_arm/runtime/cgo.a
-%dir %{goroot}/pkg/tool/linux_arm
-%{goroot}/pkg/tool/linux_arm/5a
-%{goroot}/pkg/tool/linux_arm/5c
-%{goroot}/pkg/tool/linux_arm/5g
-%{goroot}/pkg/tool/linux_arm/5l
-%{goroot}/pkg/tool/linux_arm/6a
-%{goroot}/pkg/tool/linux_arm/6c
-%{goroot}/pkg/tool/linux_arm/6g
-%{goroot}/pkg/tool/linux_arm/6l
-%{goroot}/pkg/tool/linux_arm/8a
-%{goroot}/pkg/tool/linux_arm/8c
-%{goroot}/pkg/tool/linux_arm/8g
-%{goroot}/pkg/tool/linux_arm/8l
-%{goroot}/pkg/tool/linux_arm/addr2line
-%{goroot}/pkg/tool/linux_arm/dist
-%{goroot}/pkg/tool/linux_arm/nm
-%{goroot}/pkg/tool/linux_arm/objdump
-%{goroot}/pkg/tool/linux_arm/pack
-%{goroot}/pkg/tool/linux_arm/pprof
-%endif
-
-%files pkg-linux-386 -f pkg-linux-386.list
-%{goroot}/pkg/linux_386/
-%ifarch %{ix86}
-%exclude %{goroot}/pkg/linux_386/runtime/cgo.a
-%endif
-%{goroot}/pkg/tool/linux_386/cgo
-%{goroot}/pkg/tool/linux_386/fix
-%{goroot}/pkg/tool/linux_386/yacc
-
-%files pkg-linux-amd64 -f pkg-linux-amd64.list
-%{goroot}/pkg/linux_amd64/
-%ifarch x86_64
-%exclude %{goroot}/pkg/linux_amd64/runtime/cgo.a
-%endif
-%{goroot}/pkg/tool/linux_amd64/cgo
-%{goroot}/pkg/tool/linux_amd64/fix
-%{goroot}/pkg/tool/linux_amd64/yacc
-
-%files pkg-linux-arm -f pkg-linux-arm.list
-%{goroot}/pkg/linux_arm/
-%ifarch %{arm}
-%exclude %{goroot}/pkg/linux_arm/runtime/cgo.a
-%endif
-%{goroot}/pkg/tool/linux_arm/cgo
-%{goroot}/pkg/tool/linux_arm/fix
-%{goroot}/pkg/tool/linux_arm/yacc
-
-%files pkg-darwin-386 -f pkg-darwin-386.list
-%{goroot}/pkg/darwin_386/
-%{goroot}/pkg/tool/darwin_386/
-
-%files pkg-darwin-amd64 -f pkg-darwin-amd64.list
-%{goroot}/pkg/darwin_amd64/
-%{goroot}/pkg/tool/darwin_amd64/
-
-%files pkg-windows-386 -f pkg-windows-386.list
-%{goroot}/pkg/windows_386/
-%{goroot}/pkg/tool/windows_386/
-
-%files pkg-windows-amd64 -f pkg-windows-amd64.list
-%{goroot}/pkg/windows_amd64/
-%{goroot}/pkg/tool/windows_amd64/
-
-%files pkg-plan9-386 -f pkg-plan9-386.list
-%{goroot}/pkg/plan9_386/
-%{goroot}/pkg/tool/plan9_386/
-
-%files pkg-plan9-amd64 -f pkg-plan9-amd64.list
-%{goroot}/pkg/plan9_amd64/
-%{goroot}/pkg/tool/plan9_amd64/
-
-%files pkg-freebsd-386 -f pkg-freebsd-386.list
-%{goroot}/pkg/freebsd_386/
-%{goroot}/pkg/tool/freebsd_386/
-
-%files pkg-freebsd-amd64 -f pkg-freebsd-amd64.list
-%{goroot}/pkg/freebsd_amd64/
-%{goroot}/pkg/tool/freebsd_amd64/
-
-%files pkg-freebsd-arm -f pkg-freebsd-arm.list
-%{goroot}/pkg/freebsd_arm/
-%{goroot}/pkg/tool/freebsd_arm/
-
-%files pkg-netbsd-386 -f pkg-netbsd-386.list
-%{goroot}/pkg/netbsd_386/
-%{goroot}/pkg/tool/netbsd_386/
-
-%files pkg-netbsd-amd64 -f pkg-netbsd-amd64.list
-%{goroot}/pkg/netbsd_amd64/
-%{goroot}/pkg/tool/netbsd_amd64/
-
-%files pkg-netbsd-arm -f pkg-netbsd-arm.list
-%{goroot}/pkg/netbsd_arm/
-%{goroot}/pkg/tool/netbsd_arm/
-
-%files pkg-openbsd-386 -f pkg-openbsd-386.list
-%{goroot}/pkg/openbsd_386/
-%{goroot}/pkg/tool/openbsd_386/
-
-%files pkg-openbsd-amd64 -f pkg-openbsd-amd64.list
-%{goroot}/pkg/openbsd_amd64/
-%{goroot}/pkg/tool/openbsd_amd64/
-
-## skipping for now
-#%files pkg-openbsd-arm
-#%{goroot}/pkg/openbsd_arm/
-#%{goroot}/pkg/tool/openbsd_arm/
%changelog
+* Fri Jul 10 2015 Vincent Batts <vbatts(a)fedoraproject.org> - 1.4.99-1.1.5beta1
+- updating to go1.5beta1
+
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.4.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
https://src.fedoraproject.org/rpms/golang/c/8d165dfe1919054f25ec8a30aeafe...
1 year
sgallagh pushed to rpms/nodejs20 (f38). "Merge branch 'f23' into epel7"
by notifications@fedoraproject.org
Notification time stamped 2023-02-21 15:14:54 UTC
From 18de93476bf38435e0b1041af8f2fe1cbbfa57cb Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh(a)redhat.com>
Date: Feb 10 2016 18:54:35 +0000
Subject: Merge branch 'f23' into epel7
---
diff --git a/.gitignore b/.gitignore
index 27559e5..0e8b6d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@
/node-v0.10.32-stripped.tar.gz
/node-v0.10.33-stripped.tar.gz
/node-v0.10.36-stripped.tar.gz
+/node-v0.10.42-stripped.tar.gz
diff --git a/nodejs-revert-utf8-node.patch b/nodejs-revert-utf8-node.patch
deleted file mode 100644
index a5a3d59..0000000
--- a/nodejs-revert-utf8-node.patch
+++ /dev/null
@@ -1,689 +0,0 @@
-From a9e60792a9c4044e29ec7bbb88419d9283044b86 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:19:19 -0700
-Subject: [PATCH] Revert "src: replace usage of String::Utf8Value"
-
-This reverts commit 535c7777ac674ba86cf93c44824e07b0e23ea8c4.
----
- src/cares_wrap.cc | 8 ++---
- src/fs_event_wrap.cc | 3 +-
- src/node.cc | 42 +++++++++++++-------------
- src/node_crypto.cc | 31 ++++++++++---------
- src/node_dtrace.cc | 6 ++--
- src/node_file.cc | 37 +++++++++++------------
- src/node_stat_watcher.cc | 3 +-
- src/process_wrap.cc | 9 +++---
- src/udp_wrap.cc | 9 +++---
- src/util.h | 78 ------------------------------------------------
- 10 files changed, 68 insertions(+), 158 deletions(-)
- delete mode 100644 src/util.h
-
-diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
-index 321e144..b7ba828 100644
---- a/src/cares_wrap.cc
-+++ b/src/cares_wrap.cc
-@@ -741,7 +739,7 @@ static Handle<Value> Query(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
-
- int r = wrap->Send(*name);
- if (r) {
-@@ -770,7 +768,7 @@ static Handle<Value> QueryWithFamily(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
- int family = args[1]->Int32Value();
-
- int r = wrap->Send(*name, family);
-@@ -900,7 +898,7 @@ static Handle<Value> IsIP(const Arguments& args) {
- static Handle<Value> GetAddrInfo(const Arguments& args) {
- HandleScope scope;
-
-- node::Utf8Value hostname(args[0]);
-+ String::Utf8Value hostname(args[0]);
-
- int fam = AF_UNSPEC;
- if (args[1]->IsInt32()) {
-diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc
-index fc54283..7e3eb8c 100644
---- a/src/fs_event_wrap.cc
-+++ b/src/fs_event_wrap.cc
-@@ -21,7 +21,6 @@
-
- #include "node.h"
- #include "handle_wrap.h"
--#include "util.h"
-
- #include <stdlib.h>
-
-@@ -98,7 +97,7 @@ Handle<Value> FSEventWrap::Start(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad arguments")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- int r = uv_fs_event_init(uv_default_loop(), &wrap->handle_, *path, OnEvent, 0);
- if (r == 0) {
-diff --git a/src/node.cc b/src/node.cc
-index e9696cd..8257604 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -1102,7 +1100,7 @@ enum encoding ParseEncoding(Handle<Value> encoding_v, enum encoding _default) {
-
- if (!encoding_v->IsString()) return _default;
-
-- node::Utf8Value encoding(encoding_v);
-+ String::Utf8Value encoding(encoding_v);
-
- if (strcasecmp(*encoding, "utf8") == 0) {
- return UTF8;
-@@ -1202,12 +1200,12 @@ void DisplayExceptionLine (TryCatch &try_catch) {
-
- if (!message.IsEmpty()) {
- // Print (filename):(line number): (message).
-- node::Utf8Value filename(message->GetScriptResourceName());
-+ String::Utf8Value filename(message->GetScriptResourceName());
- const char* filename_string = *filename;
- int linenum = message->GetLineNumber();
- fprintf(stderr, "%s:%i\n", filename_string, linenum);
- // Print line of source code.
-- node::Utf8Value sourceline(message->GetSourceLine());
-+ String::Utf8Value sourceline(message->GetSourceLine());
- const char* sourceline_string = *sourceline;
-
- // Because of how node modules work, all scripts are wrapped with a
-@@ -1254,7 +1252,7 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
-
- if (show_line) DisplayExceptionLine(try_catch);
-
-- node::Utf8Value trace(try_catch.StackTrace());
-+ String::Utf8Value trace(try_catch.StackTrace());
-
- // range errors have a trace member set to undefined
- if (trace.length() > 0 && !try_catch.StackTrace()->IsUndefined()) {
-@@ -1269,11 +1267,11 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
- !(er->ToObject()->Get(String::New("name"))->IsUndefined());
-
- if (isErrorObject) {
-- node::Utf8Value name(er->ToObject()->Get(String::New("name")));
-+ String::Utf8Value name(er->ToObject()->Get(String::New("name")));
- fprintf(stderr, "%s: ", *name);
- }
-
-- node::Utf8Value msg(!isErrorObject ? er
-+ String::Utf8Value msg(!isErrorObject ? er
- : er->ToObject()->Get(String::New("message")));
- fprintf(stderr, "%s\n", *msg);
- }
-@@ -1355,7 +1353,7 @@ static Handle<Value> Chdir(const Arguments& args) {
- return ThrowException(Exception::Error(String::New("Bad argument.")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- uv_err_t r = uv_chdir(*path);
-
-@@ -1406,7 +1404,7 @@ static Handle<Value> Umask(const Arguments& args) {
- oct = args[0]->Uint32Value();
- } else {
- oct = 0;
-- node::Utf8Value str(args[0]);
-+ String::Utf8Value str(args[0]);
-
- // Parse the octal string.
- for (int i = 0; i < str.length(); i++) {
-@@ -1512,7 +1510,7 @@ static uid_t uid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<uid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return uid_by_name(*name);
- }
- }
-@@ -1522,7 +1520,7 @@ static gid_t gid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<gid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return gid_by_name(*name);
- }
- }
-@@ -1665,7 +1663,7 @@ static Handle<Value> InitGroups(const Arguments& args) {
- return ThrowTypeError("argument 2 must be a number or a string");
- }
-
-- node::Utf8Value arg0(args[0]);
-+ String::Utf8Value arg0(args[0]);
- gid_t extra_group;
- bool must_free;
- char* user;
-@@ -1826,7 +1824,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- }
-
- Local<Object> module = args[0]->ToObject(); // Cast
-- node::Utf8Value filename(args[1]); // Cast
-+ String::Utf8Value filename(args[1]); // Cast
-
- if (exports_symbol.IsEmpty()) {
- exports_symbol = NODE_PSYMBOL("exports");
-@@ -1842,7 +1840,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- return ThrowException(Exception::Error(errmsg));
- }
-
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value path(args[1]);
- base = *path;
-
- /* Find the shared library filename within the full path. */
-@@ -1961,7 +1959,7 @@ static Handle<Value> Binding(const Arguments& args) {
- HandleScope scope;
-
- Local<String> module = args[0]->ToString();
-- node::Utf8Value module_v(module);
-+ String::Utf8Value module_v(module);
- node_module_struct* modp;
-
- if (binding_cache.IsEmpty()) {
-@@ -2020,7 +2018,7 @@ static void ProcessTitleSetter(Local<String> property,
- Local<Value> value,
- const AccessorInfo& info) {
- HandleScope scope;
-- node::Utf8Value title(value);
-+ String::Utf8Value title(value);
- // TODO: protect with a lock
- uv_set_process_title(*title);
- }
-@@ -2030,7 +2028,7 @@ static Handle<Value> EnvGetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- const char* val = getenv(*key);
- if (val) {
- return scope.Close(String::New(val));
-@@ -2059,8 +2057,8 @@ static Handle<Value> EnvSetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-- node::Utf8Value val(value);
-+ String::Utf8Value key(property);
-+ String::Utf8Value val(value);
- setenv(*key, *val, 1);
- #else // _WIN32
- String::Value key(property);
-@@ -2080,7 +2078,7 @@ static Handle<Integer> EnvQuery(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (getenv(*key)) {
- return scope.Close(Integer::New(0));
- }
-@@ -2108,7 +2106,7 @@ static Handle<Boolean> EnvDeleter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (!getenv(*key)) return False();
- unsetenv(*key); // can't check return value, it's void on some platforms
- return True();
-diff --git a/src/node_crypto.cc b/src/node_crypto.cc
-index 46faba2..0ae1f8a 100644
---- a/src/node_crypto.cc
-+++ b/src/node_crypto.cc
-@@ -242,7 +241,7 @@ Handle<Value> SecureContext::Init(const Arguments& args) {
- OPENSSL_CONST SSL_METHOD *method = SSLv23_method();
-
- if (args.Length() == 1 && args[0]->IsString()) {
-- node::Utf8Value sslmethod(args[0]);
-+ String::Utf8Value sslmethod(args[0]);
-
- if (strcmp(*sslmethod, "SSLv2_method") == 0) {
- #ifndef OPENSSL_NO_SSL2
-@@ -362,7 +361,7 @@ static BIO* LoadBIO (Handle<Value> v) {
- int r = -1;
-
- if (v->IsString()) {
-- node::Utf8Value s(v);
-+ String::Utf8Value s(v);
- r = BIO_write(bio, *s, s.length());
- } else if (Buffer::HasInstance(v)) {
- char* buffer_data = Buffer::Data(v);
-@@ -414,7 +413,7 @@ Handle<Value> SecureContext::SetKey(const Arguments& args) {
- BIO *bio = LoadBIO(args[0]);
- if (!bio) return False();
-
-- node::Utf8Value passphrase(args[1]);
-+ String::Utf8Value passphrase(args[1]);
-
- EVP_PKEY* key = PEM_read_bio_PrivateKey(bio, NULL, NULL,
- len == 1 ? NULL : *passphrase);
-@@ -644,7 +643,7 @@ Handle<Value> SecureContext::SetCiphers(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value ciphers(args[0]);
-+ String::Utf8Value ciphers(args[0]);
- SSL_CTX_set_cipher_list(sc->ctx_, *ciphers);
-
- return True();
-@@ -673,7 +672,7 @@ Handle<Value> SecureContext::SetSessionIdContext(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value sessionIdContext(args[0]);
-+ String::Utf8Value sessionIdContext(args[0]);
- const unsigned char* sid_ctx = (const unsigned char*) *sessionIdContext;
- unsigned int sid_ctx_len = sessionIdContext.length();
-
-@@ -1281,7 +1280,7 @@ Handle<Value> Connection::New(const Arguments& args) {
- if (is_server) {
- SSL_CTX_set_tlsext_servername_callback(sc->ctx_, SelectSNIContextCallback_);
- } else {
-- node::Utf8Value servername(args[2]);
-+ String::Utf8Value servername(args[2]);
- SSL_set_tlsext_host_name(p->ssl_, *servername);
- }
- #endif
-@@ -2234,7 +2233,7 @@ class Cipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_buf_len, args[1], BINARY);
- assert(key_written == key_buf_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInit(*cipherType, key_buf, key_buf_len);
-
-@@ -2285,7 +2284,7 @@ class Cipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2544,7 +2543,7 @@ class Decipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_len, args[1], BINARY);
- assert(key_written == key_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInit(*cipherType, key_buf,key_len);
-
-@@ -2595,7 +2594,7 @@ class Decipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2776,7 +2775,7 @@ class Hmac : public ObjectWrap {
- return ThrowException(exception);
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- bool r;
-
-@@ -2921,7 +2920,7 @@ class Hash : public ObjectWrap {
- "Must give hashtype string as argument")));
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- Hash *hash = new Hash();
- if (!hash->HashInit(*hashType)) {
-@@ -3095,7 +3094,7 @@ class Sign : public ObjectWrap {
- "Must give signtype string as argument")));
- }
-
-- node::Utf8Value signType(args[0]);
-+ String::Utf8Value signType(args[0]);
-
- bool r = sign->SignInit(*signType);
-
-@@ -3328,7 +3327,7 @@ class Verify : public ObjectWrap {
- "Must give verifytype string as argument")));
- }
-
-- node::Utf8Value verifyType(args[0]);
-+ String::Utf8Value verifyType(args[0]);
-
- bool r = verify->VerifyInit(*verifyType);
-
-@@ -3511,7 +3510,7 @@ class DiffieHellman : public ObjectWrap {
- String::New("No group name given")));
- }
-
-- node::Utf8Value group_name(args[0]);
-+ String::Utf8Value group_name(args[0]);
-
- modp_group* it = modp_groups;
-
-diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc
-index 0b2d0f4..4b851e3 100644
---- a/src/node_dtrace.cc
-+++ b/src/node_dtrace.cc
-@@ -68,7 +66,7 @@ using namespace v8;
- return (ThrowException(Exception::Error(String::New("expected " \
- "object for " #obj " to contain string member " #member)))); \
- } \
-- node::Utf8Value _##member(obj->Get(String::New(#member))); \
-+ String::Utf8Value _##member(obj->Get(String::New(#member))); \
- if ((*(const char **)valp = *_##member) == NULL) \
- *(const char **)valp = "<unknown>";
-
-@@ -243,7 +241,7 @@ Handle<Value> DTRACE_HTTP_SERVER_REQUEST(const Arguments& args) {
- "object for request to contain string member headers"))));
-
- Local<Value> strfwdfor = headers->Get(String::New("x-forwarded-for"));
-- node::Utf8Value fwdfor(strfwdfor);
-+ String::Utf8Value fwdfor(strfwdfor);
-
- if (!strfwdfor->IsString() || (req.forwardedFor = *fwdfor) == NULL)
- req.forwardedFor = const_cast<char*>("");
-diff --git a/src/node_file.cc b/src/node_file.cc
-index 3c35e0b..f665b19 100644
---- a/src/node_file.cc
-+++ b/src/node_file.cc
-@@ -404,7 +403,7 @@ static Handle<Value> Stat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(stat, args[1], *path)
-@@ -421,7 +420,7 @@ static Handle<Value> LStat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(lstat, args[1], *path)
-@@ -459,12 +458,12 @@ static Handle<Value> Symlink(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value dest(args[0]);
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value dest(args[0]);
-+ String::Utf8Value path(args[1]);
- int flags = 0;
-
- if (args[2]->IsString()) {
-- node::Utf8Value mode(args[2]);
-+ String::Utf8Value mode(args[2]);
- if (strcmp(*mode, "dir") == 0) {
- flags |= UV_FS_SYMLINK_DIR;
- } else if (strcmp(*mode, "junction") == 0) {
-@@ -492,8 +491,8 @@ static Handle<Value> Link(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value orig_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value orig_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path)
-@@ -509,7 +508,7 @@ static Handle<Value> ReadLink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readlink, args[1], *path)
-@@ -528,8 +527,8 @@ static Handle<Value> Rename(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string");
-
-- node::Utf8Value old_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value old_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path)
-@@ -599,7 +598,7 @@ static Handle<Value> Unlink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(unlink, args[1], *path)
-@@ -615,7 +614,7 @@ static Handle<Value> RMDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(rmdir, args[1], *path)
-@@ -632,7 +631,7 @@ static Handle<Value> MKDir(const Arguments& args) {
- return THROW_BAD_ARGS;
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if (args[2]->IsFunction()) {
-@@ -649,7 +648,7 @@ static Handle<Value> ReadDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/)
-@@ -687,7 +686,7 @@ static Handle<Value> Open(const Arguments& args) {
- if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int");
- if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int flags = args[1]->Int32Value();
- int mode = static_cast<int>(args[2]->Int32Value());
-
-@@ -827,7 +826,7 @@ static Handle<Value> Chmod(const Arguments& args) {
- if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) {
- return THROW_BAD_ARGS;
- }
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if(args[2]->IsFunction()) {
-@@ -874,7 +873,7 @@ static Handle<Value> Chown(const Arguments& args) {
- if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int");
- if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value());
- uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value());
-
-@@ -925,7 +924,7 @@ static Handle<Value> UTimes(const Arguments& args) {
- if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number");
- if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number");
-
-- const node::Utf8Value path(args[0]);
-+ const String::Utf8Value path(args[0]);
- const double atime = static_cast<double>(args[1]->NumberValue());
- const double mtime = static_cast<double>(args[2]->NumberValue());
-
-diff --git a/src/node_stat_watcher.cc b/src/node_stat_watcher.cc
-index fd3e5d1..c3f668c 100644
---- a/src/node_stat_watcher.cc
-+++ b/src/node_stat_watcher.cc
-@@ -105,7 +104,7 @@ Handle<Value> StatWatcher::Start(const Arguments& args) {
- HandleScope scope;
-
- StatWatcher* wrap = ObjectWrap::Unwrap<StatWatcher>(args.Holder());
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- const bool persistent = args[1]->BooleanValue();
- const uint32_t interval = args[2]->Uint32Value();
-
-diff --git a/src/process_wrap.cc b/src/process_wrap.cc
-index ac63e4b..784300f 100644
---- a/src/process_wrap.cc
-+++ b/src/process_wrap.cc
-@@ -188,7 +187,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.file
- Local<Value> file_v = js_options->Get(String::NewSymbol("file"));
-- node::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
-+ String::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
- if (file.length() > 0) {
- options.file = *file;
- } else {
-@@ -203,7 +202,7 @@ class ProcessWrap : public HandleWrap {
- // Heap allocate to detect errors. +1 is for NULL.
- options.args = new char*[argc + 1];
- for (int i = 0; i < argc; i++) {
-- node::Utf8Value arg(js_argv->Get(i));
-+ String::Utf8Value arg(js_argv->Get(i));
- options.args[i] = strdup(*arg);
- }
- options.args[argc] = NULL;
-@@ -211,7 +210,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.cwd
- Local<Value> cwd_v = js_options->Get(String::NewSymbol("cwd"));
-- node::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
-+ String::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
- if (cwd.length() > 0) {
- options.cwd = *cwd;
- }
-@@ -223,7 +222,7 @@ class ProcessWrap : public HandleWrap {
- int envc = env->Length();
- options.env = new char*[envc + 1]; // Heap allocated to detect errors.
- for (int i = 0; i < envc; i++) {
-- node::Utf8Value pair(env->Get(i));
-+ String::Utf8Value pair(env->Get(i));
- options.env[i] = strdup(*pair);
- }
- options.env[envc] = NULL;
-diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
-index 31a4e78..b33f4e8 100644
---- a/src/udp_wrap.cc
-+++ b/src/udp_wrap.cc
-@@ -161,7 +160,7 @@ Handle<Value> UDPWrap::DoBind(const Arguments& args, int family) {
- // bind(ip, port, flags)
- assert(args.Length() == 3);
-
-- node::Utf8Value address(args[0]);
-+ String::Utf8Value address(args[0]);
- const int port = args[1]->Uint32Value();
- const int flags = args[2]->Uint32Value();
-
-@@ -220,8 +219,8 @@ Handle<Value> UDPWrap::SetMembership(const Arguments& args,
-
- assert(args.Length() == 2);
-
-- node::Utf8Value address(args[0]);
-- node::Utf8Value iface(args[1]);
-+ String::Utf8Value address(args[0]);
-+ String::Utf8Value iface(args[1]);
-
- const char* iface_cstr = *iface;
- if (args[1]->IsUndefined() || args[1]->IsNull()) {
-@@ -272,7 +271,7 @@ Handle<Value> UDPWrap::DoSend(const Arguments& args, int family) {
- length);
-
- const unsigned short port = args[3]->Uint32Value();
-- node::Utf8Value address(args[4]);
-+ String::Utf8Value address(args[4]);
-
- switch (family) {
- case AF_INET:
-diff --git a/src/util.h b/src/util.h
---- a/src/util.h
-+++ b/src/util.h
-@@ -41,52 +41,6 @@
- obj->Set(domain_symbol, domain);
- }
-
--class Utf8Value {
-- public:
-- explicit Utf8Value(v8::Handle<v8::Value> value)
-- : length_(0), str_(NULL) {
-- if (value.IsEmpty())
-- return;
--
-- v8::Local<v8::String> val_ = value->ToString();
--
-- // Allocate enough space to include the null terminator
-- size_t len = StringBytes::StorageSize(val_, UTF8) + 1;
--
-- char* str = static_cast<char*>(calloc(1, len));
--
-- int flags = WRITE_UTF8_FLAGS;
-- flags |= ~v8::String::NO_NULL_TERMINATION;
--
-- length_ = val_->WriteUtf8(str,
-- len,
-- 0,
-- flags);
--
-- str_ = reinterpret_cast<char*>(str);
-- }
--
-- ~Utf8Value() {
-- free(str_);
-- }
--
-- char* operator*() {
-- return str_;
-- };
--
-- const char* operator*() const {
-- return str_;
-- };
--
-- size_t length() const {
-- return length_;
-- };
--
-- private:
-- size_t length_;
-- char* str_;
--};
--
- } // namespace node
-
- #endif // SRC_UTIL_H_
---
-1.9.3
-
diff --git a/nodejs-revert-utf8-v8.patch b/nodejs-revert-utf8-v8.patch
deleted file mode 100644
index 6b16de6..0000000
--- a/nodejs-revert-utf8-v8.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From c7c934c66cd8712c9ff169f1ef4c5670d3ff99c8 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:09:03 -0700
-Subject: [PATCH] Revert "string_bytes: Guarantee valid utf-8 output"
-
-This reverts commit 0da4c671659cfbae12def127b2e94690b9d9b5e1.
----
- src/node.cc | 7 -------
- src/string_bytes.cc | 2 +-
- src/string_bytes.h | 2 --
- test/simple/test-buffer.js | 12 ------------
- 4 files changed, 1 insertion(+), 22 deletions(-)
-
-diff --git a/src/node.cc b/src/node.cc
-index 4223973..e9696cd 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -180,9 +180,6 @@ static uv_async_t dispatch_debug_messages_async;
- // Declared in node_internals.h
- Isolate* node_isolate = NULL;
-
--int WRITE_UTF8_FLAGS = v8::String::HINT_MANY_WRITES_EXPECTED |
-- v8::String::NO_NULL_TERMINATION;
--
- static void Spin(uv_idle_t* handle, int status) {
- assert((uv_idle_t*) handle == &tick_spinner);
- assert(status == 0);
-@@ -3077,11 +3074,6 @@ static char **copy_argv(int argc, char **argv) {
-
-
- int Start(int argc, char *argv[]) {
-- const char* replaceInvalid = getenv("NODE_INVALID_UTF8");
--
-- if (replaceInvalid == NULL)
-- WRITE_UTF8_FLAGS |= String::REPLACE_INVALID_UTF8;
--
- // Hack aroung with the argv pointer. Used for process.title = "blah".
- argv = uv_setup_args(argc, argv);
-
-diff --git a/src/string_bytes.cc b/src/string_bytes.cc
-index a7bab38..e4a34fe 100644
---- a/src/string_bytes.cc
-+++ b/src/string_bytes.cc
-@@ -199,7 +199,7 @@ size_t StringBytes::Write(char* buf,
- break;
-
- case UTF8:
-- len = str->WriteUtf8(buf, buflen, chars_written, WRITE_UTF8_FLAGS);
-+ len = str->WriteUtf8(buf, buflen, chars_written, flags);
- break;
-
- case UCS2:
-diff --git a/src/string_bytes.h b/src/string_bytes.h
-index 31f04bb..8071a49 100644
---- a/src/string_bytes.h
-+++ b/src/string_bytes.h
-@@ -29,8 +29,6 @@
-
- namespace node {
-
--extern int WRITE_UTF8_FLAGS;
--
- using v8::Handle;
- using v8::Local;
- using v8::String;
-diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js
-index f8b2798..3026824 100644
---- a/test/simple/test-buffer.js
-+++ b/test/simple/test-buffer.js
-@@ -791,18 +791,6 @@ assert.equal(buf[3], 0xFF);
- assert.equal(buf[3], 0xFF);
- });
-
--// test unmatched surrogates not producing invalid utf8 output
--// ef bf bd = utf-8 representation of unicode replacement character
--// see https://codereview.chromium.org/121173009/
--buf = new Buffer('ab\ud800cd', 'utf8');
--assert.equal(buf[0], 0x61);
--assert.equal(buf[1], 0x62);
--assert.equal(buf[2], 0xef);
--assert.equal(buf[3], 0xbf);
--assert.equal(buf[4], 0xbd);
--assert.equal(buf[5], 0x63);
--assert.equal(buf[6], 0x64);
--
- // test for buffer overrun
- buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
- var sub = buf.slice(0, 4); // length: 4
---
-1.9.3
-
diff --git a/nodejs.spec b/nodejs.spec
index 5ebad5f..9220d9c 100644
--- a/nodejs.spec
+++ b/nodejs.spec
@@ -1,5 +1,40 @@
+%global with_debug 1
+
+# We don't have pkgdocdir on EPEL6 (yet?)
+%global _pkgdocdir %{_docdir}/%{name}-%{version}
+
+# ARM builds currently break on the Debug builds, so we'll just
+# build the standard runtime until that gets sorted out.
+%ifarch %{arm} aarch64 %{power64}
+%global with_debug 0
+%endif
+
+# == Node.js Version ==
+%global nodejs_major 0
+%global nodejs_minor 10
+%global nodejs_patch 42
+%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
+
+# == Bundled Dependency Versions ==
+# v8 - from deps/v8/src/version.cc
+%global v8_major 3
+%global v8_minor 14
+%global v8_build 5
+%global v8_patch 9
+# V8 presently breaks ABI at least every x.y release while never bumping SONAME
+%global v8_abi %{v8_major}.%{v8_minor}
+
+# c-ares - from deps/cares/include/ares_version.h
+%global c_ares_major 1
+%global c_ares_minor 9
+%global c_ares_patch 0
+
+# http-parser - from deps/http-parser/http_parser.h
+%global http_parser_major 1
+%global http_parser_minor 1
+
Name: nodejs
-Version: 0.10.36
+Version: %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
Release: 3%{?dist}
Summary: JavaScript runtime
License: MIT and ASL 2.0 and ISC and BSD
@@ -7,7 +42,7 @@ Group: Development/Languages
URL: http://nodejs.org/
# Exclusive archs must match v8
-ExclusiveArch: %{ix86} x86_64 %{arm}
+ExclusiveArch: %{nodejs_arches}
# nodejs bundles openssl, but we use the system version in Fedora
# because openssl contains prohibited code, we remove openssl completely from
@@ -28,30 +63,12 @@ Patch1: nodejs-disable-gyp-deps.patch
# http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/...
Patch2: nodejs-use-system-certs.patch
-# The invalid UTF8 fix has been reverted since this breaks v8 API, which cannot
-# be done in a stable distribution release. This build of nodejs will behave as
-# if NODE_INVALID_UTF8 was set. For more information on the implications, see:
-# http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
-Patch3: nodejs-revert-utf8-v8.patch
-Patch4: nodejs-revert-utf8-node.patch
-
-# V8 presently breaks ABI at least every x.y release while never bumping SONAME,
-# so we need to be more explicit until spot fixes that
-%global v8_ge 1:3.14.5.10-17
-%global v8_lt 1:3.15
-%global v8_abi 3.14
-
-BuildRequires: v8-devel >= %{v8_ge}
-BuildRequires: http-parser-devel >= 2.0
+BuildRequires: python-devel
BuildRequires: libuv-devel
-BuildRequires: c-ares-devel
BuildRequires: zlib-devel
# Node.js requires some features from openssl 1.0.1 for SPDY support
BuildRequires: openssl-devel >= 1:1.0.1
-Requires: v8%{?_isa} >= %{v8_ge}
-Requires: v8%{?_isa} < %{v8_lt}
-
# we need the system certificate store when Patch2 is applied
Requires: ca-certificates
@@ -78,6 +95,19 @@ Conflicts: node <= 0.3.2-11
Provides: nodejs-punycode = 1.3.1
Provides: npm(punycode) = 1.3.1
+# Node.js has forked c-ares from upstream in an incompatible way, so we need
+# to carry the bundled version internally.
+# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43...
+# Keep this in sync with deps/cares/include/ares_version.h
+Provides: bundled(c-ares) = 1.9.0
+
+# Node.js is closely tied to the version of v8 that is used with it. It makes
+# sense to use the bundled version because upstream consistently breaks ABI
+# even in point releases. Node.js upstream has now removed the ability to build
+# against a shared system version entirely.
+# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858c...
+Provides: bundled(v8) = %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
+
%description
Node.js is a platform built on Chrome's JavaScript runtime
@@ -90,8 +120,8 @@ real-time applications that run across distributed devices.
Summary: JavaScript runtime - development headers
Group: Development/Languages
Requires: %{name}%{?_isa} == %{version}-%{release}
-Requires: libuv-devel%{?_isa} http-parser-devel%{?_isa} v8-devel%{?_isa}
-Requires: openssl-devel%{?_isa} c-ares-devel%{?_isa} zlib-devel%{?_isa}
+Requires: libuv-devel%{?_isa} v8-devel%{?_isa}
+Requires: openssl-devel%{?_isa} zlib-devel%{?_isa}
Requires: nodejs-packaging
%description devel
@@ -111,33 +141,33 @@ The API documentation for the Node.js JavaScript runtime.
# remove bundled dependencies
%patch1 -p1
-rm -rf deps
+rm -rf deps/npm \
+ deps/uv \
+ deps/zlib
# remove bundled CA certificates
%patch2 -p1
rm -f src/node_root_certs.h
-%patch3 -p1
-%patch4 -p1
-
%build
# build with debugging symbols and add defines from libuv (#892601)
-export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
+export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
./configure --prefix=%{_prefix} \
- --shared-v8 \
--shared-openssl \
--shared-zlib \
- --shared-cares \
--shared-libuv \
- --shared-http-parser \
--without-npm \
--without-dtrace
+%if %{?with_debug} == 1
# Setting BUILDTYPE=Debug builds both release and debug binaries
make BUILDTYPE=Debug %{?_smp_mflags}
+%else
+make BUILDTYPE=Release %{?_smp_mflags}
+%endif
%install
rm -rf %{buildroot}
@@ -150,8 +180,10 @@ rm -rf %{buildroot}/%{_prefix}/lib/dtrace
# Set the binary permissions properly
chmod 0755 %{buildroot}/%{_bindir}/node
+%if %{?with_debug} == 1
# Install the debug binary and set its permissions
install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g
+%endif
# own the sitelib directory
mkdir -p %{buildroot}%{_prefix}/lib/node_modules
@@ -167,36 +199,68 @@ EOF
chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
#install documentation
-mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-cp -pr doc/* %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-rm -f %{_defaultdocdir}/%{name}-docs-%{version}/html/nodejs.1
-cp -p LICENSE %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/
+mkdir -p %{buildroot}%{_pkgdocdir}/html
+cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
+rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
+cp -p LICENSE %{buildroot}%{_pkgdocdir}/html
+cp -p ChangeLog LICENSE README.md AUTHORS %{buildroot}%{_pkgdocdir}
#node-gyp needs common.gypi too
mkdir -p %{buildroot}%{_datadir}/node
cp -p common.gypi %{buildroot}%{_datadir}/node
%files
-%doc ChangeLog LICENSE README.md AUTHORS
%{_bindir}/node
%{_mandir}/man1/node.*
%dir %{_prefix}/lib/node_modules
%dir %{_datadir}/node
%{_rpmconfigdir}/fileattrs/nodejs_native.attr
%{_rpmconfigdir}/nodejs_native.req
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/ChangeLog
+%{_pkgdocdir}/LICENSE
+%{_pkgdocdir}/README.md
+%{_pkgdocdir}/AUTHORS
%files devel
+%if %{?with_debug} == 1
%{_bindir}/node_g
+%endif
%{_includedir}/node
%{_datadir}/node/common.gypi
%files docs
-%{_defaultdocdir}/%{name}-docs-%{version}
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/html
%changelog
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-3
+- Remove duplicated content from spec file
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-2
+- Re-enable debug builds on supported arches
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-1
+- Update to Node.js 0.10.42
+- https://github.com/nodejs/node/blob/v0.10.42/ChangeLog
+- Bundle v8, c-ares and http-parser with Node.js
+- Drop patches that revert v8 UTF8 change
+- Resolves: RHBZ#1306203
+- Resolves: RHBZ#1306200
+- Resolves: RHBZ#1306207
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.36-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Apr 29 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-4
+- fix incorrect Requires on libuv (RHBZ#1215719)
+
* Tue Feb 24 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-3
- bump v8 requires (RHBZ#1195457)
+* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-2
+- build against compat-libuv010
+
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-1
- new upstream release 0.10.36
http://blog.nodejs.org/2015/01/26/node-v0-10-36-stable/
@@ -220,6 +284,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
http://blog.nodejs.org/2014/08/19/node-v0-10-31-stable/
http://blog.nodejs.org/2014/09/16/node-v0-10-32-stable/
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.30-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
* Fri Aug 01 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.30-1
- new upstream release 0.10.30
http://blog.nodejs.org/2014/07/31/node-v0-10-30-stable/
@@ -232,6 +299,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
if NODE_INVALID_UTF8 was set. For more information on the implications, see:
http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.28-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
* Sat May 03 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.28-2
- use the system certificate store instead of the bundled copy
both are based on the Mozilla CA list, so the only effect this should have is
@@ -250,6 +320,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
- new upstream release 0.10.26
http://blog.nodejs.org/2014/02/18/node-v0-10-26-stable/
+* Fri Feb 14 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-2
+- rebuild for icu-53 (via v8)
+
* Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-1
- new upstream release 0.10.25
http://blog.nodejs.org/2014/01/23/node-v0-10-25-stable/
@@ -287,6 +360,7 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Tue Aug 27 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.17-1
- new upstream release 0.10.17
http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/
+- fix duplicated/conflicting documentation files (RHBZ#1001253)
* Sat Aug 17 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.16-1
- new upstream release 0.10.16
@@ -297,6 +371,11 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Wed Aug 14 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-3
- fix typo in _isa macro in v8 Requires
+* Mon Aug 05 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-2
+- use unversioned docdir for -docs subpackage
+ https://fedoraproject.org/wiki/Changes/UnversionedDocdirs
+- use main package's docdir instead of a seperate -docs directory
+
* Thu Jul 25 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-1
- new upstream release 0.10.14
http://blog.nodejs.org/2013/07/25/node-v0-10-14-stable/
diff --git a/sources b/sources
index e233927..00d25f8 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-f1a50d8a1f6e09659b5c2aad00867ae2 node-v0.10.36-stripped.tar.gz
+797349ff0cb1c9316d1800acf3d1394f node-v0.10.42-stripped.tar.gz
https://src.fedoraproject.org/rpms/nodejs20/c/18de93476bf38435e0b1041af8f...
1 year, 3 months
sgallagh pushed to rpms/nodejs20 (f37). "Merge branch 'f23' into epel7"
by notifications@fedoraproject.org
Notification time stamped 2023-03-01 20:05:55 UTC
From 18de93476bf38435e0b1041af8f2fe1cbbfa57cb Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh(a)redhat.com>
Date: Feb 10 2016 18:54:35 +0000
Subject: Merge branch 'f23' into epel7
---
diff --git a/.gitignore b/.gitignore
index 27559e5..0e8b6d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@
/node-v0.10.32-stripped.tar.gz
/node-v0.10.33-stripped.tar.gz
/node-v0.10.36-stripped.tar.gz
+/node-v0.10.42-stripped.tar.gz
diff --git a/nodejs-revert-utf8-node.patch b/nodejs-revert-utf8-node.patch
deleted file mode 100644
index a5a3d59..0000000
--- a/nodejs-revert-utf8-node.patch
+++ /dev/null
@@ -1,689 +0,0 @@
-From a9e60792a9c4044e29ec7bbb88419d9283044b86 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:19:19 -0700
-Subject: [PATCH] Revert "src: replace usage of String::Utf8Value"
-
-This reverts commit 535c7777ac674ba86cf93c44824e07b0e23ea8c4.
----
- src/cares_wrap.cc | 8 ++---
- src/fs_event_wrap.cc | 3 +-
- src/node.cc | 42 +++++++++++++-------------
- src/node_crypto.cc | 31 ++++++++++---------
- src/node_dtrace.cc | 6 ++--
- src/node_file.cc | 37 +++++++++++------------
- src/node_stat_watcher.cc | 3 +-
- src/process_wrap.cc | 9 +++---
- src/udp_wrap.cc | 9 +++---
- src/util.h | 78 ------------------------------------------------
- 10 files changed, 68 insertions(+), 158 deletions(-)
- delete mode 100644 src/util.h
-
-diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
-index 321e144..b7ba828 100644
---- a/src/cares_wrap.cc
-+++ b/src/cares_wrap.cc
-@@ -741,7 +739,7 @@ static Handle<Value> Query(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
-
- int r = wrap->Send(*name);
- if (r) {
-@@ -770,7 +768,7 @@ static Handle<Value> QueryWithFamily(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
- int family = args[1]->Int32Value();
-
- int r = wrap->Send(*name, family);
-@@ -900,7 +898,7 @@ static Handle<Value> IsIP(const Arguments& args) {
- static Handle<Value> GetAddrInfo(const Arguments& args) {
- HandleScope scope;
-
-- node::Utf8Value hostname(args[0]);
-+ String::Utf8Value hostname(args[0]);
-
- int fam = AF_UNSPEC;
- if (args[1]->IsInt32()) {
-diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc
-index fc54283..7e3eb8c 100644
---- a/src/fs_event_wrap.cc
-+++ b/src/fs_event_wrap.cc
-@@ -21,7 +21,6 @@
-
- #include "node.h"
- #include "handle_wrap.h"
--#include "util.h"
-
- #include <stdlib.h>
-
-@@ -98,7 +97,7 @@ Handle<Value> FSEventWrap::Start(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad arguments")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- int r = uv_fs_event_init(uv_default_loop(), &wrap->handle_, *path, OnEvent, 0);
- if (r == 0) {
-diff --git a/src/node.cc b/src/node.cc
-index e9696cd..8257604 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -1102,7 +1100,7 @@ enum encoding ParseEncoding(Handle<Value> encoding_v, enum encoding _default) {
-
- if (!encoding_v->IsString()) return _default;
-
-- node::Utf8Value encoding(encoding_v);
-+ String::Utf8Value encoding(encoding_v);
-
- if (strcasecmp(*encoding, "utf8") == 0) {
- return UTF8;
-@@ -1202,12 +1200,12 @@ void DisplayExceptionLine (TryCatch &try_catch) {
-
- if (!message.IsEmpty()) {
- // Print (filename):(line number): (message).
-- node::Utf8Value filename(message->GetScriptResourceName());
-+ String::Utf8Value filename(message->GetScriptResourceName());
- const char* filename_string = *filename;
- int linenum = message->GetLineNumber();
- fprintf(stderr, "%s:%i\n", filename_string, linenum);
- // Print line of source code.
-- node::Utf8Value sourceline(message->GetSourceLine());
-+ String::Utf8Value sourceline(message->GetSourceLine());
- const char* sourceline_string = *sourceline;
-
- // Because of how node modules work, all scripts are wrapped with a
-@@ -1254,7 +1252,7 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
-
- if (show_line) DisplayExceptionLine(try_catch);
-
-- node::Utf8Value trace(try_catch.StackTrace());
-+ String::Utf8Value trace(try_catch.StackTrace());
-
- // range errors have a trace member set to undefined
- if (trace.length() > 0 && !try_catch.StackTrace()->IsUndefined()) {
-@@ -1269,11 +1267,11 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
- !(er->ToObject()->Get(String::New("name"))->IsUndefined());
-
- if (isErrorObject) {
-- node::Utf8Value name(er->ToObject()->Get(String::New("name")));
-+ String::Utf8Value name(er->ToObject()->Get(String::New("name")));
- fprintf(stderr, "%s: ", *name);
- }
-
-- node::Utf8Value msg(!isErrorObject ? er
-+ String::Utf8Value msg(!isErrorObject ? er
- : er->ToObject()->Get(String::New("message")));
- fprintf(stderr, "%s\n", *msg);
- }
-@@ -1355,7 +1353,7 @@ static Handle<Value> Chdir(const Arguments& args) {
- return ThrowException(Exception::Error(String::New("Bad argument.")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- uv_err_t r = uv_chdir(*path);
-
-@@ -1406,7 +1404,7 @@ static Handle<Value> Umask(const Arguments& args) {
- oct = args[0]->Uint32Value();
- } else {
- oct = 0;
-- node::Utf8Value str(args[0]);
-+ String::Utf8Value str(args[0]);
-
- // Parse the octal string.
- for (int i = 0; i < str.length(); i++) {
-@@ -1512,7 +1510,7 @@ static uid_t uid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<uid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return uid_by_name(*name);
- }
- }
-@@ -1522,7 +1520,7 @@ static gid_t gid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<gid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return gid_by_name(*name);
- }
- }
-@@ -1665,7 +1663,7 @@ static Handle<Value> InitGroups(const Arguments& args) {
- return ThrowTypeError("argument 2 must be a number or a string");
- }
-
-- node::Utf8Value arg0(args[0]);
-+ String::Utf8Value arg0(args[0]);
- gid_t extra_group;
- bool must_free;
- char* user;
-@@ -1826,7 +1824,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- }
-
- Local<Object> module = args[0]->ToObject(); // Cast
-- node::Utf8Value filename(args[1]); // Cast
-+ String::Utf8Value filename(args[1]); // Cast
-
- if (exports_symbol.IsEmpty()) {
- exports_symbol = NODE_PSYMBOL("exports");
-@@ -1842,7 +1840,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- return ThrowException(Exception::Error(errmsg));
- }
-
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value path(args[1]);
- base = *path;
-
- /* Find the shared library filename within the full path. */
-@@ -1961,7 +1959,7 @@ static Handle<Value> Binding(const Arguments& args) {
- HandleScope scope;
-
- Local<String> module = args[0]->ToString();
-- node::Utf8Value module_v(module);
-+ String::Utf8Value module_v(module);
- node_module_struct* modp;
-
- if (binding_cache.IsEmpty()) {
-@@ -2020,7 +2018,7 @@ static void ProcessTitleSetter(Local<String> property,
- Local<Value> value,
- const AccessorInfo& info) {
- HandleScope scope;
-- node::Utf8Value title(value);
-+ String::Utf8Value title(value);
- // TODO: protect with a lock
- uv_set_process_title(*title);
- }
-@@ -2030,7 +2028,7 @@ static Handle<Value> EnvGetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- const char* val = getenv(*key);
- if (val) {
- return scope.Close(String::New(val));
-@@ -2059,8 +2057,8 @@ static Handle<Value> EnvSetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-- node::Utf8Value val(value);
-+ String::Utf8Value key(property);
-+ String::Utf8Value val(value);
- setenv(*key, *val, 1);
- #else // _WIN32
- String::Value key(property);
-@@ -2080,7 +2078,7 @@ static Handle<Integer> EnvQuery(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (getenv(*key)) {
- return scope.Close(Integer::New(0));
- }
-@@ -2108,7 +2106,7 @@ static Handle<Boolean> EnvDeleter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (!getenv(*key)) return False();
- unsetenv(*key); // can't check return value, it's void on some platforms
- return True();
-diff --git a/src/node_crypto.cc b/src/node_crypto.cc
-index 46faba2..0ae1f8a 100644
---- a/src/node_crypto.cc
-+++ b/src/node_crypto.cc
-@@ -242,7 +241,7 @@ Handle<Value> SecureContext::Init(const Arguments& args) {
- OPENSSL_CONST SSL_METHOD *method = SSLv23_method();
-
- if (args.Length() == 1 && args[0]->IsString()) {
-- node::Utf8Value sslmethod(args[0]);
-+ String::Utf8Value sslmethod(args[0]);
-
- if (strcmp(*sslmethod, "SSLv2_method") == 0) {
- #ifndef OPENSSL_NO_SSL2
-@@ -362,7 +361,7 @@ static BIO* LoadBIO (Handle<Value> v) {
- int r = -1;
-
- if (v->IsString()) {
-- node::Utf8Value s(v);
-+ String::Utf8Value s(v);
- r = BIO_write(bio, *s, s.length());
- } else if (Buffer::HasInstance(v)) {
- char* buffer_data = Buffer::Data(v);
-@@ -414,7 +413,7 @@ Handle<Value> SecureContext::SetKey(const Arguments& args) {
- BIO *bio = LoadBIO(args[0]);
- if (!bio) return False();
-
-- node::Utf8Value passphrase(args[1]);
-+ String::Utf8Value passphrase(args[1]);
-
- EVP_PKEY* key = PEM_read_bio_PrivateKey(bio, NULL, NULL,
- len == 1 ? NULL : *passphrase);
-@@ -644,7 +643,7 @@ Handle<Value> SecureContext::SetCiphers(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value ciphers(args[0]);
-+ String::Utf8Value ciphers(args[0]);
- SSL_CTX_set_cipher_list(sc->ctx_, *ciphers);
-
- return True();
-@@ -673,7 +672,7 @@ Handle<Value> SecureContext::SetSessionIdContext(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value sessionIdContext(args[0]);
-+ String::Utf8Value sessionIdContext(args[0]);
- const unsigned char* sid_ctx = (const unsigned char*) *sessionIdContext;
- unsigned int sid_ctx_len = sessionIdContext.length();
-
-@@ -1281,7 +1280,7 @@ Handle<Value> Connection::New(const Arguments& args) {
- if (is_server) {
- SSL_CTX_set_tlsext_servername_callback(sc->ctx_, SelectSNIContextCallback_);
- } else {
-- node::Utf8Value servername(args[2]);
-+ String::Utf8Value servername(args[2]);
- SSL_set_tlsext_host_name(p->ssl_, *servername);
- }
- #endif
-@@ -2234,7 +2233,7 @@ class Cipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_buf_len, args[1], BINARY);
- assert(key_written == key_buf_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInit(*cipherType, key_buf, key_buf_len);
-
-@@ -2285,7 +2284,7 @@ class Cipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2544,7 +2543,7 @@ class Decipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_len, args[1], BINARY);
- assert(key_written == key_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInit(*cipherType, key_buf,key_len);
-
-@@ -2595,7 +2594,7 @@ class Decipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2776,7 +2775,7 @@ class Hmac : public ObjectWrap {
- return ThrowException(exception);
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- bool r;
-
-@@ -2921,7 +2920,7 @@ class Hash : public ObjectWrap {
- "Must give hashtype string as argument")));
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- Hash *hash = new Hash();
- if (!hash->HashInit(*hashType)) {
-@@ -3095,7 +3094,7 @@ class Sign : public ObjectWrap {
- "Must give signtype string as argument")));
- }
-
-- node::Utf8Value signType(args[0]);
-+ String::Utf8Value signType(args[0]);
-
- bool r = sign->SignInit(*signType);
-
-@@ -3328,7 +3327,7 @@ class Verify : public ObjectWrap {
- "Must give verifytype string as argument")));
- }
-
-- node::Utf8Value verifyType(args[0]);
-+ String::Utf8Value verifyType(args[0]);
-
- bool r = verify->VerifyInit(*verifyType);
-
-@@ -3511,7 +3510,7 @@ class DiffieHellman : public ObjectWrap {
- String::New("No group name given")));
- }
-
-- node::Utf8Value group_name(args[0]);
-+ String::Utf8Value group_name(args[0]);
-
- modp_group* it = modp_groups;
-
-diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc
-index 0b2d0f4..4b851e3 100644
---- a/src/node_dtrace.cc
-+++ b/src/node_dtrace.cc
-@@ -68,7 +66,7 @@ using namespace v8;
- return (ThrowException(Exception::Error(String::New("expected " \
- "object for " #obj " to contain string member " #member)))); \
- } \
-- node::Utf8Value _##member(obj->Get(String::New(#member))); \
-+ String::Utf8Value _##member(obj->Get(String::New(#member))); \
- if ((*(const char **)valp = *_##member) == NULL) \
- *(const char **)valp = "<unknown>";
-
-@@ -243,7 +241,7 @@ Handle<Value> DTRACE_HTTP_SERVER_REQUEST(const Arguments& args) {
- "object for request to contain string member headers"))));
-
- Local<Value> strfwdfor = headers->Get(String::New("x-forwarded-for"));
-- node::Utf8Value fwdfor(strfwdfor);
-+ String::Utf8Value fwdfor(strfwdfor);
-
- if (!strfwdfor->IsString() || (req.forwardedFor = *fwdfor) == NULL)
- req.forwardedFor = const_cast<char*>("");
-diff --git a/src/node_file.cc b/src/node_file.cc
-index 3c35e0b..f665b19 100644
---- a/src/node_file.cc
-+++ b/src/node_file.cc
-@@ -404,7 +403,7 @@ static Handle<Value> Stat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(stat, args[1], *path)
-@@ -421,7 +420,7 @@ static Handle<Value> LStat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(lstat, args[1], *path)
-@@ -459,12 +458,12 @@ static Handle<Value> Symlink(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value dest(args[0]);
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value dest(args[0]);
-+ String::Utf8Value path(args[1]);
- int flags = 0;
-
- if (args[2]->IsString()) {
-- node::Utf8Value mode(args[2]);
-+ String::Utf8Value mode(args[2]);
- if (strcmp(*mode, "dir") == 0) {
- flags |= UV_FS_SYMLINK_DIR;
- } else if (strcmp(*mode, "junction") == 0) {
-@@ -492,8 +491,8 @@ static Handle<Value> Link(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value orig_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value orig_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path)
-@@ -509,7 +508,7 @@ static Handle<Value> ReadLink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readlink, args[1], *path)
-@@ -528,8 +527,8 @@ static Handle<Value> Rename(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string");
-
-- node::Utf8Value old_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value old_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path)
-@@ -599,7 +598,7 @@ static Handle<Value> Unlink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(unlink, args[1], *path)
-@@ -615,7 +614,7 @@ static Handle<Value> RMDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(rmdir, args[1], *path)
-@@ -632,7 +631,7 @@ static Handle<Value> MKDir(const Arguments& args) {
- return THROW_BAD_ARGS;
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if (args[2]->IsFunction()) {
-@@ -649,7 +648,7 @@ static Handle<Value> ReadDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/)
-@@ -687,7 +686,7 @@ static Handle<Value> Open(const Arguments& args) {
- if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int");
- if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int flags = args[1]->Int32Value();
- int mode = static_cast<int>(args[2]->Int32Value());
-
-@@ -827,7 +826,7 @@ static Handle<Value> Chmod(const Arguments& args) {
- if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) {
- return THROW_BAD_ARGS;
- }
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if(args[2]->IsFunction()) {
-@@ -874,7 +873,7 @@ static Handle<Value> Chown(const Arguments& args) {
- if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int");
- if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value());
- uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value());
-
-@@ -925,7 +924,7 @@ static Handle<Value> UTimes(const Arguments& args) {
- if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number");
- if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number");
-
-- const node::Utf8Value path(args[0]);
-+ const String::Utf8Value path(args[0]);
- const double atime = static_cast<double>(args[1]->NumberValue());
- const double mtime = static_cast<double>(args[2]->NumberValue());
-
-diff --git a/src/node_stat_watcher.cc b/src/node_stat_watcher.cc
-index fd3e5d1..c3f668c 100644
---- a/src/node_stat_watcher.cc
-+++ b/src/node_stat_watcher.cc
-@@ -105,7 +104,7 @@ Handle<Value> StatWatcher::Start(const Arguments& args) {
- HandleScope scope;
-
- StatWatcher* wrap = ObjectWrap::Unwrap<StatWatcher>(args.Holder());
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- const bool persistent = args[1]->BooleanValue();
- const uint32_t interval = args[2]->Uint32Value();
-
-diff --git a/src/process_wrap.cc b/src/process_wrap.cc
-index ac63e4b..784300f 100644
---- a/src/process_wrap.cc
-+++ b/src/process_wrap.cc
-@@ -188,7 +187,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.file
- Local<Value> file_v = js_options->Get(String::NewSymbol("file"));
-- node::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
-+ String::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
- if (file.length() > 0) {
- options.file = *file;
- } else {
-@@ -203,7 +202,7 @@ class ProcessWrap : public HandleWrap {
- // Heap allocate to detect errors. +1 is for NULL.
- options.args = new char*[argc + 1];
- for (int i = 0; i < argc; i++) {
-- node::Utf8Value arg(js_argv->Get(i));
-+ String::Utf8Value arg(js_argv->Get(i));
- options.args[i] = strdup(*arg);
- }
- options.args[argc] = NULL;
-@@ -211,7 +210,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.cwd
- Local<Value> cwd_v = js_options->Get(String::NewSymbol("cwd"));
-- node::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
-+ String::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
- if (cwd.length() > 0) {
- options.cwd = *cwd;
- }
-@@ -223,7 +222,7 @@ class ProcessWrap : public HandleWrap {
- int envc = env->Length();
- options.env = new char*[envc + 1]; // Heap allocated to detect errors.
- for (int i = 0; i < envc; i++) {
-- node::Utf8Value pair(env->Get(i));
-+ String::Utf8Value pair(env->Get(i));
- options.env[i] = strdup(*pair);
- }
- options.env[envc] = NULL;
-diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
-index 31a4e78..b33f4e8 100644
---- a/src/udp_wrap.cc
-+++ b/src/udp_wrap.cc
-@@ -161,7 +160,7 @@ Handle<Value> UDPWrap::DoBind(const Arguments& args, int family) {
- // bind(ip, port, flags)
- assert(args.Length() == 3);
-
-- node::Utf8Value address(args[0]);
-+ String::Utf8Value address(args[0]);
- const int port = args[1]->Uint32Value();
- const int flags = args[2]->Uint32Value();
-
-@@ -220,8 +219,8 @@ Handle<Value> UDPWrap::SetMembership(const Arguments& args,
-
- assert(args.Length() == 2);
-
-- node::Utf8Value address(args[0]);
-- node::Utf8Value iface(args[1]);
-+ String::Utf8Value address(args[0]);
-+ String::Utf8Value iface(args[1]);
-
- const char* iface_cstr = *iface;
- if (args[1]->IsUndefined() || args[1]->IsNull()) {
-@@ -272,7 +271,7 @@ Handle<Value> UDPWrap::DoSend(const Arguments& args, int family) {
- length);
-
- const unsigned short port = args[3]->Uint32Value();
-- node::Utf8Value address(args[4]);
-+ String::Utf8Value address(args[4]);
-
- switch (family) {
- case AF_INET:
-diff --git a/src/util.h b/src/util.h
---- a/src/util.h
-+++ b/src/util.h
-@@ -41,52 +41,6 @@
- obj->Set(domain_symbol, domain);
- }
-
--class Utf8Value {
-- public:
-- explicit Utf8Value(v8::Handle<v8::Value> value)
-- : length_(0), str_(NULL) {
-- if (value.IsEmpty())
-- return;
--
-- v8::Local<v8::String> val_ = value->ToString();
--
-- // Allocate enough space to include the null terminator
-- size_t len = StringBytes::StorageSize(val_, UTF8) + 1;
--
-- char* str = static_cast<char*>(calloc(1, len));
--
-- int flags = WRITE_UTF8_FLAGS;
-- flags |= ~v8::String::NO_NULL_TERMINATION;
--
-- length_ = val_->WriteUtf8(str,
-- len,
-- 0,
-- flags);
--
-- str_ = reinterpret_cast<char*>(str);
-- }
--
-- ~Utf8Value() {
-- free(str_);
-- }
--
-- char* operator*() {
-- return str_;
-- };
--
-- const char* operator*() const {
-- return str_;
-- };
--
-- size_t length() const {
-- return length_;
-- };
--
-- private:
-- size_t length_;
-- char* str_;
--};
--
- } // namespace node
-
- #endif // SRC_UTIL_H_
---
-1.9.3
-
diff --git a/nodejs-revert-utf8-v8.patch b/nodejs-revert-utf8-v8.patch
deleted file mode 100644
index 6b16de6..0000000
--- a/nodejs-revert-utf8-v8.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From c7c934c66cd8712c9ff169f1ef4c5670d3ff99c8 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:09:03 -0700
-Subject: [PATCH] Revert "string_bytes: Guarantee valid utf-8 output"
-
-This reverts commit 0da4c671659cfbae12def127b2e94690b9d9b5e1.
----
- src/node.cc | 7 -------
- src/string_bytes.cc | 2 +-
- src/string_bytes.h | 2 --
- test/simple/test-buffer.js | 12 ------------
- 4 files changed, 1 insertion(+), 22 deletions(-)
-
-diff --git a/src/node.cc b/src/node.cc
-index 4223973..e9696cd 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -180,9 +180,6 @@ static uv_async_t dispatch_debug_messages_async;
- // Declared in node_internals.h
- Isolate* node_isolate = NULL;
-
--int WRITE_UTF8_FLAGS = v8::String::HINT_MANY_WRITES_EXPECTED |
-- v8::String::NO_NULL_TERMINATION;
--
- static void Spin(uv_idle_t* handle, int status) {
- assert((uv_idle_t*) handle == &tick_spinner);
- assert(status == 0);
-@@ -3077,11 +3074,6 @@ static char **copy_argv(int argc, char **argv) {
-
-
- int Start(int argc, char *argv[]) {
-- const char* replaceInvalid = getenv("NODE_INVALID_UTF8");
--
-- if (replaceInvalid == NULL)
-- WRITE_UTF8_FLAGS |= String::REPLACE_INVALID_UTF8;
--
- // Hack aroung with the argv pointer. Used for process.title = "blah".
- argv = uv_setup_args(argc, argv);
-
-diff --git a/src/string_bytes.cc b/src/string_bytes.cc
-index a7bab38..e4a34fe 100644
---- a/src/string_bytes.cc
-+++ b/src/string_bytes.cc
-@@ -199,7 +199,7 @@ size_t StringBytes::Write(char* buf,
- break;
-
- case UTF8:
-- len = str->WriteUtf8(buf, buflen, chars_written, WRITE_UTF8_FLAGS);
-+ len = str->WriteUtf8(buf, buflen, chars_written, flags);
- break;
-
- case UCS2:
-diff --git a/src/string_bytes.h b/src/string_bytes.h
-index 31f04bb..8071a49 100644
---- a/src/string_bytes.h
-+++ b/src/string_bytes.h
-@@ -29,8 +29,6 @@
-
- namespace node {
-
--extern int WRITE_UTF8_FLAGS;
--
- using v8::Handle;
- using v8::Local;
- using v8::String;
-diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js
-index f8b2798..3026824 100644
---- a/test/simple/test-buffer.js
-+++ b/test/simple/test-buffer.js
-@@ -791,18 +791,6 @@ assert.equal(buf[3], 0xFF);
- assert.equal(buf[3], 0xFF);
- });
-
--// test unmatched surrogates not producing invalid utf8 output
--// ef bf bd = utf-8 representation of unicode replacement character
--// see https://codereview.chromium.org/121173009/
--buf = new Buffer('ab\ud800cd', 'utf8');
--assert.equal(buf[0], 0x61);
--assert.equal(buf[1], 0x62);
--assert.equal(buf[2], 0xef);
--assert.equal(buf[3], 0xbf);
--assert.equal(buf[4], 0xbd);
--assert.equal(buf[5], 0x63);
--assert.equal(buf[6], 0x64);
--
- // test for buffer overrun
- buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
- var sub = buf.slice(0, 4); // length: 4
---
-1.9.3
-
diff --git a/nodejs.spec b/nodejs.spec
index 5ebad5f..9220d9c 100644
--- a/nodejs.spec
+++ b/nodejs.spec
@@ -1,5 +1,40 @@
+%global with_debug 1
+
+# We don't have pkgdocdir on EPEL6 (yet?)
+%global _pkgdocdir %{_docdir}/%{name}-%{version}
+
+# ARM builds currently break on the Debug builds, so we'll just
+# build the standard runtime until that gets sorted out.
+%ifarch %{arm} aarch64 %{power64}
+%global with_debug 0
+%endif
+
+# == Node.js Version ==
+%global nodejs_major 0
+%global nodejs_minor 10
+%global nodejs_patch 42
+%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
+
+# == Bundled Dependency Versions ==
+# v8 - from deps/v8/src/version.cc
+%global v8_major 3
+%global v8_minor 14
+%global v8_build 5
+%global v8_patch 9
+# V8 presently breaks ABI at least every x.y release while never bumping SONAME
+%global v8_abi %{v8_major}.%{v8_minor}
+
+# c-ares - from deps/cares/include/ares_version.h
+%global c_ares_major 1
+%global c_ares_minor 9
+%global c_ares_patch 0
+
+# http-parser - from deps/http-parser/http_parser.h
+%global http_parser_major 1
+%global http_parser_minor 1
+
Name: nodejs
-Version: 0.10.36
+Version: %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
Release: 3%{?dist}
Summary: JavaScript runtime
License: MIT and ASL 2.0 and ISC and BSD
@@ -7,7 +42,7 @@ Group: Development/Languages
URL: http://nodejs.org/
# Exclusive archs must match v8
-ExclusiveArch: %{ix86} x86_64 %{arm}
+ExclusiveArch: %{nodejs_arches}
# nodejs bundles openssl, but we use the system version in Fedora
# because openssl contains prohibited code, we remove openssl completely from
@@ -28,30 +63,12 @@ Patch1: nodejs-disable-gyp-deps.patch
# http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/...
Patch2: nodejs-use-system-certs.patch
-# The invalid UTF8 fix has been reverted since this breaks v8 API, which cannot
-# be done in a stable distribution release. This build of nodejs will behave as
-# if NODE_INVALID_UTF8 was set. For more information on the implications, see:
-# http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
-Patch3: nodejs-revert-utf8-v8.patch
-Patch4: nodejs-revert-utf8-node.patch
-
-# V8 presently breaks ABI at least every x.y release while never bumping SONAME,
-# so we need to be more explicit until spot fixes that
-%global v8_ge 1:3.14.5.10-17
-%global v8_lt 1:3.15
-%global v8_abi 3.14
-
-BuildRequires: v8-devel >= %{v8_ge}
-BuildRequires: http-parser-devel >= 2.0
+BuildRequires: python-devel
BuildRequires: libuv-devel
-BuildRequires: c-ares-devel
BuildRequires: zlib-devel
# Node.js requires some features from openssl 1.0.1 for SPDY support
BuildRequires: openssl-devel >= 1:1.0.1
-Requires: v8%{?_isa} >= %{v8_ge}
-Requires: v8%{?_isa} < %{v8_lt}
-
# we need the system certificate store when Patch2 is applied
Requires: ca-certificates
@@ -78,6 +95,19 @@ Conflicts: node <= 0.3.2-11
Provides: nodejs-punycode = 1.3.1
Provides: npm(punycode) = 1.3.1
+# Node.js has forked c-ares from upstream in an incompatible way, so we need
+# to carry the bundled version internally.
+# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43...
+# Keep this in sync with deps/cares/include/ares_version.h
+Provides: bundled(c-ares) = 1.9.0
+
+# Node.js is closely tied to the version of v8 that is used with it. It makes
+# sense to use the bundled version because upstream consistently breaks ABI
+# even in point releases. Node.js upstream has now removed the ability to build
+# against a shared system version entirely.
+# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858c...
+Provides: bundled(v8) = %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
+
%description
Node.js is a platform built on Chrome's JavaScript runtime
@@ -90,8 +120,8 @@ real-time applications that run across distributed devices.
Summary: JavaScript runtime - development headers
Group: Development/Languages
Requires: %{name}%{?_isa} == %{version}-%{release}
-Requires: libuv-devel%{?_isa} http-parser-devel%{?_isa} v8-devel%{?_isa}
-Requires: openssl-devel%{?_isa} c-ares-devel%{?_isa} zlib-devel%{?_isa}
+Requires: libuv-devel%{?_isa} v8-devel%{?_isa}
+Requires: openssl-devel%{?_isa} zlib-devel%{?_isa}
Requires: nodejs-packaging
%description devel
@@ -111,33 +141,33 @@ The API documentation for the Node.js JavaScript runtime.
# remove bundled dependencies
%patch1 -p1
-rm -rf deps
+rm -rf deps/npm \
+ deps/uv \
+ deps/zlib
# remove bundled CA certificates
%patch2 -p1
rm -f src/node_root_certs.h
-%patch3 -p1
-%patch4 -p1
-
%build
# build with debugging symbols and add defines from libuv (#892601)
-export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
+export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
./configure --prefix=%{_prefix} \
- --shared-v8 \
--shared-openssl \
--shared-zlib \
- --shared-cares \
--shared-libuv \
- --shared-http-parser \
--without-npm \
--without-dtrace
+%if %{?with_debug} == 1
# Setting BUILDTYPE=Debug builds both release and debug binaries
make BUILDTYPE=Debug %{?_smp_mflags}
+%else
+make BUILDTYPE=Release %{?_smp_mflags}
+%endif
%install
rm -rf %{buildroot}
@@ -150,8 +180,10 @@ rm -rf %{buildroot}/%{_prefix}/lib/dtrace
# Set the binary permissions properly
chmod 0755 %{buildroot}/%{_bindir}/node
+%if %{?with_debug} == 1
# Install the debug binary and set its permissions
install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g
+%endif
# own the sitelib directory
mkdir -p %{buildroot}%{_prefix}/lib/node_modules
@@ -167,36 +199,68 @@ EOF
chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
#install documentation
-mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-cp -pr doc/* %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-rm -f %{_defaultdocdir}/%{name}-docs-%{version}/html/nodejs.1
-cp -p LICENSE %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/
+mkdir -p %{buildroot}%{_pkgdocdir}/html
+cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
+rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
+cp -p LICENSE %{buildroot}%{_pkgdocdir}/html
+cp -p ChangeLog LICENSE README.md AUTHORS %{buildroot}%{_pkgdocdir}
#node-gyp needs common.gypi too
mkdir -p %{buildroot}%{_datadir}/node
cp -p common.gypi %{buildroot}%{_datadir}/node
%files
-%doc ChangeLog LICENSE README.md AUTHORS
%{_bindir}/node
%{_mandir}/man1/node.*
%dir %{_prefix}/lib/node_modules
%dir %{_datadir}/node
%{_rpmconfigdir}/fileattrs/nodejs_native.attr
%{_rpmconfigdir}/nodejs_native.req
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/ChangeLog
+%{_pkgdocdir}/LICENSE
+%{_pkgdocdir}/README.md
+%{_pkgdocdir}/AUTHORS
%files devel
+%if %{?with_debug} == 1
%{_bindir}/node_g
+%endif
%{_includedir}/node
%{_datadir}/node/common.gypi
%files docs
-%{_defaultdocdir}/%{name}-docs-%{version}
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/html
%changelog
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-3
+- Remove duplicated content from spec file
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-2
+- Re-enable debug builds on supported arches
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-1
+- Update to Node.js 0.10.42
+- https://github.com/nodejs/node/blob/v0.10.42/ChangeLog
+- Bundle v8, c-ares and http-parser with Node.js
+- Drop patches that revert v8 UTF8 change
+- Resolves: RHBZ#1306203
+- Resolves: RHBZ#1306200
+- Resolves: RHBZ#1306207
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.36-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Apr 29 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-4
+- fix incorrect Requires on libuv (RHBZ#1215719)
+
* Tue Feb 24 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-3
- bump v8 requires (RHBZ#1195457)
+* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-2
+- build against compat-libuv010
+
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-1
- new upstream release 0.10.36
http://blog.nodejs.org/2015/01/26/node-v0-10-36-stable/
@@ -220,6 +284,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
http://blog.nodejs.org/2014/08/19/node-v0-10-31-stable/
http://blog.nodejs.org/2014/09/16/node-v0-10-32-stable/
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.30-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
* Fri Aug 01 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.30-1
- new upstream release 0.10.30
http://blog.nodejs.org/2014/07/31/node-v0-10-30-stable/
@@ -232,6 +299,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
if NODE_INVALID_UTF8 was set. For more information on the implications, see:
http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.28-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
* Sat May 03 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.28-2
- use the system certificate store instead of the bundled copy
both are based on the Mozilla CA list, so the only effect this should have is
@@ -250,6 +320,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
- new upstream release 0.10.26
http://blog.nodejs.org/2014/02/18/node-v0-10-26-stable/
+* Fri Feb 14 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-2
+- rebuild for icu-53 (via v8)
+
* Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-1
- new upstream release 0.10.25
http://blog.nodejs.org/2014/01/23/node-v0-10-25-stable/
@@ -287,6 +360,7 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Tue Aug 27 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.17-1
- new upstream release 0.10.17
http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/
+- fix duplicated/conflicting documentation files (RHBZ#1001253)
* Sat Aug 17 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.16-1
- new upstream release 0.10.16
@@ -297,6 +371,11 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Wed Aug 14 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-3
- fix typo in _isa macro in v8 Requires
+* Mon Aug 05 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-2
+- use unversioned docdir for -docs subpackage
+ https://fedoraproject.org/wiki/Changes/UnversionedDocdirs
+- use main package's docdir instead of a seperate -docs directory
+
* Thu Jul 25 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-1
- new upstream release 0.10.14
http://blog.nodejs.org/2013/07/25/node-v0-10-14-stable/
diff --git a/sources b/sources
index e233927..00d25f8 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-f1a50d8a1f6e09659b5c2aad00867ae2 node-v0.10.36-stripped.tar.gz
+797349ff0cb1c9316d1800acf3d1394f node-v0.10.42-stripped.tar.gz
https://src.fedoraproject.org/rpms/nodejs20/c/18de93476bf38435e0b1041af8f...
1 year, 3 months
sgallagh pushed to rpms/nodejs18 (f37). "Merge branch 'f23' into epel7"
by notifications@fedoraproject.org
Notification time stamped 2023-03-01 20:10:12 UTC
From 18de93476bf38435e0b1041af8f2fe1cbbfa57cb Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh(a)redhat.com>
Date: Feb 10 2016 18:54:35 +0000
Subject: Merge branch 'f23' into epel7
---
diff --git a/.gitignore b/.gitignore
index 27559e5..0e8b6d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@
/node-v0.10.32-stripped.tar.gz
/node-v0.10.33-stripped.tar.gz
/node-v0.10.36-stripped.tar.gz
+/node-v0.10.42-stripped.tar.gz
diff --git a/nodejs-revert-utf8-node.patch b/nodejs-revert-utf8-node.patch
deleted file mode 100644
index a5a3d59..0000000
--- a/nodejs-revert-utf8-node.patch
+++ /dev/null
@@ -1,689 +0,0 @@
-From a9e60792a9c4044e29ec7bbb88419d9283044b86 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:19:19 -0700
-Subject: [PATCH] Revert "src: replace usage of String::Utf8Value"
-
-This reverts commit 535c7777ac674ba86cf93c44824e07b0e23ea8c4.
----
- src/cares_wrap.cc | 8 ++---
- src/fs_event_wrap.cc | 3 +-
- src/node.cc | 42 +++++++++++++-------------
- src/node_crypto.cc | 31 ++++++++++---------
- src/node_dtrace.cc | 6 ++--
- src/node_file.cc | 37 +++++++++++------------
- src/node_stat_watcher.cc | 3 +-
- src/process_wrap.cc | 9 +++---
- src/udp_wrap.cc | 9 +++---
- src/util.h | 78 ------------------------------------------------
- 10 files changed, 68 insertions(+), 158 deletions(-)
- delete mode 100644 src/util.h
-
-diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
-index 321e144..b7ba828 100644
---- a/src/cares_wrap.cc
-+++ b/src/cares_wrap.cc
-@@ -741,7 +739,7 @@ static Handle<Value> Query(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
-
- int r = wrap->Send(*name);
- if (r) {
-@@ -770,7 +768,7 @@ static Handle<Value> QueryWithFamily(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
- int family = args[1]->Int32Value();
-
- int r = wrap->Send(*name, family);
-@@ -900,7 +898,7 @@ static Handle<Value> IsIP(const Arguments& args) {
- static Handle<Value> GetAddrInfo(const Arguments& args) {
- HandleScope scope;
-
-- node::Utf8Value hostname(args[0]);
-+ String::Utf8Value hostname(args[0]);
-
- int fam = AF_UNSPEC;
- if (args[1]->IsInt32()) {
-diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc
-index fc54283..7e3eb8c 100644
---- a/src/fs_event_wrap.cc
-+++ b/src/fs_event_wrap.cc
-@@ -21,7 +21,6 @@
-
- #include "node.h"
- #include "handle_wrap.h"
--#include "util.h"
-
- #include <stdlib.h>
-
-@@ -98,7 +97,7 @@ Handle<Value> FSEventWrap::Start(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad arguments")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- int r = uv_fs_event_init(uv_default_loop(), &wrap->handle_, *path, OnEvent, 0);
- if (r == 0) {
-diff --git a/src/node.cc b/src/node.cc
-index e9696cd..8257604 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -1102,7 +1100,7 @@ enum encoding ParseEncoding(Handle<Value> encoding_v, enum encoding _default) {
-
- if (!encoding_v->IsString()) return _default;
-
-- node::Utf8Value encoding(encoding_v);
-+ String::Utf8Value encoding(encoding_v);
-
- if (strcasecmp(*encoding, "utf8") == 0) {
- return UTF8;
-@@ -1202,12 +1200,12 @@ void DisplayExceptionLine (TryCatch &try_catch) {
-
- if (!message.IsEmpty()) {
- // Print (filename):(line number): (message).
-- node::Utf8Value filename(message->GetScriptResourceName());
-+ String::Utf8Value filename(message->GetScriptResourceName());
- const char* filename_string = *filename;
- int linenum = message->GetLineNumber();
- fprintf(stderr, "%s:%i\n", filename_string, linenum);
- // Print line of source code.
-- node::Utf8Value sourceline(message->GetSourceLine());
-+ String::Utf8Value sourceline(message->GetSourceLine());
- const char* sourceline_string = *sourceline;
-
- // Because of how node modules work, all scripts are wrapped with a
-@@ -1254,7 +1252,7 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
-
- if (show_line) DisplayExceptionLine(try_catch);
-
-- node::Utf8Value trace(try_catch.StackTrace());
-+ String::Utf8Value trace(try_catch.StackTrace());
-
- // range errors have a trace member set to undefined
- if (trace.length() > 0 && !try_catch.StackTrace()->IsUndefined()) {
-@@ -1269,11 +1267,11 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
- !(er->ToObject()->Get(String::New("name"))->IsUndefined());
-
- if (isErrorObject) {
-- node::Utf8Value name(er->ToObject()->Get(String::New("name")));
-+ String::Utf8Value name(er->ToObject()->Get(String::New("name")));
- fprintf(stderr, "%s: ", *name);
- }
-
-- node::Utf8Value msg(!isErrorObject ? er
-+ String::Utf8Value msg(!isErrorObject ? er
- : er->ToObject()->Get(String::New("message")));
- fprintf(stderr, "%s\n", *msg);
- }
-@@ -1355,7 +1353,7 @@ static Handle<Value> Chdir(const Arguments& args) {
- return ThrowException(Exception::Error(String::New("Bad argument.")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- uv_err_t r = uv_chdir(*path);
-
-@@ -1406,7 +1404,7 @@ static Handle<Value> Umask(const Arguments& args) {
- oct = args[0]->Uint32Value();
- } else {
- oct = 0;
-- node::Utf8Value str(args[0]);
-+ String::Utf8Value str(args[0]);
-
- // Parse the octal string.
- for (int i = 0; i < str.length(); i++) {
-@@ -1512,7 +1510,7 @@ static uid_t uid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<uid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return uid_by_name(*name);
- }
- }
-@@ -1522,7 +1520,7 @@ static gid_t gid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<gid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return gid_by_name(*name);
- }
- }
-@@ -1665,7 +1663,7 @@ static Handle<Value> InitGroups(const Arguments& args) {
- return ThrowTypeError("argument 2 must be a number or a string");
- }
-
-- node::Utf8Value arg0(args[0]);
-+ String::Utf8Value arg0(args[0]);
- gid_t extra_group;
- bool must_free;
- char* user;
-@@ -1826,7 +1824,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- }
-
- Local<Object> module = args[0]->ToObject(); // Cast
-- node::Utf8Value filename(args[1]); // Cast
-+ String::Utf8Value filename(args[1]); // Cast
-
- if (exports_symbol.IsEmpty()) {
- exports_symbol = NODE_PSYMBOL("exports");
-@@ -1842,7 +1840,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- return ThrowException(Exception::Error(errmsg));
- }
-
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value path(args[1]);
- base = *path;
-
- /* Find the shared library filename within the full path. */
-@@ -1961,7 +1959,7 @@ static Handle<Value> Binding(const Arguments& args) {
- HandleScope scope;
-
- Local<String> module = args[0]->ToString();
-- node::Utf8Value module_v(module);
-+ String::Utf8Value module_v(module);
- node_module_struct* modp;
-
- if (binding_cache.IsEmpty()) {
-@@ -2020,7 +2018,7 @@ static void ProcessTitleSetter(Local<String> property,
- Local<Value> value,
- const AccessorInfo& info) {
- HandleScope scope;
-- node::Utf8Value title(value);
-+ String::Utf8Value title(value);
- // TODO: protect with a lock
- uv_set_process_title(*title);
- }
-@@ -2030,7 +2028,7 @@ static Handle<Value> EnvGetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- const char* val = getenv(*key);
- if (val) {
- return scope.Close(String::New(val));
-@@ -2059,8 +2057,8 @@ static Handle<Value> EnvSetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-- node::Utf8Value val(value);
-+ String::Utf8Value key(property);
-+ String::Utf8Value val(value);
- setenv(*key, *val, 1);
- #else // _WIN32
- String::Value key(property);
-@@ -2080,7 +2078,7 @@ static Handle<Integer> EnvQuery(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (getenv(*key)) {
- return scope.Close(Integer::New(0));
- }
-@@ -2108,7 +2106,7 @@ static Handle<Boolean> EnvDeleter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (!getenv(*key)) return False();
- unsetenv(*key); // can't check return value, it's void on some platforms
- return True();
-diff --git a/src/node_crypto.cc b/src/node_crypto.cc
-index 46faba2..0ae1f8a 100644
---- a/src/node_crypto.cc
-+++ b/src/node_crypto.cc
-@@ -242,7 +241,7 @@ Handle<Value> SecureContext::Init(const Arguments& args) {
- OPENSSL_CONST SSL_METHOD *method = SSLv23_method();
-
- if (args.Length() == 1 && args[0]->IsString()) {
-- node::Utf8Value sslmethod(args[0]);
-+ String::Utf8Value sslmethod(args[0]);
-
- if (strcmp(*sslmethod, "SSLv2_method") == 0) {
- #ifndef OPENSSL_NO_SSL2
-@@ -362,7 +361,7 @@ static BIO* LoadBIO (Handle<Value> v) {
- int r = -1;
-
- if (v->IsString()) {
-- node::Utf8Value s(v);
-+ String::Utf8Value s(v);
- r = BIO_write(bio, *s, s.length());
- } else if (Buffer::HasInstance(v)) {
- char* buffer_data = Buffer::Data(v);
-@@ -414,7 +413,7 @@ Handle<Value> SecureContext::SetKey(const Arguments& args) {
- BIO *bio = LoadBIO(args[0]);
- if (!bio) return False();
-
-- node::Utf8Value passphrase(args[1]);
-+ String::Utf8Value passphrase(args[1]);
-
- EVP_PKEY* key = PEM_read_bio_PrivateKey(bio, NULL, NULL,
- len == 1 ? NULL : *passphrase);
-@@ -644,7 +643,7 @@ Handle<Value> SecureContext::SetCiphers(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value ciphers(args[0]);
-+ String::Utf8Value ciphers(args[0]);
- SSL_CTX_set_cipher_list(sc->ctx_, *ciphers);
-
- return True();
-@@ -673,7 +672,7 @@ Handle<Value> SecureContext::SetSessionIdContext(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value sessionIdContext(args[0]);
-+ String::Utf8Value sessionIdContext(args[0]);
- const unsigned char* sid_ctx = (const unsigned char*) *sessionIdContext;
- unsigned int sid_ctx_len = sessionIdContext.length();
-
-@@ -1281,7 +1280,7 @@ Handle<Value> Connection::New(const Arguments& args) {
- if (is_server) {
- SSL_CTX_set_tlsext_servername_callback(sc->ctx_, SelectSNIContextCallback_);
- } else {
-- node::Utf8Value servername(args[2]);
-+ String::Utf8Value servername(args[2]);
- SSL_set_tlsext_host_name(p->ssl_, *servername);
- }
- #endif
-@@ -2234,7 +2233,7 @@ class Cipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_buf_len, args[1], BINARY);
- assert(key_written == key_buf_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInit(*cipherType, key_buf, key_buf_len);
-
-@@ -2285,7 +2284,7 @@ class Cipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2544,7 +2543,7 @@ class Decipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_len, args[1], BINARY);
- assert(key_written == key_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInit(*cipherType, key_buf,key_len);
-
-@@ -2595,7 +2594,7 @@ class Decipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2776,7 +2775,7 @@ class Hmac : public ObjectWrap {
- return ThrowException(exception);
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- bool r;
-
-@@ -2921,7 +2920,7 @@ class Hash : public ObjectWrap {
- "Must give hashtype string as argument")));
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- Hash *hash = new Hash();
- if (!hash->HashInit(*hashType)) {
-@@ -3095,7 +3094,7 @@ class Sign : public ObjectWrap {
- "Must give signtype string as argument")));
- }
-
-- node::Utf8Value signType(args[0]);
-+ String::Utf8Value signType(args[0]);
-
- bool r = sign->SignInit(*signType);
-
-@@ -3328,7 +3327,7 @@ class Verify : public ObjectWrap {
- "Must give verifytype string as argument")));
- }
-
-- node::Utf8Value verifyType(args[0]);
-+ String::Utf8Value verifyType(args[0]);
-
- bool r = verify->VerifyInit(*verifyType);
-
-@@ -3511,7 +3510,7 @@ class DiffieHellman : public ObjectWrap {
- String::New("No group name given")));
- }
-
-- node::Utf8Value group_name(args[0]);
-+ String::Utf8Value group_name(args[0]);
-
- modp_group* it = modp_groups;
-
-diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc
-index 0b2d0f4..4b851e3 100644
---- a/src/node_dtrace.cc
-+++ b/src/node_dtrace.cc
-@@ -68,7 +66,7 @@ using namespace v8;
- return (ThrowException(Exception::Error(String::New("expected " \
- "object for " #obj " to contain string member " #member)))); \
- } \
-- node::Utf8Value _##member(obj->Get(String::New(#member))); \
-+ String::Utf8Value _##member(obj->Get(String::New(#member))); \
- if ((*(const char **)valp = *_##member) == NULL) \
- *(const char **)valp = "<unknown>";
-
-@@ -243,7 +241,7 @@ Handle<Value> DTRACE_HTTP_SERVER_REQUEST(const Arguments& args) {
- "object for request to contain string member headers"))));
-
- Local<Value> strfwdfor = headers->Get(String::New("x-forwarded-for"));
-- node::Utf8Value fwdfor(strfwdfor);
-+ String::Utf8Value fwdfor(strfwdfor);
-
- if (!strfwdfor->IsString() || (req.forwardedFor = *fwdfor) == NULL)
- req.forwardedFor = const_cast<char*>("");
-diff --git a/src/node_file.cc b/src/node_file.cc
-index 3c35e0b..f665b19 100644
---- a/src/node_file.cc
-+++ b/src/node_file.cc
-@@ -404,7 +403,7 @@ static Handle<Value> Stat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(stat, args[1], *path)
-@@ -421,7 +420,7 @@ static Handle<Value> LStat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(lstat, args[1], *path)
-@@ -459,12 +458,12 @@ static Handle<Value> Symlink(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value dest(args[0]);
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value dest(args[0]);
-+ String::Utf8Value path(args[1]);
- int flags = 0;
-
- if (args[2]->IsString()) {
-- node::Utf8Value mode(args[2]);
-+ String::Utf8Value mode(args[2]);
- if (strcmp(*mode, "dir") == 0) {
- flags |= UV_FS_SYMLINK_DIR;
- } else if (strcmp(*mode, "junction") == 0) {
-@@ -492,8 +491,8 @@ static Handle<Value> Link(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value orig_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value orig_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path)
-@@ -509,7 +508,7 @@ static Handle<Value> ReadLink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readlink, args[1], *path)
-@@ -528,8 +527,8 @@ static Handle<Value> Rename(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string");
-
-- node::Utf8Value old_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value old_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path)
-@@ -599,7 +598,7 @@ static Handle<Value> Unlink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(unlink, args[1], *path)
-@@ -615,7 +614,7 @@ static Handle<Value> RMDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(rmdir, args[1], *path)
-@@ -632,7 +631,7 @@ static Handle<Value> MKDir(const Arguments& args) {
- return THROW_BAD_ARGS;
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if (args[2]->IsFunction()) {
-@@ -649,7 +648,7 @@ static Handle<Value> ReadDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/)
-@@ -687,7 +686,7 @@ static Handle<Value> Open(const Arguments& args) {
- if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int");
- if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int flags = args[1]->Int32Value();
- int mode = static_cast<int>(args[2]->Int32Value());
-
-@@ -827,7 +826,7 @@ static Handle<Value> Chmod(const Arguments& args) {
- if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) {
- return THROW_BAD_ARGS;
- }
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if(args[2]->IsFunction()) {
-@@ -874,7 +873,7 @@ static Handle<Value> Chown(const Arguments& args) {
- if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int");
- if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value());
- uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value());
-
-@@ -925,7 +924,7 @@ static Handle<Value> UTimes(const Arguments& args) {
- if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number");
- if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number");
-
-- const node::Utf8Value path(args[0]);
-+ const String::Utf8Value path(args[0]);
- const double atime = static_cast<double>(args[1]->NumberValue());
- const double mtime = static_cast<double>(args[2]->NumberValue());
-
-diff --git a/src/node_stat_watcher.cc b/src/node_stat_watcher.cc
-index fd3e5d1..c3f668c 100644
---- a/src/node_stat_watcher.cc
-+++ b/src/node_stat_watcher.cc
-@@ -105,7 +104,7 @@ Handle<Value> StatWatcher::Start(const Arguments& args) {
- HandleScope scope;
-
- StatWatcher* wrap = ObjectWrap::Unwrap<StatWatcher>(args.Holder());
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- const bool persistent = args[1]->BooleanValue();
- const uint32_t interval = args[2]->Uint32Value();
-
-diff --git a/src/process_wrap.cc b/src/process_wrap.cc
-index ac63e4b..784300f 100644
---- a/src/process_wrap.cc
-+++ b/src/process_wrap.cc
-@@ -188,7 +187,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.file
- Local<Value> file_v = js_options->Get(String::NewSymbol("file"));
-- node::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
-+ String::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
- if (file.length() > 0) {
- options.file = *file;
- } else {
-@@ -203,7 +202,7 @@ class ProcessWrap : public HandleWrap {
- // Heap allocate to detect errors. +1 is for NULL.
- options.args = new char*[argc + 1];
- for (int i = 0; i < argc; i++) {
-- node::Utf8Value arg(js_argv->Get(i));
-+ String::Utf8Value arg(js_argv->Get(i));
- options.args[i] = strdup(*arg);
- }
- options.args[argc] = NULL;
-@@ -211,7 +210,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.cwd
- Local<Value> cwd_v = js_options->Get(String::NewSymbol("cwd"));
-- node::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
-+ String::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
- if (cwd.length() > 0) {
- options.cwd = *cwd;
- }
-@@ -223,7 +222,7 @@ class ProcessWrap : public HandleWrap {
- int envc = env->Length();
- options.env = new char*[envc + 1]; // Heap allocated to detect errors.
- for (int i = 0; i < envc; i++) {
-- node::Utf8Value pair(env->Get(i));
-+ String::Utf8Value pair(env->Get(i));
- options.env[i] = strdup(*pair);
- }
- options.env[envc] = NULL;
-diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
-index 31a4e78..b33f4e8 100644
---- a/src/udp_wrap.cc
-+++ b/src/udp_wrap.cc
-@@ -161,7 +160,7 @@ Handle<Value> UDPWrap::DoBind(const Arguments& args, int family) {
- // bind(ip, port, flags)
- assert(args.Length() == 3);
-
-- node::Utf8Value address(args[0]);
-+ String::Utf8Value address(args[0]);
- const int port = args[1]->Uint32Value();
- const int flags = args[2]->Uint32Value();
-
-@@ -220,8 +219,8 @@ Handle<Value> UDPWrap::SetMembership(const Arguments& args,
-
- assert(args.Length() == 2);
-
-- node::Utf8Value address(args[0]);
-- node::Utf8Value iface(args[1]);
-+ String::Utf8Value address(args[0]);
-+ String::Utf8Value iface(args[1]);
-
- const char* iface_cstr = *iface;
- if (args[1]->IsUndefined() || args[1]->IsNull()) {
-@@ -272,7 +271,7 @@ Handle<Value> UDPWrap::DoSend(const Arguments& args, int family) {
- length);
-
- const unsigned short port = args[3]->Uint32Value();
-- node::Utf8Value address(args[4]);
-+ String::Utf8Value address(args[4]);
-
- switch (family) {
- case AF_INET:
-diff --git a/src/util.h b/src/util.h
---- a/src/util.h
-+++ b/src/util.h
-@@ -41,52 +41,6 @@
- obj->Set(domain_symbol, domain);
- }
-
--class Utf8Value {
-- public:
-- explicit Utf8Value(v8::Handle<v8::Value> value)
-- : length_(0), str_(NULL) {
-- if (value.IsEmpty())
-- return;
--
-- v8::Local<v8::String> val_ = value->ToString();
--
-- // Allocate enough space to include the null terminator
-- size_t len = StringBytes::StorageSize(val_, UTF8) + 1;
--
-- char* str = static_cast<char*>(calloc(1, len));
--
-- int flags = WRITE_UTF8_FLAGS;
-- flags |= ~v8::String::NO_NULL_TERMINATION;
--
-- length_ = val_->WriteUtf8(str,
-- len,
-- 0,
-- flags);
--
-- str_ = reinterpret_cast<char*>(str);
-- }
--
-- ~Utf8Value() {
-- free(str_);
-- }
--
-- char* operator*() {
-- return str_;
-- };
--
-- const char* operator*() const {
-- return str_;
-- };
--
-- size_t length() const {
-- return length_;
-- };
--
-- private:
-- size_t length_;
-- char* str_;
--};
--
- } // namespace node
-
- #endif // SRC_UTIL_H_
---
-1.9.3
-
diff --git a/nodejs-revert-utf8-v8.patch b/nodejs-revert-utf8-v8.patch
deleted file mode 100644
index 6b16de6..0000000
--- a/nodejs-revert-utf8-v8.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From c7c934c66cd8712c9ff169f1ef4c5670d3ff99c8 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:09:03 -0700
-Subject: [PATCH] Revert "string_bytes: Guarantee valid utf-8 output"
-
-This reverts commit 0da4c671659cfbae12def127b2e94690b9d9b5e1.
----
- src/node.cc | 7 -------
- src/string_bytes.cc | 2 +-
- src/string_bytes.h | 2 --
- test/simple/test-buffer.js | 12 ------------
- 4 files changed, 1 insertion(+), 22 deletions(-)
-
-diff --git a/src/node.cc b/src/node.cc
-index 4223973..e9696cd 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -180,9 +180,6 @@ static uv_async_t dispatch_debug_messages_async;
- // Declared in node_internals.h
- Isolate* node_isolate = NULL;
-
--int WRITE_UTF8_FLAGS = v8::String::HINT_MANY_WRITES_EXPECTED |
-- v8::String::NO_NULL_TERMINATION;
--
- static void Spin(uv_idle_t* handle, int status) {
- assert((uv_idle_t*) handle == &tick_spinner);
- assert(status == 0);
-@@ -3077,11 +3074,6 @@ static char **copy_argv(int argc, char **argv) {
-
-
- int Start(int argc, char *argv[]) {
-- const char* replaceInvalid = getenv("NODE_INVALID_UTF8");
--
-- if (replaceInvalid == NULL)
-- WRITE_UTF8_FLAGS |= String::REPLACE_INVALID_UTF8;
--
- // Hack aroung with the argv pointer. Used for process.title = "blah".
- argv = uv_setup_args(argc, argv);
-
-diff --git a/src/string_bytes.cc b/src/string_bytes.cc
-index a7bab38..e4a34fe 100644
---- a/src/string_bytes.cc
-+++ b/src/string_bytes.cc
-@@ -199,7 +199,7 @@ size_t StringBytes::Write(char* buf,
- break;
-
- case UTF8:
-- len = str->WriteUtf8(buf, buflen, chars_written, WRITE_UTF8_FLAGS);
-+ len = str->WriteUtf8(buf, buflen, chars_written, flags);
- break;
-
- case UCS2:
-diff --git a/src/string_bytes.h b/src/string_bytes.h
-index 31f04bb..8071a49 100644
---- a/src/string_bytes.h
-+++ b/src/string_bytes.h
-@@ -29,8 +29,6 @@
-
- namespace node {
-
--extern int WRITE_UTF8_FLAGS;
--
- using v8::Handle;
- using v8::Local;
- using v8::String;
-diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js
-index f8b2798..3026824 100644
---- a/test/simple/test-buffer.js
-+++ b/test/simple/test-buffer.js
-@@ -791,18 +791,6 @@ assert.equal(buf[3], 0xFF);
- assert.equal(buf[3], 0xFF);
- });
-
--// test unmatched surrogates not producing invalid utf8 output
--// ef bf bd = utf-8 representation of unicode replacement character
--// see https://codereview.chromium.org/121173009/
--buf = new Buffer('ab\ud800cd', 'utf8');
--assert.equal(buf[0], 0x61);
--assert.equal(buf[1], 0x62);
--assert.equal(buf[2], 0xef);
--assert.equal(buf[3], 0xbf);
--assert.equal(buf[4], 0xbd);
--assert.equal(buf[5], 0x63);
--assert.equal(buf[6], 0x64);
--
- // test for buffer overrun
- buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
- var sub = buf.slice(0, 4); // length: 4
---
-1.9.3
-
diff --git a/nodejs.spec b/nodejs.spec
index 5ebad5f..9220d9c 100644
--- a/nodejs.spec
+++ b/nodejs.spec
@@ -1,5 +1,40 @@
+%global with_debug 1
+
+# We don't have pkgdocdir on EPEL6 (yet?)
+%global _pkgdocdir %{_docdir}/%{name}-%{version}
+
+# ARM builds currently break on the Debug builds, so we'll just
+# build the standard runtime until that gets sorted out.
+%ifarch %{arm} aarch64 %{power64}
+%global with_debug 0
+%endif
+
+# == Node.js Version ==
+%global nodejs_major 0
+%global nodejs_minor 10
+%global nodejs_patch 42
+%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
+
+# == Bundled Dependency Versions ==
+# v8 - from deps/v8/src/version.cc
+%global v8_major 3
+%global v8_minor 14
+%global v8_build 5
+%global v8_patch 9
+# V8 presently breaks ABI at least every x.y release while never bumping SONAME
+%global v8_abi %{v8_major}.%{v8_minor}
+
+# c-ares - from deps/cares/include/ares_version.h
+%global c_ares_major 1
+%global c_ares_minor 9
+%global c_ares_patch 0
+
+# http-parser - from deps/http-parser/http_parser.h
+%global http_parser_major 1
+%global http_parser_minor 1
+
Name: nodejs
-Version: 0.10.36
+Version: %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
Release: 3%{?dist}
Summary: JavaScript runtime
License: MIT and ASL 2.0 and ISC and BSD
@@ -7,7 +42,7 @@ Group: Development/Languages
URL: http://nodejs.org/
# Exclusive archs must match v8
-ExclusiveArch: %{ix86} x86_64 %{arm}
+ExclusiveArch: %{nodejs_arches}
# nodejs bundles openssl, but we use the system version in Fedora
# because openssl contains prohibited code, we remove openssl completely from
@@ -28,30 +63,12 @@ Patch1: nodejs-disable-gyp-deps.patch
# http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/...
Patch2: nodejs-use-system-certs.patch
-# The invalid UTF8 fix has been reverted since this breaks v8 API, which cannot
-# be done in a stable distribution release. This build of nodejs will behave as
-# if NODE_INVALID_UTF8 was set. For more information on the implications, see:
-# http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
-Patch3: nodejs-revert-utf8-v8.patch
-Patch4: nodejs-revert-utf8-node.patch
-
-# V8 presently breaks ABI at least every x.y release while never bumping SONAME,
-# so we need to be more explicit until spot fixes that
-%global v8_ge 1:3.14.5.10-17
-%global v8_lt 1:3.15
-%global v8_abi 3.14
-
-BuildRequires: v8-devel >= %{v8_ge}
-BuildRequires: http-parser-devel >= 2.0
+BuildRequires: python-devel
BuildRequires: libuv-devel
-BuildRequires: c-ares-devel
BuildRequires: zlib-devel
# Node.js requires some features from openssl 1.0.1 for SPDY support
BuildRequires: openssl-devel >= 1:1.0.1
-Requires: v8%{?_isa} >= %{v8_ge}
-Requires: v8%{?_isa} < %{v8_lt}
-
# we need the system certificate store when Patch2 is applied
Requires: ca-certificates
@@ -78,6 +95,19 @@ Conflicts: node <= 0.3.2-11
Provides: nodejs-punycode = 1.3.1
Provides: npm(punycode) = 1.3.1
+# Node.js has forked c-ares from upstream in an incompatible way, so we need
+# to carry the bundled version internally.
+# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43...
+# Keep this in sync with deps/cares/include/ares_version.h
+Provides: bundled(c-ares) = 1.9.0
+
+# Node.js is closely tied to the version of v8 that is used with it. It makes
+# sense to use the bundled version because upstream consistently breaks ABI
+# even in point releases. Node.js upstream has now removed the ability to build
+# against a shared system version entirely.
+# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858c...
+Provides: bundled(v8) = %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
+
%description
Node.js is a platform built on Chrome's JavaScript runtime
@@ -90,8 +120,8 @@ real-time applications that run across distributed devices.
Summary: JavaScript runtime - development headers
Group: Development/Languages
Requires: %{name}%{?_isa} == %{version}-%{release}
-Requires: libuv-devel%{?_isa} http-parser-devel%{?_isa} v8-devel%{?_isa}
-Requires: openssl-devel%{?_isa} c-ares-devel%{?_isa} zlib-devel%{?_isa}
+Requires: libuv-devel%{?_isa} v8-devel%{?_isa}
+Requires: openssl-devel%{?_isa} zlib-devel%{?_isa}
Requires: nodejs-packaging
%description devel
@@ -111,33 +141,33 @@ The API documentation for the Node.js JavaScript runtime.
# remove bundled dependencies
%patch1 -p1
-rm -rf deps
+rm -rf deps/npm \
+ deps/uv \
+ deps/zlib
# remove bundled CA certificates
%patch2 -p1
rm -f src/node_root_certs.h
-%patch3 -p1
-%patch4 -p1
-
%build
# build with debugging symbols and add defines from libuv (#892601)
-export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
+export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
./configure --prefix=%{_prefix} \
- --shared-v8 \
--shared-openssl \
--shared-zlib \
- --shared-cares \
--shared-libuv \
- --shared-http-parser \
--without-npm \
--without-dtrace
+%if %{?with_debug} == 1
# Setting BUILDTYPE=Debug builds both release and debug binaries
make BUILDTYPE=Debug %{?_smp_mflags}
+%else
+make BUILDTYPE=Release %{?_smp_mflags}
+%endif
%install
rm -rf %{buildroot}
@@ -150,8 +180,10 @@ rm -rf %{buildroot}/%{_prefix}/lib/dtrace
# Set the binary permissions properly
chmod 0755 %{buildroot}/%{_bindir}/node
+%if %{?with_debug} == 1
# Install the debug binary and set its permissions
install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g
+%endif
# own the sitelib directory
mkdir -p %{buildroot}%{_prefix}/lib/node_modules
@@ -167,36 +199,68 @@ EOF
chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
#install documentation
-mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-cp -pr doc/* %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-rm -f %{_defaultdocdir}/%{name}-docs-%{version}/html/nodejs.1
-cp -p LICENSE %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/
+mkdir -p %{buildroot}%{_pkgdocdir}/html
+cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
+rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
+cp -p LICENSE %{buildroot}%{_pkgdocdir}/html
+cp -p ChangeLog LICENSE README.md AUTHORS %{buildroot}%{_pkgdocdir}
#node-gyp needs common.gypi too
mkdir -p %{buildroot}%{_datadir}/node
cp -p common.gypi %{buildroot}%{_datadir}/node
%files
-%doc ChangeLog LICENSE README.md AUTHORS
%{_bindir}/node
%{_mandir}/man1/node.*
%dir %{_prefix}/lib/node_modules
%dir %{_datadir}/node
%{_rpmconfigdir}/fileattrs/nodejs_native.attr
%{_rpmconfigdir}/nodejs_native.req
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/ChangeLog
+%{_pkgdocdir}/LICENSE
+%{_pkgdocdir}/README.md
+%{_pkgdocdir}/AUTHORS
%files devel
+%if %{?with_debug} == 1
%{_bindir}/node_g
+%endif
%{_includedir}/node
%{_datadir}/node/common.gypi
%files docs
-%{_defaultdocdir}/%{name}-docs-%{version}
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/html
%changelog
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-3
+- Remove duplicated content from spec file
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-2
+- Re-enable debug builds on supported arches
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-1
+- Update to Node.js 0.10.42
+- https://github.com/nodejs/node/blob/v0.10.42/ChangeLog
+- Bundle v8, c-ares and http-parser with Node.js
+- Drop patches that revert v8 UTF8 change
+- Resolves: RHBZ#1306203
+- Resolves: RHBZ#1306200
+- Resolves: RHBZ#1306207
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.36-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Apr 29 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-4
+- fix incorrect Requires on libuv (RHBZ#1215719)
+
* Tue Feb 24 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-3
- bump v8 requires (RHBZ#1195457)
+* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-2
+- build against compat-libuv010
+
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-1
- new upstream release 0.10.36
http://blog.nodejs.org/2015/01/26/node-v0-10-36-stable/
@@ -220,6 +284,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
http://blog.nodejs.org/2014/08/19/node-v0-10-31-stable/
http://blog.nodejs.org/2014/09/16/node-v0-10-32-stable/
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.30-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
* Fri Aug 01 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.30-1
- new upstream release 0.10.30
http://blog.nodejs.org/2014/07/31/node-v0-10-30-stable/
@@ -232,6 +299,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
if NODE_INVALID_UTF8 was set. For more information on the implications, see:
http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.28-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
* Sat May 03 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.28-2
- use the system certificate store instead of the bundled copy
both are based on the Mozilla CA list, so the only effect this should have is
@@ -250,6 +320,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
- new upstream release 0.10.26
http://blog.nodejs.org/2014/02/18/node-v0-10-26-stable/
+* Fri Feb 14 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-2
+- rebuild for icu-53 (via v8)
+
* Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-1
- new upstream release 0.10.25
http://blog.nodejs.org/2014/01/23/node-v0-10-25-stable/
@@ -287,6 +360,7 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Tue Aug 27 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.17-1
- new upstream release 0.10.17
http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/
+- fix duplicated/conflicting documentation files (RHBZ#1001253)
* Sat Aug 17 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.16-1
- new upstream release 0.10.16
@@ -297,6 +371,11 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Wed Aug 14 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-3
- fix typo in _isa macro in v8 Requires
+* Mon Aug 05 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-2
+- use unversioned docdir for -docs subpackage
+ https://fedoraproject.org/wiki/Changes/UnversionedDocdirs
+- use main package's docdir instead of a seperate -docs directory
+
* Thu Jul 25 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-1
- new upstream release 0.10.14
http://blog.nodejs.org/2013/07/25/node-v0-10-14-stable/
diff --git a/sources b/sources
index e233927..00d25f8 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-f1a50d8a1f6e09659b5c2aad00867ae2 node-v0.10.36-stripped.tar.gz
+797349ff0cb1c9316d1800acf3d1394f node-v0.10.42-stripped.tar.gz
https://src.fedoraproject.org/rpms/nodejs18/c/18de93476bf38435e0b1041af8f...
1 year, 3 months
sgallagh pushed to rpms/nodejs16 (f37). "Merge branch 'f23' into epel7"
by notifications@fedoraproject.org
Notification time stamped 2023-03-01 20:12:37 UTC
From 18de93476bf38435e0b1041af8f2fe1cbbfa57cb Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh(a)redhat.com>
Date: Feb 10 2016 18:54:35 +0000
Subject: Merge branch 'f23' into epel7
---
diff --git a/.gitignore b/.gitignore
index 27559e5..0e8b6d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@
/node-v0.10.32-stripped.tar.gz
/node-v0.10.33-stripped.tar.gz
/node-v0.10.36-stripped.tar.gz
+/node-v0.10.42-stripped.tar.gz
diff --git a/nodejs-revert-utf8-node.patch b/nodejs-revert-utf8-node.patch
deleted file mode 100644
index a5a3d59..0000000
--- a/nodejs-revert-utf8-node.patch
+++ /dev/null
@@ -1,689 +0,0 @@
-From a9e60792a9c4044e29ec7bbb88419d9283044b86 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:19:19 -0700
-Subject: [PATCH] Revert "src: replace usage of String::Utf8Value"
-
-This reverts commit 535c7777ac674ba86cf93c44824e07b0e23ea8c4.
----
- src/cares_wrap.cc | 8 ++---
- src/fs_event_wrap.cc | 3 +-
- src/node.cc | 42 +++++++++++++-------------
- src/node_crypto.cc | 31 ++++++++++---------
- src/node_dtrace.cc | 6 ++--
- src/node_file.cc | 37 +++++++++++------------
- src/node_stat_watcher.cc | 3 +-
- src/process_wrap.cc | 9 +++---
- src/udp_wrap.cc | 9 +++---
- src/util.h | 78 ------------------------------------------------
- 10 files changed, 68 insertions(+), 158 deletions(-)
- delete mode 100644 src/util.h
-
-diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
-index 321e144..b7ba828 100644
---- a/src/cares_wrap.cc
-+++ b/src/cares_wrap.cc
-@@ -741,7 +739,7 @@ static Handle<Value> Query(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
-
- int r = wrap->Send(*name);
- if (r) {
-@@ -770,7 +768,7 @@ static Handle<Value> QueryWithFamily(const Arguments& args) {
- // object reference, causing wrap->GetObject() to return undefined.
- Local<Object> object = Local<Object>::New(wrap->GetObject());
-
-- node::Utf8Value name(args[0]);
-+ String::Utf8Value name(args[0]);
- int family = args[1]->Int32Value();
-
- int r = wrap->Send(*name, family);
-@@ -900,7 +898,7 @@ static Handle<Value> IsIP(const Arguments& args) {
- static Handle<Value> GetAddrInfo(const Arguments& args) {
- HandleScope scope;
-
-- node::Utf8Value hostname(args[0]);
-+ String::Utf8Value hostname(args[0]);
-
- int fam = AF_UNSPEC;
- if (args[1]->IsInt32()) {
-diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc
-index fc54283..7e3eb8c 100644
---- a/src/fs_event_wrap.cc
-+++ b/src/fs_event_wrap.cc
-@@ -21,7 +21,6 @@
-
- #include "node.h"
- #include "handle_wrap.h"
--#include "util.h"
-
- #include <stdlib.h>
-
-@@ -98,7 +97,7 @@ Handle<Value> FSEventWrap::Start(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad arguments")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- int r = uv_fs_event_init(uv_default_loop(), &wrap->handle_, *path, OnEvent, 0);
- if (r == 0) {
-diff --git a/src/node.cc b/src/node.cc
-index e9696cd..8257604 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -1102,7 +1100,7 @@ enum encoding ParseEncoding(Handle<Value> encoding_v, enum encoding _default) {
-
- if (!encoding_v->IsString()) return _default;
-
-- node::Utf8Value encoding(encoding_v);
-+ String::Utf8Value encoding(encoding_v);
-
- if (strcasecmp(*encoding, "utf8") == 0) {
- return UTF8;
-@@ -1202,12 +1200,12 @@ void DisplayExceptionLine (TryCatch &try_catch) {
-
- if (!message.IsEmpty()) {
- // Print (filename):(line number): (message).
-- node::Utf8Value filename(message->GetScriptResourceName());
-+ String::Utf8Value filename(message->GetScriptResourceName());
- const char* filename_string = *filename;
- int linenum = message->GetLineNumber();
- fprintf(stderr, "%s:%i\n", filename_string, linenum);
- // Print line of source code.
-- node::Utf8Value sourceline(message->GetSourceLine());
-+ String::Utf8Value sourceline(message->GetSourceLine());
- const char* sourceline_string = *sourceline;
-
- // Because of how node modules work, all scripts are wrapped with a
-@@ -1254,7 +1252,7 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
-
- if (show_line) DisplayExceptionLine(try_catch);
-
-- node::Utf8Value trace(try_catch.StackTrace());
-+ String::Utf8Value trace(try_catch.StackTrace());
-
- // range errors have a trace member set to undefined
- if (trace.length() > 0 && !try_catch.StackTrace()->IsUndefined()) {
-@@ -1269,11 +1267,11 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
- !(er->ToObject()->Get(String::New("name"))->IsUndefined());
-
- if (isErrorObject) {
-- node::Utf8Value name(er->ToObject()->Get(String::New("name")));
-+ String::Utf8Value name(er->ToObject()->Get(String::New("name")));
- fprintf(stderr, "%s: ", *name);
- }
-
-- node::Utf8Value msg(!isErrorObject ? er
-+ String::Utf8Value msg(!isErrorObject ? er
- : er->ToObject()->Get(String::New("message")));
- fprintf(stderr, "%s\n", *msg);
- }
-@@ -1355,7 +1353,7 @@ static Handle<Value> Chdir(const Arguments& args) {
- return ThrowException(Exception::Error(String::New("Bad argument.")));
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- uv_err_t r = uv_chdir(*path);
-
-@@ -1406,7 +1404,7 @@ static Handle<Value> Umask(const Arguments& args) {
- oct = args[0]->Uint32Value();
- } else {
- oct = 0;
-- node::Utf8Value str(args[0]);
-+ String::Utf8Value str(args[0]);
-
- // Parse the octal string.
- for (int i = 0; i < str.length(); i++) {
-@@ -1512,7 +1510,7 @@ static uid_t uid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<uid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return uid_by_name(*name);
- }
- }
-@@ -1522,7 +1520,7 @@ static gid_t gid_by_name(Handle<Value> value) {
- if (value->IsUint32()) {
- return static_cast<gid_t>(value->Uint32Value());
- } else {
-- node::Utf8Value name(value);
-+ String::Utf8Value name(value);
- return gid_by_name(*name);
- }
- }
-@@ -1665,7 +1663,7 @@ static Handle<Value> InitGroups(const Arguments& args) {
- return ThrowTypeError("argument 2 must be a number or a string");
- }
-
-- node::Utf8Value arg0(args[0]);
-+ String::Utf8Value arg0(args[0]);
- gid_t extra_group;
- bool must_free;
- char* user;
-@@ -1826,7 +1824,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- }
-
- Local<Object> module = args[0]->ToObject(); // Cast
-- node::Utf8Value filename(args[1]); // Cast
-+ String::Utf8Value filename(args[1]); // Cast
-
- if (exports_symbol.IsEmpty()) {
- exports_symbol = NODE_PSYMBOL("exports");
-@@ -1842,7 +1840,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
- return ThrowException(Exception::Error(errmsg));
- }
-
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value path(args[1]);
- base = *path;
-
- /* Find the shared library filename within the full path. */
-@@ -1961,7 +1959,7 @@ static Handle<Value> Binding(const Arguments& args) {
- HandleScope scope;
-
- Local<String> module = args[0]->ToString();
-- node::Utf8Value module_v(module);
-+ String::Utf8Value module_v(module);
- node_module_struct* modp;
-
- if (binding_cache.IsEmpty()) {
-@@ -2020,7 +2018,7 @@ static void ProcessTitleSetter(Local<String> property,
- Local<Value> value,
- const AccessorInfo& info) {
- HandleScope scope;
-- node::Utf8Value title(value);
-+ String::Utf8Value title(value);
- // TODO: protect with a lock
- uv_set_process_title(*title);
- }
-@@ -2030,7 +2028,7 @@ static Handle<Value> EnvGetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- const char* val = getenv(*key);
- if (val) {
- return scope.Close(String::New(val));
-@@ -2059,8 +2057,8 @@ static Handle<Value> EnvSetter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-- node::Utf8Value val(value);
-+ String::Utf8Value key(property);
-+ String::Utf8Value val(value);
- setenv(*key, *val, 1);
- #else // _WIN32
- String::Value key(property);
-@@ -2080,7 +2078,7 @@ static Handle<Integer> EnvQuery(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (getenv(*key)) {
- return scope.Close(Integer::New(0));
- }
-@@ -2108,7 +2106,7 @@ static Handle<Boolean> EnvDeleter(Local<String> property,
- const AccessorInfo& info) {
- HandleScope scope;
- #ifdef __POSIX__
-- node::Utf8Value key(property);
-+ String::Utf8Value key(property);
- if (!getenv(*key)) return False();
- unsetenv(*key); // can't check return value, it's void on some platforms
- return True();
-diff --git a/src/node_crypto.cc b/src/node_crypto.cc
-index 46faba2..0ae1f8a 100644
---- a/src/node_crypto.cc
-+++ b/src/node_crypto.cc
-@@ -242,7 +241,7 @@ Handle<Value> SecureContext::Init(const Arguments& args) {
- OPENSSL_CONST SSL_METHOD *method = SSLv23_method();
-
- if (args.Length() == 1 && args[0]->IsString()) {
-- node::Utf8Value sslmethod(args[0]);
-+ String::Utf8Value sslmethod(args[0]);
-
- if (strcmp(*sslmethod, "SSLv2_method") == 0) {
- #ifndef OPENSSL_NO_SSL2
-@@ -362,7 +361,7 @@ static BIO* LoadBIO (Handle<Value> v) {
- int r = -1;
-
- if (v->IsString()) {
-- node::Utf8Value s(v);
-+ String::Utf8Value s(v);
- r = BIO_write(bio, *s, s.length());
- } else if (Buffer::HasInstance(v)) {
- char* buffer_data = Buffer::Data(v);
-@@ -414,7 +413,7 @@ Handle<Value> SecureContext::SetKey(const Arguments& args) {
- BIO *bio = LoadBIO(args[0]);
- if (!bio) return False();
-
-- node::Utf8Value passphrase(args[1]);
-+ String::Utf8Value passphrase(args[1]);
-
- EVP_PKEY* key = PEM_read_bio_PrivateKey(bio, NULL, NULL,
- len == 1 ? NULL : *passphrase);
-@@ -644,7 +643,7 @@ Handle<Value> SecureContext::SetCiphers(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value ciphers(args[0]);
-+ String::Utf8Value ciphers(args[0]);
- SSL_CTX_set_cipher_list(sc->ctx_, *ciphers);
-
- return True();
-@@ -673,7 +672,7 @@ Handle<Value> SecureContext::SetSessionIdContext(const Arguments& args) {
- return ThrowException(Exception::TypeError(String::New("Bad parameter")));
- }
-
-- node::Utf8Value sessionIdContext(args[0]);
-+ String::Utf8Value sessionIdContext(args[0]);
- const unsigned char* sid_ctx = (const unsigned char*) *sessionIdContext;
- unsigned int sid_ctx_len = sessionIdContext.length();
-
-@@ -1281,7 +1280,7 @@ Handle<Value> Connection::New(const Arguments& args) {
- if (is_server) {
- SSL_CTX_set_tlsext_servername_callback(sc->ctx_, SelectSNIContextCallback_);
- } else {
-- node::Utf8Value servername(args[2]);
-+ String::Utf8Value servername(args[2]);
- SSL_set_tlsext_host_name(p->ssl_, *servername);
- }
- #endif
-@@ -2234,7 +2233,7 @@ class Cipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_buf_len, args[1], BINARY);
- assert(key_written == key_buf_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInit(*cipherType, key_buf, key_buf_len);
-
-@@ -2285,7 +2284,7 @@ class Cipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->CipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2544,7 +2543,7 @@ class Decipher : public ObjectWrap {
- ssize_t key_written = DecodeWrite(key_buf, key_len, args[1], BINARY);
- assert(key_written == key_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInit(*cipherType, key_buf,key_len);
-
-@@ -2595,7 +2594,7 @@ class Decipher : public ObjectWrap {
- ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
- assert(iv_written == iv_len);
-
-- node::Utf8Value cipherType(args[0]);
-+ String::Utf8Value cipherType(args[0]);
-
- bool r = cipher->DecipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
-
-@@ -2776,7 +2775,7 @@ class Hmac : public ObjectWrap {
- return ThrowException(exception);
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- bool r;
-
-@@ -2921,7 +2920,7 @@ class Hash : public ObjectWrap {
- "Must give hashtype string as argument")));
- }
-
-- node::Utf8Value hashType(args[0]);
-+ String::Utf8Value hashType(args[0]);
-
- Hash *hash = new Hash();
- if (!hash->HashInit(*hashType)) {
-@@ -3095,7 +3094,7 @@ class Sign : public ObjectWrap {
- "Must give signtype string as argument")));
- }
-
-- node::Utf8Value signType(args[0]);
-+ String::Utf8Value signType(args[0]);
-
- bool r = sign->SignInit(*signType);
-
-@@ -3328,7 +3327,7 @@ class Verify : public ObjectWrap {
- "Must give verifytype string as argument")));
- }
-
-- node::Utf8Value verifyType(args[0]);
-+ String::Utf8Value verifyType(args[0]);
-
- bool r = verify->VerifyInit(*verifyType);
-
-@@ -3511,7 +3510,7 @@ class DiffieHellman : public ObjectWrap {
- String::New("No group name given")));
- }
-
-- node::Utf8Value group_name(args[0]);
-+ String::Utf8Value group_name(args[0]);
-
- modp_group* it = modp_groups;
-
-diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc
-index 0b2d0f4..4b851e3 100644
---- a/src/node_dtrace.cc
-+++ b/src/node_dtrace.cc
-@@ -68,7 +66,7 @@ using namespace v8;
- return (ThrowException(Exception::Error(String::New("expected " \
- "object for " #obj " to contain string member " #member)))); \
- } \
-- node::Utf8Value _##member(obj->Get(String::New(#member))); \
-+ String::Utf8Value _##member(obj->Get(String::New(#member))); \
- if ((*(const char **)valp = *_##member) == NULL) \
- *(const char **)valp = "<unknown>";
-
-@@ -243,7 +241,7 @@ Handle<Value> DTRACE_HTTP_SERVER_REQUEST(const Arguments& args) {
- "object for request to contain string member headers"))));
-
- Local<Value> strfwdfor = headers->Get(String::New("x-forwarded-for"));
-- node::Utf8Value fwdfor(strfwdfor);
-+ String::Utf8Value fwdfor(strfwdfor);
-
- if (!strfwdfor->IsString() || (req.forwardedFor = *fwdfor) == NULL)
- req.forwardedFor = const_cast<char*>("");
-diff --git a/src/node_file.cc b/src/node_file.cc
-index 3c35e0b..f665b19 100644
---- a/src/node_file.cc
-+++ b/src/node_file.cc
-@@ -404,7 +403,7 @@ static Handle<Value> Stat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(stat, args[1], *path)
-@@ -421,7 +420,7 @@ static Handle<Value> LStat(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(lstat, args[1], *path)
-@@ -459,12 +458,12 @@ static Handle<Value> Symlink(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value dest(args[0]);
-- node::Utf8Value path(args[1]);
-+ String::Utf8Value dest(args[0]);
-+ String::Utf8Value path(args[1]);
- int flags = 0;
-
- if (args[2]->IsString()) {
-- node::Utf8Value mode(args[2]);
-+ String::Utf8Value mode(args[2]);
- if (strcmp(*mode, "dir") == 0) {
- flags |= UV_FS_SYMLINK_DIR;
- } else if (strcmp(*mode, "junction") == 0) {
-@@ -492,8 +491,8 @@ static Handle<Value> Link(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
-
-- node::Utf8Value orig_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value orig_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path)
-@@ -509,7 +508,7 @@ static Handle<Value> ReadLink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readlink, args[1], *path)
-@@ -528,8 +527,8 @@ static Handle<Value> Rename(const Arguments& args) {
- if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string");
- if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string");
-
-- node::Utf8Value old_path(args[0]);
-- node::Utf8Value new_path(args[1]);
-+ String::Utf8Value old_path(args[0]);
-+ String::Utf8Value new_path(args[1]);
-
- if (args[2]->IsFunction()) {
- ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path)
-@@ -599,7 +598,7 @@ static Handle<Value> Unlink(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(unlink, args[1], *path)
-@@ -615,7 +614,7 @@ static Handle<Value> RMDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(rmdir, args[1], *path)
-@@ -632,7 +631,7 @@ static Handle<Value> MKDir(const Arguments& args) {
- return THROW_BAD_ARGS;
- }
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if (args[2]->IsFunction()) {
-@@ -649,7 +648,7 @@ static Handle<Value> ReadDir(const Arguments& args) {
- if (args.Length() < 1) return TYPE_ERROR("path required");
- if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
-
- if (args[1]->IsFunction()) {
- ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/)
-@@ -687,7 +686,7 @@ static Handle<Value> Open(const Arguments& args) {
- if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int");
- if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int flags = args[1]->Int32Value();
- int mode = static_cast<int>(args[2]->Int32Value());
-
-@@ -827,7 +826,7 @@ static Handle<Value> Chmod(const Arguments& args) {
- if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) {
- return THROW_BAD_ARGS;
- }
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- int mode = static_cast<int>(args[1]->Int32Value());
-
- if(args[2]->IsFunction()) {
-@@ -874,7 +873,7 @@ static Handle<Value> Chown(const Arguments& args) {
- if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int");
- if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int");
-
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value());
- uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value());
-
-@@ -925,7 +924,7 @@ static Handle<Value> UTimes(const Arguments& args) {
- if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number");
- if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number");
-
-- const node::Utf8Value path(args[0]);
-+ const String::Utf8Value path(args[0]);
- const double atime = static_cast<double>(args[1]->NumberValue());
- const double mtime = static_cast<double>(args[2]->NumberValue());
-
-diff --git a/src/node_stat_watcher.cc b/src/node_stat_watcher.cc
-index fd3e5d1..c3f668c 100644
---- a/src/node_stat_watcher.cc
-+++ b/src/node_stat_watcher.cc
-@@ -105,7 +104,7 @@ Handle<Value> StatWatcher::Start(const Arguments& args) {
- HandleScope scope;
-
- StatWatcher* wrap = ObjectWrap::Unwrap<StatWatcher>(args.Holder());
-- node::Utf8Value path(args[0]);
-+ String::Utf8Value path(args[0]);
- const bool persistent = args[1]->BooleanValue();
- const uint32_t interval = args[2]->Uint32Value();
-
-diff --git a/src/process_wrap.cc b/src/process_wrap.cc
-index ac63e4b..784300f 100644
---- a/src/process_wrap.cc
-+++ b/src/process_wrap.cc
-@@ -188,7 +187,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.file
- Local<Value> file_v = js_options->Get(String::NewSymbol("file"));
-- node::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
-+ String::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
- if (file.length() > 0) {
- options.file = *file;
- } else {
-@@ -203,7 +202,7 @@ class ProcessWrap : public HandleWrap {
- // Heap allocate to detect errors. +1 is for NULL.
- options.args = new char*[argc + 1];
- for (int i = 0; i < argc; i++) {
-- node::Utf8Value arg(js_argv->Get(i));
-+ String::Utf8Value arg(js_argv->Get(i));
- options.args[i] = strdup(*arg);
- }
- options.args[argc] = NULL;
-@@ -211,7 +210,7 @@ class ProcessWrap : public HandleWrap {
-
- // options.cwd
- Local<Value> cwd_v = js_options->Get(String::NewSymbol("cwd"));
-- node::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
-+ String::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
- if (cwd.length() > 0) {
- options.cwd = *cwd;
- }
-@@ -223,7 +222,7 @@ class ProcessWrap : public HandleWrap {
- int envc = env->Length();
- options.env = new char*[envc + 1]; // Heap allocated to detect errors.
- for (int i = 0; i < envc; i++) {
-- node::Utf8Value pair(env->Get(i));
-+ String::Utf8Value pair(env->Get(i));
- options.env[i] = strdup(*pair);
- }
- options.env[envc] = NULL;
-diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
-index 31a4e78..b33f4e8 100644
---- a/src/udp_wrap.cc
-+++ b/src/udp_wrap.cc
-@@ -161,7 +160,7 @@ Handle<Value> UDPWrap::DoBind(const Arguments& args, int family) {
- // bind(ip, port, flags)
- assert(args.Length() == 3);
-
-- node::Utf8Value address(args[0]);
-+ String::Utf8Value address(args[0]);
- const int port = args[1]->Uint32Value();
- const int flags = args[2]->Uint32Value();
-
-@@ -220,8 +219,8 @@ Handle<Value> UDPWrap::SetMembership(const Arguments& args,
-
- assert(args.Length() == 2);
-
-- node::Utf8Value address(args[0]);
-- node::Utf8Value iface(args[1]);
-+ String::Utf8Value address(args[0]);
-+ String::Utf8Value iface(args[1]);
-
- const char* iface_cstr = *iface;
- if (args[1]->IsUndefined() || args[1]->IsNull()) {
-@@ -272,7 +271,7 @@ Handle<Value> UDPWrap::DoSend(const Arguments& args, int family) {
- length);
-
- const unsigned short port = args[3]->Uint32Value();
-- node::Utf8Value address(args[4]);
-+ String::Utf8Value address(args[4]);
-
- switch (family) {
- case AF_INET:
-diff --git a/src/util.h b/src/util.h
---- a/src/util.h
-+++ b/src/util.h
-@@ -41,52 +41,6 @@
- obj->Set(domain_symbol, domain);
- }
-
--class Utf8Value {
-- public:
-- explicit Utf8Value(v8::Handle<v8::Value> value)
-- : length_(0), str_(NULL) {
-- if (value.IsEmpty())
-- return;
--
-- v8::Local<v8::String> val_ = value->ToString();
--
-- // Allocate enough space to include the null terminator
-- size_t len = StringBytes::StorageSize(val_, UTF8) + 1;
--
-- char* str = static_cast<char*>(calloc(1, len));
--
-- int flags = WRITE_UTF8_FLAGS;
-- flags |= ~v8::String::NO_NULL_TERMINATION;
--
-- length_ = val_->WriteUtf8(str,
-- len,
-- 0,
-- flags);
--
-- str_ = reinterpret_cast<char*>(str);
-- }
--
-- ~Utf8Value() {
-- free(str_);
-- }
--
-- char* operator*() {
-- return str_;
-- };
--
-- const char* operator*() const {
-- return str_;
-- };
--
-- size_t length() const {
-- return length_;
-- };
--
-- private:
-- size_t length_;
-- char* str_;
--};
--
- } // namespace node
-
- #endif // SRC_UTIL_H_
---
-1.9.3
-
diff --git a/nodejs-revert-utf8-v8.patch b/nodejs-revert-utf8-v8.patch
deleted file mode 100644
index 6b16de6..0000000
--- a/nodejs-revert-utf8-v8.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From c7c934c66cd8712c9ff169f1ef4c5670d3ff99c8 Mon Sep 17 00:00:00 2001
-From: "T.C. Hollingsworth" <tchollingsworth(a)gmail.com>
-Date: Wed, 18 Jun 2014 23:09:03 -0700
-Subject: [PATCH] Revert "string_bytes: Guarantee valid utf-8 output"
-
-This reverts commit 0da4c671659cfbae12def127b2e94690b9d9b5e1.
----
- src/node.cc | 7 -------
- src/string_bytes.cc | 2 +-
- src/string_bytes.h | 2 --
- test/simple/test-buffer.js | 12 ------------
- 4 files changed, 1 insertion(+), 22 deletions(-)
-
-diff --git a/src/node.cc b/src/node.cc
-index 4223973..e9696cd 100644
---- a/src/node.cc
-+++ b/src/node.cc
-@@ -180,9 +180,6 @@ static uv_async_t dispatch_debug_messages_async;
- // Declared in node_internals.h
- Isolate* node_isolate = NULL;
-
--int WRITE_UTF8_FLAGS = v8::String::HINT_MANY_WRITES_EXPECTED |
-- v8::String::NO_NULL_TERMINATION;
--
- static void Spin(uv_idle_t* handle, int status) {
- assert((uv_idle_t*) handle == &tick_spinner);
- assert(status == 0);
-@@ -3077,11 +3074,6 @@ static char **copy_argv(int argc, char **argv) {
-
-
- int Start(int argc, char *argv[]) {
-- const char* replaceInvalid = getenv("NODE_INVALID_UTF8");
--
-- if (replaceInvalid == NULL)
-- WRITE_UTF8_FLAGS |= String::REPLACE_INVALID_UTF8;
--
- // Hack aroung with the argv pointer. Used for process.title = "blah".
- argv = uv_setup_args(argc, argv);
-
-diff --git a/src/string_bytes.cc b/src/string_bytes.cc
-index a7bab38..e4a34fe 100644
---- a/src/string_bytes.cc
-+++ b/src/string_bytes.cc
-@@ -199,7 +199,7 @@ size_t StringBytes::Write(char* buf,
- break;
-
- case UTF8:
-- len = str->WriteUtf8(buf, buflen, chars_written, WRITE_UTF8_FLAGS);
-+ len = str->WriteUtf8(buf, buflen, chars_written, flags);
- break;
-
- case UCS2:
-diff --git a/src/string_bytes.h b/src/string_bytes.h
-index 31f04bb..8071a49 100644
---- a/src/string_bytes.h
-+++ b/src/string_bytes.h
-@@ -29,8 +29,6 @@
-
- namespace node {
-
--extern int WRITE_UTF8_FLAGS;
--
- using v8::Handle;
- using v8::Local;
- using v8::String;
-diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js
-index f8b2798..3026824 100644
---- a/test/simple/test-buffer.js
-+++ b/test/simple/test-buffer.js
-@@ -791,18 +791,6 @@ assert.equal(buf[3], 0xFF);
- assert.equal(buf[3], 0xFF);
- });
-
--// test unmatched surrogates not producing invalid utf8 output
--// ef bf bd = utf-8 representation of unicode replacement character
--// see https://codereview.chromium.org/121173009/
--buf = new Buffer('ab\ud800cd', 'utf8');
--assert.equal(buf[0], 0x61);
--assert.equal(buf[1], 0x62);
--assert.equal(buf[2], 0xef);
--assert.equal(buf[3], 0xbf);
--assert.equal(buf[4], 0xbd);
--assert.equal(buf[5], 0x63);
--assert.equal(buf[6], 0x64);
--
- // test for buffer overrun
- buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
- var sub = buf.slice(0, 4); // length: 4
---
-1.9.3
-
diff --git a/nodejs.spec b/nodejs.spec
index 5ebad5f..9220d9c 100644
--- a/nodejs.spec
+++ b/nodejs.spec
@@ -1,5 +1,40 @@
+%global with_debug 1
+
+# We don't have pkgdocdir on EPEL6 (yet?)
+%global _pkgdocdir %{_docdir}/%{name}-%{version}
+
+# ARM builds currently break on the Debug builds, so we'll just
+# build the standard runtime until that gets sorted out.
+%ifarch %{arm} aarch64 %{power64}
+%global with_debug 0
+%endif
+
+# == Node.js Version ==
+%global nodejs_major 0
+%global nodejs_minor 10
+%global nodejs_patch 42
+%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
+
+# == Bundled Dependency Versions ==
+# v8 - from deps/v8/src/version.cc
+%global v8_major 3
+%global v8_minor 14
+%global v8_build 5
+%global v8_patch 9
+# V8 presently breaks ABI at least every x.y release while never bumping SONAME
+%global v8_abi %{v8_major}.%{v8_minor}
+
+# c-ares - from deps/cares/include/ares_version.h
+%global c_ares_major 1
+%global c_ares_minor 9
+%global c_ares_patch 0
+
+# http-parser - from deps/http-parser/http_parser.h
+%global http_parser_major 1
+%global http_parser_minor 1
+
Name: nodejs
-Version: 0.10.36
+Version: %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
Release: 3%{?dist}
Summary: JavaScript runtime
License: MIT and ASL 2.0 and ISC and BSD
@@ -7,7 +42,7 @@ Group: Development/Languages
URL: http://nodejs.org/
# Exclusive archs must match v8
-ExclusiveArch: %{ix86} x86_64 %{arm}
+ExclusiveArch: %{nodejs_arches}
# nodejs bundles openssl, but we use the system version in Fedora
# because openssl contains prohibited code, we remove openssl completely from
@@ -28,30 +63,12 @@ Patch1: nodejs-disable-gyp-deps.patch
# http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/...
Patch2: nodejs-use-system-certs.patch
-# The invalid UTF8 fix has been reverted since this breaks v8 API, which cannot
-# be done in a stable distribution release. This build of nodejs will behave as
-# if NODE_INVALID_UTF8 was set. For more information on the implications, see:
-# http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
-Patch3: nodejs-revert-utf8-v8.patch
-Patch4: nodejs-revert-utf8-node.patch
-
-# V8 presently breaks ABI at least every x.y release while never bumping SONAME,
-# so we need to be more explicit until spot fixes that
-%global v8_ge 1:3.14.5.10-17
-%global v8_lt 1:3.15
-%global v8_abi 3.14
-
-BuildRequires: v8-devel >= %{v8_ge}
-BuildRequires: http-parser-devel >= 2.0
+BuildRequires: python-devel
BuildRequires: libuv-devel
-BuildRequires: c-ares-devel
BuildRequires: zlib-devel
# Node.js requires some features from openssl 1.0.1 for SPDY support
BuildRequires: openssl-devel >= 1:1.0.1
-Requires: v8%{?_isa} >= %{v8_ge}
-Requires: v8%{?_isa} < %{v8_lt}
-
# we need the system certificate store when Patch2 is applied
Requires: ca-certificates
@@ -78,6 +95,19 @@ Conflicts: node <= 0.3.2-11
Provides: nodejs-punycode = 1.3.1
Provides: npm(punycode) = 1.3.1
+# Node.js has forked c-ares from upstream in an incompatible way, so we need
+# to carry the bundled version internally.
+# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43...
+# Keep this in sync with deps/cares/include/ares_version.h
+Provides: bundled(c-ares) = 1.9.0
+
+# Node.js is closely tied to the version of v8 that is used with it. It makes
+# sense to use the bundled version because upstream consistently breaks ABI
+# even in point releases. Node.js upstream has now removed the ability to build
+# against a shared system version entirely.
+# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858c...
+Provides: bundled(v8) = %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
+
%description
Node.js is a platform built on Chrome's JavaScript runtime
@@ -90,8 +120,8 @@ real-time applications that run across distributed devices.
Summary: JavaScript runtime - development headers
Group: Development/Languages
Requires: %{name}%{?_isa} == %{version}-%{release}
-Requires: libuv-devel%{?_isa} http-parser-devel%{?_isa} v8-devel%{?_isa}
-Requires: openssl-devel%{?_isa} c-ares-devel%{?_isa} zlib-devel%{?_isa}
+Requires: libuv-devel%{?_isa} v8-devel%{?_isa}
+Requires: openssl-devel%{?_isa} zlib-devel%{?_isa}
Requires: nodejs-packaging
%description devel
@@ -111,33 +141,33 @@ The API documentation for the Node.js JavaScript runtime.
# remove bundled dependencies
%patch1 -p1
-rm -rf deps
+rm -rf deps/npm \
+ deps/uv \
+ deps/zlib
# remove bundled CA certificates
%patch2 -p1
rm -f src/node_root_certs.h
-%patch3 -p1
-%patch4 -p1
-
%build
# build with debugging symbols and add defines from libuv (#892601)
-export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
+export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
./configure --prefix=%{_prefix} \
- --shared-v8 \
--shared-openssl \
--shared-zlib \
- --shared-cares \
--shared-libuv \
- --shared-http-parser \
--without-npm \
--without-dtrace
+%if %{?with_debug} == 1
# Setting BUILDTYPE=Debug builds both release and debug binaries
make BUILDTYPE=Debug %{?_smp_mflags}
+%else
+make BUILDTYPE=Release %{?_smp_mflags}
+%endif
%install
rm -rf %{buildroot}
@@ -150,8 +180,10 @@ rm -rf %{buildroot}/%{_prefix}/lib/dtrace
# Set the binary permissions properly
chmod 0755 %{buildroot}/%{_bindir}/node
+%if %{?with_debug} == 1
# Install the debug binary and set its permissions
install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g
+%endif
# own the sitelib directory
mkdir -p %{buildroot}%{_prefix}/lib/node_modules
@@ -167,36 +199,68 @@ EOF
chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
#install documentation
-mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-cp -pr doc/* %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
-rm -f %{_defaultdocdir}/%{name}-docs-%{version}/html/nodejs.1
-cp -p LICENSE %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/
+mkdir -p %{buildroot}%{_pkgdocdir}/html
+cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
+rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
+cp -p LICENSE %{buildroot}%{_pkgdocdir}/html
+cp -p ChangeLog LICENSE README.md AUTHORS %{buildroot}%{_pkgdocdir}
#node-gyp needs common.gypi too
mkdir -p %{buildroot}%{_datadir}/node
cp -p common.gypi %{buildroot}%{_datadir}/node
%files
-%doc ChangeLog LICENSE README.md AUTHORS
%{_bindir}/node
%{_mandir}/man1/node.*
%dir %{_prefix}/lib/node_modules
%dir %{_datadir}/node
%{_rpmconfigdir}/fileattrs/nodejs_native.attr
%{_rpmconfigdir}/nodejs_native.req
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/ChangeLog
+%{_pkgdocdir}/LICENSE
+%{_pkgdocdir}/README.md
+%{_pkgdocdir}/AUTHORS
%files devel
+%if %{?with_debug} == 1
%{_bindir}/node_g
+%endif
%{_includedir}/node
%{_datadir}/node/common.gypi
%files docs
-%{_defaultdocdir}/%{name}-docs-%{version}
+%dir %{_pkgdocdir}
+%{_pkgdocdir}/html
%changelog
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-3
+- Remove duplicated content from spec file
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-2
+- Re-enable debug builds on supported arches
+
+* Wed Feb 10 2016 Stephen Gallagher <sgallagh(a)redhat.com> - 0.10.42-1
+- Update to Node.js 0.10.42
+- https://github.com/nodejs/node/blob/v0.10.42/ChangeLog
+- Bundle v8, c-ares and http-parser with Node.js
+- Drop patches that revert v8 UTF8 change
+- Resolves: RHBZ#1306203
+- Resolves: RHBZ#1306200
+- Resolves: RHBZ#1306207
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.36-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Apr 29 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-4
+- fix incorrect Requires on libuv (RHBZ#1215719)
+
* Tue Feb 24 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-3
- bump v8 requires (RHBZ#1195457)
+* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-2
+- build against compat-libuv010
+
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.36-1
- new upstream release 0.10.36
http://blog.nodejs.org/2015/01/26/node-v0-10-36-stable/
@@ -220,6 +284,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
http://blog.nodejs.org/2014/08/19/node-v0-10-31-stable/
http://blog.nodejs.org/2014/09/16/node-v0-10-32-stable/
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.30-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
* Fri Aug 01 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.30-1
- new upstream release 0.10.30
http://blog.nodejs.org/2014/07/31/node-v0-10-30-stable/
@@ -232,6 +299,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
if NODE_INVALID_UTF8 was set. For more information on the implications, see:
http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.10.28-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
* Sat May 03 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.28-2
- use the system certificate store instead of the bundled copy
both are based on the Mozilla CA list, so the only effect this should have is
@@ -250,6 +320,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
- new upstream release 0.10.26
http://blog.nodejs.org/2014/02/18/node-v0-10-26-stable/
+* Fri Feb 14 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-2
+- rebuild for icu-53 (via v8)
+
* Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.25-1
- new upstream release 0.10.25
http://blog.nodejs.org/2014/01/23/node-v0-10-25-stable/
@@ -287,6 +360,7 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Tue Aug 27 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.17-1
- new upstream release 0.10.17
http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/
+- fix duplicated/conflicting documentation files (RHBZ#1001253)
* Sat Aug 17 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.16-1
- new upstream release 0.10.16
@@ -297,6 +371,11 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Wed Aug 14 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-3
- fix typo in _isa macro in v8 Requires
+* Mon Aug 05 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-2
+- use unversioned docdir for -docs subpackage
+ https://fedoraproject.org/wiki/Changes/UnversionedDocdirs
+- use main package's docdir instead of a seperate -docs directory
+
* Thu Jul 25 2013 T.C. Hollingsworth <tchollingsworth(a)gmail.com> - 0.10.14-1
- new upstream release 0.10.14
http://blog.nodejs.org/2013/07/25/node-v0-10-14-stable/
diff --git a/sources b/sources
index e233927..00d25f8 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-f1a50d8a1f6e09659b5c2aad00867ae2 node-v0.10.36-stripped.tar.gz
+797349ff0cb1c9316d1800acf3d1394f node-v0.10.42-stripped.tar.gz
https://src.fedoraproject.org/rpms/nodejs16/c/18de93476bf38435e0b1041af8f...
1 year, 3 months
Fedora 17 updates-testing report
by updates@fedoraproject.org
The following Fedora 17 Security updates need testing:
Age URL
239 https://admin.fedoraproject.org/updates/FEDORA-2012-10269/revelation-0.4....
81 https://admin.fedoraproject.org/updates/FEDORA-2012-20092/libproxy-0.4.11...
56 https://admin.fedoraproject.org/updates/FEDORA-2013-0210/vdsm-4.10.0-13.fc17
56 https://admin.fedoraproject.org/updates/FEDORA-2013-0231/ca-certificates-...
52 https://admin.fedoraproject.org/updates/FEDORA-2013-0455/fedora-business-...
38 https://admin.fedoraproject.org/updates/FEDORA-2013-1286/python-tw2-jquer...
29 https://admin.fedoraproject.org/updates/FEDORA-2013-1804/coreutils-8.15-1...
22 https://admin.fedoraproject.org/updates/FEDORA-2013-2143/rubygem-rdoc-3.1...
22 https://admin.fedoraproject.org/updates/FEDORA-2013-2023/tor-0.2.3.25-1700
18 https://admin.fedoraproject.org/updates/FEDORA-2013-2315/rubygem-rack-1.4...
9 https://admin.fedoraproject.org/updates/FEDORA-2013-2766/mate-settings-da...
9 https://admin.fedoraproject.org/updates/FEDORA-2013-2789/yum-3.4.3-31.fc17
9 https://admin.fedoraproject.org/updates/FEDORA-2013-2793/openssl-1.0.0k-1...
7 https://admin.fedoraproject.org/updates/FEDORA-2013-2874/Django-1.4.5-1.fc17
7 https://admin.fedoraproject.org/updates/FEDORA-2013-2872/drupal7-7.20-1.fc17
7 https://admin.fedoraproject.org/updates/FEDORA-2013-2845/bugzilla-4.0.10-...
6 https://admin.fedoraproject.org/updates/FEDORA-2013-2890/ptlib-2.10.10-1....
6 https://admin.fedoraproject.org/updates/FEDORA-2013-2984/libtasn1-2.14-1....
6 https://admin.fedoraproject.org/updates/FEDORA-2013-2955/nginx-1.0.15-9.fc17
6 https://admin.fedoraproject.org/updates/FEDORA-2013-2988/seamonkey-2.16-1...
4 https://admin.fedoraproject.org/updates/FEDORA-2013-3050/rubygem-json-1.6...
4 https://admin.fedoraproject.org/updates/FEDORA-2013-3038/ruby-1.9.3.392-2...
3 https://admin.fedoraproject.org/updates/FEDORA-2013-3079/nss-3.14.3-1.fc1...
3 https://admin.fedoraproject.org/updates/FEDORA-2013-3116/krb5-1.10.2-7.fc17
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3252/kernel-3.7.10-10...
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3259/crypto-utils-2.4...
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3227/mediawiki-1.19.3...
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3270/sudo-1.8.6p7-1.fc17
The following Fedora 17 Critical Path updates have yet to be approved:
Age URL
191 https://admin.fedoraproject.org/updates/FEDORA-2012-12509/PackageKit-0.7....
22 https://admin.fedoraproject.org/updates/FEDORA-2013-2065/abrt-2.1.0-1.fc1...
21 https://admin.fedoraproject.org/updates/FEDORA-2013-2163/policycoreutils-...
13 https://admin.fedoraproject.org/updates/FEDORA-2013-2582/python-bugzilla-...
10 https://admin.fedoraproject.org/updates/FEDORA-2013-2709/perl-5.14.3-222....
9 https://admin.fedoraproject.org/updates/FEDORA-2013-2789/yum-3.4.3-31.fc17
9 https://admin.fedoraproject.org/updates/FEDORA-2013-2793/openssl-1.0.0k-1...
7 https://admin.fedoraproject.org/updates/FEDORA-2013-2858/orc-0.4.17-2.fc17
6 https://admin.fedoraproject.org/updates/FEDORA-2013-2989/dosfstools-3.0.1...
6 https://admin.fedoraproject.org/updates/FEDORA-2013-2984/libtasn1-2.14-1....
3 https://admin.fedoraproject.org/updates/FEDORA-2013-3119/python-pycurl-7....
3 https://admin.fedoraproject.org/updates/FEDORA-2013-3079/nss-3.14.3-1.fc1...
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3304/libvpx-1.2.0-1.fc17
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3276/createrepo-0.9.9...
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3252/kernel-3.7.10-10...
0 https://admin.fedoraproject.org/updates/FEDORA-2013-3270/sudo-1.8.6p7-1.fc17
The following builds have been pushed to Fedora 17 updates-testing
R-2.15.2-7.fc17
asterisk-sounds-core-1.4.23-1.fc17
berusky2-0.9-1.fc17
berusky2-data-0.7-1.fc17
c++-gtk-utils-2.0.15-2.fc17
createrepo-0.9.9-12.fc17
crypto-utils-2.4.1-39.fc17
fpaste-0.3.7.1-6.fc17
gitstats-0-0.4.20130224git0843039.fc17
gperftools-2.0-9.fc17
gtick-0.5.1-1.fc17
kernel-3.7.10-101.fc17
latex2rtf-2.3.2a-1.fc17
libchewing-0.3.4-3.fc17
libpinyin-0.8.1-1.fc17
libvpx-1.2.0-1.fc17
mediawiki-1.19.3-2.fc17
minisat2-2.2.0-5.fc17
mtn-browse-1.10-2.fc17
munin-2.0.11.1-2.fc17
opendkim-2.8.0-4.fc17
packagedb-cli-1.4.1-1.fc17
perl-Data-Validate-IP-0.18-2.fc17
perl-Locale-Codes-3.25-1.fc17
perl-Net-SFTP-Foreign-1.74.05-3.fc17
perl-qpid_proton-0.4-1.fc17
phoronix-test-suite-4.4.0-1.fc17
pidgin-latex-1.5.0-1.fc17
potrace-1.11-1.fc17
python-kajiki-0.3.5-1.fc17
python-nmap-0.2.7-1.fc17
python-pkgwat-api-0.7-2.fc17
python-requests-1.1.0-3.fc17
python-tw2-core-2.1.5-1.fc17
python-tw2-core-2.1.5-3.fc17
python-tw2-forms-2.1.4.1-2.fc17
python-tw2-sqla-2.0.6-2.fc17
python-urllib3-1.5-3.fc17
python-urllib3-1.5-4.fc17
python-urllib3-1.5-5.fc17
rednotebook-1.7.0-1.fc17
rekonq-2.2-1.fc17
rubygem-httpclient-2.3.2-4.fc17
spe-0.8.4.h-12.fc17
sudo-1.8.6p7-1.fc17
transmission-2.77-1.fc17
tzdata-2012j-2.fc17
ufraw-0.19-1.fc17
viewvc-1.1.18-1.fc17
xterm-291-1.fc17
Details about builds:
================================================================================
R-2.15.2-7.fc17 (FEDORA-2013-3217)
A language for data analysis and graphics
--------------------------------------------------------------------------------
Update Information:
Build against xz-devel
Fix build with makeinfo v5
Create R-core-devel subpackage (if you really don't like Java)
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Tom Callaway <spot(a)fedoraproject.org> - 2.15.2-7
- add BuildRequires: xz-devel (for system xz/lzma support)
- create R-core-devel
* Sat Jan 26 2013 Kevin Fenzi <kevin(a)scrye.com> - 2.15.2-6
- Rebuild for new icu
* Sun Jan 20 2013 Tom Callaway <spot(a)fedoraproject.org> - 2.15.2-5
- apply upstream fix for cairo issues (bz 891983)
* Fri Jan 18 2013 Adam Tkac <atkac redhat com> - 2.15.2-4
- rebuild due to "jpeg8-ABI" feature drop
* Tue Nov 27 2012 Tom Callaway <spot(a)fedoraproject.org> - 2.15.2-3
- add Requires: tex(cm-super-ts1.enc) for R-devel
* Tue Nov 27 2012 Tom Callaway <spot(a)fedoraproject.org> - 2.15.2-2
- add additional TeX font requirements to R-devel for Fedora 18+ (due to new texlive)
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #912802 - R-devel requires R-java-devel
https://bugzilla.redhat.com/show_bug.cgi?id=912802
[ 2 ] Bug #915024 - R built with bundled xz/lzma copy
https://bugzilla.redhat.com/show_bug.cgi?id=915024
--------------------------------------------------------------------------------
================================================================================
asterisk-sounds-core-1.4.23-1.fc17 (FEDORA-2013-3232)
Core sounds for Asterisk
--------------------------------------------------------------------------------
Update Information:
Update to 1.4.23
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Jeffrey Ollie <jeff(a)ocjtech.us> - 1.4.23-1
- Update to 1.4.23
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.4.22-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.4.22-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
berusky2-0.9-1.fc17 (FEDORA-2013-3239)
Sokoban clone
--------------------------------------------------------------------------------
Update Information:
A new upstream version.
--------------------------------------------------------------------------------
ChangeLog:
* Sun Feb 24 2013 Martin Stransky <stransky(a)redhat.com> 0.9-1
- Updated to 0.9
--------------------------------------------------------------------------------
================================================================================
berusky2-data-0.7-1.fc17 (FEDORA-2013-3239)
A datafile for Berusky
--------------------------------------------------------------------------------
Update Information:
A new upstream version.
--------------------------------------------------------------------------------
ChangeLog:
* Sun Feb 24 2013 Martin Stransky <stransky(a)redhat.com> 0.7-1
- new upstream tarball (0.7)
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
c++-gtk-utils-2.0.15-2.fc17 (FEDORA-2013-3291)
A library for GTK+ programming with C++
--------------------------------------------------------------------------------
Update Information:
Fixed an error in the package summary
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Frederik Holden <frederik+fedora(a)frh.no> - 2.0.15-2
- Fixed an error in the package summary.
--------------------------------------------------------------------------------
================================================================================
createrepo-0.9.9-12.fc17 (FEDORA-2013-3276)
Creates a common metadata repository
--------------------------------------------------------------------------------
Update Information:
Fix the deadlock issue.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Zdenek Pavlas <zpavlas at redhat.com> - 0.9.9-12
- Fix the deadlock issue. BZ 856363
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #856363 - Issues with createrepo -v and sha1
https://bugzilla.redhat.com/show_bug.cgi?id=856363
--------------------------------------------------------------------------------
================================================================================
crypto-utils-2.4.1-39.fc17 (FEDORA-2013-3259)
SSL certificate and key management utilities
--------------------------------------------------------------------------------
Update Information:
Address CVE-2012-3504
--------------------------------------------------------------------------------
ChangeLog:
* Sat Feb 23 2013 Elio Maldonado <emaldona(a)redhat.com> - 2.4.1-39
- Resolves: rhbz#862430 - CVE-2012-3504 - insecure temporary file usage in genkey
* Thu Feb 7 2013 Jon Ciesla <limburgher(a)gmail.com> - 2.4.1-38
- Merge review fixes, BZ 225666.
* Thu Jan 17 2013 Elio Maldonado <emaldona(a)redhat.com> - 2.4.1-37
- Fix Bug 883618 - certwatch cron job library path - multilib
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.4.1-36
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Mon Jun 11 2012 Petr Pisar <ppisar(a)redhat.com> - 2.4.1-35
- Perl 5.16 rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #862430 - CVE-2012-3504 crypto-utils: insecure temporary file usage in genkey [fedora-all]
https://bugzilla.redhat.com/show_bug.cgi?id=862430
--------------------------------------------------------------------------------
================================================================================
fpaste-0.3.7.1-6.fc17 (FEDORA-2013-3306)
A simple tool for pasting info onto fpaste.org
--------------------------------------------------------------------------------
Update Information:
Make private url default and to use expire option
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Athmane Madjoudj <athmane(a)fedoraproject.org> 0.3.7.1-6
- Add a patch to make private url default and use expire option.
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #916707 - [RFE w/ PATCH] Use expire option and make private default
https://bugzilla.redhat.com/show_bug.cgi?id=916707
--------------------------------------------------------------------------------
================================================================================
gitstats-0-0.4.20130224git0843039.fc17 (FEDORA-2013-3218)
Generates statistics based on GIT repository activity
--------------------------------------------------------------------------------
Update Information:
Introducing gitstats, for generating statistics based about GIT activity.
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #914996 - Review Request: gitstats - Generates statistics based on GIT repository activity
https://bugzilla.redhat.com/show_bug.cgi?id=914996
--------------------------------------------------------------------------------
================================================================================
gperftools-2.0-9.fc17 (FEDORA-2013-3262)
Very fast malloc and performance analysis tools
--------------------------------------------------------------------------------
Update Information:
Update to SVN r190 to fix HEAPCHECK issue.
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Tom Callaway <spot(a)fedoraproject.org> - 2.0-9
- update to svn r190 (because google can't make releases)
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Aug 3 2012 Tom Callaway <spot(a)fedoraproject.org> - 2.0-7
- fix compile with glibc 2.16
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #915084 - Heap Check is broken
https://bugzilla.redhat.com/show_bug.cgi?id=915084
--------------------------------------------------------------------------------
================================================================================
gtick-0.5.1-1.fc17 (FEDORA-2013-3264)
Metronome application
--------------------------------------------------------------------------------
Update Information:
This update rebases gtick to version 0.5.1 which among other things supports pulseaudio as a backend and lets users choose their own metronome click sounds.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Nils Philippsen <nils(a)redhat.com> - 0.5.1-1
- enable external ticking sounds (build with libsndfile)
- don't crash if no valid "other" sound file is chosen
- delete old specfile metadata comments
* Wed Feb 27 2013 Dave Allan <dallan(a)redhat.com> - 0.5.1-1
- Updated to release 0.5.1.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.4.2-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Wed Oct 10 2012 Brendan Jones <brendan.jones.it(a)gmail.com> 0.4.2-9
- Modify desktop to use aoss
* Wed Oct 10 2012 Brendan Jones <brendan.jones.it(a)gmail.com> 0.4.2-8
- Add alsa-oss requires
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.4.2-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #808611 - gtick 0.5.1 is available
https://bugzilla.redhat.com/show_bug.cgi?id=808611
[ 2 ] Bug #855680 - fix for old Gtick bug?
https://bugzilla.redhat.com/show_bug.cgi?id=855680
--------------------------------------------------------------------------------
================================================================================
kernel-3.7.10-101.fc17 (FEDORA-2013-3252)
The Linux kernel
--------------------------------------------------------------------------------
Update Information:
Update to stable kernel 3.7.10 contains a number of important fixes across the tree.
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Justin M. Forbes <jforbes(a)redhat.com> - 3.7.10-101
- Linux v3.7.10
* Tue Feb 26 2013 Justin M. Forbes <jforbes(a)redhat.com>
- Avoid recursion in put_user_ns, potential overflow
* Tue Feb 26 2013 Josh Boyer <jwboyer(a)redhat.com>
- CVE-2013-1767 tmpfs: fix use-after-free of mempolicy obj (rhbz 915592,915716)
- Fix vmalloc_fault oops during lazy MMU (rhbz 914737)
* Mon Feb 25 2013 Josh Boyer <jwboyer(a)redhat.com>
- Honor dmesg_restrict for /dev/kmsg (rhbz 903192)
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #915592 - CVE-2013-1767 Kernel: tmpfs: fix use-after-free of mempolicy object
https://bugzilla.redhat.com/show_bug.cgi?id=915592
--------------------------------------------------------------------------------
================================================================================
latex2rtf-2.3.2a-1.fc17 (FEDORA-2013-3273)
LaTeX to RTF converter that handles equations, figures, and cross-references
--------------------------------------------------------------------------------
Update Information:
Update to newest stable release.
Update to newest stable release.
Update to newest stable release.
Update to newest stable release.
Update to newest stable release.
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Susi Lehtola <jussilehtola(a)fedoraproject.org> - 2.3.2a-1
- Update to 2.3.2a.
* Fri Feb 15 2013 Susi Lehtola <jussilehtola(a)fedoraproject.org> - 2.3.2-1
- Update to 2.3.2.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.3.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #915216 - latex2rtf-2.3.2a is available
https://bugzilla.redhat.com/show_bug.cgi?id=915216
[ 2 ] Bug #911531 - latex2rtf-2.3.2 is available
https://bugzilla.redhat.com/show_bug.cgi?id=911531
--------------------------------------------------------------------------------
================================================================================
libchewing-0.3.4-3.fc17 (FEDORA-2013-3258)
Intelligent phonetic input method library for Traditional Chinese
--------------------------------------------------------------------------------
Update Information:
- Fixed [Bug 913214] libchewing complains "no info dir entry" while installing
Add direntry in libchewing.texi so it can be listed under
Category "Localization"
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Ding-Yi Chen <dchen at redhat dot com> - 0.3.4-3
- Fixed [Bug 913214] libchewing complains "no info dir entry" while installing
Add direntry in libchewing.texi so it can be listed under
Category "Localization"
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #913214 - libchewing complains "no info dir entry" while installing
https://bugzilla.redhat.com/show_bug.cgi?id=913214
--------------------------------------------------------------------------------
================================================================================
libpinyin-0.8.1-1.fc17 (FEDORA-2013-3234)
Library to deal with pinyin
--------------------------------------------------------------------------------
Update Information:
Update to 0.8.1
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Peng Wu <pwu(a)redhat.com> - 0.8.1-1
- Update to 0.8.1
- Fixes pinyin_init crashes
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #901879 - [abrt] ibus-libpinyin-1.4.93-4.fc18: pinyin::ChewingLengthIndexLevel::load: Process /usr/libexec/ibus-engine-libpinyin was killed by signal 6 (SIGABRT)
https://bugzilla.redhat.com/show_bug.cgi?id=901879
--------------------------------------------------------------------------------
================================================================================
libvpx-1.2.0-1.fc17 (FEDORA-2013-3304)
VP8 Video Codec SDK
--------------------------------------------------------------------------------
Update Information:
Update to 1.2.0, fixes some bugs and is speed/optimize equivalent with 1.1.0.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Tom Callaway <spot(a)fedoraproject.org> - 1.2.0-1
- update to 1.2.0
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.1.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
mediawiki-1.19.3-2.fc17 (FEDORA-2013-3227)
A wiki engine
--------------------------------------------------------------------------------
Update Information:
Bring mediawiki up to date to fix multiple bugs, security holes, and bring new features.
The package should automatically attempt to upgrade your wiki, but please make sure to perform backups before updating. Special care may be required for MySQL based wikis. See bug 845818.
Read the main mediawiki web site for Release Notes for 1.17, 1.18, and 1.19.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Michael Cronenworth <mike(a)cchtml.com> - 1.19.3-2
- Fix upgrade path.
* Wed Feb 27 2013 Michael Cronenworth <mike(a)cchtml.com> - 1.19.3-1
- New upstream release.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.16.5-62
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.16.5-61
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #882325 - CVE-2012-5391 mediawiki: Vulnerable to session fixation attacks
https://bugzilla.redhat.com/show_bug.cgi?id=882325
--------------------------------------------------------------------------------
================================================================================
minisat2-2.2.0-5.fc17 (FEDORA-2013-3203)
Minimalistic SAT solver
--------------------------------------------------------------------------------
Update Information:
This update exposes the functionality of minisat as a library, for use by other applications. For those not building their own minisat-using applications, this update should function identically to the previous version.
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Jerry James <loganjerry(a)gmail.com> - 2.2.0-5
- Add a man page, courtesy of the Debian maintainers
- Build a shared library, and add -devel and -libs packages (bz 912190)
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.2.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.2.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #912190 - minisat2 to ship header files
https://bugzilla.redhat.com/show_bug.cgi?id=912190
--------------------------------------------------------------------------------
================================================================================
mtn-browse-1.10-2.fc17 (FEDORA-2013-3281)
Application for browsing Monotone VCS databases
--------------------------------------------------------------------------------
Update Information:
Update to latest stable version. See http://sourceforge.net/projects/mtn-browse/files/mtn-browse/1.10/ for the list of changes.
--------------------------------------------------------------------------------
ChangeLog:
* Tue Feb 19 2013 Thomas Moschny <thomas.moschny(a)gmx.de> - 1.10-2
- Fix requires filtering.
* Sun Feb 17 2013 Thomas Moschny <thomas.moschny(a)gmx.de> - 1.10-1
- Update to 1.10.
* Sun Feb 17 2013 Thomas Moschny <thomas.moschny(a)gmx.de> - 1.00-4
- Add BR on Pod::Usage.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.00-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
munin-2.0.11.1-2.fc17 (FEDORA-2013-3323)
Network-wide graphing framework (grapher/gatherer)
--------------------------------------------------------------------------------
Update Information:
Minor bug fixes
--------------------------------------------------------------------------------
ChangeLog:
* Fri Feb 22 2013 D. Johnson <fenris02(a)fedoraproject.org> - 2.0.11.1-2
- BZ# 913111 Removed R:webserver because it pulls boa .. and no clean way to
prefer apache.
- BZ# 917002 munin-asyncd should wait for munin-node
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #913111 - Remove webserver dependency from munin
https://bugzilla.redhat.com/show_bug.cgi?id=913111
[ 2 ] Bug #917002 - munin-asyncd should wait for munin-node
https://bugzilla.redhat.com/show_bug.cgi?id=917002
--------------------------------------------------------------------------------
================================================================================
opendkim-2.8.0-4.fc17 (FEDORA-2013-3209)
A DomainKeys Identified Mail (DKIM) milter to sign and/or verify mail
--------------------------------------------------------------------------------
Update Information:
Applied patch from upstream to fix libdb compatibility issues.
Update to newer 2.8.0 upstream source.
Update to newer 2.8.0 upstream source.
Update to newer 2.8.0 upstream source.
Update to newer 2.8.0 upstream source.
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Steve Jenkins <steve stevejenkins com> 2.8.0-4
- Added patch from upstream to fix libdb compatibility issues
* Tue Feb 26 2013 Steve Jenkins <steve stevejenkins com> 2.8.0-3
- Split into two spec files: systemd (F17+) and SysV (EL5-6)
- Removed leading / from unitdir variables
- Removed commented source lines
- Created comment sections for easy switching between systemd and SysV
* Mon Feb 25 2013 Steve Jenkins <steve stevejenkins com> 2.8.0-2
- Added / in front of unitdir variables
* Thu Feb 21 2013 Steve Jenkins <steve stevejenkins com> 2.8.0-1
- Happy Birthday to me! :)
- Updated to use newer upstream 2.8.0 source code
- Migration from SysV initscript to systemd unit file
- Added systemd build requirement
- Edited comments in default configuration files
- Changed default Canonicalization to relaxed/relaxed in config file
- Changed default values in EnvironmentFile
- Moved program startup options into EnvironmentFile
- Moved default key check and generation on startup to external script
- Removed AutoRestart directives from default config (systemd will handle)
- Incorporated additional variable names throughout spec file
- Added support for new opendkim-sysvinit package for legacy SysV systems
--------------------------------------------------------------------------------
================================================================================
packagedb-cli-1.4.1-1.fc17 (FEDORA-2013-3272)
A CLI for pkgdb
--------------------------------------------------------------------------------
Update Information:
Update to 1.4.1 which fixes bug #916581
Update to 1.4.0
Update to 1.4.0
Update to 1.4.0
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Pierre-Yves Chibon <pingou(a)pingoured.fr> - 1.4.1-1
- Update to 1.4.1
- Fixes bug #916581
* Thu Feb 21 2013 Pierre-Yves Chibon <pingou(a)pingoured.fr> - 1.4.0-1
- Update to 1.4.0
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.3.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #916581 - Any modify operation results in "Error: global name 'arg' is not defined"
https://bugzilla.redhat.com/show_bug.cgi?id=916581
--------------------------------------------------------------------------------
================================================================================
perl-Data-Validate-IP-0.18-2.fc17 (FEDORA-2013-3224)
Perl IP address validation routines
--------------------------------------------------------------------------------
Update Information:
Fixing summary sentence
--------------------------------------------------------------------------------
ChangeLog:
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #916154 - Bad summary
https://bugzilla.redhat.com/show_bug.cgi?id=916154
--------------------------------------------------------------------------------
================================================================================
perl-Locale-Codes-3.25-1.fc17 (FEDORA-2013-3293)
Distribution of modules to handle locale codes
--------------------------------------------------------------------------------
Update Information:
Syria alias added.
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Petr Pisar <ppisar(a)redhat.com> - 3.25-1
- 3.25 bump
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #916959 - perl-Locale-Codes-3.25 is available
https://bugzilla.redhat.com/show_bug.cgi?id=916959
--------------------------------------------------------------------------------
================================================================================
perl-Net-SFTP-Foreign-1.74.05-3.fc17 (FEDORA-2013-3236)
SSH File Transfer Protocol client
--------------------------------------------------------------------------------
Update Information:
Added missing dependencies
--------------------------------------------------------------------------------
================================================================================
perl-qpid_proton-0.4-1.fc17 (FEDORA-2013-3302)
Perl language bindings for Qpid Proton
--------------------------------------------------------------------------------
Update Information:
Rebased on Proton 0.4.
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Darryl L. Pierce <dpierce(a)rehdat.com> - 0.4-1
- Rebased on Proton 0.4.
--------------------------------------------------------------------------------
================================================================================
phoronix-test-suite-4.4.0-1.fc17 (FEDORA-2013-3249)
An Automated, Open-Source Testing Framework
--------------------------------------------------------------------------------
Update Information:
new upstream release
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Markus Mayer <lotharlutz(a)gmx.de> - 4.4.0-1
- new upstream
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 4.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
pidgin-latex-1.5.0-1.fc17 (FEDORA-2013-3246)
Use LaTeX formulas in your pidgin conversations
--------------------------------------------------------------------------------
Update Information:
Update to newest stable release.
--------------------------------------------------------------------------------
ChangeLog:
* Fri Feb 15 2013 Susi Lehtola <jussilehtola(a)fedoraproject.org> - 1.5.0-1
- Update to 1.5.0.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.4.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #911089 - pidgin-latex-1.5.0 is available
https://bugzilla.redhat.com/show_bug.cgi?id=911089
--------------------------------------------------------------------------------
================================================================================
potrace-1.11-1.fc17 (FEDORA-2013-3319)
Transform bitmaps into vector graphics
--------------------------------------------------------------------------------
Update Information:
Update to newest stable release.
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 20 2013 Susi Lehtola <jussilehtola(a)fedoraproject.org> - 1.11-1
- Update to 1.11.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.10-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.10-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #913023 - potrace-1.11 is available
https://bugzilla.redhat.com/show_bug.cgi?id=913023
--------------------------------------------------------------------------------
================================================================================
python-kajiki-0.3.5-1.fc17 (FEDORA-2013-3198)
Really fast well-formed xml templates
--------------------------------------------------------------------------------
Update Information:
Initial packaging.
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #914793 - Review Request: python-kajiki - Really fast well-formed xml templates
https://bugzilla.redhat.com/show_bug.cgi?id=914793
--------------------------------------------------------------------------------
================================================================================
python-nmap-0.2.7-1.fc17 (FEDORA-2013-3280)
A python library which helps in using nmap port scanner
--------------------------------------------------------------------------------
Update Information:
* Fri Mar 01 2013 Fabian Affolter <mail(a)fabian-affolter.ch> - 0.2.7-1
- Updated to latest upstream version 0.2.7
--------------------------------------------------------------------------------
ChangeLog:
--------------------------------------------------------------------------------
================================================================================
python-pkgwat-api-0.7-2.fc17 (FEDORA-2013-3215)
Python API for querying the fedora packages webapp
--------------------------------------------------------------------------------
Update Information:
New .get api function.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Ralph Bean <rbean(a)redhat.com> - 0.7-2
- Patch to fix syntax error on python3.2.
* Thu Feb 28 2013 Ralph Bean <rbean(a)redhat.com> - 0.7-1
- Latest upstream with a new "get" function.
* Wed Feb 27 2013 Ralph Bean <rbean(a)redhat.com> - 0.6-1
- Latest upstream with new functions for querying relationships.
- Removed spurious newlines in .spec file.
- Modernized with_python3 conditional.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
python-requests-1.1.0-3.fc17 (FEDORA-2013-3287)
HTTP library, written in Python, for human beings
--------------------------------------------------------------------------------
Update Information:
Unbundled libraries
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Ralph Bean <rbean(a)redhat.com> - 1.1.0-3
- Unbundled python-urllib3. Using system python-urllib3 now.
- Conditionally include python-ordereddict for el6.
* Wed Feb 27 2013 Ralph Bean <rbean(a)redhat.com> - 1.1.0-2
- Unbundled python-charade/chardet. Using system python-chardet now.
- Removed deprecated comments and actions against oauthlib unbundling.
Those are no longer necessary in 1.1.0.
- Added links to bz tickets over Patch declarations.
* Tue Feb 26 2013 Ralph Bean <rbean(a)redhat.com> - 1.1.0-1
- Latest upstream.
- Relicense to ASL 2.0 with upstream.
- Removed cookie handling patch (fixed in upstream tarball).
- Updated cert unbundling patch to match upstream.
- Added check section, but left it commented out for koji.
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #915476 - python-requests 1.1.0 is available
https://bugzilla.redhat.com/show_bug.cgi?id=915476
[ 2 ] Bug #904623 - bundled libraries
https://bugzilla.redhat.com/show_bug.cgi?id=904623
--------------------------------------------------------------------------------
================================================================================
python-tw2-core-2.1.5-1.fc17 (FEDORA-2013-3325)
Web widget creation toolkit based on TurboGears widgets
--------------------------------------------------------------------------------
Update Information:
Latest upstream
--------------------------------------------------------------------------------
ChangeLog:
* Fri Feb 22 2013 Ralph Bean <rbean(a)redhat.com> - 2.1.5-1
- Latest upstream
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.5-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Aug 6 2012 Ralph Bean <rbean(a)redhat.com> - 2.0.5-4
- Test change for fedmsg hook.
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.5-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #828254 - python-tw2-core-2.1.5 is available
https://bugzilla.redhat.com/show_bug.cgi?id=828254
--------------------------------------------------------------------------------
================================================================================
python-tw2-core-2.1.5-3.fc17 (FEDORA-2013-3202)
Web widget creation toolkit based on TurboGears widgets
--------------------------------------------------------------------------------
Update Information:
Latest upstream
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Ralph Bean <rbean(a)redhat.com> - 2.1.5-3
- Patch for python-markupsafe usage on el6.
* Thu Feb 28 2013 Ralph Bean <rbean(a)redhat.com> - 2.1.5-2
- Added requirement on python-markupsafe.
- Added el6 conditional requirement on python-ordereddict.
* Fri Feb 22 2013 Ralph Bean <rbean(a)redhat.com> - 2.1.5-1
- Latest upstream
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.5-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Aug 6 2012 Ralph Bean <rbean(a)redhat.com> - 2.0.5-4
- Test change for fedmsg hook.
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.5-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #828254 - python-tw2-core-2.1.5 is available
https://bugzilla.redhat.com/show_bug.cgi?id=828254
--------------------------------------------------------------------------------
================================================================================
python-tw2-forms-2.1.4.1-2.fc17 (FEDORA-2013-3305)
Forms for ToscaWidgets2
--------------------------------------------------------------------------------
Update Information:
Latest upstream
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Ralph Bean <rbean(a)redhat.com> - 2.1.4.1-2
- Renamed README from .txt to .rst.
* Fri Feb 22 2013 Ralph Bean <rbean(a)redhat.com> - 2.1.4.1-1
- Latest upstream.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #828254 - python-tw2-core-2.1.5 is available
https://bugzilla.redhat.com/show_bug.cgi?id=828254
--------------------------------------------------------------------------------
================================================================================
python-tw2-sqla-2.0.6-2.fc17 (FEDORA-2013-3200)
SQLAlchemy database layer for ToscaWidgets2
--------------------------------------------------------------------------------
Update Information:
Latest upstream
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Ralph Bean <rbean(a)redhat.com> - 2.0.6-2
- Conditionalize tests for rawhide.
* Fri Feb 22 2013 Ralph Bean <rbean(a)redhat.com> - 2.0.6-1
- Latest upstream.
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #828254 - python-tw2-core-2.1.5 is available
https://bugzilla.redhat.com/show_bug.cgi?id=828254
[ 2 ] Bug #914417 - python-tw2-sqla: FTBFS in rawhide
https://bugzilla.redhat.com/show_bug.cgi?id=914417
--------------------------------------------------------------------------------
================================================================================
python-urllib3-1.5-3.fc17 (FEDORA-2013-3213)
Python HTTP library with thread-safe connection pooling and file post
--------------------------------------------------------------------------------
Update Information:
Initial packaging.
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #907688 - Review Request: python-urllib3 - Python HTTP library with thread-safe connection pooling and file post
https://bugzilla.redhat.com/show_bug.cgi?id=907688
--------------------------------------------------------------------------------
================================================================================
python-urllib3-1.5-4.fc17 (FEDORA-2013-3220)
Python HTTP library with thread-safe connection pooling and file post
--------------------------------------------------------------------------------
Update Information:
Fix overwritten Accept header when proxy is used
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #916725 - running fedora-easy-karma returns a python error
https://bugzilla.redhat.com/show_bug.cgi?id=916725
--------------------------------------------------------------------------------
================================================================================
python-urllib3-1.5-5.fc17 (FEDORA-2013-3285)
Python HTTP library with thread-safe connection pooling and file post
--------------------------------------------------------------------------------
Update Information:
* Unbundle python-backports-ssl_match_hostname. Package now has no bundled libraries
--------------------------------------------------------------------------------
================================================================================
rednotebook-1.7.0-1.fc17 (FEDORA-2013-3267)
A desktop diary
--------------------------------------------------------------------------------
Update Information:
* Fri Mar 01 2013 Fabian Affolter <mail(a)fabian-affolter.ch> - 1.7.0-1
- Updated to new upstream version 1.7.0
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Fabian Affolter <mail(a)fabian-affolter.ch> - 1.7.0-1
- Updated to new upstream version 1.7.0
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.6.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
rekonq-2.2-1.fc17 (FEDORA-2013-3278)
KDE browser based on QtWebkit
--------------------------------------------------------------------------------
Update Information:
Rekonq 2.2 release.
See http://adjamblog.wordpress.com/2013/02/28/rekonq-2-2/
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Jan Grulich <jgrulich(a)redhat.com> 2.2-1
- 2.2
--------------------------------------------------------------------------------
================================================================================
rubygem-httpclient-2.3.2-4.fc17 (FEDORA-2013-3257)
HTTP Client interface for ruby
--------------------------------------------------------------------------------
Update Information:
Newpackage
--------------------------------------------------------------------------------
================================================================================
spe-0.8.4.h-12.fc17 (FEDORA-2013-3260)
Python IDE with UML,PyChecker,Debugger,GUI design,Blender & more
--------------------------------------------------------------------------------
Update Information:
Switch to using system pychecker.
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Jon Ciesla <limburgher(a)gmail.com> - 0.8.4.h-12
- Unbundle pychecker to fix 912880.
* Tue Jan 29 2013 Toshio Kuratomi <toshio(a)fedoraproject.org> 0.8.4.h-11
- Add a patch so spe works with python-pillow
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.8.4.h-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #912880 - [abrt] spe-0.8.4.h-10.fc18: symbols.py:13:<module>:ImportError: cannot import name SC_GLOBAL
https://bugzilla.redhat.com/show_bug.cgi?id=912880
--------------------------------------------------------------------------------
================================================================================
sudo-1.8.6p7-1.fc17 (FEDORA-2013-3270)
Allows restricted root access for specified users
--------------------------------------------------------------------------------
Update Information:
- update to 1.8.6p7
- fixes CVE-2013-1775 and CVE-2013-1776
- fixed several packaging issues (thanks to ville.skytta(a)iki.fi)
- build with system zlib.
- let rpmbuild strip libexecdir/*.so.
- own the %%{_docdir}/sudo-* dir.
- fix some rpmlint warnings (spaces vs tabs, unescaped macros).
- fix bogus %%changelog dates.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Daniel Kopecek <dkopecek(a)redhat.com> - 1.8.6p7-1
- update to 1.8.6p7
- fixes CVE-2013-1775 and CVE-2013-1776
- fixed several packaging issues (thanks to ville.skytta(a)iki.fi)
- build with system zlib.
- let rpmbuild strip libexecdir/*.so.
- own the %{_docdir}/sudo-* dir.
- fix some rpmlint warnings (spaces vs tabs, unescaped macros).
- fix bogus %changelog dates.
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #916363 - CVE-2013-1775 sudo: authentication bypass via reset system clock
https://bugzilla.redhat.com/show_bug.cgi?id=916363
[ 2 ] Bug #916365 - CVE-2013-1776 sudo: bypass of tty_tickets constraints
https://bugzilla.redhat.com/show_bug.cgi?id=916365
--------------------------------------------------------------------------------
================================================================================
transmission-2.77-1.fc17 (FEDORA-2013-3238)
A lightweight GTK+ BitTorrent client
--------------------------------------------------------------------------------
Update Information:
https://trac.transmissionbt.com/wiki/Changes#version-2.77
--------------------------------------------------------------------------------
ChangeLog:
* Tue Feb 19 2013 Rahul Sundaram <sundaram(a)fedoraproject.org> - 2.77-1
- upstream release 2.77
- https://trac.transmissionbt.com/wiki/Changes#version-2.77
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.76-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--------------------------------------------------------------------------------
================================================================================
tzdata-2012j-2.fc17 (FEDORA-2013-3286)
Timezone data
--------------------------------------------------------------------------------
Update Information:
- DST in Chile will end on 2013-04-28
--------------------------------------------------------------------------------
ChangeLog:
* Wed Feb 27 2013 Petr Machata <pmachata(a)redhat.com> - 2012j-2
- DTS in Chile will end on 2013-04-28
(0016-Chile-is-changing-its-DST-rules.patch)
--------------------------------------------------------------------------------
================================================================================
ufraw-0.19-1.fc17 (FEDORA-2013-3242)
Raw image data retrieval tool for digital cameras
--------------------------------------------------------------------------------
Update Information:
This update rebases ufraw to version 0.19 which contains a lot of bugfixes.
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Nils Philippsen <nils(a)redhat.com> - 0.19-1
- version 0.19
- drop obsolete patches
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.18-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Jan 21 2013 Adam Tkac <atkac redhat com> - 0.18-16
- rebuild due to "jpeg8-ABI" feature drop
* Fri Dec 21 2012 Adam Tkac <atkac redhat com> - 0.18-15
- rebuild against new libjpeg
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #916556 - ufraw-0.19 is available
https://bugzilla.redhat.com/show_bug.cgi?id=916556
--------------------------------------------------------------------------------
================================================================================
viewvc-1.1.18-1.fc17 (FEDORA-2013-3222)
Browser interface for CVS and SVN version control repositories
--------------------------------------------------------------------------------
Update Information:
Update to 1.1.18.
- fix exception raised by BDB-backed SVN repositories (issue #519)
- hide revision-less files when rcsparse is in use
- include branchpoints in branch views using rcsparse (issue #347)
- miscellaneous cvsdb improvements:
- add --port option to make-database (issue #521)
- explicitly name columns in queries (issue #522)
- update MySQL syntax to avoid discontinued "TYPE=" terms
--------------------------------------------------------------------------------
ChangeLog:
* Fri Mar 1 2013 Bojan Smojver <bojan(a)rexursive.com> - 1.1.18-1
- bump up to 1.1.18
* Wed Oct 31 2012 Bojan Smojver <bojan(a)rexursive.com> - 1.1.17-2
- fix bug #871492
--------------------------------------------------------------------------------
================================================================================
xterm-291-1.fc17 (FEDORA-2013-3250)
Terminal emulator for the X Window System
--------------------------------------------------------------------------------
Update Information:
This is an update to the latest bugfix release.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Feb 28 2013 Miroslav Lichvar <mlichvar(a)redhat.com> 291-1
- update to 291
* Sun Feb 10 2013 Parag Nemade <paragn AT fedoraproject DOT org> - 289-2
- Remove vendor tag from desktop file as per https://fedorahosted.org/fesco/ticket/1077
* Fri Feb 8 2013 Miroslav Lichvar <mlichvar(a)redhat.com> 289-1
- update to 289
* Thu Jan 10 2013 Miroslav Lichvar <mlichvar(a)redhat.com> 288-1
- update to 288
* Mon Nov 26 2012 Miroslav Lichvar <mlichvar(a)redhat.com> 287-1
- update to 287
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #874327 - [abrt] xterm-284-1.fc17: AlternateScroll: Process /usr/bin/xterm was killed by signal 11 (SIGSEGV)
https://bugzilla.redhat.com/show_bug.cgi?id=874327
--------------------------------------------------------------------------------
11 years, 3 months
kalev pushed to flatpaks/flatpak-runtime (f38). "Switch to
Freedesktop SDK 20.08 and GNOME SDK 3.38"
by notifications@fedoraproject.org
Notification time stamped 2023-03-18 22:02:09 UTC
From 3bd65311cfdde88db54c2b70ee6479d336b5fcad Mon Sep 17 00:00:00 2001
From: Kalev Lember <klember(a)redhat.com>
Date: Oct 01 2020 21:05:51 +0000
Subject: Switch to Freedesktop SDK 20.08 and GNOME SDK 3.38
---
diff --git a/README.md b/README.md
index 02e5383..ce15401 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,10 @@ Updating
*Prequisites*: you need to have the following "upstream" runtimes installed:
-* `org.freedesktop.Platform/x86_64/19.08`
-* `org.freedesktop.Sdk/x86_64/19.08`
-* `org.gnome.Platform/x86_64/3.36`
-* `org.gnome.Sdk/x86_64/3.36`
+* `org.freedesktop.Platform/x86_64/20.08`
+* `org.freedesktop.Sdk/x86_64/20.08`
+* `org.gnome.Platform/x86_64/3.38`
+* `org.gnome.Sdk/x86_64/3.38`
You also need `python3-jinja2` and possibly a few other Python
packages installed.
diff --git a/flatpak-runtime.yaml b/flatpak-runtime.yaml
index 51216cf..7275544 100644
--- a/flatpak-runtime.yaml
+++ b/flatpak-runtime.yaml
@@ -22,6 +22,7 @@ data:
- abattis-cantarell-fonts
- acl
- libacl
+ - adobe-source-code-pro-fonts
- adwaita-cursor-theme
- adwaita-icon-theme
- adwaita-qt5
@@ -40,7 +41,6 @@ data:
- basesystem
- bash
- bluez-libs
- - brotli
- libbrotli
- bubblewrap
- bzip2
@@ -118,6 +118,7 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libstdc++
- libtsan
@@ -147,7 +148,6 @@ data:
- nss_hesiod
- gmp
- gmp-c++
- - gmp-devel
- adwaita-gtk2-theme
- gnome-themes-extra
- gnu-free-fonts-common
@@ -159,6 +159,7 @@ data:
- gnutls
- gnutls-c++
- gobject-introspection
+ - golang-github-pierrec-lz4
- google-carlito-fonts
- gpgme
- gpgmepp
@@ -250,8 +251,6 @@ data:
- libassuan
- libasyncns
- libavc1394
- - libcanberra
- - libcanberra-gtk3
- libcap
- libcap-ng
- libdatrie
@@ -307,6 +306,7 @@ data:
- libpciaccess
- libpng
- libproxy
+ - python3-libproxy
- libpsl
- psl
- libpwquality
@@ -329,7 +329,6 @@ data:
- libssh-config
- libstemmer
- libtasn1
- - libtdb
- libthai
- libtheora
- libtiff
@@ -368,6 +367,7 @@ data:
- lua-posix
- device-mapper
- device-mapper-libs
+ - lz4
- lz4-libs
- lzip
- ModemManager-glib
@@ -409,6 +409,7 @@ data:
- openldap
- openssl-libs
- opus
+ - opusfile
- orc
- p11-kit
- p11-kit-server
@@ -425,8 +426,9 @@ data:
- pinentry
- pinentry-gnome3
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-libs
- pixman
- libpkgconf
- pkgconf
@@ -445,10 +447,10 @@ data:
- python3-markdown
- python3-markupsafe
- python-pip-wheel
- - python3-pip
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python-unversioned-command
- python3
- python3-libs
- qgnomeplatform
@@ -498,7 +500,6 @@ data:
- shadow-utils
- shared-mime-info
- sord
- - sound-theme-freedesktop
- soundtouch
- speex
- speexdsp
@@ -512,6 +513,7 @@ data:
- systemd-rpm-macros
- taglib
- tar
+ - libtracker-sparql3
- twolame-libs
- tzdata
- tzdata-java
@@ -523,6 +525,7 @@ data:
- libuuid
- util-linux
- uuidd
+ - libdvbv5
- libv4l
- libvmaf
- vulkan-loader
@@ -535,6 +538,7 @@ data:
- webkit2gtk3
- webkit2gtk3-jsc
- webrtc-audio-processing
+ - wget
- which
- woff2
- wpebackend-fdo
@@ -610,9 +614,7 @@ data:
- libdav1d
- dbus
- dbus-common
- - dbus-daemon
- dbus-libs
- - dbus-tools
- dbus-broker
- dconf
- dejavu-sans-fonts
@@ -655,6 +657,7 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libstdc++
- libtsan
@@ -681,7 +684,6 @@ data:
- nss_hesiod
- gmp
- gmp-c++
- - gmp-devel
- adwaita-gtk2-theme
- gnome-themes-extra
- gnu-free-fonts-common
@@ -693,6 +695,7 @@ data:
- gnutls
- gnutls-c++
- gobject-introspection
+ - golang-github-pierrec-lz4
- google-carlito-fonts
- gpgme
- gpgmepp
@@ -834,6 +837,7 @@ data:
- libpciaccess
- libpng
- libproxy
+ - python3-libproxy
- libpsl
- psl
- libpwquality
@@ -889,6 +893,7 @@ data:
- lua-libs
- device-mapper
- device-mapper-libs
+ - lz4
- lz4-libs
- lzip
- ModemManager-glib
@@ -923,9 +928,11 @@ data:
- nss-util
- ocl-icd
- openal-soft
+ - openjpeg2
- openldap
- openssl-libs
- opus
+ - opusfile
- orc
- p11-kit
- p11-kit-server
@@ -940,8 +947,9 @@ data:
- pcre2-syntax
- pcre2-utf16
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-libs
- pixman
- libpkgconf
- pkgconf
@@ -957,10 +965,10 @@ data:
- python3-markdown
- python3-markupsafe
- python-pip-wheel
- - python3-pip
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python-unversioned-command
- python3
- python3-libs
- qgnomeplatform
@@ -1033,6 +1041,7 @@ data:
- libuuid
- util-linux
- uuidd
+ - libdvbv5
- libv4l
- libvmaf
- vulkan-loader
@@ -1043,6 +1052,7 @@ data:
- libwayland-egl
- libwayland-server
- webrtc-audio-processing
+ - wget
- which
- woff2
- xcb-proto
@@ -1073,6 +1083,10 @@ data:
- acl
- libacl
- libacl-devel
+ - adobe-mappings-cmap
+ - adobe-mappings-cmap-deprecated
+ - adobe-mappings-pdf
+ - adobe-source-code-pro-fonts
- adwaita-cursor-theme
- adwaita-icon-theme
- adwaita-icon-theme-devel
@@ -1118,6 +1132,7 @@ data:
- bzip2
- bzip2-devel
- bzip2-libs
+ - python3-Cython
- ca-certificates
- cairo
- cairo-devel
@@ -1135,7 +1150,6 @@ data:
- clang-libs
- clang-tools-extra
- git-clang-format
- - clang10-libs
- clutter
- clutter-devel
- clutter-gst3
@@ -1179,7 +1193,6 @@ data:
- dbus-tools
- dbus-broker
- dconf
- - dconf-devel
- dejavu-sans-fonts
- dejavu-sans-mono-fonts
- dejavu-serif-fonts
@@ -1189,6 +1202,7 @@ data:
- docbook-style-dsssl
- docbook-style-xsl
- docbook-utils
+ - doxygen
- dwz
- e2fsprogs-devel
- e2fsprogs-libs
@@ -1257,6 +1271,7 @@ data:
- cpp
- gcc
- gcc-c++
+ - gcc-gdb-plugin
- gcc-gfortran
- libasan
- libatomic
@@ -1265,6 +1280,7 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libquadmath-devel
- libstdc++
@@ -1274,6 +1290,7 @@ data:
- gcr
- gcr-base
- gcr-devel
+ - gd
- gdb
- gdb-gdbserver
- gdb-headless
@@ -1293,6 +1310,7 @@ data:
- libtextstyle
- libtextstyle-devel
- ghc-srpm-macros
+ - libgs
- giflib
- giflib-devel
- git
@@ -1316,6 +1334,8 @@ data:
- nscd
- nss_db
- nss_hesiod
+ - glslang
+ - glslang-devel
- gmp
- gmp-c++
- gmp-devel
@@ -1335,8 +1355,9 @@ data:
- go-srpm-macros
- gobject-introspection
- gobject-introspection-devel
- - golang-github-docker-distribution
+ - golang-github-pierrec-lz4
- google-carlito-fonts
+ - google-droid-sans-fonts
- gperf
- gpgme
- gpgme-devel
@@ -1347,6 +1368,7 @@ data:
- graphene-devel
- graphite2
- graphite2-devel
+ - graphviz
- grep
- groff
- groff-base
@@ -1366,7 +1388,6 @@ data:
- gstreamer1-plugins-good-gtk
- gtk-doc
- gtk2
- - gtk2-devel
- gtk2-immodules
- gtk-update-icon-cache
- gtk3
@@ -1375,6 +1396,7 @@ data:
- gtk3-immodules
- gtksourceview4
- gtksourceview4-devel
+ - gts
- guile
- guile22
- gupnp
@@ -1415,6 +1437,7 @@ data:
- jasper-libs
- java-11-openjdk-headless
- javapackages-filesystem
+ - jbig2dec-libs
- jbigkit-libs
- jq
- jq-devel
@@ -1425,6 +1448,7 @@ data:
- qt-settings
- kernel-headers
- kernel-srpm-macros
+ - perf
- keyutils-libs
- keyutils-libs-devel
- kmod-libs
@@ -1437,6 +1461,7 @@ data:
- lame-devel
- lame-libs
- langpacks-core-font-en
+ - lasi
- lcms2
- lcms2-devel
- lcms2-utils
@@ -1453,6 +1478,7 @@ data:
- libXScrnSaver-devel
- libXau
- libXau-devel
+ - libXaw
- libXcomposite
- libXcomposite-devel
- libXcursor
@@ -1484,8 +1510,6 @@ data:
- libXtst-devel
- libXv
- libXv-devel
- - libXvMC
- - libXvMC-devel
- libXxf86vm
- libXxf86vm-devel
- libappstream-glib
@@ -1498,16 +1522,11 @@ data:
- libassuan-devel
- libasyncns
- libavc1394
- - libcanberra
- - libcanberra-devel
- - libcanberra-gtk2
- - libcanberra-gtk3
- libcap
- libcap-devel
- libcap-ng
- libcbor
- libclc
- - libclc-devel
- libdatrie
- libdatrie-devel
- libdb
@@ -1532,6 +1551,7 @@ data:
- libffi
- libffi-devel
- libfido2
+ - libfontenc
- libgcrypt
- libgcrypt-devel
- libgdither
@@ -1551,6 +1571,8 @@ data:
- libidn2
- libidn2-devel
- libiec61883
+ - libijs
+ - libimagequant
- libinput
- libinput-devel
- libipt
@@ -1582,6 +1604,7 @@ data:
- libogg
- libogg-devel
- libopenmpt
+ - libpaper
- libpcap
- libpciaccess
- libpciaccess-devel
@@ -1591,10 +1614,12 @@ data:
- libpng-devel
- libproxy
- libproxy-devel
+ - python3-libproxy
- libpsl
- libpsl-devel
- psl
- libpwquality
+ - libraqm
- libraw1394
- librsvg2
- librsvg2-devel
@@ -1618,13 +1643,13 @@ data:
- libsoup
- libsoup-devel
- libsrtp
+ - libsrtp-devel
- libssh
- libssh-config
- libstemmer
- libtasn1
- libtasn1-devel
- libtasn1-tools
- - libtdb
- libthai
- libthai-devel
- libtheora
@@ -1682,22 +1707,26 @@ data:
- libyaml
- lilv
- lksctp-tools
+ - lld
+ - lld-devel
+ - lld-libs
- llvm
- llvm-devel
- llvm-libs
- llvm-static
- llvm-test
- - llvm10-libs
- lua
- lua-libs
- lua-posix
+ - lua-srpm-macros
- device-mapper
- device-mapper-libs
+ - lz4
+ - lz4-devel
- lz4-libs
- lzip
- ModemManager-glib
- m4
- - mailcap
- make
- mallard-rng
- man-db
@@ -1722,8 +1751,6 @@ data:
- mesa-libGLU
- meson
- mlocate
- - mozjs68
- - mozjs68-devel
- mozjs78
- mozjs78-devel
- mpfr
@@ -1740,6 +1767,7 @@ data:
- ncurses-c++-libs
- ncurses-devel
- ncurses-libs
+ - netpbm
- nettle
- nettle-devel
- libnghttp2
@@ -1760,6 +1788,7 @@ data:
- nss-tools
- nss-util
- nss-util-devel
+ - numactl-libs
- ocaml-srpm-macros
- ocl-icd
- ocl-icd-devel
@@ -1770,6 +1799,7 @@ data:
- openal-soft-examples
- openblas-srpm-macros
- opencl-headers
+ - opencsd
- openjade
- openjpeg2
- openjpeg2-devel
@@ -1784,6 +1814,8 @@ data:
- openssl-perl
- opus
- opus-devel
+ - opusfile
+ - opusfile-devel
- orc
- orc-compiler
- orc-devel
@@ -1808,28 +1840,40 @@ data:
- pcre2-syntax
- pcre2-utf16
- pcre2-utf32
+ - perl
+ - perl-Attribute-Handlers
- perl-AutoLoader
- perl-AutoSplit
- perl-B
- perl-Benchmark
- perl-Class-Struct
+ - perl-Config-Extensions
+ - perl-DBM_Filter
+ - perl-Devel-Peek
+ - perl-Devel-SelfStubber
- perl-DirHandle
- perl-Dumpvalue
- perl-DynaLoader
- perl-English
- perl-Errno
- perl-ExtUtils-Constant
+ - perl-ExtUtils-Embed
+ - perl-ExtUtils-Miniperl
- perl-Fcntl
- perl-File-Basename
- perl-File-Compare
- perl-File-Copy
+ - perl-File-DosGlob
- perl-File-Find
- perl-File-stat
+ - perl-FileCache
- perl-FileHandle
- perl-FindBin
+ - perl-GDBM_File
- perl-Getopt-Std
- perl-Hash-Util
- perl-Hash-Util-FieldHash
+ - perl-I18N-Collate
- perl-I18N-LangTags
- perl-I18N-Langinfo
- perl-IO
@@ -1837,34 +1881,68 @@ data:
- perl-IPC-Open3
- perl-Locale-Maketext-Simple
- perl-Math-Complex
+ - perl-Memoize
+ - perl-Module-Loaded
+ - perl-NDBM_File
+ - perl-NEXT
+ - perl-Net
- perl-Net-Ping
+ - perl-ODBM_File
- perl-Opcode
- perl-POSIX
+ - perl-Pod-Functions
- perl-Pod-Html
- perl-Safe
+ - perl-Search-Dict
- perl-SelectSaver
+ - perl-SelfLoader
- perl-Symbol
- perl-Sys-Hostname
+ - perl-Term-Complete
- perl-Term-ReadLine
+ - perl-Test
+ - perl-Text-Abbrev
+ - perl-Thread
+ - perl-Thread-Semaphore
- perl-Tie
+ - perl-Tie-File
+ - perl-Tie-Memoize
+ - perl-Tie-RefHash
+ - perl-Time
+ - perl-Time-Piece
+ - perl-Unicode-UCD
- perl-User-pwent
- perl-autouse
- perl-base
+ - perl-blib
+ - perl-debugger
+ - perl-deprecate
- perl-devel
- perl-diagnostics
+ - perl-doc
+ - perl-encoding-warnings
+ - perl-fields
+ - perl-filetest
- perl-if
- perl-interpreter
+ - perl-less
- perl-lib
- perl-libnetcfg
- perl-libs
- perl-locale
- perl-macros
+ - perl-meta-notation
- perl-mro
+ - perl-open
- perl-overload
- perl-overloading
+ - perl-ph
+ - perl-sigtrap
+ - perl-sort
- perl-subs
- perl-utils
- perl-vars
+ - perl-vmsish
- perl-Algorithm-Diff
- perl-Archive-Tar
- perl-Archive-Zip
@@ -1877,22 +1955,22 @@ data:
- perl-Compress-Raw-Bzip2
- perl-Compress-Raw-Lzma
- perl-Compress-Raw-Zlib
+ - perl-Config-Perl-V
- perl-DBD-SQLite
- perl-DBI
- - perl-Data-Dump
+ - perl-DB_File
- perl-Data-Dumper
- perl-Data-OptList
- perl-Data-Section
- perl-Devel-PPPort
- perl-Devel-Size
- perl-Digest
- - perl-Digest-HMAC
- perl-Digest-MD5
- perl-Digest-SHA
- - perl-Digest-SHA1
- perl-Encode
- perl-Encode-devel
- - perl-Encode-Locale
+ - perl-encoding
+ - perl-Env
- perl-Error
- perl-Exporter
- perl-ExtUtils-CBuilder
@@ -1902,54 +1980,45 @@ data:
- perl-ExtUtils-MakeMaker
- perl-ExtUtils-Manifest
- perl-ExtUtils-ParseXS
+ - perl-File-Fetch
- perl-File-HomeDir
- - perl-File-Listing
- perl-File-Path
- perl-File-Temp
- perl-File-Which
- - perl-Getopt-ArgvFile
+ - perl-Filter
+ - perl-Filter-Simple
- perl-Getopt-Long
- - perl-HTML-Parser
- - perl-HTML-Tagset
- - perl-HTTP-Cookies
- - perl-HTTP-Date
- - perl-HTTP-Message
- - perl-HTTP-Negotiate
- perl-HTTP-Tiny
- perl-IO-Compress
- perl-IO-Compress-Lzma
- - perl-IO-HTML
- perl-IO-Socket-IP
- - perl-IO-Socket-SSL
- perl-IPC-Cmd
+ - perl-IPC-SysV
+ - perl-IPC-System-Simple
+ - perl-Importer
- perl-JSON-PP
- - perl-LWP-MediaTypes
- perl-Locale-Maketext
- perl-MIME-Base64
- perl-MRO-Compat
- perl-Math-BigInt
+ - perl-Math-BigInt-FastCalc
+ - perl-Math-BigRat
- perl-Module-Build
- perl-Module-CoreList
- perl-Module-CoreList-tools
- perl-Module-Load
- perl-Module-Load-Conditional
- perl-Module-Metadata
- - perl-Module-ScanDeps
- - perl-Module-Signature
- - perl-NTLM
- - perl-Net-HTTP
- - perl-Net-SSLeay
- - perl-PAR
- - perl-PAR-Dist
- - perl-PAR-Packer
+ - perl-Module-Pluggable
+ - perl-Object-HashBase
- perl-Package-Generator
- perl-Params-Check
- perl-Params-Util
- perl-PathTools
- perl-Perl-OSType
+ - perl-PerlIO-via-QuotedPrint
- perl-Pod-Checker
- perl-Pod-Escapes
- - perl-Pod-Parser
- perl-Pod-Perldoc
- perl-Pod-Simple
- perl-Pod-Usage
@@ -1960,10 +2029,14 @@ data:
- perl-Storable
- perl-Sub-Exporter
- perl-Sub-Install
+ - perl-Sys-Syslog
- perl-Term-ANSIColor
- perl-Term-Cap
+ - perl-Term-Table
- perl-TermReadKey
- perl-Test-Harness
+ - perl-Test-Simple
+ - perl-Text-Balanced
- perl-Text-Diff
- perl-Text-Glob
- perl-Text-ParseWords
@@ -1973,20 +2046,20 @@ data:
- perl-Thread-Queue
- perl-Time-HiRes
- perl-Time-Local
- - perl-TimeDate
- - perl-Try-Tiny
- perl-URI
+ - perl-Unicode-Collate
- perl-Unicode-EastAsianWidth
- perl-Unicode-Normalize
- - perl-WWW-RobotRules
- - perl-YAML-Tiny
+ - perl-autodie
+ - perl-bignum
- perl-constant
+ - perl-experimental
- perl-inc-latest
- perl-libintl-perl
- perl-libnet
- - perl-libwww-perl
- perl-local-lib
- perl-parent
+ - perl-perlfaq
- perl-podlators
- perl-srpm-macros
- perl-threads
@@ -1995,10 +2068,11 @@ data:
- physfs
- pinentry
- pinentry-gnome3
+ - pipewire-devel
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-devel
- - pipewire0.2-libs
- pixman
- pixman-devel
- libpkgconf
@@ -2036,6 +2110,8 @@ data:
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python3-wheel
+ - python-unversioned-command
- python3
- python3-devel
- python3-libs
@@ -2109,6 +2185,7 @@ data:
- rubygem-openssl
- rubygem-psych
- rubygem-json
+ - rubygem-racc
- rubygem-rake
- rubygem-rdoc
- rubygems
@@ -2134,14 +2211,17 @@ data:
- xml-common
- shadow-utils
- shared-mime-info
+ - slang
- sord
- - sound-theme-freedesktop
- soundtouch
- source-highlight
- speex
- speex-devel
- speexdsp
- speexdsp-devel
+ - spirv-headers-devel
+ - spirv-tools
+ - spirv-tools-devel
- spirv-tools-libs
- sqlite
- sqlite-devel
@@ -2161,11 +2241,25 @@ data:
- tar
- info
- texinfo
+ - libtracker-sparql3
+ - tracker3-devel
- twolame-libs
- tzdata
- tzdata-java
- unbound-libs
- unzip
+ - urw-base35-bookman-fonts
+ - urw-base35-c059-fonts
+ - urw-base35-d050000l-fonts
+ - urw-base35-fonts
+ - urw-base35-fonts-common
+ - urw-base35-gothic-fonts
+ - urw-base35-nimbus-mono-ps-fonts
+ - urw-base35-nimbus-roman-fonts
+ - urw-base35-nimbus-sans-fonts
+ - urw-base35-p052-fonts
+ - urw-base35-standard-symbols-ps-fonts
+ - urw-base35-z003-fonts
- libblkid
- libblkid-devel
- libfdisk
@@ -2178,7 +2272,10 @@ data:
- libuuid-devel
- util-linux
- uuidd
+ - libdvbv5
+ - libdvbv5-devel
- libv4l
+ - libv4l-devel
- libvala
- libvala-devel
- vala
@@ -2206,11 +2303,13 @@ data:
- webkit2gtk3-jsc-devel
- webrtc-audio-processing
- webrtc-audio-processing-devel
+ - wget
- which
- woff2
- woff2-devel
- wpebackend-fdo
- wpebackend-fdo-devel
+ - xapian-core-libs
- xcb-proto
- xcb-util
- xcb-util-devel
@@ -2228,6 +2327,8 @@ data:
- xdg-user-dirs
- xkeyboard-config
- xkeyboard-config-devel
+ - xorg-x11-font-utils
+ - xorg-x11-fonts-ISO8859-1-100dpi
- xorg-x11-proto-devel
- xorg-x11-server-utils
- xorg-x11-util-macros
@@ -2260,6 +2361,9 @@ data:
- acl
- libacl
- libacl-devel
+ - adobe-mappings-cmap
+ - adobe-mappings-cmap-deprecated
+ - adobe-mappings-pdf
- adwaita-cursor-theme
- adwaita-icon-theme
- adwaita-qt5
@@ -2303,6 +2407,7 @@ data:
- bzip2
- bzip2-devel
- bzip2-libs
+ - python3-Cython
- ca-certificates
- cairo
- cairo-devel
@@ -2320,7 +2425,6 @@ data:
- clang-libs
- clang-tools-extra
- git-clang-format
- - clang10-libs
- cmake
- cmake-data
- cmake-filesystem
@@ -2349,13 +2453,10 @@ data:
- libdav1d-devel
- dbus
- dbus-common
- - dbus-daemon
- dbus-devel
- dbus-libs
- - dbus-tools
- dbus-broker
- dconf
- - dconf-devel
- dejavu-sans-fonts
- dejavu-sans-mono-fonts
- dejavu-serif-fonts
@@ -2365,6 +2466,7 @@ data:
- docbook-style-dsssl
- docbook-style-xsl
- docbook-utils
+ - doxygen
- dwz
- e2fsprogs-devel
- e2fsprogs-libs
@@ -2431,6 +2533,7 @@ data:
- cpp
- gcc
- gcc-c++
+ - gcc-gdb-plugin
- gcc-gfortran
- libasan
- libatomic
@@ -2439,12 +2542,14 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libquadmath-devel
- libstdc++
- libstdc++-devel
- libtsan
- libubsan
+ - gd
- gdb
- gdb-gdbserver
- gdb-headless
@@ -2464,6 +2569,7 @@ data:
- libtextstyle
- libtextstyle-devel
- ghc-srpm-macros
+ - libgs
- giflib
- giflib-devel
- git
@@ -2485,6 +2591,8 @@ data:
- nscd
- nss_db
- nss_hesiod
+ - glslang
+ - glslang-devel
- gmp
- gmp-c++
- gmp-devel
@@ -2504,8 +2612,9 @@ data:
- go-srpm-macros
- gobject-introspection
- gobject-introspection-devel
- - golang-github-docker-distribution
+ - golang-github-pierrec-lz4
- google-carlito-fonts
+ - google-droid-sans-fonts
- gperf
- gpgme
- gpgme-devel
@@ -2515,6 +2624,7 @@ data:
- graphene
- graphite2
- graphite2-devel
+ - graphviz
- grep
- groff
- groff-base
@@ -2541,6 +2651,7 @@ data:
- gtk3-devel
- gtk3-immodule-xim
- gtk3-immodules
+ - gts
- guile
- guile22
- gupnp
@@ -2576,6 +2687,7 @@ data:
- iso-codes-devel
- itstool
- jasper-libs
+ - jbig2dec-libs
- jbigkit-libs
- jq
- jq-devel
@@ -2586,6 +2698,7 @@ data:
- qt-settings
- kernel-headers
- kernel-srpm-macros
+ - perf
- keyutils-libs
- keyutils-libs-devel
- kmod-libs
@@ -2597,6 +2710,7 @@ data:
- lame-devel
- lame-libs
- langpacks-core-font-en
+ - lasi
- lcms2
- lcms2-devel
- lcms2-utils
@@ -2613,6 +2727,7 @@ data:
- libXScrnSaver-devel
- libXau
- libXau-devel
+ - libXaw
- libXcomposite
- libXcomposite-devel
- libXcursor
@@ -2644,8 +2759,6 @@ data:
- libXtst-devel
- libXv
- libXv-devel
- - libXvMC
- - libXvMC-devel
- libXxf86vm
- libXxf86vm-devel
- libappstream-glib
@@ -2664,7 +2777,6 @@ data:
- libcbor
- libcdio
- libclc
- - libclc-devel
- libdatrie
- libdatrie-devel
- libdb
@@ -2689,6 +2801,7 @@ data:
- libffi
- libffi-devel
- libfido2
+ - libfontenc
- libgcrypt
- libgcrypt-devel
- libgdither
@@ -2706,6 +2819,8 @@ data:
- libidn2
- libidn2-devel
- libiec61883
+ - libijs
+ - libimagequant
- libinput
- libipt
- libjpeg-turbo
@@ -2736,6 +2851,7 @@ data:
- libogg
- libogg-devel
- libopenmpt
+ - libpaper
- libpcap
- libpciaccess
- libpciaccess-devel
@@ -2745,10 +2861,12 @@ data:
- libpng-devel
- libproxy
- libproxy-devel
+ - python3-libproxy
- libpsl
- libpsl-devel
- psl
- libpwquality
+ - libraqm
- libraw1394
- librsvg2
- librsvg2-devel
@@ -2770,6 +2888,7 @@ data:
- libsoup
- libsoup-devel
- libsrtp
+ - libsrtp-devel
- libssh
- libssh-config
- libstemmer
@@ -2830,20 +2949,24 @@ data:
- libxslt-devel
- libyaml
- lilv
+ - lld
+ - lld-devel
+ - lld-libs
- llvm
- llvm-devel
- llvm-libs
- llvm-static
- llvm-test
- - llvm10-libs
- lua-libs
+ - lua-srpm-macros
- device-mapper
- device-mapper-libs
+ - lz4
+ - lz4-devel
- lz4-libs
- lzip
- ModemManager-glib
- m4
- - mailcap
- make
- man-db
- libmcpp
@@ -2879,6 +3002,7 @@ data:
- ncurses-c++-libs
- ncurses-devel
- ncurses-libs
+ - netpbm
- nettle
- nettle-devel
- libnghttp2
@@ -2899,6 +3023,7 @@ data:
- nss-tools
- nss-util
- nss-util-devel
+ - numactl-libs
- ocaml-srpm-macros
- ocl-icd
- ocl-icd-devel
@@ -2909,7 +3034,11 @@ data:
- openal-soft-examples
- openblas-srpm-macros
- opencl-headers
+ - opencsd
- openjade
+ - openjpeg2
+ - openjpeg2-devel
+ - openjpeg2-tools
- openldap
- opensp
- openssh
@@ -2920,6 +3049,8 @@ data:
- openssl-perl
- opus
- opus-devel
+ - opusfile
+ - opusfile-devel
- orc
- orc-compiler
- orc-devel
@@ -2944,28 +3075,40 @@ data:
- pcre2-syntax
- pcre2-utf16
- pcre2-utf32
+ - perl
+ - perl-Attribute-Handlers
- perl-AutoLoader
- perl-AutoSplit
- perl-B
- perl-Benchmark
- perl-Class-Struct
+ - perl-Config-Extensions
+ - perl-DBM_Filter
+ - perl-Devel-Peek
+ - perl-Devel-SelfStubber
- perl-DirHandle
- perl-Dumpvalue
- perl-DynaLoader
- perl-English
- perl-Errno
- perl-ExtUtils-Constant
+ - perl-ExtUtils-Embed
+ - perl-ExtUtils-Miniperl
- perl-Fcntl
- perl-File-Basename
- perl-File-Compare
- perl-File-Copy
+ - perl-File-DosGlob
- perl-File-Find
- perl-File-stat
+ - perl-FileCache
- perl-FileHandle
- perl-FindBin
+ - perl-GDBM_File
- perl-Getopt-Std
- perl-Hash-Util
- perl-Hash-Util-FieldHash
+ - perl-I18N-Collate
- perl-I18N-LangTags
- perl-I18N-Langinfo
- perl-IO
@@ -2973,34 +3116,68 @@ data:
- perl-IPC-Open3
- perl-Locale-Maketext-Simple
- perl-Math-Complex
+ - perl-Memoize
+ - perl-Module-Loaded
+ - perl-NDBM_File
+ - perl-NEXT
+ - perl-Net
- perl-Net-Ping
+ - perl-ODBM_File
- perl-Opcode
- perl-POSIX
+ - perl-Pod-Functions
- perl-Pod-Html
- perl-Safe
+ - perl-Search-Dict
- perl-SelectSaver
+ - perl-SelfLoader
- perl-Symbol
- perl-Sys-Hostname
+ - perl-Term-Complete
- perl-Term-ReadLine
+ - perl-Test
+ - perl-Text-Abbrev
+ - perl-Thread
+ - perl-Thread-Semaphore
- perl-Tie
+ - perl-Tie-File
+ - perl-Tie-Memoize
+ - perl-Tie-RefHash
+ - perl-Time
+ - perl-Time-Piece
+ - perl-Unicode-UCD
- perl-User-pwent
- perl-autouse
- perl-base
+ - perl-blib
+ - perl-debugger
+ - perl-deprecate
- perl-devel
- perl-diagnostics
+ - perl-doc
+ - perl-encoding-warnings
+ - perl-fields
+ - perl-filetest
- perl-if
- perl-interpreter
+ - perl-less
- perl-lib
- perl-libnetcfg
- perl-libs
- perl-locale
- perl-macros
+ - perl-meta-notation
- perl-mro
+ - perl-open
- perl-overload
- perl-overloading
+ - perl-ph
+ - perl-sigtrap
+ - perl-sort
- perl-subs
- perl-utils
- perl-vars
+ - perl-vmsish
- perl-Algorithm-Diff
- perl-Archive-Tar
- perl-Archive-Zip
@@ -3013,22 +3190,22 @@ data:
- perl-Compress-Raw-Bzip2
- perl-Compress-Raw-Lzma
- perl-Compress-Raw-Zlib
+ - perl-Config-Perl-V
- perl-DBD-SQLite
- perl-DBI
- - perl-Data-Dump
+ - perl-DB_File
- perl-Data-Dumper
- perl-Data-OptList
- perl-Data-Section
- perl-Devel-PPPort
- perl-Devel-Size
- perl-Digest
- - perl-Digest-HMAC
- perl-Digest-MD5
- perl-Digest-SHA
- - perl-Digest-SHA1
- perl-Encode
- perl-Encode-devel
- - perl-Encode-Locale
+ - perl-encoding
+ - perl-Env
- perl-Error
- perl-Exporter
- perl-ExtUtils-CBuilder
@@ -3038,54 +3215,45 @@ data:
- perl-ExtUtils-MakeMaker
- perl-ExtUtils-Manifest
- perl-ExtUtils-ParseXS
+ - perl-File-Fetch
- perl-File-HomeDir
- - perl-File-Listing
- perl-File-Path
- perl-File-Temp
- perl-File-Which
- - perl-Getopt-ArgvFile
+ - perl-Filter
+ - perl-Filter-Simple
- perl-Getopt-Long
- - perl-HTML-Parser
- - perl-HTML-Tagset
- - perl-HTTP-Cookies
- - perl-HTTP-Date
- - perl-HTTP-Message
- - perl-HTTP-Negotiate
- perl-HTTP-Tiny
- perl-IO-Compress
- perl-IO-Compress-Lzma
- - perl-IO-HTML
- perl-IO-Socket-IP
- - perl-IO-Socket-SSL
- perl-IPC-Cmd
+ - perl-IPC-SysV
+ - perl-IPC-System-Simple
+ - perl-Importer
- perl-JSON-PP
- - perl-LWP-MediaTypes
- perl-Locale-Maketext
- perl-MIME-Base64
- perl-MRO-Compat
- perl-Math-BigInt
+ - perl-Math-BigInt-FastCalc
+ - perl-Math-BigRat
- perl-Module-Build
- perl-Module-CoreList
- perl-Module-CoreList-tools
- perl-Module-Load
- perl-Module-Load-Conditional
- perl-Module-Metadata
- - perl-Module-ScanDeps
- - perl-Module-Signature
- - perl-NTLM
- - perl-Net-HTTP
- - perl-Net-SSLeay
- - perl-PAR
- - perl-PAR-Dist
- - perl-PAR-Packer
+ - perl-Module-Pluggable
+ - perl-Object-HashBase
- perl-Package-Generator
- perl-Params-Check
- perl-Params-Util
- perl-PathTools
- perl-Perl-OSType
+ - perl-PerlIO-via-QuotedPrint
- perl-Pod-Checker
- perl-Pod-Escapes
- - perl-Pod-Parser
- perl-Pod-Perldoc
- perl-Pod-Simple
- perl-Pod-Usage
@@ -3096,10 +3264,14 @@ data:
- perl-Storable
- perl-Sub-Exporter
- perl-Sub-Install
+ - perl-Sys-Syslog
- perl-Term-ANSIColor
- perl-Term-Cap
+ - perl-Term-Table
- perl-TermReadKey
- perl-Test-Harness
+ - perl-Test-Simple
+ - perl-Text-Balanced
- perl-Text-Diff
- perl-Text-Glob
- perl-Text-ParseWords
@@ -3109,30 +3281,31 @@ data:
- perl-Thread-Queue
- perl-Time-HiRes
- perl-Time-Local
- - perl-TimeDate
- - perl-Try-Tiny
- perl-URI
+ - perl-Unicode-Collate
- perl-Unicode-EastAsianWidth
- perl-Unicode-Normalize
- - perl-WWW-RobotRules
- - perl-YAML-Tiny
+ - perl-autodie
+ - perl-bignum
- perl-constant
+ - perl-experimental
- perl-inc-latest
- perl-libintl-perl
- perl-libnet
- - perl-libwww-perl
- perl-local-lib
- perl-parent
+ - perl-perlfaq
- perl-podlators
- perl-srpm-macros
- perl-threads
- perl-threads-shared
- perl-version
- physfs
+ - pipewire-devel
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-devel
- - pipewire0.2-libs
- pixman
- pixman-devel
- libpkgconf
@@ -3165,6 +3338,8 @@ data:
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python3-wheel
+ - python-unversioned-command
- python3
- python3-devel
- python3-libs
@@ -3238,6 +3413,7 @@ data:
- rubygem-openssl
- rubygem-psych
- rubygem-json
+ - rubygem-racc
- rubygem-rake
- rubygem-rdoc
- rubygems
@@ -3263,6 +3439,7 @@ data:
- xml-common
- shadow-utils
- shared-mime-info
+ - slang
- sord
- soundtouch
- source-highlight
@@ -3270,6 +3447,9 @@ data:
- speex-devel
- speexdsp
- speexdsp-devel
+ - spirv-headers-devel
+ - spirv-tools
+ - spirv-tools-devel
- spirv-tools-libs
- sqlite
- sqlite-devel
@@ -3293,6 +3473,18 @@ data:
- tzdata
- unbound-libs
- unzip
+ - urw-base35-bookman-fonts
+ - urw-base35-c059-fonts
+ - urw-base35-d050000l-fonts
+ - urw-base35-fonts
+ - urw-base35-fonts-common
+ - urw-base35-gothic-fonts
+ - urw-base35-nimbus-mono-ps-fonts
+ - urw-base35-nimbus-roman-fonts
+ - urw-base35-nimbus-sans-fonts
+ - urw-base35-p052-fonts
+ - urw-base35-standard-symbols-ps-fonts
+ - urw-base35-z003-fonts
- libblkid
- libblkid-devel
- libfdisk
@@ -3305,7 +3497,10 @@ data:
- libuuid-devel
- util-linux
- uuidd
+ - libdvbv5
+ - libdvbv5-devel
- libv4l
+ - libv4l-devel
- valgrind
- valgrind-devel
- valgrind-tools-devel
@@ -3326,8 +3521,10 @@ data:
- wayland-protocols-devel
- webrtc-audio-processing
- webrtc-audio-processing-devel
+ - wget
- which
- woff2
+ - xapian-core-libs
- xcb-proto
- xcb-util
- xcb-util-devel
@@ -3344,6 +3541,8 @@ data:
- xdg-user-dirs
- xkeyboard-config
- xkeyboard-config-devel
+ - xorg-x11-font-utils
+ - xorg-x11-fonts-ISO8859-1-100dpi
- xorg-x11-proto-devel
- xorg-x11-server-utils
- xorg-x11-util-macros
diff --git a/tools/generate-files.sh b/tools/generate-files.sh
index ad28b16..b4ea4e4 100755
--- a/tools/generate-files.sh
+++ b/tools/generate-files.sh
@@ -6,11 +6,11 @@ base=$(basename $out)
case $base in
freedesktop-*)
ns=org.freedesktop
- version=19.08
+ version=20.08
;;
gnome-*)
ns=org.gnome
- version=3.36
+ version=3.38
;;
*)
echo 1>&2 "Can't identify runtime for $base"
diff --git a/tools/resolve-files.py b/tools/resolve-files.py
index 81f0e50..6115967 100755
--- a/tools/resolve-files.py
+++ b/tools/resolve-files.py
@@ -47,9 +47,9 @@ bin_ignore = [
# An implementation of tar for cross-platform compatibility, disabled in gnupg2.spec
'gpgtar',
- # Versioned python-3.7 binaries
- 'pydoc3.7', 'python3.7', 'python3.7-config', 'python3.7m', 'python3.7m-config', '2to3-3.7',
- 'easy_install-3.7', 'pip3.7', 'pyvenv-3.7',
+ # Versioned python-3.8 binaries
+ 'pydoc3.8', 'python3.8', 'python3.8-config', 'python3.8m', 'python3.8m-config', '2to3-3.8',
+ 'easy_install-3.8', 'pip3.8', 'pyvenv-3.8',
# nettle utilities not currently packaged in fedora
# (https://src.fedoraproject.org/rpms/nettle/c/2ec204e2de17006b566c9ff7d90ec...)
@@ -148,7 +148,7 @@ bin_ignore = [
'paplay', 'parec', 'parecord', 'pax11publish',
# pipewire-utils
- 'pipewire-cli', 'pipewire-monitor', 'spa-inspect', 'spa-monitor',
+ 'pw-cat', 'pw-cli', 'pw-dot', 'pw-metadata', 'pw-mididump', 'pw-midiplay', 'pw-midirecord', 'pw-mon', 'pw-play', 'pw-profiler', 'pw-record', 'spa-inspect', 'spa-monitor',
# libsndfile-utils
'sndfile-cmp', 'sndfile-concat', 'sndfile-convert', 'sndfile-deinterleave',
@@ -177,10 +177,7 @@ ignore.update('/usr/bin/' + x for x in bin_ignore)
# development tools in the freedesktop runtime
platform_bin_ignore = [
- 'croco-0.6-config',
- 'dwz',
'fftw-wisdom', 'fftw-wisdom-to-conf',
- 'ifnames',
'make',
'm4',
'orcc',
@@ -190,14 +187,18 @@ if is_platform:
ignore.update('/usr/bin/' + x for x in platform_bin_ignore)
bin_rename = {
+ 'clang-10': 'clang',
# lcms2 compiled with --program-suffix=2 in Fedora, even though there are no actual
# conflicts between lcms and lcms2 - jpegicc was renamed to jpgicc, etc.
'jpgicc': 'jpgicc2',
'linkicc': 'linkicc2',
- 'perl5.30.0': 'perl',
'psicc': 'psicc2',
'tificc': 'tificc2',
'transicc': 'transicc2',
+ 'vala-0.50': 'vala-0.48',
+ 'vala-gen-introspect-0.50': 'vala-gen-introspect-0.48',
+ 'valac-0.50': 'valac-0.48',
+ 'vapigen-0.50': 'vapigen-0.48',
}
rename.update({ '/usr/bin/' + k: '/usr/bin/' + v for k, v in bin_rename.items() })
@@ -214,20 +215,28 @@ lib_rename = {
# Newer in Fedora
'libaom.so.0': 'libaom.so.2',
'libasan.so.5': 'libasan.so.6',
- 'libclang.so.8': 'libclang.so.11',
+ 'libclang-cpp.so.10': 'libclang-cpp.so.11',
+ 'libclang.so.10': 'libclang.so.11',
'libdav1d.so.2': 'libdav1d.so.4',
- 'libgettextlib-0.20.1.so': 'libgettextlib-0.21.so',
- 'libgettextsrc-0.20.1.so': 'libgettextsrc-0.21.so',
+ 'libgettextlib-0.20.2.so': 'libgettextlib-0.21.so',
+ 'libgettextsrc-0.20.2.so': 'libgettextsrc-0.21.so',
'libkadm5clnt_mit.so.11': 'libkadm5clnt_mit.so.12',
'libkadm5srv_mit.so.11': 'libkadm5srv_mit.so.12',
'libkdb5.so.9': 'libkdb5.so.10',
- 'libLTO.so.8': 'libLTO.so.11',
+ 'libLLVM-10.so': 'libLLVM-11.so',
+ 'libLTO.so.10': 'libLTO.so.11',
'libprocps.so.7': 'libprocps.so.8',
- 'libpython3.7m.so': 'libpython3.9.so',
+ 'libpython3.8.so': 'libpython3.9.so',
+ 'libRemarks.so.10': 'libRemarks.so.11',
'libverto.so.0': 'libverto.so.1',
+ # Older in Fedora
+ 'libffi.so.7': 'libffi.so.6',
+ 'libvala-0.50.so': 'libvala-0.48.so',
+ 'libvala-0.50.so.0': 'libvala-0.48.so.0',
+
# Replaced by libxcrypt in Fedora
- 'libcrypt-2.30.so': 'libcrypt.so.2',
+ 'libcrypt-2.31.so': 'libcrypt.so.2',
# Compat symlink in gcr
'libgcr-3.so.1': 'libgcr-ui-3.so.1',
@@ -237,17 +246,17 @@ lib_rename = {
}
rename.update({ '/usr/lib64/' + k: '/usr/lib64/' + v for k, v in lib_rename.items() })
-for old in ['libasm-0.177.so', 'libdw-0.177.so', 'libelf-0.177.so']:
- rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-0.177', '-0.180')
+for old in ['libasm-0.180.so', 'libdw-0.180.so', 'libelf-0.180.so']:
+ rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-0.180', '-0.181')
# Fedora has newer glibc
-for old in ['ld-2.30.so', 'libBrokenLocale-2.30.so', 'libanl-2.30.so', 'libc-2.30.so',
- 'libdl-2.30.so', 'libm-2.30.so',
- 'libmvec-2.30.so', 'libnsl-2.30.so', 'libnss_compat-2.30.so',
- 'libnss_db-2.30.so', 'libnss_dns-2.30.so', 'libnss_files-2.30.so',
- 'libnss_hesiod-2.30.so', 'libpthread-2.30.so', 'libresolv-2.30.so',
- 'librt-2.30.so', 'libutil-2.30.so']:
- rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-2.30', '-2.32')
+for old in ['ld-2.31.so', 'libBrokenLocale-2.31.so', 'libanl-2.31.so', 'libc-2.31.so',
+ 'libdl-2.31.so', 'libm-2.31.so',
+ 'libmvec-2.31.so', 'libnsl-2.31.so', 'libnss_compat-2.31.so',
+ 'libnss_db-2.31.so', 'libnss_dns-2.31.so', 'libnss_files-2.31.so',
+ 'libnss_hesiod-2.31.so', 'libpthread-2.31.so', 'libresolv-2.31.so',
+ 'librt-2.31.so', 'libutil-2.31.so']:
+ rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-2.31', '-2.32')
# Fedora has newer icu
for old in ['libicudata.so.64', 'libicui18n.so.64', 'libicuio.so.64', 'libicutest.so.64',
@@ -292,9 +301,11 @@ pc_ignore = {
ignore.update('/usr/lib64/pkgconfig/' + x for x in pc_ignore)
pc_rename = {
- 'python-3.7.pc': 'python-3.9.pc',
- 'python-3.7m.pc': 'python-3.9.pc',
- 'ruby-2.6.pc': 'ruby.pc',
+ 'libvala-0.50.pc': 'libvala-0.48.pc',
+ 'python-3.8.pc': 'python-3.9.pc',
+ 'python-3.8-embed.pc': 'python-3.9-embed.pc',
+ 'ruby-2.7.pc': 'ruby.pc',
+ 'vapigen-0.50.pc': 'vapigen-0.48.pc',
}
rename.update({ '/usr/lib64/pkgconfig/' + k: '/usr/lib64/pkgconfig/' + v for k, v in pc_rename.items() })
rename.update({ '/usr/share/pkgconfig/' + k: '/usr/share/pkgconfig/' + v for k, v in pc_rename.items() })
@@ -310,15 +321,15 @@ ignore_patterns = [
r'/usr/include/md/.*',
# Windows binaries?
- r'/usr/lib64/python3.7/site-packages/setuptools/.*.exe',
+ r'/usr/lib64/python3.8/site-packages/setuptools/.*.exe',
# differences in pip packaging - unbundling
- r'^/usr/lib64/python3.7/site-packages/pip/_internal/.*',
- r'^/usr/lib64/python3.7/site-packages/pip/_vendor/.*',
+ r'^/usr/lib64/python3.8/site-packages/pip/_internal/.*',
+ r'^/usr/lib64/python3.8/site-packages/pip/_vendor/.*',
# Let the python files pull in the packages, avoid versioned directory names
- r'^/usr/lib64/python3.7/site-packages/[^/]*.dist-info/.*',
- r'^/usr/lib64/python3.7/site-packages/[^/]*.egg-info/.*',
+ r'^/usr/lib64/python3.8/site-packages/[^/]*.dist-info/.*',
+ r'^/usr/lib64/python3.8/site-packages/[^/]*.egg-info/.*',
# fcitx
r'/usr/lib64/libfcitx.*',
@@ -342,15 +353,15 @@ ignore_patterns = [
ignore_compiled = [re.compile(x) for x in ignore_patterns]
rename_patterns = [
- (r'^/usr/include/c\+\+/9.2.0/(.*)', r'/usr/include/c++/10/\1'),
+ (r'^/usr/include/c\+\+/10.2.0/(.*)', r'/usr/include/c++/10/\1'),
(r'^/usr/include/c\+\+/10/x86_64-unknown-linux-gnu/(.*)', r'/usr/include/c++/10/x86_64-redhat-linux/\1'),
(r'^/usr/include/nss/(.*)', r'/usr/include/nss3/\1'),
- (r'^/usr/include/python3.7m/(.*)', r'/usr/include/python3.9/\1'),
- (r'^/usr/include/ruby-2.6.0/ruby/(.*)', r'/usr/include/ruby/\1'),
- (r'^/usr/include/ruby-2.6.0/x86_64-linux/ruby/(.*)', r'/usr/include/ruby/\1'),
- (r'^/usr/include/ruby-2.6.0/(.*)', r'/usr/include/ruby/\1'),
+ (r'^/usr/include/python3.8/(.*)', r'/usr/include/python3.9/\1'),
+ (r'^/usr/include/ruby-2.7.0/ruby/(.*)', r'/usr/include/ruby/\1'),
+ (r'^/usr/include/ruby-2.7.0/x86_64-linux/ruby/(.*)', r'/usr/include/ruby/\1'),
+ (r'^/usr/include/ruby-2.7.0/(.*)', r'/usr/include/ruby/\1'),
(r'^/usr/lib64/pkgconfig/(.*proto.pc)', r'/usr/share/pkgconfig/\1'),
- (r'^/usr/lib64/python3.7/(.*)', r'/usr/lib64/python3.9/\1'),
+ (r'^/usr/lib64/python3.8/(.*)', r'/usr/lib64/python3.9/\1'),
(r'^/usr/share/fonts/dejavu/(DejaVuSansMono.*)', r'/usr/share/fonts/dejavu-sans-mono-fonts/\1'),
(r'^/usr/share/fonts/dejavu/(DejaVuSans.*)', r'/usr/share/fonts/dejavu-sans-fonts/\1'),
(r'^/usr/share/fonts/dejavu/(DejaVuMath.*)', r'/usr/share/fonts/dejavu-serif-fonts/\1'),
@@ -360,6 +371,7 @@ rename_patterns = [
(r'^/usr/share/fonts/liberation-fonts/(LiberationMono.*)', r'/usr/share/fonts/liberation-mono/\1'),
(r'^/usr/share/fonts/liberation-fonts/(LiberationSans.*)', r'/usr/share/fonts/liberation-sans/\1'),
(r'^/usr/share/fonts/liberation-fonts/(LiberationSerif.*)', r'/usr/share/fonts/liberation-serif/\1'),
+ (r'^/usr/share/fonts/adobe-source-code-pro-fonts/(.*)', r'/usr/share/fonts/adobe-source-code-pro/\1'),
]
rename_compiled = [(re.compile(a), b) for a, b in rename_patterns]
@@ -370,6 +382,12 @@ global_package_ignore_patterns = [
'^fcitx-.*$',
# Should be installed on the host instead
+ '^jack-audio-connection-kit$',
+ '^pipewire$',
+ '^pulseaudio$',
+ '^tracker3$',
+ '^v4l-utils$',
+ '^v4l-utils-devel-tools$',
'^xdg-desktop-portal$',
'^xdg-desktop-portal-devel$',
]
@@ -378,6 +396,7 @@ global_package_ignore_compiled = [re.compile(p) for p in global_package_ignore_p
platform_package_ignore_patterns = [
"^.*-devel$",
"^libappstream-glib-builder$", # may not need in the sdk either
+ "^gcc-gdb-plugin$", # pulls in gcc
"^gtk-doc$",
"^icu$", # may not need in the sdk either
'^llvm$',
https://src.fedoraproject.org/flatpaks/flatpak-runtime/c/3bd65311cfdde88d...
1 year, 3 months
otaylor pushed to flatpaks/flatpak-runtime (f39). "Switch to
Freedesktop SDK 20.08 and GNOME SDK 3.38"
by notifications@fedoraproject.org
Notification time stamped 2023-08-10 20:41:09 UTC
From 3bd65311cfdde88db54c2b70ee6479d336b5fcad Mon Sep 17 00:00:00 2001
From: Kalev Lember <klember(a)redhat.com>
Date: Oct 01 2020 21:05:51 +0000
Subject: Switch to Freedesktop SDK 20.08 and GNOME SDK 3.38
---
diff --git a/README.md b/README.md
index 02e5383..ce15401 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,10 @@ Updating
*Prequisites*: you need to have the following "upstream" runtimes installed:
-* `org.freedesktop.Platform/x86_64/19.08`
-* `org.freedesktop.Sdk/x86_64/19.08`
-* `org.gnome.Platform/x86_64/3.36`
-* `org.gnome.Sdk/x86_64/3.36`
+* `org.freedesktop.Platform/x86_64/20.08`
+* `org.freedesktop.Sdk/x86_64/20.08`
+* `org.gnome.Platform/x86_64/3.38`
+* `org.gnome.Sdk/x86_64/3.38`
You also need `python3-jinja2` and possibly a few other Python
packages installed.
diff --git a/flatpak-runtime.yaml b/flatpak-runtime.yaml
index 51216cf..7275544 100644
--- a/flatpak-runtime.yaml
+++ b/flatpak-runtime.yaml
@@ -22,6 +22,7 @@ data:
- abattis-cantarell-fonts
- acl
- libacl
+ - adobe-source-code-pro-fonts
- adwaita-cursor-theme
- adwaita-icon-theme
- adwaita-qt5
@@ -40,7 +41,6 @@ data:
- basesystem
- bash
- bluez-libs
- - brotli
- libbrotli
- bubblewrap
- bzip2
@@ -118,6 +118,7 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libstdc++
- libtsan
@@ -147,7 +148,6 @@ data:
- nss_hesiod
- gmp
- gmp-c++
- - gmp-devel
- adwaita-gtk2-theme
- gnome-themes-extra
- gnu-free-fonts-common
@@ -159,6 +159,7 @@ data:
- gnutls
- gnutls-c++
- gobject-introspection
+ - golang-github-pierrec-lz4
- google-carlito-fonts
- gpgme
- gpgmepp
@@ -250,8 +251,6 @@ data:
- libassuan
- libasyncns
- libavc1394
- - libcanberra
- - libcanberra-gtk3
- libcap
- libcap-ng
- libdatrie
@@ -307,6 +306,7 @@ data:
- libpciaccess
- libpng
- libproxy
+ - python3-libproxy
- libpsl
- psl
- libpwquality
@@ -329,7 +329,6 @@ data:
- libssh-config
- libstemmer
- libtasn1
- - libtdb
- libthai
- libtheora
- libtiff
@@ -368,6 +367,7 @@ data:
- lua-posix
- device-mapper
- device-mapper-libs
+ - lz4
- lz4-libs
- lzip
- ModemManager-glib
@@ -409,6 +409,7 @@ data:
- openldap
- openssl-libs
- opus
+ - opusfile
- orc
- p11-kit
- p11-kit-server
@@ -425,8 +426,9 @@ data:
- pinentry
- pinentry-gnome3
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-libs
- pixman
- libpkgconf
- pkgconf
@@ -445,10 +447,10 @@ data:
- python3-markdown
- python3-markupsafe
- python-pip-wheel
- - python3-pip
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python-unversioned-command
- python3
- python3-libs
- qgnomeplatform
@@ -498,7 +500,6 @@ data:
- shadow-utils
- shared-mime-info
- sord
- - sound-theme-freedesktop
- soundtouch
- speex
- speexdsp
@@ -512,6 +513,7 @@ data:
- systemd-rpm-macros
- taglib
- tar
+ - libtracker-sparql3
- twolame-libs
- tzdata
- tzdata-java
@@ -523,6 +525,7 @@ data:
- libuuid
- util-linux
- uuidd
+ - libdvbv5
- libv4l
- libvmaf
- vulkan-loader
@@ -535,6 +538,7 @@ data:
- webkit2gtk3
- webkit2gtk3-jsc
- webrtc-audio-processing
+ - wget
- which
- woff2
- wpebackend-fdo
@@ -610,9 +614,7 @@ data:
- libdav1d
- dbus
- dbus-common
- - dbus-daemon
- dbus-libs
- - dbus-tools
- dbus-broker
- dconf
- dejavu-sans-fonts
@@ -655,6 +657,7 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libstdc++
- libtsan
@@ -681,7 +684,6 @@ data:
- nss_hesiod
- gmp
- gmp-c++
- - gmp-devel
- adwaita-gtk2-theme
- gnome-themes-extra
- gnu-free-fonts-common
@@ -693,6 +695,7 @@ data:
- gnutls
- gnutls-c++
- gobject-introspection
+ - golang-github-pierrec-lz4
- google-carlito-fonts
- gpgme
- gpgmepp
@@ -834,6 +837,7 @@ data:
- libpciaccess
- libpng
- libproxy
+ - python3-libproxy
- libpsl
- psl
- libpwquality
@@ -889,6 +893,7 @@ data:
- lua-libs
- device-mapper
- device-mapper-libs
+ - lz4
- lz4-libs
- lzip
- ModemManager-glib
@@ -923,9 +928,11 @@ data:
- nss-util
- ocl-icd
- openal-soft
+ - openjpeg2
- openldap
- openssl-libs
- opus
+ - opusfile
- orc
- p11-kit
- p11-kit-server
@@ -940,8 +947,9 @@ data:
- pcre2-syntax
- pcre2-utf16
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-libs
- pixman
- libpkgconf
- pkgconf
@@ -957,10 +965,10 @@ data:
- python3-markdown
- python3-markupsafe
- python-pip-wheel
- - python3-pip
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python-unversioned-command
- python3
- python3-libs
- qgnomeplatform
@@ -1033,6 +1041,7 @@ data:
- libuuid
- util-linux
- uuidd
+ - libdvbv5
- libv4l
- libvmaf
- vulkan-loader
@@ -1043,6 +1052,7 @@ data:
- libwayland-egl
- libwayland-server
- webrtc-audio-processing
+ - wget
- which
- woff2
- xcb-proto
@@ -1073,6 +1083,10 @@ data:
- acl
- libacl
- libacl-devel
+ - adobe-mappings-cmap
+ - adobe-mappings-cmap-deprecated
+ - adobe-mappings-pdf
+ - adobe-source-code-pro-fonts
- adwaita-cursor-theme
- adwaita-icon-theme
- adwaita-icon-theme-devel
@@ -1118,6 +1132,7 @@ data:
- bzip2
- bzip2-devel
- bzip2-libs
+ - python3-Cython
- ca-certificates
- cairo
- cairo-devel
@@ -1135,7 +1150,6 @@ data:
- clang-libs
- clang-tools-extra
- git-clang-format
- - clang10-libs
- clutter
- clutter-devel
- clutter-gst3
@@ -1179,7 +1193,6 @@ data:
- dbus-tools
- dbus-broker
- dconf
- - dconf-devel
- dejavu-sans-fonts
- dejavu-sans-mono-fonts
- dejavu-serif-fonts
@@ -1189,6 +1202,7 @@ data:
- docbook-style-dsssl
- docbook-style-xsl
- docbook-utils
+ - doxygen
- dwz
- e2fsprogs-devel
- e2fsprogs-libs
@@ -1257,6 +1271,7 @@ data:
- cpp
- gcc
- gcc-c++
+ - gcc-gdb-plugin
- gcc-gfortran
- libasan
- libatomic
@@ -1265,6 +1280,7 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libquadmath-devel
- libstdc++
@@ -1274,6 +1290,7 @@ data:
- gcr
- gcr-base
- gcr-devel
+ - gd
- gdb
- gdb-gdbserver
- gdb-headless
@@ -1293,6 +1310,7 @@ data:
- libtextstyle
- libtextstyle-devel
- ghc-srpm-macros
+ - libgs
- giflib
- giflib-devel
- git
@@ -1316,6 +1334,8 @@ data:
- nscd
- nss_db
- nss_hesiod
+ - glslang
+ - glslang-devel
- gmp
- gmp-c++
- gmp-devel
@@ -1335,8 +1355,9 @@ data:
- go-srpm-macros
- gobject-introspection
- gobject-introspection-devel
- - golang-github-docker-distribution
+ - golang-github-pierrec-lz4
- google-carlito-fonts
+ - google-droid-sans-fonts
- gperf
- gpgme
- gpgme-devel
@@ -1347,6 +1368,7 @@ data:
- graphene-devel
- graphite2
- graphite2-devel
+ - graphviz
- grep
- groff
- groff-base
@@ -1366,7 +1388,6 @@ data:
- gstreamer1-plugins-good-gtk
- gtk-doc
- gtk2
- - gtk2-devel
- gtk2-immodules
- gtk-update-icon-cache
- gtk3
@@ -1375,6 +1396,7 @@ data:
- gtk3-immodules
- gtksourceview4
- gtksourceview4-devel
+ - gts
- guile
- guile22
- gupnp
@@ -1415,6 +1437,7 @@ data:
- jasper-libs
- java-11-openjdk-headless
- javapackages-filesystem
+ - jbig2dec-libs
- jbigkit-libs
- jq
- jq-devel
@@ -1425,6 +1448,7 @@ data:
- qt-settings
- kernel-headers
- kernel-srpm-macros
+ - perf
- keyutils-libs
- keyutils-libs-devel
- kmod-libs
@@ -1437,6 +1461,7 @@ data:
- lame-devel
- lame-libs
- langpacks-core-font-en
+ - lasi
- lcms2
- lcms2-devel
- lcms2-utils
@@ -1453,6 +1478,7 @@ data:
- libXScrnSaver-devel
- libXau
- libXau-devel
+ - libXaw
- libXcomposite
- libXcomposite-devel
- libXcursor
@@ -1484,8 +1510,6 @@ data:
- libXtst-devel
- libXv
- libXv-devel
- - libXvMC
- - libXvMC-devel
- libXxf86vm
- libXxf86vm-devel
- libappstream-glib
@@ -1498,16 +1522,11 @@ data:
- libassuan-devel
- libasyncns
- libavc1394
- - libcanberra
- - libcanberra-devel
- - libcanberra-gtk2
- - libcanberra-gtk3
- libcap
- libcap-devel
- libcap-ng
- libcbor
- libclc
- - libclc-devel
- libdatrie
- libdatrie-devel
- libdb
@@ -1532,6 +1551,7 @@ data:
- libffi
- libffi-devel
- libfido2
+ - libfontenc
- libgcrypt
- libgcrypt-devel
- libgdither
@@ -1551,6 +1571,8 @@ data:
- libidn2
- libidn2-devel
- libiec61883
+ - libijs
+ - libimagequant
- libinput
- libinput-devel
- libipt
@@ -1582,6 +1604,7 @@ data:
- libogg
- libogg-devel
- libopenmpt
+ - libpaper
- libpcap
- libpciaccess
- libpciaccess-devel
@@ -1591,10 +1614,12 @@ data:
- libpng-devel
- libproxy
- libproxy-devel
+ - python3-libproxy
- libpsl
- libpsl-devel
- psl
- libpwquality
+ - libraqm
- libraw1394
- librsvg2
- librsvg2-devel
@@ -1618,13 +1643,13 @@ data:
- libsoup
- libsoup-devel
- libsrtp
+ - libsrtp-devel
- libssh
- libssh-config
- libstemmer
- libtasn1
- libtasn1-devel
- libtasn1-tools
- - libtdb
- libthai
- libthai-devel
- libtheora
@@ -1682,22 +1707,26 @@ data:
- libyaml
- lilv
- lksctp-tools
+ - lld
+ - lld-devel
+ - lld-libs
- llvm
- llvm-devel
- llvm-libs
- llvm-static
- llvm-test
- - llvm10-libs
- lua
- lua-libs
- lua-posix
+ - lua-srpm-macros
- device-mapper
- device-mapper-libs
+ - lz4
+ - lz4-devel
- lz4-libs
- lzip
- ModemManager-glib
- m4
- - mailcap
- make
- mallard-rng
- man-db
@@ -1722,8 +1751,6 @@ data:
- mesa-libGLU
- meson
- mlocate
- - mozjs68
- - mozjs68-devel
- mozjs78
- mozjs78-devel
- mpfr
@@ -1740,6 +1767,7 @@ data:
- ncurses-c++-libs
- ncurses-devel
- ncurses-libs
+ - netpbm
- nettle
- nettle-devel
- libnghttp2
@@ -1760,6 +1788,7 @@ data:
- nss-tools
- nss-util
- nss-util-devel
+ - numactl-libs
- ocaml-srpm-macros
- ocl-icd
- ocl-icd-devel
@@ -1770,6 +1799,7 @@ data:
- openal-soft-examples
- openblas-srpm-macros
- opencl-headers
+ - opencsd
- openjade
- openjpeg2
- openjpeg2-devel
@@ -1784,6 +1814,8 @@ data:
- openssl-perl
- opus
- opus-devel
+ - opusfile
+ - opusfile-devel
- orc
- orc-compiler
- orc-devel
@@ -1808,28 +1840,40 @@ data:
- pcre2-syntax
- pcre2-utf16
- pcre2-utf32
+ - perl
+ - perl-Attribute-Handlers
- perl-AutoLoader
- perl-AutoSplit
- perl-B
- perl-Benchmark
- perl-Class-Struct
+ - perl-Config-Extensions
+ - perl-DBM_Filter
+ - perl-Devel-Peek
+ - perl-Devel-SelfStubber
- perl-DirHandle
- perl-Dumpvalue
- perl-DynaLoader
- perl-English
- perl-Errno
- perl-ExtUtils-Constant
+ - perl-ExtUtils-Embed
+ - perl-ExtUtils-Miniperl
- perl-Fcntl
- perl-File-Basename
- perl-File-Compare
- perl-File-Copy
+ - perl-File-DosGlob
- perl-File-Find
- perl-File-stat
+ - perl-FileCache
- perl-FileHandle
- perl-FindBin
+ - perl-GDBM_File
- perl-Getopt-Std
- perl-Hash-Util
- perl-Hash-Util-FieldHash
+ - perl-I18N-Collate
- perl-I18N-LangTags
- perl-I18N-Langinfo
- perl-IO
@@ -1837,34 +1881,68 @@ data:
- perl-IPC-Open3
- perl-Locale-Maketext-Simple
- perl-Math-Complex
+ - perl-Memoize
+ - perl-Module-Loaded
+ - perl-NDBM_File
+ - perl-NEXT
+ - perl-Net
- perl-Net-Ping
+ - perl-ODBM_File
- perl-Opcode
- perl-POSIX
+ - perl-Pod-Functions
- perl-Pod-Html
- perl-Safe
+ - perl-Search-Dict
- perl-SelectSaver
+ - perl-SelfLoader
- perl-Symbol
- perl-Sys-Hostname
+ - perl-Term-Complete
- perl-Term-ReadLine
+ - perl-Test
+ - perl-Text-Abbrev
+ - perl-Thread
+ - perl-Thread-Semaphore
- perl-Tie
+ - perl-Tie-File
+ - perl-Tie-Memoize
+ - perl-Tie-RefHash
+ - perl-Time
+ - perl-Time-Piece
+ - perl-Unicode-UCD
- perl-User-pwent
- perl-autouse
- perl-base
+ - perl-blib
+ - perl-debugger
+ - perl-deprecate
- perl-devel
- perl-diagnostics
+ - perl-doc
+ - perl-encoding-warnings
+ - perl-fields
+ - perl-filetest
- perl-if
- perl-interpreter
+ - perl-less
- perl-lib
- perl-libnetcfg
- perl-libs
- perl-locale
- perl-macros
+ - perl-meta-notation
- perl-mro
+ - perl-open
- perl-overload
- perl-overloading
+ - perl-ph
+ - perl-sigtrap
+ - perl-sort
- perl-subs
- perl-utils
- perl-vars
+ - perl-vmsish
- perl-Algorithm-Diff
- perl-Archive-Tar
- perl-Archive-Zip
@@ -1877,22 +1955,22 @@ data:
- perl-Compress-Raw-Bzip2
- perl-Compress-Raw-Lzma
- perl-Compress-Raw-Zlib
+ - perl-Config-Perl-V
- perl-DBD-SQLite
- perl-DBI
- - perl-Data-Dump
+ - perl-DB_File
- perl-Data-Dumper
- perl-Data-OptList
- perl-Data-Section
- perl-Devel-PPPort
- perl-Devel-Size
- perl-Digest
- - perl-Digest-HMAC
- perl-Digest-MD5
- perl-Digest-SHA
- - perl-Digest-SHA1
- perl-Encode
- perl-Encode-devel
- - perl-Encode-Locale
+ - perl-encoding
+ - perl-Env
- perl-Error
- perl-Exporter
- perl-ExtUtils-CBuilder
@@ -1902,54 +1980,45 @@ data:
- perl-ExtUtils-MakeMaker
- perl-ExtUtils-Manifest
- perl-ExtUtils-ParseXS
+ - perl-File-Fetch
- perl-File-HomeDir
- - perl-File-Listing
- perl-File-Path
- perl-File-Temp
- perl-File-Which
- - perl-Getopt-ArgvFile
+ - perl-Filter
+ - perl-Filter-Simple
- perl-Getopt-Long
- - perl-HTML-Parser
- - perl-HTML-Tagset
- - perl-HTTP-Cookies
- - perl-HTTP-Date
- - perl-HTTP-Message
- - perl-HTTP-Negotiate
- perl-HTTP-Tiny
- perl-IO-Compress
- perl-IO-Compress-Lzma
- - perl-IO-HTML
- perl-IO-Socket-IP
- - perl-IO-Socket-SSL
- perl-IPC-Cmd
+ - perl-IPC-SysV
+ - perl-IPC-System-Simple
+ - perl-Importer
- perl-JSON-PP
- - perl-LWP-MediaTypes
- perl-Locale-Maketext
- perl-MIME-Base64
- perl-MRO-Compat
- perl-Math-BigInt
+ - perl-Math-BigInt-FastCalc
+ - perl-Math-BigRat
- perl-Module-Build
- perl-Module-CoreList
- perl-Module-CoreList-tools
- perl-Module-Load
- perl-Module-Load-Conditional
- perl-Module-Metadata
- - perl-Module-ScanDeps
- - perl-Module-Signature
- - perl-NTLM
- - perl-Net-HTTP
- - perl-Net-SSLeay
- - perl-PAR
- - perl-PAR-Dist
- - perl-PAR-Packer
+ - perl-Module-Pluggable
+ - perl-Object-HashBase
- perl-Package-Generator
- perl-Params-Check
- perl-Params-Util
- perl-PathTools
- perl-Perl-OSType
+ - perl-PerlIO-via-QuotedPrint
- perl-Pod-Checker
- perl-Pod-Escapes
- - perl-Pod-Parser
- perl-Pod-Perldoc
- perl-Pod-Simple
- perl-Pod-Usage
@@ -1960,10 +2029,14 @@ data:
- perl-Storable
- perl-Sub-Exporter
- perl-Sub-Install
+ - perl-Sys-Syslog
- perl-Term-ANSIColor
- perl-Term-Cap
+ - perl-Term-Table
- perl-TermReadKey
- perl-Test-Harness
+ - perl-Test-Simple
+ - perl-Text-Balanced
- perl-Text-Diff
- perl-Text-Glob
- perl-Text-ParseWords
@@ -1973,20 +2046,20 @@ data:
- perl-Thread-Queue
- perl-Time-HiRes
- perl-Time-Local
- - perl-TimeDate
- - perl-Try-Tiny
- perl-URI
+ - perl-Unicode-Collate
- perl-Unicode-EastAsianWidth
- perl-Unicode-Normalize
- - perl-WWW-RobotRules
- - perl-YAML-Tiny
+ - perl-autodie
+ - perl-bignum
- perl-constant
+ - perl-experimental
- perl-inc-latest
- perl-libintl-perl
- perl-libnet
- - perl-libwww-perl
- perl-local-lib
- perl-parent
+ - perl-perlfaq
- perl-podlators
- perl-srpm-macros
- perl-threads
@@ -1995,10 +2068,11 @@ data:
- physfs
- pinentry
- pinentry-gnome3
+ - pipewire-devel
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-devel
- - pipewire0.2-libs
- pixman
- pixman-devel
- libpkgconf
@@ -2036,6 +2110,8 @@ data:
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python3-wheel
+ - python-unversioned-command
- python3
- python3-devel
- python3-libs
@@ -2109,6 +2185,7 @@ data:
- rubygem-openssl
- rubygem-psych
- rubygem-json
+ - rubygem-racc
- rubygem-rake
- rubygem-rdoc
- rubygems
@@ -2134,14 +2211,17 @@ data:
- xml-common
- shadow-utils
- shared-mime-info
+ - slang
- sord
- - sound-theme-freedesktop
- soundtouch
- source-highlight
- speex
- speex-devel
- speexdsp
- speexdsp-devel
+ - spirv-headers-devel
+ - spirv-tools
+ - spirv-tools-devel
- spirv-tools-libs
- sqlite
- sqlite-devel
@@ -2161,11 +2241,25 @@ data:
- tar
- info
- texinfo
+ - libtracker-sparql3
+ - tracker3-devel
- twolame-libs
- tzdata
- tzdata-java
- unbound-libs
- unzip
+ - urw-base35-bookman-fonts
+ - urw-base35-c059-fonts
+ - urw-base35-d050000l-fonts
+ - urw-base35-fonts
+ - urw-base35-fonts-common
+ - urw-base35-gothic-fonts
+ - urw-base35-nimbus-mono-ps-fonts
+ - urw-base35-nimbus-roman-fonts
+ - urw-base35-nimbus-sans-fonts
+ - urw-base35-p052-fonts
+ - urw-base35-standard-symbols-ps-fonts
+ - urw-base35-z003-fonts
- libblkid
- libblkid-devel
- libfdisk
@@ -2178,7 +2272,10 @@ data:
- libuuid-devel
- util-linux
- uuidd
+ - libdvbv5
+ - libdvbv5-devel
- libv4l
+ - libv4l-devel
- libvala
- libvala-devel
- vala
@@ -2206,11 +2303,13 @@ data:
- webkit2gtk3-jsc-devel
- webrtc-audio-processing
- webrtc-audio-processing-devel
+ - wget
- which
- woff2
- woff2-devel
- wpebackend-fdo
- wpebackend-fdo-devel
+ - xapian-core-libs
- xcb-proto
- xcb-util
- xcb-util-devel
@@ -2228,6 +2327,8 @@ data:
- xdg-user-dirs
- xkeyboard-config
- xkeyboard-config-devel
+ - xorg-x11-font-utils
+ - xorg-x11-fonts-ISO8859-1-100dpi
- xorg-x11-proto-devel
- xorg-x11-server-utils
- xorg-x11-util-macros
@@ -2260,6 +2361,9 @@ data:
- acl
- libacl
- libacl-devel
+ - adobe-mappings-cmap
+ - adobe-mappings-cmap-deprecated
+ - adobe-mappings-pdf
- adwaita-cursor-theme
- adwaita-icon-theme
- adwaita-qt5
@@ -2303,6 +2407,7 @@ data:
- bzip2
- bzip2-devel
- bzip2-libs
+ - python3-Cython
- ca-certificates
- cairo
- cairo-devel
@@ -2320,7 +2425,6 @@ data:
- clang-libs
- clang-tools-extra
- git-clang-format
- - clang10-libs
- cmake
- cmake-data
- cmake-filesystem
@@ -2349,13 +2453,10 @@ data:
- libdav1d-devel
- dbus
- dbus-common
- - dbus-daemon
- dbus-devel
- dbus-libs
- - dbus-tools
- dbus-broker
- dconf
- - dconf-devel
- dejavu-sans-fonts
- dejavu-sans-mono-fonts
- dejavu-serif-fonts
@@ -2365,6 +2466,7 @@ data:
- docbook-style-dsssl
- docbook-style-xsl
- docbook-utils
+ - doxygen
- dwz
- e2fsprogs-devel
- e2fsprogs-libs
@@ -2431,6 +2533,7 @@ data:
- cpp
- gcc
- gcc-c++
+ - gcc-gdb-plugin
- gcc-gfortran
- libasan
- libatomic
@@ -2439,12 +2542,14 @@ data:
- libgomp
- libitm
- liblsan
+ - libobjc
- libquadmath
- libquadmath-devel
- libstdc++
- libstdc++-devel
- libtsan
- libubsan
+ - gd
- gdb
- gdb-gdbserver
- gdb-headless
@@ -2464,6 +2569,7 @@ data:
- libtextstyle
- libtextstyle-devel
- ghc-srpm-macros
+ - libgs
- giflib
- giflib-devel
- git
@@ -2485,6 +2591,8 @@ data:
- nscd
- nss_db
- nss_hesiod
+ - glslang
+ - glslang-devel
- gmp
- gmp-c++
- gmp-devel
@@ -2504,8 +2612,9 @@ data:
- go-srpm-macros
- gobject-introspection
- gobject-introspection-devel
- - golang-github-docker-distribution
+ - golang-github-pierrec-lz4
- google-carlito-fonts
+ - google-droid-sans-fonts
- gperf
- gpgme
- gpgme-devel
@@ -2515,6 +2624,7 @@ data:
- graphene
- graphite2
- graphite2-devel
+ - graphviz
- grep
- groff
- groff-base
@@ -2541,6 +2651,7 @@ data:
- gtk3-devel
- gtk3-immodule-xim
- gtk3-immodules
+ - gts
- guile
- guile22
- gupnp
@@ -2576,6 +2687,7 @@ data:
- iso-codes-devel
- itstool
- jasper-libs
+ - jbig2dec-libs
- jbigkit-libs
- jq
- jq-devel
@@ -2586,6 +2698,7 @@ data:
- qt-settings
- kernel-headers
- kernel-srpm-macros
+ - perf
- keyutils-libs
- keyutils-libs-devel
- kmod-libs
@@ -2597,6 +2710,7 @@ data:
- lame-devel
- lame-libs
- langpacks-core-font-en
+ - lasi
- lcms2
- lcms2-devel
- lcms2-utils
@@ -2613,6 +2727,7 @@ data:
- libXScrnSaver-devel
- libXau
- libXau-devel
+ - libXaw
- libXcomposite
- libXcomposite-devel
- libXcursor
@@ -2644,8 +2759,6 @@ data:
- libXtst-devel
- libXv
- libXv-devel
- - libXvMC
- - libXvMC-devel
- libXxf86vm
- libXxf86vm-devel
- libappstream-glib
@@ -2664,7 +2777,6 @@ data:
- libcbor
- libcdio
- libclc
- - libclc-devel
- libdatrie
- libdatrie-devel
- libdb
@@ -2689,6 +2801,7 @@ data:
- libffi
- libffi-devel
- libfido2
+ - libfontenc
- libgcrypt
- libgcrypt-devel
- libgdither
@@ -2706,6 +2819,8 @@ data:
- libidn2
- libidn2-devel
- libiec61883
+ - libijs
+ - libimagequant
- libinput
- libipt
- libjpeg-turbo
@@ -2736,6 +2851,7 @@ data:
- libogg
- libogg-devel
- libopenmpt
+ - libpaper
- libpcap
- libpciaccess
- libpciaccess-devel
@@ -2745,10 +2861,12 @@ data:
- libpng-devel
- libproxy
- libproxy-devel
+ - python3-libproxy
- libpsl
- libpsl-devel
- psl
- libpwquality
+ - libraqm
- libraw1394
- librsvg2
- librsvg2-devel
@@ -2770,6 +2888,7 @@ data:
- libsoup
- libsoup-devel
- libsrtp
+ - libsrtp-devel
- libssh
- libssh-config
- libstemmer
@@ -2830,20 +2949,24 @@ data:
- libxslt-devel
- libyaml
- lilv
+ - lld
+ - lld-devel
+ - lld-libs
- llvm
- llvm-devel
- llvm-libs
- llvm-static
- llvm-test
- - llvm10-libs
- lua-libs
+ - lua-srpm-macros
- device-mapper
- device-mapper-libs
+ - lz4
+ - lz4-devel
- lz4-libs
- lzip
- ModemManager-glib
- m4
- - mailcap
- make
- man-db
- libmcpp
@@ -2879,6 +3002,7 @@ data:
- ncurses-c++-libs
- ncurses-devel
- ncurses-libs
+ - netpbm
- nettle
- nettle-devel
- libnghttp2
@@ -2899,6 +3023,7 @@ data:
- nss-tools
- nss-util
- nss-util-devel
+ - numactl-libs
- ocaml-srpm-macros
- ocl-icd
- ocl-icd-devel
@@ -2909,7 +3034,11 @@ data:
- openal-soft-examples
- openblas-srpm-macros
- opencl-headers
+ - opencsd
- openjade
+ - openjpeg2
+ - openjpeg2-devel
+ - openjpeg2-tools
- openldap
- opensp
- openssh
@@ -2920,6 +3049,8 @@ data:
- openssl-perl
- opus
- opus-devel
+ - opusfile
+ - opusfile-devel
- orc
- orc-compiler
- orc-devel
@@ -2944,28 +3075,40 @@ data:
- pcre2-syntax
- pcre2-utf16
- pcre2-utf32
+ - perl
+ - perl-Attribute-Handlers
- perl-AutoLoader
- perl-AutoSplit
- perl-B
- perl-Benchmark
- perl-Class-Struct
+ - perl-Config-Extensions
+ - perl-DBM_Filter
+ - perl-Devel-Peek
+ - perl-Devel-SelfStubber
- perl-DirHandle
- perl-Dumpvalue
- perl-DynaLoader
- perl-English
- perl-Errno
- perl-ExtUtils-Constant
+ - perl-ExtUtils-Embed
+ - perl-ExtUtils-Miniperl
- perl-Fcntl
- perl-File-Basename
- perl-File-Compare
- perl-File-Copy
+ - perl-File-DosGlob
- perl-File-Find
- perl-File-stat
+ - perl-FileCache
- perl-FileHandle
- perl-FindBin
+ - perl-GDBM_File
- perl-Getopt-Std
- perl-Hash-Util
- perl-Hash-Util-FieldHash
+ - perl-I18N-Collate
- perl-I18N-LangTags
- perl-I18N-Langinfo
- perl-IO
@@ -2973,34 +3116,68 @@ data:
- perl-IPC-Open3
- perl-Locale-Maketext-Simple
- perl-Math-Complex
+ - perl-Memoize
+ - perl-Module-Loaded
+ - perl-NDBM_File
+ - perl-NEXT
+ - perl-Net
- perl-Net-Ping
+ - perl-ODBM_File
- perl-Opcode
- perl-POSIX
+ - perl-Pod-Functions
- perl-Pod-Html
- perl-Safe
+ - perl-Search-Dict
- perl-SelectSaver
+ - perl-SelfLoader
- perl-Symbol
- perl-Sys-Hostname
+ - perl-Term-Complete
- perl-Term-ReadLine
+ - perl-Test
+ - perl-Text-Abbrev
+ - perl-Thread
+ - perl-Thread-Semaphore
- perl-Tie
+ - perl-Tie-File
+ - perl-Tie-Memoize
+ - perl-Tie-RefHash
+ - perl-Time
+ - perl-Time-Piece
+ - perl-Unicode-UCD
- perl-User-pwent
- perl-autouse
- perl-base
+ - perl-blib
+ - perl-debugger
+ - perl-deprecate
- perl-devel
- perl-diagnostics
+ - perl-doc
+ - perl-encoding-warnings
+ - perl-fields
+ - perl-filetest
- perl-if
- perl-interpreter
+ - perl-less
- perl-lib
- perl-libnetcfg
- perl-libs
- perl-locale
- perl-macros
+ - perl-meta-notation
- perl-mro
+ - perl-open
- perl-overload
- perl-overloading
+ - perl-ph
+ - perl-sigtrap
+ - perl-sort
- perl-subs
- perl-utils
- perl-vars
+ - perl-vmsish
- perl-Algorithm-Diff
- perl-Archive-Tar
- perl-Archive-Zip
@@ -3013,22 +3190,22 @@ data:
- perl-Compress-Raw-Bzip2
- perl-Compress-Raw-Lzma
- perl-Compress-Raw-Zlib
+ - perl-Config-Perl-V
- perl-DBD-SQLite
- perl-DBI
- - perl-Data-Dump
+ - perl-DB_File
- perl-Data-Dumper
- perl-Data-OptList
- perl-Data-Section
- perl-Devel-PPPort
- perl-Devel-Size
- perl-Digest
- - perl-Digest-HMAC
- perl-Digest-MD5
- perl-Digest-SHA
- - perl-Digest-SHA1
- perl-Encode
- perl-Encode-devel
- - perl-Encode-Locale
+ - perl-encoding
+ - perl-Env
- perl-Error
- perl-Exporter
- perl-ExtUtils-CBuilder
@@ -3038,54 +3215,45 @@ data:
- perl-ExtUtils-MakeMaker
- perl-ExtUtils-Manifest
- perl-ExtUtils-ParseXS
+ - perl-File-Fetch
- perl-File-HomeDir
- - perl-File-Listing
- perl-File-Path
- perl-File-Temp
- perl-File-Which
- - perl-Getopt-ArgvFile
+ - perl-Filter
+ - perl-Filter-Simple
- perl-Getopt-Long
- - perl-HTML-Parser
- - perl-HTML-Tagset
- - perl-HTTP-Cookies
- - perl-HTTP-Date
- - perl-HTTP-Message
- - perl-HTTP-Negotiate
- perl-HTTP-Tiny
- perl-IO-Compress
- perl-IO-Compress-Lzma
- - perl-IO-HTML
- perl-IO-Socket-IP
- - perl-IO-Socket-SSL
- perl-IPC-Cmd
+ - perl-IPC-SysV
+ - perl-IPC-System-Simple
+ - perl-Importer
- perl-JSON-PP
- - perl-LWP-MediaTypes
- perl-Locale-Maketext
- perl-MIME-Base64
- perl-MRO-Compat
- perl-Math-BigInt
+ - perl-Math-BigInt-FastCalc
+ - perl-Math-BigRat
- perl-Module-Build
- perl-Module-CoreList
- perl-Module-CoreList-tools
- perl-Module-Load
- perl-Module-Load-Conditional
- perl-Module-Metadata
- - perl-Module-ScanDeps
- - perl-Module-Signature
- - perl-NTLM
- - perl-Net-HTTP
- - perl-Net-SSLeay
- - perl-PAR
- - perl-PAR-Dist
- - perl-PAR-Packer
+ - perl-Module-Pluggable
+ - perl-Object-HashBase
- perl-Package-Generator
- perl-Params-Check
- perl-Params-Util
- perl-PathTools
- perl-Perl-OSType
+ - perl-PerlIO-via-QuotedPrint
- perl-Pod-Checker
- perl-Pod-Escapes
- - perl-Pod-Parser
- perl-Pod-Perldoc
- perl-Pod-Simple
- perl-Pod-Usage
@@ -3096,10 +3264,14 @@ data:
- perl-Storable
- perl-Sub-Exporter
- perl-Sub-Install
+ - perl-Sys-Syslog
- perl-Term-ANSIColor
- perl-Term-Cap
+ - perl-Term-Table
- perl-TermReadKey
- perl-Test-Harness
+ - perl-Test-Simple
+ - perl-Text-Balanced
- perl-Text-Diff
- perl-Text-Glob
- perl-Text-ParseWords
@@ -3109,30 +3281,31 @@ data:
- perl-Thread-Queue
- perl-Time-HiRes
- perl-Time-Local
- - perl-TimeDate
- - perl-Try-Tiny
- perl-URI
+ - perl-Unicode-Collate
- perl-Unicode-EastAsianWidth
- perl-Unicode-Normalize
- - perl-WWW-RobotRules
- - perl-YAML-Tiny
+ - perl-autodie
+ - perl-bignum
- perl-constant
+ - perl-experimental
- perl-inc-latest
- perl-libintl-perl
- perl-libnet
- - perl-libwww-perl
- perl-local-lib
- perl-parent
+ - perl-perlfaq
- perl-podlators
- perl-srpm-macros
- perl-threads
- perl-threads-shared
- perl-version
- physfs
+ - pipewire-devel
- pipewire-gstreamer
+ - pipewire-libjack
+ - pipewire-libpulse
- pipewire-libs
- - pipewire0.2-devel
- - pipewire0.2-libs
- pixman
- pixman-devel
- libpkgconf
@@ -3165,6 +3338,8 @@ data:
- python-setuptools-wheel
- python3-setuptools
- python3-six
+ - python3-wheel
+ - python-unversioned-command
- python3
- python3-devel
- python3-libs
@@ -3238,6 +3413,7 @@ data:
- rubygem-openssl
- rubygem-psych
- rubygem-json
+ - rubygem-racc
- rubygem-rake
- rubygem-rdoc
- rubygems
@@ -3263,6 +3439,7 @@ data:
- xml-common
- shadow-utils
- shared-mime-info
+ - slang
- sord
- soundtouch
- source-highlight
@@ -3270,6 +3447,9 @@ data:
- speex-devel
- speexdsp
- speexdsp-devel
+ - spirv-headers-devel
+ - spirv-tools
+ - spirv-tools-devel
- spirv-tools-libs
- sqlite
- sqlite-devel
@@ -3293,6 +3473,18 @@ data:
- tzdata
- unbound-libs
- unzip
+ - urw-base35-bookman-fonts
+ - urw-base35-c059-fonts
+ - urw-base35-d050000l-fonts
+ - urw-base35-fonts
+ - urw-base35-fonts-common
+ - urw-base35-gothic-fonts
+ - urw-base35-nimbus-mono-ps-fonts
+ - urw-base35-nimbus-roman-fonts
+ - urw-base35-nimbus-sans-fonts
+ - urw-base35-p052-fonts
+ - urw-base35-standard-symbols-ps-fonts
+ - urw-base35-z003-fonts
- libblkid
- libblkid-devel
- libfdisk
@@ -3305,7 +3497,10 @@ data:
- libuuid-devel
- util-linux
- uuidd
+ - libdvbv5
+ - libdvbv5-devel
- libv4l
+ - libv4l-devel
- valgrind
- valgrind-devel
- valgrind-tools-devel
@@ -3326,8 +3521,10 @@ data:
- wayland-protocols-devel
- webrtc-audio-processing
- webrtc-audio-processing-devel
+ - wget
- which
- woff2
+ - xapian-core-libs
- xcb-proto
- xcb-util
- xcb-util-devel
@@ -3344,6 +3541,8 @@ data:
- xdg-user-dirs
- xkeyboard-config
- xkeyboard-config-devel
+ - xorg-x11-font-utils
+ - xorg-x11-fonts-ISO8859-1-100dpi
- xorg-x11-proto-devel
- xorg-x11-server-utils
- xorg-x11-util-macros
diff --git a/tools/generate-files.sh b/tools/generate-files.sh
index ad28b16..b4ea4e4 100755
--- a/tools/generate-files.sh
+++ b/tools/generate-files.sh
@@ -6,11 +6,11 @@ base=$(basename $out)
case $base in
freedesktop-*)
ns=org.freedesktop
- version=19.08
+ version=20.08
;;
gnome-*)
ns=org.gnome
- version=3.36
+ version=3.38
;;
*)
echo 1>&2 "Can't identify runtime for $base"
diff --git a/tools/resolve-files.py b/tools/resolve-files.py
index 81f0e50..6115967 100755
--- a/tools/resolve-files.py
+++ b/tools/resolve-files.py
@@ -47,9 +47,9 @@ bin_ignore = [
# An implementation of tar for cross-platform compatibility, disabled in gnupg2.spec
'gpgtar',
- # Versioned python-3.7 binaries
- 'pydoc3.7', 'python3.7', 'python3.7-config', 'python3.7m', 'python3.7m-config', '2to3-3.7',
- 'easy_install-3.7', 'pip3.7', 'pyvenv-3.7',
+ # Versioned python-3.8 binaries
+ 'pydoc3.8', 'python3.8', 'python3.8-config', 'python3.8m', 'python3.8m-config', '2to3-3.8',
+ 'easy_install-3.8', 'pip3.8', 'pyvenv-3.8',
# nettle utilities not currently packaged in fedora
# (https://src.fedoraproject.org/rpms/nettle/c/2ec204e2de17006b566c9ff7d90ec...)
@@ -148,7 +148,7 @@ bin_ignore = [
'paplay', 'parec', 'parecord', 'pax11publish',
# pipewire-utils
- 'pipewire-cli', 'pipewire-monitor', 'spa-inspect', 'spa-monitor',
+ 'pw-cat', 'pw-cli', 'pw-dot', 'pw-metadata', 'pw-mididump', 'pw-midiplay', 'pw-midirecord', 'pw-mon', 'pw-play', 'pw-profiler', 'pw-record', 'spa-inspect', 'spa-monitor',
# libsndfile-utils
'sndfile-cmp', 'sndfile-concat', 'sndfile-convert', 'sndfile-deinterleave',
@@ -177,10 +177,7 @@ ignore.update('/usr/bin/' + x for x in bin_ignore)
# development tools in the freedesktop runtime
platform_bin_ignore = [
- 'croco-0.6-config',
- 'dwz',
'fftw-wisdom', 'fftw-wisdom-to-conf',
- 'ifnames',
'make',
'm4',
'orcc',
@@ -190,14 +187,18 @@ if is_platform:
ignore.update('/usr/bin/' + x for x in platform_bin_ignore)
bin_rename = {
+ 'clang-10': 'clang',
# lcms2 compiled with --program-suffix=2 in Fedora, even though there are no actual
# conflicts between lcms and lcms2 - jpegicc was renamed to jpgicc, etc.
'jpgicc': 'jpgicc2',
'linkicc': 'linkicc2',
- 'perl5.30.0': 'perl',
'psicc': 'psicc2',
'tificc': 'tificc2',
'transicc': 'transicc2',
+ 'vala-0.50': 'vala-0.48',
+ 'vala-gen-introspect-0.50': 'vala-gen-introspect-0.48',
+ 'valac-0.50': 'valac-0.48',
+ 'vapigen-0.50': 'vapigen-0.48',
}
rename.update({ '/usr/bin/' + k: '/usr/bin/' + v for k, v in bin_rename.items() })
@@ -214,20 +215,28 @@ lib_rename = {
# Newer in Fedora
'libaom.so.0': 'libaom.so.2',
'libasan.so.5': 'libasan.so.6',
- 'libclang.so.8': 'libclang.so.11',
+ 'libclang-cpp.so.10': 'libclang-cpp.so.11',
+ 'libclang.so.10': 'libclang.so.11',
'libdav1d.so.2': 'libdav1d.so.4',
- 'libgettextlib-0.20.1.so': 'libgettextlib-0.21.so',
- 'libgettextsrc-0.20.1.so': 'libgettextsrc-0.21.so',
+ 'libgettextlib-0.20.2.so': 'libgettextlib-0.21.so',
+ 'libgettextsrc-0.20.2.so': 'libgettextsrc-0.21.so',
'libkadm5clnt_mit.so.11': 'libkadm5clnt_mit.so.12',
'libkadm5srv_mit.so.11': 'libkadm5srv_mit.so.12',
'libkdb5.so.9': 'libkdb5.so.10',
- 'libLTO.so.8': 'libLTO.so.11',
+ 'libLLVM-10.so': 'libLLVM-11.so',
+ 'libLTO.so.10': 'libLTO.so.11',
'libprocps.so.7': 'libprocps.so.8',
- 'libpython3.7m.so': 'libpython3.9.so',
+ 'libpython3.8.so': 'libpython3.9.so',
+ 'libRemarks.so.10': 'libRemarks.so.11',
'libverto.so.0': 'libverto.so.1',
+ # Older in Fedora
+ 'libffi.so.7': 'libffi.so.6',
+ 'libvala-0.50.so': 'libvala-0.48.so',
+ 'libvala-0.50.so.0': 'libvala-0.48.so.0',
+
# Replaced by libxcrypt in Fedora
- 'libcrypt-2.30.so': 'libcrypt.so.2',
+ 'libcrypt-2.31.so': 'libcrypt.so.2',
# Compat symlink in gcr
'libgcr-3.so.1': 'libgcr-ui-3.so.1',
@@ -237,17 +246,17 @@ lib_rename = {
}
rename.update({ '/usr/lib64/' + k: '/usr/lib64/' + v for k, v in lib_rename.items() })
-for old in ['libasm-0.177.so', 'libdw-0.177.so', 'libelf-0.177.so']:
- rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-0.177', '-0.180')
+for old in ['libasm-0.180.so', 'libdw-0.180.so', 'libelf-0.180.so']:
+ rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-0.180', '-0.181')
# Fedora has newer glibc
-for old in ['ld-2.30.so', 'libBrokenLocale-2.30.so', 'libanl-2.30.so', 'libc-2.30.so',
- 'libdl-2.30.so', 'libm-2.30.so',
- 'libmvec-2.30.so', 'libnsl-2.30.so', 'libnss_compat-2.30.so',
- 'libnss_db-2.30.so', 'libnss_dns-2.30.so', 'libnss_files-2.30.so',
- 'libnss_hesiod-2.30.so', 'libpthread-2.30.so', 'libresolv-2.30.so',
- 'librt-2.30.so', 'libutil-2.30.so']:
- rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-2.30', '-2.32')
+for old in ['ld-2.31.so', 'libBrokenLocale-2.31.so', 'libanl-2.31.so', 'libc-2.31.so',
+ 'libdl-2.31.so', 'libm-2.31.so',
+ 'libmvec-2.31.so', 'libnsl-2.31.so', 'libnss_compat-2.31.so',
+ 'libnss_db-2.31.so', 'libnss_dns-2.31.so', 'libnss_files-2.31.so',
+ 'libnss_hesiod-2.31.so', 'libpthread-2.31.so', 'libresolv-2.31.so',
+ 'librt-2.31.so', 'libutil-2.31.so']:
+ rename['/usr/lib64/' + old] = '/usr/lib64/' + old.replace('-2.31', '-2.32')
# Fedora has newer icu
for old in ['libicudata.so.64', 'libicui18n.so.64', 'libicuio.so.64', 'libicutest.so.64',
@@ -292,9 +301,11 @@ pc_ignore = {
ignore.update('/usr/lib64/pkgconfig/' + x for x in pc_ignore)
pc_rename = {
- 'python-3.7.pc': 'python-3.9.pc',
- 'python-3.7m.pc': 'python-3.9.pc',
- 'ruby-2.6.pc': 'ruby.pc',
+ 'libvala-0.50.pc': 'libvala-0.48.pc',
+ 'python-3.8.pc': 'python-3.9.pc',
+ 'python-3.8-embed.pc': 'python-3.9-embed.pc',
+ 'ruby-2.7.pc': 'ruby.pc',
+ 'vapigen-0.50.pc': 'vapigen-0.48.pc',
}
rename.update({ '/usr/lib64/pkgconfig/' + k: '/usr/lib64/pkgconfig/' + v for k, v in pc_rename.items() })
rename.update({ '/usr/share/pkgconfig/' + k: '/usr/share/pkgconfig/' + v for k, v in pc_rename.items() })
@@ -310,15 +321,15 @@ ignore_patterns = [
r'/usr/include/md/.*',
# Windows binaries?
- r'/usr/lib64/python3.7/site-packages/setuptools/.*.exe',
+ r'/usr/lib64/python3.8/site-packages/setuptools/.*.exe',
# differences in pip packaging - unbundling
- r'^/usr/lib64/python3.7/site-packages/pip/_internal/.*',
- r'^/usr/lib64/python3.7/site-packages/pip/_vendor/.*',
+ r'^/usr/lib64/python3.8/site-packages/pip/_internal/.*',
+ r'^/usr/lib64/python3.8/site-packages/pip/_vendor/.*',
# Let the python files pull in the packages, avoid versioned directory names
- r'^/usr/lib64/python3.7/site-packages/[^/]*.dist-info/.*',
- r'^/usr/lib64/python3.7/site-packages/[^/]*.egg-info/.*',
+ r'^/usr/lib64/python3.8/site-packages/[^/]*.dist-info/.*',
+ r'^/usr/lib64/python3.8/site-packages/[^/]*.egg-info/.*',
# fcitx
r'/usr/lib64/libfcitx.*',
@@ -342,15 +353,15 @@ ignore_patterns = [
ignore_compiled = [re.compile(x) for x in ignore_patterns]
rename_patterns = [
- (r'^/usr/include/c\+\+/9.2.0/(.*)', r'/usr/include/c++/10/\1'),
+ (r'^/usr/include/c\+\+/10.2.0/(.*)', r'/usr/include/c++/10/\1'),
(r'^/usr/include/c\+\+/10/x86_64-unknown-linux-gnu/(.*)', r'/usr/include/c++/10/x86_64-redhat-linux/\1'),
(r'^/usr/include/nss/(.*)', r'/usr/include/nss3/\1'),
- (r'^/usr/include/python3.7m/(.*)', r'/usr/include/python3.9/\1'),
- (r'^/usr/include/ruby-2.6.0/ruby/(.*)', r'/usr/include/ruby/\1'),
- (r'^/usr/include/ruby-2.6.0/x86_64-linux/ruby/(.*)', r'/usr/include/ruby/\1'),
- (r'^/usr/include/ruby-2.6.0/(.*)', r'/usr/include/ruby/\1'),
+ (r'^/usr/include/python3.8/(.*)', r'/usr/include/python3.9/\1'),
+ (r'^/usr/include/ruby-2.7.0/ruby/(.*)', r'/usr/include/ruby/\1'),
+ (r'^/usr/include/ruby-2.7.0/x86_64-linux/ruby/(.*)', r'/usr/include/ruby/\1'),
+ (r'^/usr/include/ruby-2.7.0/(.*)', r'/usr/include/ruby/\1'),
(r'^/usr/lib64/pkgconfig/(.*proto.pc)', r'/usr/share/pkgconfig/\1'),
- (r'^/usr/lib64/python3.7/(.*)', r'/usr/lib64/python3.9/\1'),
+ (r'^/usr/lib64/python3.8/(.*)', r'/usr/lib64/python3.9/\1'),
(r'^/usr/share/fonts/dejavu/(DejaVuSansMono.*)', r'/usr/share/fonts/dejavu-sans-mono-fonts/\1'),
(r'^/usr/share/fonts/dejavu/(DejaVuSans.*)', r'/usr/share/fonts/dejavu-sans-fonts/\1'),
(r'^/usr/share/fonts/dejavu/(DejaVuMath.*)', r'/usr/share/fonts/dejavu-serif-fonts/\1'),
@@ -360,6 +371,7 @@ rename_patterns = [
(r'^/usr/share/fonts/liberation-fonts/(LiberationMono.*)', r'/usr/share/fonts/liberation-mono/\1'),
(r'^/usr/share/fonts/liberation-fonts/(LiberationSans.*)', r'/usr/share/fonts/liberation-sans/\1'),
(r'^/usr/share/fonts/liberation-fonts/(LiberationSerif.*)', r'/usr/share/fonts/liberation-serif/\1'),
+ (r'^/usr/share/fonts/adobe-source-code-pro-fonts/(.*)', r'/usr/share/fonts/adobe-source-code-pro/\1'),
]
rename_compiled = [(re.compile(a), b) for a, b in rename_patterns]
@@ -370,6 +382,12 @@ global_package_ignore_patterns = [
'^fcitx-.*$',
# Should be installed on the host instead
+ '^jack-audio-connection-kit$',
+ '^pipewire$',
+ '^pulseaudio$',
+ '^tracker3$',
+ '^v4l-utils$',
+ '^v4l-utils-devel-tools$',
'^xdg-desktop-portal$',
'^xdg-desktop-portal-devel$',
]
@@ -378,6 +396,7 @@ global_package_ignore_compiled = [re.compile(p) for p in global_package_ignore_p
platform_package_ignore_patterns = [
"^.*-devel$",
"^libappstream-glib-builder$", # may not need in the sdk either
+ "^gcc-gdb-plugin$", # pulls in gcc
"^gtk-doc$",
"^icu$", # may not need in the sdk either
'^llvm$',
https://src.fedoraproject.org/flatpaks/flatpak-runtime/c/3bd65311cfdde88d...
10 months, 1 week
orion pushed to rpms/mingw-libgcrypt (epel9). "Initial import."
by notifications@fedoraproject.org
Notification time stamped 2023-02-12 14:55:04 UTC
From f29153ff48812d4c246ea4310d7ea9e8244d24a0 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones(a)fedoraproject.org>
Date: Feb 09 2009 09:21:26 +0000
Subject: Initial import.
---
diff --git a/.cvsignore b/.cvsignore
index e69de29..4358808 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -0,0 +1 @@
+libgcrypt-1.4.4.tar.bz2
diff --git a/hobble-libgcrypt b/hobble-libgcrypt
new file mode 100755
index 0000000..1062d6e
--- /dev/null
+++ b/hobble-libgcrypt
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Quit out if anything fails.
+set -e -x
+
+# Clean out patent-or-otherwise-encumbered code.
+# EC: ????????? ??/??/2015
+
+rm -f cipher/ecc.c
diff --git a/import.log b/import.log
new file mode 100644
index 0000000..b9fdbdc
--- /dev/null
+++ b/import.log
@@ -0,0 +1 @@
+mingw32-libgcrypt-1_4_4-1_fc11:HEAD:mingw32-libgcrypt-1.4.4-1.fc11.src.rpm:1234170940
diff --git a/libgcrypt-1.4.4-fips-no-access.patch b/libgcrypt-1.4.4-fips-no-access.patch
new file mode 100644
index 0000000..f2972e9
--- /dev/null
+++ b/libgcrypt-1.4.4-fips-no-access.patch
@@ -0,0 +1,13 @@
+Do not abort when the fips mode flag is simply inaccessible because of
+insufficient permissions.
+diff -up libgcrypt-1.4.4/src/fips.c.no-access libgcrypt-1.4.4/src/fips.c
+--- libgcrypt-1.4.4/src/fips.c.no-access 2009-01-29 17:37:12.000000000 +0100
++++ libgcrypt-1.4.4/src/fips.c 2009-01-29 17:37:15.000000000 +0100
+@@ -155,6 +155,7 @@ _gcry_initialize_fips_mode (int force)
+ fclose (fp);
+ }
+ else if ((saved_errno = errno) != ENOENT
++ && saved_errno != EACCES
+ && !access ("/proc/version", F_OK) )
+ {
+ /* Problem reading the fips file despite that we have the proc
diff --git a/libgcrypt-1.4.4.tar.bz2.sig b/libgcrypt-1.4.4.tar.bz2.sig
new file mode 100644
index 0000000..b5d5e72
Binary files /dev/null and b/libgcrypt-1.4.4.tar.bz2.sig differ
diff --git a/mingw32-libgcrypt.spec b/mingw32-libgcrypt.spec
new file mode 100644
index 0000000..6558024
--- /dev/null
+++ b/mingw32-libgcrypt.spec
@@ -0,0 +1,147 @@
+%define __strip %{_mingw32_strip}
+%define __objdump %{_mingw32_objdump}
+%define _use_internal_dependency_generator 0
+%define __find_requires %{_mingw32_findrequires}
+%define __find_provides %{_mingw32_findprovides}
+
+%define run_tests 0
+
+Name: mingw32-libgcrypt
+Version: 1.4.4
+Release: 1%{?dist}
+Summary: MinGW Windows gcrypt encryption library
+
+License: LGPLv2+ and GPLv2+
+Group: Development/Libraries
+
+URL: ftp://ftp.gnupg.org/gcrypt/libgcrypt/
+# The original libgcrypt sources now contain potentially patented ECC
+# cipher support. We have to remove it in the tarball we ship with
+# the hobble-libgcrypt script.
+Source0: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-%{version}.tar.bz2
+Source1: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-%{version}.tar.bz2.sig
+Source2: wk(a)g10code.com
+Source3: hobble-libgcrypt
+
+Patch1: libgcrypt-1.4.4-fips-no-access.patch
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildArch: noarch
+
+BuildRequires: mingw32-filesystem >= 40
+BuildRequires: mingw32-gcc
+BuildRequires: mingw32-binutils
+BuildRequires: mingw32-libgpg-error
+BuildRequires: mingw32-dlfcn
+
+%if %run_tests
+BuildRequires: wine
+%endif
+
+
+%description
+Libgcrypt is a general purpose crypto library based on the code used
+in GNU Privacy Guard.
+
+This is a Windows cross-compiled version of the library.
+
+
+%prep
+%setup -q -n libgcrypt-%{version}
+%{SOURCE3}
+%patch1 -p1 -b .no-access
+
+
+%build
+%{_mingw32_configure} \
+ --disable-static \
+ --enable-pubkey-ciphers='dsa elgamal rsa'
+make %{?_smp_mflags}
+
+
+%check
+%if %run_tests
+# Stupid Wine doesn't load DLLs from the PATH any
+# more, so libtool scripts don't work. As a result
+# we need to use the following Big Hack.
+make -C tests check ||:
+pushd src/.libs
+for t in $(pwd)/../../tests/*.exe; do
+ wine $t
+done
+popd
+%endif
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make DESTDIR=$RPM_BUILD_ROOT install
+
+# Remove info pages which duplicate what is in Fedora natively.
+rm -rf $RPM_BUILD_ROOT%{_mingw32_infodir}
+
+rm $RPM_BUILD_ROOT%{_mingw32_libdir}/libgcrypt.def
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%files
+%defattr(-,root,root)
+%doc COPYING COPYING.LIB
+%{_mingw32_bindir}/dumpsexp.exe
+%{_mingw32_bindir}/hmac256.exe
+%{_mingw32_bindir}/libgcrypt-11.dll
+%{_mingw32_bindir}/libgcrypt-config
+%{_mingw32_libdir}/libgcrypt.dll.a
+%{_mingw32_libdir}/libgcrypt.la
+%{_mingw32_includedir}/gcrypt-module.h
+%{_mingw32_includedir}/gcrypt.h
+%{_mingw32_datadir}/aclocal/libgcrypt.m4
+
+
+%changelog
+* Fri Feb 6 2009 Richard W.M. Jones <rjones(a)redhat.com> - 1.4.4-1
+- Update to Fedora native version 1.4.4:
+ . Remove potentially patented ECC support.
+ . Do not abort when the fips mode kernel flag is inaccessible
+ due to permissions (#470219).
+- For review (Michel Alexandre Salim):
+ . Remove *.def file.
+ . Make description clearer.
+ . Distribute the license files.
+- The license for binaries is GPLv2+, so update the license field.
+- Add check section (disabled by default).
+- Why did we set PATH before configure? Removed.
+- Added BR mingw32-dlfcn suggested by auto-buildrequires.
+
+* Fri Jan 23 2009 Richard W.M. Jones <rjones(a)redhat.com> - 1.4.3-3
+- Use _smp_mflags.
+- Disable static libraries.
+
+* Wed Sep 24 2008 Richard W.M. Jones <rjones(a)redhat.com> - 1.4.3-2
+- Rename mingw -> mingw32.
+
+* Mon Sep 22 2008 Daniel P. Berrange <berrange(a)redhat.com> - 1.4.3-1
+- Update to 1.4.3 release
+
+* Sun Sep 21 2008 Richard W.M. Jones <rjones(a)redhat.com> - 1.4.1-6
+- Remove info pages.
+
+* Thu Sep 11 2008 Daniel P. Berrange <berrange(a)redhat.com> - 1.4.1-5
+- Set PATH so it finds gpg-error-config
+
+* Wed Sep 10 2008 Richard W.M. Jones <rjones(a)redhat.com> - 1.4.1-4
+- Remove static library.
+
+* Thu Sep 4 2008 Richard W.M. Jones <rjones(a)redhat.com> - 1.4.1-3
+- Use RPM macros from mingw-filesystem.
+
+* Tue Sep 2 2008 Daniel P. Berrange <berrange(a)redhat.com> - 1.4.1-2
+- List files explicitly and use custom CFLAGS
+
+* Mon Jul 7 2008 Richard W.M. Jones <rjones(a)redhat.com> - 1.4.1-1
+- Initial RPM release, largely based on earlier work from several sources.
diff --git a/sources b/sources
index e69de29..72eac4f 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+34105aa927e23c217741966496b97e67 libgcrypt-1.4.4.tar.bz2
diff --git a/wk(a)g10code.com b/wk(a)g10code.com
new file mode 100644
index 0000000..5e193e3
--- /dev/null
+++ b/wk(a)g10code.com
@@ -0,0 +1,2007 @@
+Login: wk Name: Werner Koch
+No project.
+No plan.
+Public key:
+ pub 1024D/5B0358A2 1999-03-15 [expires: 2011-07-11]
+ uid Werner Koch <wk(a)gnupg.org>
+ uid Werner Koch <wk(a)g10code.com>
+ uid Werner Koch
+ uid Werner Koch <werner(a)fsfe.org>
+ sub 1024D/010A57ED 2004-03-21 [expires: 2007-12-31]
+ sub 2048R/C3680A6E 2006-01-01 [expires: 2007-12-31]
+
+ pub 1024R/1CE0C630 2006-01-01 [expires: 2008-12-31]
+ uid Werner Koch (dist sig) <dd9jn(a)gnu.org>
+
+ pub 1024R/37D92FFB 2003-11-17 [expires: 2009-12-31]
+ uid g10 Code (code signing key 1) <code(a)g10code.com>
+
+ pub 1024D/57548DCD 1998-07-07 [expired: 2005-12-31]
+ uid Werner Koch (gnupg sig) <dd9jn(a)gnu.org>
+
+
+5B0358A2 is my main key.
+1CE0C630 is used to sign software distributions.
+37D92FFB is used to sign certain source files.
+57548DCD was used to sign GNU crypto software;
+ it has been superseded by 1CE0C630.
+
+Please note that I use a subkey for signing messages; some old OpenPGP
+implementations may not be able to check such a signature. The primary
+key is stored at a more or less secure place and only used on a spare
+laptop which is not connected to any network. If you find a key
+certified by this one, you can be sure that I personally met this
+person and checked the name part of the user ID against an official
+looking passport or another suitable photo id. My signature does not
+say anything about the email address (I merely check that the address
+looks plausible).
+
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.7 (GNU/Linux)
+
+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
+Ooh6BBMRAgA6BQJEXmVkMxpodHRwOi8vd3d3LnNjLWRlbHBoaW4tZXNjaHdlaWxl
+ci5kZS9wZ3AvaW5kZXguaHRtbAAKCRC0deIHurWCKcwdAJ4hvG79xMFKtYL0GGP8
+WuvvxnMnzQCfZUjHFhMNMGgrCPthD6oeNaw2FxCIRgQTEQIABgUCRFz9JwAKCRCK
+o2Kv6XIyzVjaAJ9MSW3iP1fUZqr7xdbj/PLkHLzJeACfZNe6IgDrJk9E3a/8IKZi
+E4iYtqWIRgQTEQIABgUCRFz9LwAKCRCn31hycNRMI+EXAKDRHf6ZRUGa6T7Uosgx
+huo5I3sK6gCfRxthF9FN1SXK11O+tjRS1mwN0JaIYwQTEQIAGwUCNxrPkAUJDMl8
+gAMLCgMDFQMCAxYCAQIXgAASCRBd4kmWWwNYogdlR1BHAAEBXcIAnjv7ON5AiwzC
+LBwm9h9ywufXJQuVAJ9RMq6lpPqnDly6UCKz+kGt0EplyIhmBBMRAgAeAwsKAwMV
+AwIDFgIBAheAAhkBBQJAXdnoBQkTa4v/ABIHZUdQRwABAQkQXeJJllsDWKLs0gCg
+y5RdOqhFvwUFYWj+dHb4LGt7xi0AoKduFxGMuM/loPShQnjvk/VVFesAiF4EExEC
+AB4DCwoDAxUDAgMWAgECF4ACGQEFAkBd2egFCRNri/8ACgkQXeJJllsDCRDs0gCg
+y5RdOqhFvwUFYWj+dHb4LGt7xi0AoKduFxGMuM/loPShQnjvk/VVFesAiQEVAwUQ
+O0HCUNImKUTOasbBAQFLZwgAkgMC/ximskOjL/CxghgdkSWkDFdpEr3XYhzUdLes
+WgN4AM28mGZZKA9la7dXXRrKYkxhX8mpL4C3Q9LnrafP+Zn1c8mTuNIxX86j7iZA
+IksoZ4D2csN8NSMYT9pKK6jZP1IOckCFBBI0W/yMGUGulDitWj4TwIArf2xQkV73
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////4hGBBMRAgAGBQJDRBuk
+AAoJEOrUtZD2iZvAafoAoKReCbMFRrpwzb2tS7M6iHDbN9E+AJoDy8nLf8A4f/EV
+m8OJWOf1pPKQGIhGBBARAgAGBQJEBYJRAAoJEG9dWWgc1S3oeAEAoJ5eVEYwpcqY
+78oHQ+2EWJ2R06BjAJ9mWcCCynLCjGXBJoYq6YLVaFCIFIhGBBARAgAGBQJEBgo0
+AAoJEJrJ0ixjXGNLQMMAoIh/01hmpfi1faVNvL22r7ihJjZNAJ9D9+xBrz0F2TMg
+YmUjGBlCIcwS2ohMBBIRAgAMBQJEBisnBYMGUqnBAAoJEN/mV5IylcXNlHAAoLcf
+b8fPerFL+kZ/yqTlqUFFW/FuAKC2IZto5Zu7WYDUrn28L1sh2LZe/IhMBBIRAgAM
+BQJEBitnBYMGUqmBAAoJEKDlFb85iAlULdYAoOSbU4vrwlbc3XzB5hJVNFjbNYOe
+AJ9pvj47lRFbnCyttUM2oKQiwW5AyohjBBMRAgAjAheAAhkBBQkTa4v/BQJCWUBy
+BQsHCgMCAxUCAwMWAgECHgEACgkQXeJJllsDCRA6xwCfV3paxYsk7KQmrtOUxNmZ
+b004OQoAn3uq9imOpgxqsXhXaLfz5IqZu5O7iJwEEwECAAYFAkQNdeYACgkQ/dJ0
+ek5GOmql+gQAmRKGvqN8lINhyZL1ClLN9+X5BTOGyxi6Fb8SBBqElGbHVJwLncxn
+LmElgudpGPyAS1wZ+9aymUjUkPyVltA/lw6AzkLfqlFGG2MnOVi3WejwcyhSbL+L
+XJ3N6CLRpVajI5j8+mHWe9Cdo2NGwMHfgIg7xeZOgeJZixPEe3Zhvh2JAhwEEAEC
+AAYFAkQPSIoACgkQGioH6hxXudmtvRAAiX8daFke18xh6V0P3tFtkzZo3xCGfqus
+uoAHmgByNeZmhoFLyA+UgUUGJTKiLOIgVxmcZ5srr61I0dsY95iE/LCzzcqWsfWC
+mbr/3d/nrhPa31rGfucT95wxC4SeOXxBhfmd0muB/ZRhqGnHE1VXPHuDYBF70Z9J
+Sy3Tpdcx6eDvG/rfY2qUqiLn5wi2EG6EyAUJNXJ0GMcv2qoBGvOITtBpvnQJAniy
+120ig36q/SCggdM2nr+UIDnLBo+p4gvmfqLEZ3S4z/RCApKfoqFOiWK7P7N42My/
+iQyZAEn/kjiCm1s470LMqXAJZC20e7ZxJoLxputm1Nd4LL8oP0n6xYQiOXxgsRzK
+abBb8ZYHoYujGEMcODqXSEvsES7kP2DMenYBwmT/ceqk41VCV4w4eYQscDCuVm0/
+oxoqlcplLPaoptyvES0VjlLwW8LeMzc3AMPOnxYamBvMYlBpoN2VmG5dDbnFCPtc
+o9LPuMYfBh+KWQ4m7tQbwP689bcR1d85hyBZIRBkojz3C8FRZQZcs6VK5n8tKV63
+YsDSacbfcoFEN54uOeVZsLEqR9vCG98g4/nxcGWwveXY/9nyqw8HaeFxisl0xkmK
+sP+KqPNt2dfdqBi1PjNhO0NmViCa68kJRwWkdkOtxIaKYab7w454D7A+YwaX8ptM
+m3jwFqX5bUOJAiIEEAECAAwFAkQFDZkFgwZTx08ACgkQbjbvGsyNqzDkcBAAhZmu
+EA5Pk1Dzd1QYLex2ZoN/XrXaZZ3WpcKlQSPvz5uuW9PV7lh8ixgHCTPZPh1EvrKl
+aVtgciIxlUSPQTAdTVdDK9V/zUhV918GG1KpWvaf+cgCv2kdF/V9+iNQhrpPPxuw
+J1TfByzSfqdHyIuXrao2BzhdMtXPf3wFY6CtFKCZ+FoShsV2Fl3SsJRpxz0JnqJY
+N9njPTIYCrrR1Np+u5CcMO4e2erl0IXaffDQmeJMZFJ1fiZwJIpyZYOS61T2kUz4
+6Y7RkV0kO0nWuQiv6UAAmr1DlE9WtpdbqJVDTFQUW39o2kfOBXQrHz1NqfVxu4/a
+sNCMmp/yK6RK3paN6AyD0Jhm1ipAOySNsVsMbvWZ1q9rlaPWscCslcJVw0t30a7t
+U/DtQtF0nL8HJE8fdRXaKihHlCxU8UEhKDjM+R9wMPDkDdaY03jz7e+2N1lVQqQG
+VAGvNkUBdpaOqwwtJDoAF8OeBfJX+zFS9whvBSQjPimxnQ9B+qdZwTuO3uFrGrXS
+dtCGKsrrwXOZnJNU4lNK8BxPUQwGtgAEj/5zPLb4T4Lxsm9aDiHwFuYR2AQuO79Q
+68CbMGYr4i7JdSudLg8hHsBQT8ZweBBbUu+Qym2xGPMGbUOmeiIkNP6mlyY8TQG7
+5ZdfHr7/NExOtgzwPicrmz6RB5GuO30iMiMeqSSJAiIEEAECAAwFAkQFESIFgwZT
+w8YACgkQHRqO3OFAoFTM5A//aNCnL0pwr+ZWsFiuCt5J8nqN2V7VeRoT2WdKF5HL
+pIrlLLozUdd8S0Zi9u7PO8GLD9QOUGc4y+LnSTpDHb8u4t9OYrRNAocp6gIZmxjG
+5KuLPSUBc9ct27p/G0yIpgtgECCP55fY1XRAhkNnXWLVzsueEFdhPieO0gPqeVqP
+zfT+oDhx+bLVH0YtFxOYDeV2NewtUpuBnr4ZNRD0WrhW5F8yecuwqeFsF6YTHMsA
+L96xmlzNe3wx0I+qvWP3qHGWZs9DBMroBXL9BhpyzWA2079YSUC2dwxwnGAVSAbY
++c4bHr3On/GL0nhfwiyaD+8zSYAOey3xgYKJeGIWSA7TvcRic83khBroQN5JLK3D
+N+jM3JJqhj0zX/9kz29z7Up1cbnhJAEJKvPMhTh8VRafxHkYYMYqru+W+kkuHupC
+YgoJu2DeInhclmDjiE8CKW18w5jNjr7zH6tN8P6dnOazUeJyevBfipXEGLA3TT2j
+VFbf9zU7Cb7DaxMrqBaOSUpvp0LQkFT/weiyivKaMIyZ38HxNdfFAi4dTEFLHX+s
+osZWUZEODZ1rxBmAyP3A/F75YJolHmoZc4w72d3QD4HGeVD/3cWnREu/wvdko/2F
+ZACO8UvUAAP4UhXn9QO3a0+tFmCzkTuE+uuVrnfpT2a/4nRiJ4QADy0zwpTT9DPA
+HZ+IRgQQEQIABgUCREihIgAKCRAFi1rNRBxfge9RAJ9elNg4P6EYwz1GpslAJj06
+Fq7VYQCdGtSSX7L2xWY45o0QUEfU0nQVh0mIRgQQEQIABgUCREjJ+QAKCRCnL/Zs
+Qr1kXRdpAJ9QH3CweThQQgRcKs51pa6ig43RvwCeNdI5Nb+4SMtOEn+vCZZkbkkZ
+TZaIRgQQEQIABgUCRFsJZQAKCRB/3j6P8z4/xk2AAJ4wsIbdZzp82lspsNIhHurH
+VwUjgACfXS1Jg0jHmufMTiJSSd73hpD2mZKIRgQQEQIABgUCRGCHvQAKCRD9AQSw
+4jPImI7/AKCyxcVN5/xT6dsgrzxbi/nXuHLNegCcD98a67j7vpc2SujQQHzY2IFv
+rWWIRgQQEQIABgUCRGCItQAKCRD9AQSw4jPImHp8AJ9XcTvscy3DOWTayYxhHC/q
+VDKb0gCbBd5nO24QFPTZyXcDoXIR0hgm14CIRgQTEQIABgUCRE/tdQAKCRA/0h0q
+mjpVWG8XAJ9+ukhr7X2AcbdJuxDSRCwyUmYO1wCffLzymfNFEzhtNOZtaQF1bAHl
+v3OITAQQEQIADAUCRF3UigWDBfsAXgAKCRBbqJPk7D6Y33KuAJ9RAKZvdGKCczUu
++oNwzVggwGE+qACg02JOmubDdtMdXDmj/uKkqmafukqITAQQEQIADAUCRF8XTgWD
+Bfm9mgAKCRC8EAnaDpclP/ebAJ9ONfFPcQ8MAds2/dYUmViFlAIKKgCgkDyxYaAY
+eCh89VLSpsbbymWNDFmITAQSEQIADAUCRF22QgWDBfsepgAKCRAyNS1FZ/eCZB3D
+AJ9KBPUTTAcmJLEQ+fOcWNOJwpF2JACfaUv3jKhFU5tMS1cemDujhEiF89CI3AQQ
+AQIABgUCRFC2nQAKCRDR2VIECemh1RMWBf0aP1ofgRg0fXsVu0wVJIN1H7n+uOIY
+WEVnPf/ZvtXAmr1P9koiOAl24jEWnpZA6hxzsC1zWEmGi0Zw96EhuFusDesRoQIE
+ZnNh92qm4uk0hJ0S2JItWs2H2wxc9oGAJOAICqxO80gDBJICwqqMdbevRgwHFmgc
+cMYpnE6YSrXgPVgC+dQNKBiPpm4HOL86EEMzD2blzqk5YSngn7efbDwWtDSABQby
+9QCRptwKQYOzHCi4gaK/g8I9K9dJf5IFXSyJARwEEAECAAYFAkRbcFcACgkQZ02H
+1ZEZDvnSNAf8CLIb+JRnGn8LqL/RmX51Ds8pPzOtmgwWNgDf5pIZm5jTtZH5o7z0
+qZ5FLBFok64+Gtusjh3q/RONlvZH7wF4Tg07Hsx13t8Ie3wNrhfjkScpEDK0UtOf
+FzOICVZTqjIVrex04yxDO+yV7reBm4AsWsqIEfOrwKY3cEiHpGd5/lC+wHIk9WxJ
+LbwjachXEwVnILZLHWZFFVXLYJigHwQjyu2keZZqx2tQcS6woZR8+XMy7WVD4D+D
+Db/BcWNjiSsqbwaH1FFqOqRpkOuHwt7JLxsdXavmRRkve8bIICb+SaM5Fy9/YYKT
+TcfT7WZ+KhcKSq95wxKWnSFAbILVzFvIAoicBBMBAgAGBQJElY7IAAoJENwG3M95
+JPpzBwMD/2VB1PQa9R5MbuIFSHXQztimwz6joPetCi7fmJczzTYGCg7PdEprwJQq
+H3dmAGieogM/o5NuuV2SGMdIDao3cYhCLFAQtIHCCMVQovqcDR5gSyDpD1j86x31
+OU7lMb6/YKoTcOTsoQ/zshz9I3stwo2gH6n84ZpskH5JR6iw9LgaiEYEEBECAAYF
+AkS9USsACgkQxKXVjqqse7z4uwCfSobUmYCrjQx18yvZI2MMVIZCSnkAnjvQJfqP
+XmH2Po11vZMNiRIX8hmDiEYEEBECAAYFAkS9OqsACgkQOOnzljbgEa9T0QCcCGOA
+6GP6/I9Qp9CO3JU2k2gSi4wAoKiUukIn5lcTF7yrbiw5ZYZg5LiWiEYEEBECAAYF
+AkTCe2sACgkQQggFxokHT60sKgCgnK85XyCxKr4itQm1t9ycMcYCO4wAnjMiXOIv
+dR1bzKum0oCd7XAgkCtaiEYEEBECAAYFAkSNRFUACgkQp6+YGoOsM0qlWgCghjwM
+VOscLRd9u4vRAW3EK7shbVQAn3YjbCUTJdUkM+NIE8CRT3+0vQhAiEYEEBECAAYF
+AkVXpxMACgkQ9LSwzHl+v6s6AwCeIMTlicVjKpG+5bmJF3lU8d4EsasAnjdIZ//X
+QTCVlBWswexfk+fnOGxfiEwEExECAAwFAkTKoAoFgwWONN4ACgkQDQUpyRODzWtt
+HgCeM1Lxur1xrAH8yGJHmmjVZrYWgWoAoIDCzJbJzfIdRC3b2ltUMuJj9rW2iLwE
+EAECAAYFAkVbQNQACgkQ7aIelLVlcW9CzQT8DE/+9x8eHNJRYPMpXRp5Y6K3idr8
+ZR5qwGCe8HejIX2pRnQ1rLfOerofNu067dhsaJ0Zg0O30K+QFgfFLT3WKVszGJGq
+GWxGYFAcof0dc0I5KUxWY4uUe9TjWILdbIKJuo5Lpu8AqGcCQHHd68GY8KyH1eTQ
+L/R5xNkuCqCrgP6LzVzF1RnnmbDwkQ/Yv+/dfx0x6aRRhe86l3fcoEVXHYhbBBMR
+AgAbBQI27UjqBQkMyXyAAwsKAwMVAwIDFgIBAheAAAoJEF3iSZZbA1iitdYAn1IJ
+bSJ46kvsBjq8X44hoybDZlbWAKCS2jR5Z+CmMC5WDqNepHXAe3alA4hGBBARAgAG
+BQJF7HurAAoJEM/oSL/8Z4Wi+XoAoM2fLIgxw1153EnODrrHXDJ77k3mAKCUenHB
+3eaF/Kh22kX1wHKAuaZbbohGBBARAgAGBQJF7eQvAAoJEHe+WRN3SdnZs/AAnAvH
+b0KGLdRdjXYeblfUmO3Fhq1DAJ9ZJ3fwyt8ziybro7B/sa7Rob9C94hGBBARAgAG
+BQI3NyPFAAoJEPbu3yAYS8TZh2UAoJVmzw85yHJzsXQ1vpO2IAPfv59NAJ9WY0oi
+Yqb3q1MSxBRwG0gViNCJ7YhGBBARAgAGBQI3OvmjAAoJEHUPZJXInZM+hosAnRnt
+Ckj/70shGTPxgpUF74zA+EbzAKCcMkyHXIz2W0Isw3gDt27Z9ggsE4hGBBARAgAG
+BQI4FA4ZAAoJEGAHkIBzx/NPiNoAnR3kwD7rJhHzdm3ZIo6VtYKcQbxqAJ9ZMy+z
+IO7QuKapasNn1d5EVMtWuYhGBBARAgAGBQI4KmIeAAoJEOPyWFQSjw55D5AAoJs5
+OxzJSdYdKsOjh8jLQxOESOE6AJ4vgpvtNaR384dBJxUE7yxNTPT7aIhGBBARAgAG
+BQI5yjsOAAoJECu7Q6bwnq8Krl8An21vcRhdgB0GpAT2pIetcSpgvFhBAJ908rX2
+Oaq048SI9h2RSjeULkKWEohGBBARAgAGBQI5yosvAAoJEBemQW33lI/aJm0An2EG
+MaYqXTBgcWzXfI2y/UQ5h95zAKCE5mZwycF86Rzbki2PKN3OWIR184hGBBARAgAG
+BQI5yp13AAoJEDX2YXxROu/ZXu4AoIEI7IxYY2iDtZVh3z7rJ9HanYUWAJ96zltF
+0noeuFfaPlSLR9i2Z4JjQIhGBBARAgAGBQI5yzIoAAoJEFGs9q11voCXCFYAn0Ua
+tBtnwnGThaHsvbmRgJFnLSrEAKC8OpVIXXmQ4FC6wwuzkESJOwpzLYhGBBARAgAG
+BQI5z6dSAAoJEJFazEWo9ML9CKsAn1hjHomefMrLmQgD/SLF92inEj7XAKCZ6NQj
+jowDIaFo1Ih3LYC2V/foE4hGBBARAgAGBQI50N/VAAoJEG8ji8JP2loMXyMAn2/x
+njAA/MPOIauf2lEDAr1alGKgAJ9O0irlmLGSxFLj1iIGGNMqAcicb4hGBBARAgAG
+BQI50gqxAAoJEL/hIGVrIUiavIwAn3X9tHarNyFjjx4BTHWG+VRflpCVAJ9Oarr8
+hwd17oPHLMVoOkcEn0AUwYhGBBARAgAGBQI6TMtFAAoJEO1Ggcm/Pfm0VK0AoOmq
+M6WIghAz1QB3ueP/P6uPBSz/AJ4r4hvX48SJz2kigfi10ZkI3Noy2YhGBBARAgAG
+BQI6iYHfAAoJEGKIBNsg/Gz2BmoAoIDLKhiTetSbjkJGOTIim+FD0KQcAJ4jWMEG
+/oZRMyRe6pzxAodDAMavDohGBBARAgAGBQI6wQjUAAoJELdWp4yIKmxLt9IAnRLE
+nhbSeSs4g+ZfwrwIVWbfZZ0FAJ0a5m1fB5J3V6d/gzaERILHGZP65YhGBBARAgAG
+BQI6wdEpAAoJENLwolOfiErIj5IAnjhWsrezZHMpsEwtlCjY48rpDQ7wAKC6v2zk
+zWRArc7WCDA0Nla82d5uiohGBBARAgAGBQI69XmLAAoJEOwOr3E2d4Al3a0AoJZS
+Mehtg5CkhigYWAoLMssBQVy1AJ9jyRqwjqL9C0vIwjA9l6OE+6n7I4hGBBARAgAG
+BQI69ZsBAAoJECwYoCq0xfN/hOAAn32uMmiej4+LhWWO3Vbojn5LqExPAJ4iHcNA
+1ZBwbsZTafTwIJYc7chPqIhGBBARAgAGBQI7RW07AAoJEOd14yTbQbOHsd8An1yz
+zbHDOFMbZstP7eWIIPZQ1hEAAJ0d/T/XibRHgbTD32xBmHNdAAao5IhGBBARAgAG
+BQI7RdkAAAoJECP6tfsIFswbiYAAniGpPgPfCIXlUqMFxuCeo8wQON/TAJ9iBQPB
+AfxJENa5+zhJhTV/vjzWcohGBBARAgAGBQI7RfEWAAoJECeGwkR/ikAX0sIAmgL5
+u6S/i4qGI/6CgwUNaSQI/lKjAJ9dFvESq2G5TGeC9dUdkzvcTrxZ+ohGBBARAgAG
+BQI7SA8WAAoJEAYGnPKWlFfwy1gAoIn2x7UoudCcZkq9fFqH3lXFXAF1AKCbPfWh
++v7fYJDt+Go144iEMXNKjIhGBBARAgAGBQI7SCdfAAoJENdZXTdLcpYlMeYAoIG4
+Rtbs73YBzWPKAreHHOk3x1ERAKCbkcPKtpG87Z7fE0OJo4kyDXAV84hGBBARAgAG
+BQI7ScGgAAoJEFCP02O8k2g5D44AnA0iUFGQQT/+Tr1uPENwVJFJEUkJAJ9TI6nu
+FkxRBAPByuYfig3KkdGmSIhGBBARAgAGBQI7ShVXAAoJEJYkg+FWYsc0mAoAniab
+ffCzKtNqvVtWyuYj1LwpHLEmAJ9XahXKF3LV1ZzI+d8/M3wGltAXMIhGBBARAgAG
+BQI7SxcHAAoJEA6nVrUUSEP1zBkAnR9bvbZrVGGNxMVS3U/x9iCEAlNzAKCOvWOG
+de0Q4eAY9oJicJhAJnw8G4hGBBARAgAGBQI7TBfKAAoJENcNX1hgPNB49psAn2s7
+nWGUjJkFjvOcWb4NLkwd64WUAJ9w0sq718SKZr9AnJwbVELuTdtZEohGBBARAgAG
+BQI7UbllAAoJEOQ7FTzLRn4nGywAnjaUSTkvQGe6u24V9rASYJSi5aE7AKC5uRU5
+2OogMknz2WZcAFXhOszCcIhGBBARAgAGBQI7UsQ/AAoJEDv2CcaLr829RewAn1af
+L4cQFgnkWTdyJ5b2C68RU54OAJ9UDuvg90FI1/tGETWd7aWQ00nekIhGBBARAgAG
+BQI7V0JfAAoJEHkWLzb39qrZJTcAn3IOE7LNwvTX+jYsjgB4VzuCS4bZAJ9OeSB2
++ItiDuU0C0kItLZOJLWVX4hGBBARAgAGBQI7ZzpZAAoJEMALDTYh5T69nGoAoNOy
+DdfzGl5/vMneDXKff+9t4BAYAJ4zQqBgAHHG7wglRNvbFwTQL1KPDIhGBBARAgAG
+BQI7mESOAAoJEJAtvZGMOKkKasAAn3MgeJKyRasnh6Cs0WA6lvCQ1Hb3AJ9qWt1A
+3ijOxVXvC4AkMs9DHDOCaohGBBARAgAGBQI8B/tdAAoJENrSsF1fPDGFRfIAnjKG
+GhTe7/1Q5rmLfhtQVw8c3LrrAJ0fHwHCMgY0n3wdMhCMGgOzvV+2cYhGBBARAgAG
+BQI8CBHSAAoJEGpYgt+EQEYCfc4An0tStG0TlUgfvcF+IPsRBNKYRAE6AJ93rUiz
+BOYc7IrCETI1LBmwQ3u/mohGBBARAgAGBQI8I7VUAAoJEERyU/QK/Qyo7/kAmwRN
+5UTM8isU2z1Hfb/pwfBFar+HAJ9A8T5ACJLq4gLsLTowsqUwzcncsYhGBBARAgAG
+BQI8XatAAAoJEO7w2zSzISYDcL8AnjHNEJjktHLSTl9SfWtw1pDMlHX+AJ94iLJW
+e7LZDDotVXchOX0dmA7zRYhGBBARAgAGBQI8cOPjAAoJEBjNJaUi84rzZZ4Ani3Z
+JEZHMh1SrbZemfSEBMRPoGjbAJ0ZKPuwUDruY1zHxmq4NaxNsw4bBYhGBBARAgAG
+BQI8cScSAAoJELHEcxc+e0tz5CcAoN6nqXU7IjSrhmAumtUZSWUwapIhAJ9husqb
+wqVgC+Ny1mzG8sn/62MUqIhGBBARAgAGBQI8cUGCAAoJEDoapjWQmlQGL2wAoM/Z
+l86P5wuuJsdNyBYC/KBbgQISAKC/dTSC18RmK5GjpzPtgottFLwN2YhGBBARAgAG
+BQI8c3iDAAoJEKPgudJ6NPreSe0AoKUgoBkPHjHn77A7BdA5RGc7gBzaAKCtUxcL
+iu2aMFECclqdbSg7TQ28d4hGBBARAgAGBQI8foHzAAoJEI47c57dK8yd/3YAoJwz
+Jy52t8j7JMXlX99sA20xy8X9AJ41gsOJX2GrktC7phr/bhzfT2hK4YhGBBARAgAG
+BQI8gGPBAAoJENeDa2wM2SDnRD4AoLeQ4mX0RZL8wD3nEQwiKd6TnVMJAJ449Qgx
+Pis4NkYivWe90DPAdCeHa4hGBBARAgAGBQI8gXeZAAoJEP97262ZQ+PfpZsAn0vW
+qc/oBB7EVehC0uDbQi76ybEZAJ9wHsaYrHT/vCsKJYnicGlT4rTdoIhGBBARAgAG
+BQI8jMwkAAoJEIW5kHXCkQ5BqIgAmgKq8F5+pH92g+8LLNa4EJqwrSSiAKCFOron
+6MQbm6dvmI1upI255BTA9IhGBBARAgAGBQI8lzQ6AAoJEKHoAnDadDOWhq4AniwU
+UPAgFczzvDk89kzBamCyGxa3AKCtqiaqI5hdvkx7RQh89IYYgQHpDYhGBBARAgAG
+BQI8lzY4AAoJEINou1lm+8GMc8cAn3K2eck8I5/UodUv8i9zASgbPLsVAJ9KQuBo
+CLG22sXH9UAOQGMBYj3DxIhGBBARAgAGBQI8sTgxAAoJECV7eU7GbKA9KVYAn0yC
+fPDhTRZZ1BaDWXpg3W3eGahLAJ9cuWcgpeUmJKhUxolbZILSCBISu4hGBBARAgAG
+BQI8sYLgAAoJEHrriu1HOknJwYAAn1JUK6w1G+/G/dyRL04QP39WWp5CAJ4uOPGc
+WoMz454/7x998iteGoJ6tIhGBBARAgAGBQI8sY+DAAoJEKHFknzOXc4OKooAnR64
+2KrjbtmqYVoIBuRNBuswluTBAJ9TUCZipExFLG2p21TgcdRucL2JHohGBBARAgAG
+BQI8soc7AAoJEFZRM6RQ1Ku5PfYAnjCXOSrwtoAB4AlY7+h5+wCoGPqzAJ0RSK47
+p29Uoe++eNlEaFgFZrjzdIhGBBARAgAGBQI88iBUAAoJEF9fNO6guz3r/T4An3Ft
+eQ9nEuFE5J9dQUqp/qYKwOCiAKCsyw3O/F9zhQ81V0zr5PFfPTrIRohGBBARAgAG
+BQI9bhyMAAoJECjG9WuBfDVoTz0AmgKaxb4IBBwU1Ufils5tGd5fYoyyAJwMNkLS
+dTJZ89HLTcEicDkTPO/wEYhGBBARAgAGBQI9hEZLAAoJENQ8swWV/so0s8gAoI1C
+i9wh9lGHIhAGq2VPR9GWCCFkAJwOiNWidBYFohdm3f44FmgS9o7XeIhGBBARAgAG
+BQI9heVOAAoJEHWXOhDW0ISm7f4An25SkqiaIaoWhWsLVz7PE19VKmP7AJ46sLpo
+RTeGAAHs9+oCLUwfQcXJiYhGBBARAgAGBQI+NwZiAAoJEJEIIZ7c3okKnhgAn0ss
+iItbz54kDqvMS34Iw8RZJFRGAKCUhWx/Loa8ATGvGjiEZIzfbkXWNohGBBARAgAG
+BQJFw8E9AAoJEI6qh0Q5KZ0x9aUAnRH3Am3KgMUSVESSGNrcPoedERQfAJ9dQHjn
+N0aUe9tve7Q9LhV6GLFmRYhGBBARAgAGBQJFw8FIAAoJEPpEYiHEJCXtFn4AoONK
+25yb2NNe2E1iX4JD6o49OYuyAKCWANajeEtPJPZl92cI+J3mf95c9IhGBBARAgAG
+BQJFw8FRAAoJENQGMhwHT16EZrkAnRIN5dDSCkglQ2Np+U5yhcWZklHzAJ9Jd59z
+z/N2Y2xwmnw3UsSAgBvZKIhGBBARAgAGBQJFw8FYAAoJEC0JcXhKCKrfPTwAn3JW
+FQ92VKe9lFsOEafQvkspSV7yAJ97j7dfPPsMl4nr/vA0JsuxhymL5ohGBBARAgAG
+BQJF6vbAAAoJEE44UvTDfB0JHeIAmQEfdsSzRZbzKOLcEZhboeuuwUQMAKDA2j8I
+/9v8LC9JQvz2zgOi/aFYA4hGBBIRAgAGBQI9BFveAAoJEI/xGsXf6A+y79gAn1AA
+l5dIQ3xnhHWxo4SGv4UmmQq5AJsFeEnXiZwaF1dtlQRHpJk38xyhxIhGBBMRAgAG
+BQI8r1OKAAoJEOqcZuq5+NbZhHsAmweBWes+nZkidnqQSHXqEvChyzYRAJ9mXFAy
+n7haVVQ7lf2zIaY22xyUSIhGBBMRAgAGBQI9BbMDAAoJEKFjDI904LdmuOoAnRcE
+ls3xJsrr3455jT8wsr3TtkdnAKCUZdSG5f9oT143p5dX9PKUC04WQIhGBBMRAgAG
+BQI9BkQfAAoJECm+XSJo/VSfBRwAnA43cgjzFo0m61yglRYw7bmqZeNvAJ0UiO3t
+VWESXFXRpqwLZrt+tBq0KYhGBBMRAgAGBQI9if0nAAoJEO+Cd8r+mR6YOKIAoI/A
+ZZWEyREObBetkHdqvaNhTSfHAJ9iv+86cvTPzooPsiGKH2jfuX51FIhGBBMRAgAG
+BQI+MpIjAAoJEGqrWicBf1a9TJoAn3DXzjpuv8KB6RLbhVYGF71IdLRuAJ0UzwcH
+XphxVYjqIzSdIJVnJP/OHIhGBBMRAgAGBQJFWDxNAAoJEFT0YWrrvC8mnaoAnipW
+WPVkP9awoBdE5ER7lDPFW4gdAJ9SUcy8250qLpN7nPFS7iXto7XmZ4hMBBARAgAM
+BQI9ARP/BYMGtbFqAAoJEBQRON2j5F1mrY0AnRfegzNpHa3kxm1kyo0zE7sAdwLW
+AKDsUxREaMlAp+507Lnw+EKcSJCQoohMBBARAgAMBQI9hgLlBYMGMMKEAAoJEFPi
+hU4L4fDj/pYAn0y40X1YoUTUEPzFSLh7bXrF/7P+AJ9WQbYfBthLwn4jlNiqDo5d
+zGVCeIhMBBIRAgAMBQI+XnGLBYMFWFPeAAoJEFBeiEci519LoAMAoJ2eTZwVid4/
+f+7Jc4OSMv6VOlHrAKC2jSYlIFX4Pod7j+L1CYbpvdT/24hMBBIRAgAMBQI/ewk6
+BYMEO7wvAAoJEFuz9RlYFnkav2QAni+pVSpBNYhYgv2KJ5Qcy6jQHVZIAKCAR/FW
+A1y0SIAacn0ncHNWMU3gw4hMBBMRAgAMBQI9B00XBYMGr3hSAAoJEDxiytjk1DJN
+iDIAn1F5GX5mazBSImDvBf52kDAbP/eFAJ9l639rmiEmKz7nSG0ZMWJvkdja2YhM
+BBMRAgAMBQI9eHiyBYMGPky3AAoJENAanBlNdmzeq7gAoItrhY4eEstCo8ne+tHb
+36Wv/Y7TAJ4x8j0NLR2EqkmQw/amkL2/xdz5TIhMBBMRAgAMBQI9eTETBYMGPZRW
+AAoJEHBcU4nVwbNYWpUAoIkeRk0seH0gqpIpM6zjjlwKJw1XAJ0RUNd3ZpIy3Ecu
+BPG8S7ZvMT8gHYhMBBMRAgAMBQI9g63zBYMGMxd2AAoJEALW7SHjLE9LoM0AmgOd
+Ep8nrvNp7YdIpDVZ8xw+FtHgAJwPVsRgZpqb1mDquSzk8tn1Xtj/hIhMBBMRAgAM
+BQI9hfwKBYMGMMlfAAoJEPVrJqOmOZ5z2XIAn1L8TV46FmBLAGCc98/jFg3hq3yU
+AJ97JVxfXHndjgDd2IGGTU5SAu1FGohMBBMRAgAMBQI9iBDkBYMGLrSFAAoJEINl
+y9zdTU7+0FQAoK/gvz+4Khg7qWEwttY5dO5j3xv3AKC2fc5Jq9WBega+7M1CpLEm
+p+n8LYhMBBMRAgAMBQI9iDsABYMGLoppAAoJEB29XnWDmeG7ljMAn39GGHRWe4HX
+Naowmnlw4Qny3tDgAJ9Tibmf3ihpPotFf0nC6TjC5/0ggohMBBMRAgAMBQI9tsGe
+BYMGAAPLAAoJEFZBJvIp8ZvR8ooAn2jW48iJR2APXAL/LC5M+bh0aE3uAJ0cgz3w
+BYgT2WYcCTQ5ZkxAqJVy/4hMBBMRAgAMBQI+9iKdBYMEwKLMAAoJEKH27pQkC0w9
+tU0An3CrstzBIyUa4pAwYCraSD9WrdnEAJsEZWTXijk9FCeETbdqYgB6kw+O4IhM
+BBMRAgAMBQI+9s+8BYMEv/WtAAoJEAWLWs1EHF+B/44An2kF1vi746CWnFTWK3cY
+V1GMdmvuAKDEFf8vs43J2jUW2Ux+rp6uHwQweYhMBBMRAgAMBQI/BauXBYMEsRnS
+AAoJEE64NOjizPAPidcAoJrnKT/a3NTY8zxwxTXEKJEW6f0RAJ0b3LVv/AMA2h/2
+7UIz7V4EBgm6z4kAlQMFEDuB4BNSrOsu06QsYQEB6AYD/iRZgJ2U+hTGt879PPwL
+W1y7dQFbjMHqbyyM7eml9ZbC+m+jqNvMsniFCR5qvStMgbXuUZGGpd41mL5+vqF0
+wwM00nBQe+rr5grY2oMPCSEJRNtHEamOsbc4GP59nrwbUhA7MKPSrPCvh9bvh+XQ
+7MSlar9eVBkqvnYmKdaKI1ioiQEVAwUQN0Pe01KAV0R2U0AdAQHIcQf/Ykx+DvUa
+CLIYlMrEIDKZ3J/aPbJ8frAjvzYkrgFZXhzQT9Xfyr6OkhiyWKFX23yzzDVcrmeI
+xovCUI7IFY6QM/d5yHr4Y8+18HdyaUvaFLz3o9ZnVp1AeAJ5CkHzfufnrKPRpOzg
+vXFqttJVPbaVTAyJTo/Bh0fZGHyeHwW83QhmxuWfac6PveoA1DM1+Wax5QoXVeHh
+yTzIutF3ivpqaHEBUB9xgVEk3jN0svdyaGCS3QANmXMDBecSPB0cfLtK8AmTV5w0
+4D2kWw4lu+fO593Vp+z8Jsbvwj7QkOGDvlnY3Crx4qOwqqI7TPP+8bnJZKd1m9aR
+NbPcPdvXGvUh3YkBFQMFEDnKmFYaT4ZLvt9IMQEBgzsIAI6Cghnj5vIe4NnnTWBq
+LKz0zHGfDzQjBE1zGaM4AmxHeaFr6LUWmZ7Wtgmco/7uYDqxO8/F0djzbbXp7h1Q
+4ouctCsGmk0ddv8K6fVSetcC8v+M53J8fwvTcIPzLvWNmzEvBLi9eslja5umMaa1
+rGmmMuxtudTSO3LHl3FZ7gKMM5upPKLxMAgKlZeLOxFImzUEArg4B+InVHa+NdHw
+56VGpab7BmH9cKobPd0W41O6TRGi5p5c/MxEh2Gnr/iaTFQH58P441qfe8cgrmpe
++ca3P2o/d2p66G71P7Eigg27Xg81vcWMo6mRrtp6Z/qwUeIlB2X/Y/4JcE9D1Zx/
+43+IRgQQEQIABgUCRe3bAQAKCRDRlQx2FhPo1W/MAJ4q/wKzyldDyA5ulwP75lUt
+oVvZFwCeP2cZ/AsKHNKhpRPXATo2yEuh0hCIRgQQEQIABgUCRe34DwAKCRDemKiK
+LdsArALbAJ9qjRySsTZ6mUBgGUn/5DmluHQ6WwCgrOEvwgZ5l3TNaewOCGFsJdp1
+a7GIawQTEQIAIwIXgAIZAQULBwoDAgMVAgMDFgIBAh4BBQJGtcWFBQkXLil/ABIH
+ZUdQRwABAQkQXeJJllsDWKJBTACfQI8TnuVIxE88u2napOMyUfoWZSMAn2t47LUM
+uyDEHRcYvEBiP/SRVvsrtBxXZXJuZXIgS29jaCA8d2tAZzEwY29kZS5jb20+iEYE
+EBECAAYFAkCnUqEACgkQt+hxIz4tn22dOACgjeYArERuayyqZmozCahsgUyPihMA
+n0PkgZDTwKgSw690xdLuR2rWJrPQiEYEExECAAYFAkDa3nAACgkQRTxFSQIw1gIZ
+CQCg/jjaczO/s9GkLq/kftPN8A6kLr8AoPwGlVzoq5yWxhgCkEMfV+KItmDViEwE
+EBECAAwFAkC/Rz8FgwmZjakACgkQ2S0k392WXIP5uwCfTlmW1u9U3nck5mCo6DeT
+HNTmUvkAn2jnjXhvqKoLfS2ERRwQlFFAw6NRiEwEEBECAAwFAkDbVF4Fgwl9gIoA
+CgkQ9ijrk0dDIGxiBQCeJIrdN0kFT16KL4COSILMmcjVxygAni6OinWWNJqCk+k+
+BNIvKpm+QKm2iEwEEBECAAwFAkDxIncFgwlnsnEACgkQkvv9V4b8pZK7gACgwOU8
+kI9ZBzryS+HxAeWEo4WjeC8Anjl67/wgPGr4XAS/XA1xmWzRwZiPiEwEEhECAAwF
+AkCn2cEFgwmw+ycACgkQt5wosOl/hW1B0wCgiQGkFQEonh2cRtw1xXowakWqx/EA
+njp2Du5T+xpOdf4O+JwV5DmtKqW+iEwEExECAAwFAkDcUg4Fgwl8gtoACgkQzQ+c
+om69o1nN6gCfUXjD5LUESFXa08Px3pbfXidXAuAAoMJ1/H/oFgcer7t+tACN2vC8
+GGYsiEwEExECAAwFAkDkGbAFgwl0uzgACgkQHckf8471INHpVQCfV67np1keBn20
+I5JABN5Swm51B+EAnRxMBVbypQcppBhdWnxQadrjhHVqiEwEExECAAwFAkDuoKIF
+gwlqNEYACgkQyA90Wa3Cns2o+wCgjBXhs2mEn9HFs5F8WR4AdTpWp0UAnj/Qls/Z
+Rkcy/RAfAN12XgHOkpyciQEcBBMBAgAGBQJBCbyrAAoJEDP9cVf+zmZObXQH/Ari
+1HO19gpBVVhiXet244TWsSe0UQ/fJXQfmqQiU+tc2LePaGA6JQQE0OAWm4n2tLPs
+hncZwgaU/YiVP06JwbClpsC2gHzVLyskqTMj5sEsIrYnXEmyUh2OTYU7W74qMu7W
+C7dFlhpg9zdsRNdea0QIjaHmE1rO8PD5BLUlMiSqv++GXdNj0kDGIvA0FaffSmGH
+yRHO9EmHUQjnzi9FVvudNJ3o9imemgSyQltfIBz4FXZAs+T3miPnYzB4YAMU2/e6
+7JSrZYf0fUo/cyfA1F5PL77ChB8vOhscczIGvhxwLi4qWo6YFxn6SSYSPGslNEAt
+6W7aq5SGlHtrS1yoXFKITAQTEQIADAUCQQ2nmQWDCUstTwAKCRArqCYCws6AmVYN
+AJ97sTutwUKf3G4vlGH0wNVW54AljgCggvoJ1kiWCD0u38cbZ0MWDA/BuQaITAQT
+EQIADAUCQRi7jAWDCUAZXAAKCRDVbigPid+NqwYUAKDJMU5Pc0w6jsM5vG6ViL5a
+1iuKpQCfVjvjSGLh9Z4HICfmqhSPxut/bimITAQTEQIADAUCQSIxmgWDCTajTgAK
+CRD4WZCwJIrrc7u/AJ48G0zmByG5ULeBcAw7uvUD+V7voACggwzSirrC6IedP91Q
+AbznwLDT23SITAQQEQIADAUCQKhkvgWDCbBwKgAKCRASCWOdEUqoXF+eAJ9tdhKw
+G0wzmFxQKyeb0i/IKYyGAACeO0N7ur7lxb8mbMTeKWUH67x9z0OITAQSEQIADAUC
+QYTotgWDCNPsMgAKCRAYoMyNVwaktA75AKCxz4D9I71tjvz66XYpT7tIJzO2rwCd
+FudPQbQecl1Bgx9+ssXkieDZ8/mIRgQQEQIABgUCQYPTmAAKCRD2iL9hpWJ7YSSG
+AKDnzacy8VJNcNv890XT6RlMFBMIZACbBISRrsQzM7OgLER59l34ZCYR1xeIRgQT
+EQIABgUCQYT5FwAKCRDdkeRRL5WCwVf8AJ9FgF6zBFZMc51ziAt5/FRVIZuPzACc
+DcJYQXcxA4iklDkpIUsTbXTiHmuJAaIEEwECAAwFAkGFFhIFgwjTvtYACgkQ0mRm
+ERmTqq0ZKQv/SpqLNjcjH6HA2P5QA3ywaE8tg0ZKc8KAvIsxx4HIk/t+kX3pOvLr
+AhixUCxd2W24LrASwM2MhzvgUJ24BzQd+Gcnli7dyIn8O9H/++VucTWmn5HKxV/t
+XcJU3EuA519IF3vq2CS1x9uyH5H6opHgm1aOiOQRP5cA6sINg2Pw/ec3EfPNg71Q
+dIGw3OubjpEEU3G0ROHScPGaDN+7qLa+lLChExuL/f1UaUck1igDuK1Vl9nHwV5s
+kD0pyKtEMa1Zyh+xSFZZ+dADYr5qE8jH43TFXO7GMpmhduRIL4sXDNqhgVQTo5wW
+wGRRjjRCEI0ohZRfeRJlVRaujpa7AyW1ACRcb7TdrBKGClyKrNnej46ujzOYygRI
+mX1zmhRa4h8nAem+vDtSsCtxkt1/ptw6MeUmoa/ZdJEkjF6JS0uCE+tkXymo3uPn
+zIv3hALs+xAuxGRyAYun1pK/zs7tfMZT2eXI5LvBHnqlA8KWlM7y2bpySq4qHtPm
+MiqezNWHa3jJiEwEExECAAwFAkGA8OwFgwjX4/wACgkQsYn2tNI6QchEuQCeN/pb
+bqMBzHuAfWO/g9QfmlmVIW0An2WQXrXoE3xnVp2C85BtML2phOWPiEwEExECAAwF
+AkGEAf8FgwjU0ukACgkQTjypAm4rQ9yB6ACfYnJx27fjxYsq+5UfQEemQt2VO3cA
+nApE8yUw0B3ZpqCyfRo8JQIb/cJUiEwEExECAAwFAkGEvnwFgwjUFmwACgkQTbPZ
+7n9FhNqFGgCeNgwyzTJY1OABEu/EoBXEUOENxdMAnA6Ul/yxKQihc39VvKQfpdwP
+GUhRiEkEExECAAkFAkGD3AUCBwAACgkQQSganqDijRh6lQCgmgm1rqgdF3qYuDQn
+/S1vFxggwpIAn1htaL3fD6o4LnT/8BIm6K6tPGPWiEwEExECAAwFAkGE6B8FgwjT
+7MkACgkQLMilaHDIrOVJxQCeIJI+GgF1UfUOjkYsjkq260Q72OUAoL0ekc/ixpvh
+4Vs0j1q9Wx0fpQUwiEwEExECAAwFAkGFXLkFgwjTeC8ACgkQT6RVPNdrU1mZHgCg
+q9+wyMgDr96Ism0gY9OxSqMA+88Ani8EIVnKhI6trTzgZLZDrZ5pdzDuiEwEExEC
+AAwFAkGEkIoFgwjURF4ACgkQlPH09zrL0iMiigCcCIbdWZPauTvF4Pn724WxH6Qe
+d5EAmwcodEzOE/rElE7fqScRmudd8Ur7iEwEExECAAwFAkGFVkIFgwjTfqYACgkQ
+qI/9z8xhHubw1wCfWLT8UnjyRQIuxGPPWjtGVeezdP4An2GJa9XsZW3yv2eOPAsP
+93+npZtdiEwEExECAAwFAkGFRwQFgwjTjeQACgkQDecnbV4Fd/JDbACfW5h+kLB3
+Y0wokkr/sxy8RFXwp9kAnjMs2yoVbG2ZbkHQV2ZODRF66zuMiEYEEBECAAYFAkGG
+D60ACgkQ6gnEQD//YGyIWQCgruyF9KSG2GuqPVQIsizCCV8rjPcAnRQsBzfw9QLM
+960FP64YWUCqhYkYiEwEExECAAwFAkGG8eAFgwjR4wgACgkQbHYXjKDtmC3wYACg
+1f05WHi83tg/PMHoBkqlngdDIuIAoK7KZ/to5FrkfNphn6Zo0fozB1n0iEwEExEC
+AAwFAkGHwbsFgwjREy0ACgkQVm02LO4Jd+iS0wCfbUWuTf4DZrjdua5kNdfvk65g
+ojgAoLHPPvTdAlVKacX/rnPD7c36LfuYiEwEExECAAwFAkGH6+oFgwjQ6P4ACgkQ
+TTx8oVVPtMYoQQCfXmZAzk9EjL3qPz50zZgSUO8l3m4An0Xoqn603NHFaHfbBKdt
+WGijlgl5iEwEExECAAwFAkGMPFkFgwjMmI8ACgkQiSG13M0VqIMbDQCfSxC8XNls
+eJ9VQ50GJ66KwSDljmMAn33ApYFWTs8qa/EBIQSgqPlVEBO/iEYEExECAAYFAkGN
+FPwACgkQ+C5cwEsrK56k8QCguxJO7l5effxWbaYOgeVko8HiQ80AoKSJGsOZGx1n
+vQRKeRK/7DrZbB2piEwEExECAAwFAkGc8GEFgwi75IcACgkQV5nlLYTPmpDPdACf
+bASh9WQ47r2zzcVcjlfbvsz2VvgAn0KtwOo73pm3e7aPO/mYlLsP4V9iiEwEExEC
+AAwFAkGSMFkFgwjGpI8ACgkQ/2R3A0yRcenRkgCbB5vYhB0cv0S9X1y54Ci1KmaM
+DNkAnjeOH5rAZQsOQZXoDJPzHNrjYpLciEwEExECAAwFAkGZWWUFgwi/e4MACgkQ
+SvFUKpY6VLAkgACgiL8te7hejTXfDXRIOAZeVzd76/cAoJbmj0tdYt2QGc3j/4yM
+nmXrKPC/iEYEExECAAYFAkGqFTYACgkQztt/8ZMtg2MVMgCfZevJcAcVXa4hUUJS
+jkWo0j/b9MkAn2HZC4sNs9nMN1PvX95Ge39wfBEKiEwEEBECAAwFAkGsm40Fgwis
+OVsACgkQLEmBxMM0hsB4NgCeLxvQw1g9MSpWY9+2VbSK/4vNd4EAnicGGKdS3Zy4
+8E4GBZr62ZmWjr/iiEwEEBECAAwFAkHCEoIFgwiWwmYACgkQGFnQH2d7oezd+QCe
+JzuPIHb2H/PX1R9NYqC6z+63wFsAmgJUX4Ei+WzKGs2r8LVtIo03nc/niEwEEBEC
+AAwFAkHCKOAFgwiWrAgACgkQgcL36+ITtpJ6eQCfQ5aTW9WLJNVWTdp4fi618YDd
+nNEAn36Vz84EsZ0gpO0Je9S+geCrffj6iEwEEBECAAwFAkHCKTAFgwiWq7gACgkQ
+a3Ds2V3D9HOXdgCg91Pqo7tiv00Je9XoTIJq82ug6gsAn2Q37v0WzuggX1xyzDSR
+7oxz77owiEwEEBECAAwFAkIi82wFgwg14XwACgkQ2KgHx8zsInvpsgCfdHcjOaK7
+aK1MBAYBaWwkK4rfd7kAoKxblxsQzllz7sLvFbK7xG2ipuNJiEwEEBECAAwFAkIo
+ngEFgwgwNucACgkQLADuUthSlVgXawCcCbstExBnVkd/fHvatuzJ3sJ0g0gAn1t1
+CmnaMwV/HVQlUhfqefYlVN3giEwEEhECAAwFAkGxhHAFgwinUHgACgkQAVLWA9/q
+xLltoQCg24DNLxMnSOcPFPCNLTPkyyjyQu4AoIe0tZDEDS7mvM6RQaHREvCuFIOZ
+iEwEExECAAwFAkGqMckFgwiuox8ACgkQdDpVTOTwh9cWbgCfaMETpI9v6LZgWuTC
+zE7DceGsuW8AoIcBSwWGF0XkXpRYcvXfjvAg57+piEwEExECAAwFAkGrJUQFgwit
+r6QACgkQzop515gBbccEhwCfZhBXUVoNKDbW5mpYGxfKrMfScIgAnj0XoOlYmWWN
+N1hlKoSQrZSvh4FFiEwEExECAAwFAkG3PJoFgwihmE4ACgkQEfLcQ8rmNEIRiwCg
+pAzSttJZSiGIffSr4/dixsFUVxAAoIwnyzPthchrUSMR10AvPAu8Czm9iEwEExEC
+AAwFAkG4HyoFgwigtb4ACgkQ5Vyxg0d4n7u8mQCfdQ++3anppXuhZp6cQIp1DCCz
+56AAnRA9B/n9ah1wL+IMjoBhFvgSW7JLiEwEExECAAwFAkG4K9cFgwigqREACgkQ
+4We9YdVB4USYCgCeLsm06Ov/Yoi9lfn4UB0IX3qwBFgAoIPEVT2gGxQYua51y70p
+jVYG6t4eiEwEExECAAwFAkG4Wg0FgwigetsACgkQBMQfNs0khKmYzACfZgUeTlim
+mFrhBDEV6SsslxvVIGUAoKZR9c4+kfE0+BJ069AUZBkkeRKGiEwEExECAAwFAkG5
+dt4FgwifXgoACgkQPrq84hvwIdMBbgCeJhjUvC1klrCPhWqKhyfoKJE+hWYAnits
+OnNDnjkKDdKta+mrdL23iPD5iEwEExECAAwFAkHCqnIFgwiWKnYACgkQPG1Ayb4v
+CvZS9ACfROLs6kU6Z93eoFUJl5H1M3U/L3sAoIgAGfCxQ3sADvFiYg11GTGnDzff
+iEwEExECAAwFAkHq47IFgwht8TYACgkQvdkzt4X+wX/UgACfeM81+Z/SliH++ZzO
+my5ZR9ljTo8AnA5DGAsPAbdU7j1NN0NXUg53dNvkiEwEExECAAwFAkIIjHoFgwhQ
+SG4ACgkQIqUcje1P4MASOwCeLyBkToAQ+3Bvup4B9POq1xipZNgAnAui9pLAdwaG
+AZ8w5PFxuS2GoXxEiQIiBBABAgAMBQJBwiluBYMIlqt6AAoJEKrj5s5moURoJfgP
+/iRGZnx4Oxi4qvDw5LTJQrc8j2TjDIEbFRCa4kqBcVEBsKRSkBMe9GHpleq5YVJV
+uCRrLdx9sYt9laJPtMDP6Td6JVK2b8yTzymqVN+7alSrT/lumokX3O38v+LZpj/T
+fQDiXmCwRxwKx3LkXUVdA9tgYVO+O08nHyEyy0AbvrUeFo6Jv8DY7yN3t/x6VkwZ
+JO5u2wUnX8rY+jqzL/fKUmV+j8XOC+pMliO7gg+wiurjgPeTiRAMxqFTZbiTpytC
+dxXvDbCoLTPGa5ki4KKjXDK9gbd7L+mM1+s56ZK4D+CaY3fy4Ekz68RAg+dR0myV
+z0fZ4fitUoURBm6pST4dR3BVCEkp/BoyZKIaPg95emG0VzpreWp+GyI37uU6fOTR
+1EwLFkQyAuMgLqkaq4nrXTOxgZFv++JcNSWI0Emh3sJ44dEfrnf/TRT1pqqHUqbY
+d74Faa1m34rPDXRhSbyijHT8TpeUTgQvyn8s/W6/y9tobNNXFfk0iv2BWGuc5UMc
+de2UVnFq2Dtku5I2QrqiKqxHbKfGTbKyZNATPKLbRQXGcfwgKxTJHIQNsmVt7BA+
+0lGeSelXpCGxQDptXK3JhgDdGQmpIOiMSACDPksv5mGbVO3P1xzDEljr9l6/OVJw
+2sXE+fOZqi19Y+AWKzTIX48tkZO5/+CyyPzJgwBaGG0EiEYEExECAAYFAkIrN0cA
+CgkQi0rEgawecV4jeQCdF+GUDJuQnCaFZqw6sNgZtol0UncAn1/VQvGDB0Or+JIt
+HnUlCU98URNXiEwEExECAAwFAkGTrb0FgwjFJysACgkQ1mvqN8E/x7b7ygCaAyFq
+MIKTMqQYuQ7hnGpMTx7FPmoAoJtfYoL1pFmVZ5Mhwkv9GFUee+HHiEwEExECAAwF
+AkI2qnwFgwgiKmwACgkQ1cW3Q8Sn6j4gRACfQWmnt2z+J0tB79JQ50hNEVrYuKEA
+oNAe1Y5xlLlDTSKJmnwjqnN0qaeriGMEExECACMCGwMCHgECF4AFCRNri/8FAkJZ
+QHoFCwcKAwIDFQIDAxYCAQAKCRBd4kmWWwNYouXsAJ9nbkvbiJZvNlzwBL98x7YB
++u9fsgCfXE6vHv6DJk7Eh9CY+Gcdn6kCG8iITAQTEQIADAUCQiH+PQWDCDbWqwAK
+CRDI2LksT3FGBT++AJ0YXuDdQkG9gLCd2GtU8U9mfoVhkQCeMEy9jGnsYm9H4uZO
+h5Qmhfq4CnSITAQQEQIADAUCQiKA7gWDCDZT+gAKCRABxevYytjzo/hzAKC5qGd9
+qp9ZhihcmE8DXM0SRf0YAQCfQeLE1NJbgQ2jR7PNfTeSjumM6h6ITAQQEQIADAUC
+QlONiwWDCAVHXQAKCRCW8016T/SGNQ0+AJ9ElmV4Cr+P/i1t6TgDf+WGBcmFrQCf
+VpOjPRunwdJ/Y0GNbV669//hVkKITAQQEQIADAUCQpiOgAWDB8BGaAAKCRBNtucb
+gGGoMG5SAKDIGnMHLyTs4rOOJisowYhZmqIyJgCeMd0d3Ojp0pxX4nd5/iGXdVwu
+oN+ITAQSEQIADAUCQpYCpAWDB8LSRAAKCRCLlilD/CQ/POExAKCP6uvHPe0mBOua
+HeDf7mshxYQRRgCeMo4WPMYv/tLIWWl6GHRdreg7r1aIgwQTEQIAQwUCQpWcwwWD
+B8M4JTYaaHR0cDovL3d3dy52YW5oZXVzZGVuLmNvbS9wZ3Ata2V5LXNpZ25pbmct
+cG9saWN5Lmh0bWwACgkQMBkOjB8o2K41QACeM8dkTb6oa86Q6RFgCaoIUxfD164A
+niWvx0c+DTLzF40fwzqtKzBlp4dPiEYEEBECAAYFAkK6u70ACgkQHuBMgSRdZNRJ
+JACfXkE6A31wuvpD2EfHi/sm2m3PlIwAoKvIqARunnuDjET8cpyOBtVOw/EeiEwE
+EBECAAwFAkK9MmEFgweboocACgkQr2QksT29OyBNEACfbNEfltwRZ1RmZEkt9ZTw
+OJSli5gAn3brUt3vc1JIxs8dlkwHV1fSJpH8iEwEEBECAAwFAkK9RW4Fgwebj3oA
+CgkQ62zWxYk/rQd1UACgwJNmfL/Cs6bYMFPC1dRrNsf2GtAAnR6K37k2u63FX1lb
+g4aSMLCcNviCiEYEEBECAAYFAkLQQZYACgkQWp20Ay6vTYBSnQCfStOrSvXsitfn
+XHqS3nELWI9RVYwAn0g9x2ITbWAua/rx5t6YYLSduG5UiEYEEBECAAYFAkL2hiQA
+CgkQic1LIWB1WeYKQACgxQLr6OPEtGuH4jCezv8goZ5hBA0AnA5k53eyGYXnbESu
+LD9hfIgq9NegiEYEEBECAAYFAkL2jQ0ACgkQ1U6uS8mYcLH9uQCdFOloQMppwhQy
+a4zvgrXaqDtaZBEAn2UhMGeO/7laTY+EkaOc0yWp1GCEiEwEEBECAAwFAkLlBZcF
+gwdzz1EACgkQg2E6UBaCfQMWAwCgk0N+XcWaLDssH7wYu0EtOFW1kKUAn3Vq83yr
+mg+F4TvieNmPhhqTP6W2iEYEExECAAYFAkLXaWIACgkQ38wGmSzEVdkS9ACgyXwp
+lqKIDsyExNmuVkPUS1ld2HcAoJ5nKOY69/aMJMTABBH9tFyS4IUNiEwEEBECAAwF
+AkLinZ0Fgwd2N0sACgkQ9D5yZjzIjAkhqgCgj/Uy+2Xvfw9FAwPdWSaC+o4AVUEA
+oIvJ06LeJppo5EQqEt1mc8bYV1UjiEYEEBECAAYFAkL2U+oACgkQF4k5uXLdWDiF
+nACfRaNxule5PGrfk8fkbzn3kF3z7HYAn1PJnIAlgYyhYDexETbeUykY+9GhiEwE
+EhECAAwFAkLrbeoFgwdtZv4ACgkQwm9wFgHGy4MQfQCffyaecfqcThyxP9FNgZ2U
+z4pBwAEAnjMFgtk5JN6gZ+Ztgqe+YyYrGvvuiEwEEhECAAwFAkLw+X4Fgwdn22oA
+CgkQWNqWrwuQEUHBCgCgn3XtRj5qJxudfYkec540HnkoerEAnR2x0A8LAA49rsbh
+CiLZlmTaaD67iEwEEhECAAwFAkL5sgwFgwdfItwACgkQ4hLd7psgZbfpmgCfT7Dp
+lZrJNYP+jrldo14GO0v6fhIAn1YoULZuHQRmoQrsivlktn+DqE0viJwEEAECAAYF
+AkMgr9AACgkQtGuSO22KvnH+kwQAvGUpmszwbYYMOOUmi5UTGjr+x1o7dXn2bQWI
+dH0F4BfShvyvd3qBhb5OGrK8YFB7+cHJDD0A7NER+MZ5H/KnISdLyWA26y26EMDR
+eou/dzasj3oWmfullh2ojIdCxzoB4VImXcQY1+Ui7d9a6y47inK9sMzK4pwt1PKt
+ncBRu7yIRgQQEQIABgUCQyCwBQAKCRDFr3dKWFELWsr5AKDAC86WauiBT14jR5On
+VnGnsoLRAACgjz2G91FPaDTx/m2uv3A8ztOUjpyITAQQEQIADAUCQyFMcQWDBzeI
+dwAKCRAUqdRorfCKfwAGAJ4x76O8eVQAZ+ih39kA+LC3UoenFQCghSxjTY8eXfYm
+bqv5JDsqpw8uvKWITAQTEQIADAUCQyGVQwWDBzc/pQAKCRC/69PGQc8DIlKCAJ48
+XCT4C5MEr2aGFSCVLw8yH4ATkQCfaGKSDz5JMkZZrulf6e9jbL4BvKmITAQQEQIA
+DAUCQyN1TQWDBzVfmwAKCRCboJNrWjX9QlGNAJwLQeoR9MHMZMHjqR7bCtZFzhUj
+QwCfToKGN6pqjOyCLvN7IQ2z7h2LkhOITAQQEQIADAUCQyN4BQWDBzVc4wAKCRAx
+SLvvHu8m9ICtAJ0ZEDO5jWXB2WNTegwQyxtux80NKgCeK+5Wc0fx6k7pYpFEr8FD
+27kT+EeITAQQEQIADAUCQyihNAWDBzAztAAKCRBJPvuOXWT4cIHtAJ9H/1j+01em
+eRh+RaIbco3zA4/WSQCeI4bFDknxR3voTopq9KIMqyfH2LWISwQQEQIADAUCQyCo
+RQWDBzgsowAKCRBsZO143jTvodBmAKCRj57Ry/Wj+QjnkIcY59xWkflc/gCWKqc6
+pOMWE+qXmcXH7/krMsmigIhMBBARAgAMBQJDIJ3pBYMHODb/AAoJEJT+3vmtNrUV
+EqMAn2tfB5vASh1oiO58GdTVglwpxemTAJ4vMTAblcWzgebLUzm5wR+YWHWcyIhM
+BBMRAgAMBQJDIKH3BYMHODLxAAoJEDA62eiAWc/cml8AoKPycGLkXCR5CLnzowu5
+RanuMzUmAJ4536g4hlcWwD0UlNDwUS2Si7+PpIhMBBMRAgAMBQJDJCP5BYMHNLDv
+AAoJEHw0FqlEG6/3TzgAnR3zrBg3GhFvB+SCDgzVN04/OsJaAJ9RUl3WAyG3FCXo
+dMKFGbjf0xwip4iiBBABAgAMBQJDJcl+BYMHMwtqAAoJEA348Hf+CljYb8YD/1rm
+o9voXxBwcaaRAJ4yfRcbcm/HLiPh0/dmCu0wTymHxSpdZ5SvZzOfjukfqaKtn8Tm
+ZFureVqdxtH0OBZZRyTyF+Gjk9ZVsTr61Dm4YM/H+ysJ4+eA6sAdeMPgC6wclg9/
+gi+WWVJtS7V3nrrhhvuJ+c19ZkdWKPaMz8Dm5EmjiEYEEBECAAYFAkNfjG8ACgkQ
+5XoO79RjNtoAlACgvh0c/n14UuqSdhEdEYcIJa0I26MAoILg4M/a6XfYbAtVVpZr
+DSBXdcUgiEwEExECAAwFAkNaAYIFgwb+02YACgkQM6232ZYRYVUJHgCfRWmbDkQr
+vSP8VGvFRvv6yKqHOakAnirYhae+s2l7cz8i4c+p5/SS1AlhiEwEExECAAwFAkPT
+bagFgwaFZ0AACgkQ5klUNHCsE9U6OQCfa19P0RExXxaWVzJr6uLzKP++g84AoII4
+kV7AALq9A77nWuXDojWnRko6iEYEEBECAAYFAkQFyuAACgkQ9Jgd/vNmD1MSmQCb
+BDaC+ZKLDTgsnORWMhSuJwOVYEEAnA5xDXtgFTTmKdq9DzqTNNJYooBNiEYEEBEC
+AAYFAkQGZN0ACgkQIIdHgCGsbMSo1wCfbfphH6CbnURMom7x+zWto4yrZOgAoM6M
+fGeeWNKrBHJVFRloz6nBymqliEYEEBECAAYFAkQH63kACgkQ3HeLB051S+1XdwCd
+F+gqQw9bVEQAv4Owg4O+PhjN8f0An3TH5zy+qfXlJXjNyvsRqR0QdCmZiJwEEwEC
+AAYFAkQNdgcACgkQpOAUxG0aO7HojQQAhNhnA+DQVFiTuFsjOCl+IgeLqpVmZbD8
+Xl+KsoxedLDNtmnlAae7sJYqoFG71ohsYe7IK/9aQVtgdg1E0zo6+3LZ0z80+a0o
+vYJqCrz4eQGDvPIHijRCy6Fq5XAxkZlKQzjMf6TO/RTdW8OJaf6Bq7GOZUr+In42
+2tNL09GQxRGJARwEEAECAAYFAkQG/cgACgkQ+fnDJwmNErN2BAgAvTZL4s77EgNX
+G0EXvxlWGLx2nE5/p/XvRM609nQ8EAN/MA62y3UsEDlD02O6s2QpNEJGo+pSNdjd
+rl0PDlF26JMVBwSwu32INFpkRhF5MWVSLABcumZBCHSkrRFNg5K9JPl/Ro6WVMs0
+52B9bUJIDc0FFJBVul6Cn8+sIkMTwO8SR8NHP0kUM2vPR1YeqTmrOEl2KT2OAjNQ
+kvdUwmIVSsOQDx1TAhxe6xW0Fw0yJdptptqb7hnfj1CDHJjI/gfPV0jQsph9Yswr
+vbPJfyfVZTkHiFmvaO/lxskRd3VVuY5ypMBdTmjLff6OUsAOj7wgrW/2lt29scbS
+/h45ff62W4hGBBARAgAGBQJEKFdaAAoJEBH0xB6z+64zdUQAoJb2xLqGoCYadYF+
+EPTR8jtjBa1/AJ4nx+fHCKL0hKhLw24Pcud4cIxruYh6BBMRAgA6BQJEXmVAMxpo
+dHRwOi8vd3d3LnNjLWRlbHBoaW4tZXNjaHdlaWxlci5kZS9wZ3AvaW5kZXguaHRt
+bAAKCRCUj9ag4Q9QLk9yAKCrgj4tmqYZILNsxBDRoE2R7RFrfgCffb9k6Qh7bgjE
+5z4d4J2JUYw1BmWIegQTEQIAOgUCRF5lZDMaaHR0cDovL3d3dy5zYy1kZWxwaGlu
+LWVzY2h3ZWlsZXIuZGUvcGdwL2luZGV4Lmh0bWwACgkQtHXiB7q1gim7sQCgtNMb
+kY+sT/f96U6cdwKJ7KJWmDMAn1lb/18BvTBt6SswNkjeZhNLe8HGiEYEExECAAYF
+AkRc/SoACgkQiqNir+lyMs2qsACgj/FAXhQvFhCZatkr7qBCZFZi6UoAnjMyYanz
+0Wham0ijrvH+POQuCKAOiEYEExECAAYFAkRc/TAACgkQp99YcnDUTCNgawCgxXQA
+JhUO7Tdm7H24ppREANvrbVUAoLoBqUJjt1fxL0as+Bd7EIlMIIBwiGQEExECACQC
+GwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkBd2fAFCRNri/8ACgkQXeJJllsDWKKt
+2wCcDKNSTwgetpsMsBunlUrWw7HeUHcAn1Xlgp78HK4lRrhixrXWfkSCMzztiEYE
+ExECAAYFAkNEG6QACgkQ6tS1kPaJm8CkLgCgjDYho969Plzpsry4gseTcvuJKn4A
+njHztuclj6xEtiNi4fGGnvBYwsHDiEYEEBECAAYFAkQFglgACgkQb11ZaBzVLegG
+TACeIjz0GchlygV1o/V0x4n1YRNrTf8AniulsCb2794jkbZcto6bKu0dvEuTiEYE
+EBECAAYFAkQGCjQACgkQmsnSLGNcY0sWlwCgsctDOVPkeE+gomU0ss+KL4xVVsIA
+oIykgUl8KUhwM6Q6ao4oDUAGuigriEwEEhECAAwFAkQGKycFgwZSqcEACgkQ3+ZX
+kjKVxc3tagCdGRXffmqZnoc1y1LwzybdY8Eb2KkAoOqq45pa+1o8CY/05sTB9FOe
+8FTjiEwEEhECAAwFAkQGK2cFgwZSqYEACgkQoOUVvzmICVSOKQCdGvyzSMVbLqao
+vnQ8snuByodCJQ4An03szhMEVn9ZxpTkQQTaOx8E6SaviJwEEwECAAYFAkQNdeoA
+CgkQ/dJ0ek5GOmrgowQAnzaCLzdqYkS9phkQs9nkIYjxCp/gmHCjqT0YwjS+LakE
+In+URfDz80FCk1boXKDK6cF9fKieviwMlfDeymQFL05ROTBp0TtmVf1DXOzZSlDj
+xaHHE9J+g87Xau7KJiJO1QiRk/8nMide8cLk4/9q+7v3rrJCLsXbX3VJDIYBMOCJ
+AhwEEAECAAYFAkQPSJYACgkQGioH6hxXudn0rRAAgqzfBFuEnNCyqXu53IN5pGNA
+fns0xf0SiwTkd4kixkxptAMEu+2AXkRqao9C9Gb9+dNrwzKRnKOt4GBEMKVHKxwy
+LGzjss045fHvokNa7rvqIGMwZUXoqO/Nq6NeJXjCOtq67fOVGaWJgLoTrQl2rVAS
+czA9025TtyhNnAL7J9Hd8ejwBOWms3Li2kXsSt+Uahp51Ji8qdDLB4iWCk6M6f99
+7dMS0gDIXsDEx1Vnqhx+NC7vJBkzvkV+9zWKmLK4Rk8X4gtcFlAjhBQMwf6045JJ
+3KKfOcPfL7lxOp3Kep0Wu1Xbujh9gPiSM08qsvxPOGF8WiUfnEDJQz1EspqhorjQ
+ciyP0C50rCe9YOTZEhPAxYn1Joa97GairZltw+sIUOobn4Rqh7hFQh59s0cncH62
+71XOZneJjZk9MgJWm13emNCuEXeb3GbIJzl7qgkQM7aNP62uKo6urT4Uyse8AVUp
+fOwE/FvHSB+wIpt45R8Q33mRt4o7HwviPfbXE4l0QPWl1CZsbpBEjkBMHnDggFLE
+1qY5WJAyRwRPZnE2uUlbVUI4a5ro8m3IzJArEci5AKdyCZ7K3RBlO7H19s+x7Nq1
+Tnc+xItH8MLGV3XRKKpULi5jlGkE6JVPIev/5etTNhW3ytNc8YActAVV8REE7FWT
+Hhn7YjdgaB5cB1hvvxeJAiIEEAECAAwFAkQFDZkFgwZTx08ACgkQbjbvGsyNqzCm
+JQ/+PX+TdvwduAAXMdVP6uTcpeCate28Rx7H+MSb1ueQdEWijv68K63ELO8FFsb9
+qb3QOypx3qjJsjMHP42ywPY2jc+DStyAk+8+EaBX0NAhaPivHsgj+7iFPttFPA+B
+M8mQql7nnvH6HSYekVUb9pd8Dir/8JQp9uQbgXrlHl+bXs8k0DCMHfWJwgUiy0oU
+NgqMWqyFPUfLvo4fzf5jnLjxxyh70GwasiXplJX3VxbxFXuJDjS5X0lRmDqx6jsB
+ZnFIKS1IG71gH8qW3bnfbzxvLPKAkVaJotRjlFksOky0H3BdGrxY6wjqjZtgbHUl
+sabVHPCcYHnjhGcobQTbc0S5vdGMBInIYg/hXC8bcXzXGgjJnNS2GKt4CGAA3Slu
+Cxzyz2kIgL8aDtt3fyqC2eVoP9Qnw1GdyrrIEDMhb22LA8c1VY419vXYLp5C5jps
+nPFUARmg0f7Un43/DG+0TV7VTT/ZMRELgeGZ8YrLTMpPdOnXV8DGZfpUAXj5fJ0Y
+3rafj953GZLs0/hHmeZnj4P7oTaOKXQdJVYBOUsyORaX2akoE2rPMc/6fLC20qKE
+eXuOoeREQX/uigzMRkS1fZT0coKtrl18DoPr1IyHq4BIellVhk03YG3vr/oKCo6S
+qbCPGFV8UBpBn4pnb2lwESYsEODxIXguI2SHU2alYB7s6W6JAiIEEAECAAwFAkQF
+ESIFgwZTw8YACgkQHRqO3OFAoFSZ2hAAtBOio22e1n/uT1XzaSg7V6Bs5BEKOHnN
+GLKrntNfeZvJun24PBzZnQeJZIfkVdkKm1uv6e3d4B9Hv1F/f2sb5AYUq3RKqOXk
+IKg4aNV1w/Mnon4+VNUq4FE4doi2exaSEmWrNoSs4QNXwWXQBuN+fUhUzlaRs8g7
+IOkTgEqeS2WpX63F7GqQyeoH9HwbYJWg8RyXH27ZBsm0aBafrN1XJ5IDIo8aZ0us
+VtZoiAb86ymTrEfDhldnL4nG+CDJURSwcly6rgFHvo/l5DS0VF6X2M5ZJjp8ghM+
+NEZM4TkAxS2gvoAyagh/PQCMq8VXwfvFDhSw5E/NcrDrbiRGVnsOW67v4t5AxqrK
+q2SAOd0h/z7mler2vrfrAltWc3vAl81OQNH02zzQRYtHizk/8gwpX01+/3eAgzN6
+v0tBruNwDULsgr/imNXQgG4TErxTE1Sx3eALhFybPA2ce+Od0ZWKJWDjJUuWJP0b
+PQByEtHC7pknYN5FTxS+v6t9HBH2QOLwLY2UcuVvZNztrpHcAEhdu9oLIEQeXqaU
+9ah+9MDD2M8ntmW864gacelAmFrkujOFQ/TMQRU7f3ttupDFExst/jYmnDXiU/7Y
+u8sXAwAf+svGyZ3AILNtEmuzFUkjlK0GQItyK5ZfQ5reyncaaSLJcoE9SZU6wTJq
+SPbLjJkWjnGIRgQQEQIABgUCREihKQAKCRAFi1rNRBxfgdElAJ0TEc/rMAUxLmEd
+Pd7D1zKK+TImYgCfUuWcmjJ5bK5LkpE3ArkC5Qx2mhmIRgQQEQIABgUCREjJ/QAK
+CRCnL/ZsQr1kXdVuAJ9Xaa9HTr1u0p59TK3aDeyzcMhgIQCfSUVDGu/mnaR5o/UB
+5W6r4Z8+6DKIRgQQEQIABgUCRFsJZQAKCRB/3j6P8z4/xm1rAJ4zyJKiljgk2RiG
+/X+w7hBpmCFGKQCgqWAH6dUwVP45AxpamVPvKZHknHSIRgQQEQIABgUCRGCHygAK
+CRD9AQSw4jPImNSzAKCrRu+/tnGv/JoPRcjLDIxTgJy5UwCgvtbD+4rAsMiHP3Hs
+99vpbKF/oFGIRgQTEQIABgUCRE/tdQAKCRA/0h0qmjpVWMz+AJ4vhWL0yH6Lhgpx
+67MjBOWjsyltyQCeMtJT+8Q4BbRtKOGqmdAM2YU1I2iITAQQEQIADAUCRF3UigWD
+BfsAXgAKCRBbqJPk7D6Y34fAAKDgH96/0zdktkGPyfNjfrEMvCHk8gCeJMe6QQfM
+I8pTnEtKNzQRdWXEIVCITAQQEQIADAUCRF8XTgWDBfm9mgAKCRC8EAnaDpclPzgN
+AJ0Q/hUqqpydYwAsisUDRiQ2V61YrQCfbn410oswpOWdvrlaHiZ4Molpi++ITAQS
+EQIADAUCRF22QgWDBfsepgAKCRAyNS1FZ/eCZDHTAJ4poseKzcWwhfVChHKUhkEV
+2cfCWACfRa0RsK3BqVjtHshBlED/wfHQUJSI3AQQAQIABgUCRFC2ogAKCRDR2VIE
+Cemh1f+NBf4qBoeHsQ/XRB1Tvu00+xPuskX50oV88JnJb+0whE4FuZApjzIJ/PC/
+oxYu35qkE7fJ2Yuz3kHIjQSLerIX5GLKUv+HQcbSh8iF1Ru16Q1Vh2Qxx6+eia/T
+p2EcaqPxsQeG4j0n7bojz12i8NuClZPCTf3gtS33sApHm3u9UxRmJlXGgKd4bfk0
+hITCxPwVJvkI73j5bJV/1OA+pq0aFTdeLXdRRIzzpeEIVPuBRW3tPmW05GKsYCBC
+F7g80BpGzIOJARwEEAECAAYFAkRbcFcACgkQZ02H1ZEZDvkz0wgAvLzYHXOYF3yz
+k3/rxnW7kbw3tE2dVpKWI5SHC2ttGdToCIlhm2gTBlPUG5t73XXIU3gldn+n5ys4
+gXI+G8mqNkfoOWvmev3IxQ/IyPcf0Rncire7kXyUZOrgNVGqh7ML425n2Tcqt5y7
+EvXLMa+3635+2LqYrUQKuUWwBllHLeA004fk71zvtYUDi6DD0idm3OVYuHaKLkVN
+SfYTS3vzV+tOHvhaE1g7SNn1F7hssmG2ZB8KNI5r4hvAZnQ3YBSpvKa1wtHEjCz5
+BYocepbvh82d7DOk0UnGhVQBwybDuMpBAAtBc9Un0WLQu8NYA+90lhzsH/Yahbbv
+Hn53gLyaG4icBBMBAgAGBQJElY7IAAoJENwG3M95JPpz8rMD/jcSqPB2Hg0EIbOk
+GBxcosKeeOSFSwt0pRcpgfE2hVdUQtC7LB0DuGS9iRZfssvlSGfAeNGYTg3/wmjQ
+LXW19Cv0KkQZtgf+oZMIY7Y/pQRfknvo3dPhN2HOjww2OTw+M4wSVusLQ0K4IImO
+rLwwpd9tU2w0FOYW0BSNpjTYvLCoiEYEEBECAAYFAkS9UTAACgkQxKXVjqqse7wF
+igCdFm25J6/2RCOsDei+Rn9GgYtXp38AnRjU3xD1sLVvdmtRBxlWIbxbU31NiEYE
+EBECAAYFAkS9Os0ACgkQOOnzljbgEa+urACgoAXY/ZbGzpegZj/NB6m+oke0yQgA
+oLB3Azqec5YwASNr1qYG4CmDLwxUiEYEEBECAAYFAkTCe3AACgkQQggFxokHT62+
+zQCgo7WiloETU27FIwbZ4hC4p7JX27AAoIzriN1/Vgiv11B9e/SPS/FJVtNQiEYE
+EBECAAYFAkSNRGcACgkQp6+YGoOsM0qMhQCfWjOe+Sork+MqCpgK7Kk0jT6cB6AA
+oJLajq72kMy1vGqOxpa+S7HWTqHAiEYEEBECAAYFAkVXpxUACgkQ9LSwzHl+v6tl
+VgCeOgccXHclswT2GfCbz4aR8eo1oAcAn1m7qlWfgUnXjuos3O3NCy1nQZB2iEYE
+EBECAAYFAkXse7AACgkQz+hIv/xnhaLWCQCgqR/D1hrBZKdrfe0RrhWxAUwmSY4A
+oJDDbQSwlTS3vxN8mDIHVPFkJbo4iEYEEBECAAYFAkXt5D0ACgkQd75ZE3dJ2dla
+ZACcD2VGVAf8HN6WDZEQdpfj8UU/ChgAoI8DF0QENzVNZ1h8b/CkmTSNNlYniEYE
+EBECAAYFAkXDwT0ACgkQjqqHRDkpnTGbpACfeWu/HREjh5JIipF4dm5UvvigTi0A
+njKzSkFYtykVa8zTqs0qO3+ccbB+iEYEEBECAAYFAkXDwUgACgkQ+kRiIcQkJe1J
+hgCg6WAVzmkN6ogSTlaAp2YndfPS6IoAn07y6mFNfpjkrkKOVFQ4CsW2fkjIiEYE
+EBECAAYFAkXDwVEACgkQ1AYyHAdPXoQMCACg0NuzOa62RHAjqQb9TVK1R5ieFY4A
+niK82pcr9WPceRoRv+qaVtG65oSQiEYEEBECAAYFAkXDwVgACgkQLQlxeEoIqt8G
+QACeMZ6OCkmknlP94JUuErXwnPQ8GlkAnifZ5tlSiq0tGhbUZu+aEIuhiwjfiEYE
+EBECAAYFAkXq9sYACgkQTjhS9MN8HQm9AwCfRlxO7ZPW21pSwmxK00Qdt524PUgA
+n203/xRA5X6gItj5JGY7ClML/89BiEYEExECAAYFAkVYPE0ACgkQVPRhauu8LyaW
+VwCcCXxBQLPD0T0Q0BHtWf1et4ZFhHsAoIDmUcBV6ivz0xfV+frfF4F7lny5iEYE
+EBECAAYFAkXt2wcACgkQ0ZUMdhYT6NUvEACggy4LTFVynfrNQ0/b9XQ3X4XeqP8A
+n0QyOlyGn6UXlrId5rDjQUGOD8NViEYEEBECAAYFAkXt+BUACgkQ3pioii3bAKym
+0ACgioqXaG/g+uu0SxnUTPJq+jTzcyAAniJbgn04w7W/ptifmxUecR7W0dfuiGME
+ExECACMCGwMCHgECF4AFCwcKAwIDFQIDAxYCAQUCRrXFkQUJFy4pfwAKCRBd4kmW
+WwNYomksAJ4q+Lv3fDvzDJl4JcOmzWHPsPg2QQCdHcj5DwCCM7YnRLiE58ApHdrg
+11S0C1dlcm5lciBLb2NoiEYEEBECAAYFAjc3I8UACgkQ9u7fIBhLxNmHZQCglWbP
+DznIcnOxdDW+k7YgA9+/n00An1ZjSiJipverUxLEFHAbSBWI0IntiEYEEBECAAYF
+Ajc6+aMACgkQdQ9klcidkz6GiwCdGe0KSP/vSyEZM/GClQXvjMD4RvMAoJwyTIdc
+jPZbQizDeAO3btn2CCwTiEYEEBECAAYFAjgUDhkACgkQYAeQgHPH80+I2gCdHeTA
+PusmEfN2bdkijpW1gpxBvGoAn1kzL7Mg7tC4pqlqw2fV3kRUy1a5iEYEEBECAAYF
+AjgqYh4ACgkQ4/JYVBKPDnkPkACgmzk7HMlJ1h0qw6OHyMtDE4RI4ToAni+Cm+01
+pHfzh0EnFQTvLE1M9PtoiEYEEBECAAYFAjnKOw4ACgkQK7tDpvCerwquXwCfbW9x
+GF2AHQakBPakh61xKmC8WEEAn3TytfY5qrTjxIj2HZFKN5QuQpYSiEYEEBECAAYF
+AjnKiy8ACgkQF6ZBbfeUj9ombQCfYQYxpipdMGBxbNd8jbL9RDmH3nMAoITmZnDJ
+wXzpHNuSLY8o3c5YhHXziEYEEBECAAYFAjnKnXcACgkQNfZhfFE679le7gCggQjs
+jFhjaIO1lWHfPusn0dqdhRYAn3rOW0XSeh64V9o+VItH2LZngmNAiEYEEBECAAYF
+AjnLMigACgkQUaz2rXW+gJcIVgCfRRq0G2fCcZOFoey9uZGAkWctKsQAoLw6lUhd
+eZDgULrDC7OQRIk7CnMtiEYEEBECAAYFAjnPp1IACgkQkVrMRaj0wv0IqwCfWGMe
+iZ58ysuZCAP9IsX3aKcSPtcAoJno1COOjAMhoWjUiHctgLZX9+gTiEYEEBECAAYF
+AjnQ39UACgkQbyOLwk/aWgxfIwCfb/GeMAD8w84hq5/aUQMCvVqUYqAAn07SKuWY
+sZLEUuPWIgYY0yoByJxviEYEEBECAAYFAjnSCrEACgkQv+EgZWshSJq8jACfdf20
+dqs3IWOPHgFMdYb5VF+WkJUAn05quvyHB3Xug8csxWg6RwSfQBTBiEYEEBECAAYF
+AjpMy0UACgkQ7UaByb89+bRUrQCg6aozpYiCEDPVAHe54/8/q48FLP8AniviG9fj
+xInPaSKB+LXRmQjc2jLZiEYEEBECAAYFAjqJgd8ACgkQYogE2yD8bPYGagCggMsq
+GJN61JuOQkY5MiKb4UPQpBwAniNYwQb+hlEzJF7qnPECh0MAxq8OiEYEEBECAAYF
+AjrBCNQACgkQt1anjIgqbEu30gCdEsSeFtJ5KziD5l/CvAhVZt9lnQUAnRrmbV8H
+kndXp3+DNoREgscZk/rliEYEEBECAAYFAjrB0SkACgkQ0vCiU5+ISsiPkgCeOFay
+t7NkcymwTC2UKNjjyukNDvAAoLq/bOTNZECtztYIMDQ2VrzZ3m6KiEYEEBECAAYF
+Ajr1eYsACgkQ7A6vcTZ3gCXdrQCgllIx6G2DkKSGKBhYCgsyywFBXLUAn2PJGrCO
+ov0LS8jCMD2Xo4T7qfsjiEYEEBECAAYFAjr1mwEACgkQLBigKrTF83+E4ACffa4y
+aJ6Pj4uFZY7dVuiOfkuoTE8AniIdw0DVkHBuxlNp9PAglhztyE+oiEYEEBECAAYF
+AjtFbTsACgkQ53XjJNtBs4ex3wCfXLPNscM4Uxtmy0/t5Ygg9lDWEQAAnR39P9eJ
+tEeBtMPfbEGYc10ABqjkiEYEEBECAAYFAjtF2QAACgkQI/q1+wgWzBuJgACeIak+
+A98IheVSowXG4J6jzBA439MAn2IFA8EB/EkQ1rn7OEmFNX++PNZyiEYEEBECAAYF
+AjtF8RYACgkQJ4bCRH+KQBfSwgCaAvm7pL+LioYj/oKDBQ1pJAj+UqMAn10W8RKr
+YblMZ4L11R2TO9xOvFn6iEYEEBECAAYFAjtIDxYACgkQBgac8paUV/DLWACgifbH
+tSi50JxmSr18WofeVcVcAXUAoJs99aH6/t9gkO34ajXjiIQxc0qMiEYEEBECAAYF
+AjtIJ18ACgkQ11ldN0tyliUx5gCggbhG1uzvdgHNY8oCt4cc6TfHUREAoJuRw8q2
+kbztnt8TQ4mjiTINcBXziEYEEBECAAYFAjtJwaAACgkQUI/TY7yTaDkPjgCcDSJQ
+UZBBP/5OvW48Q3BUkUkRSQkAn1Mjqe4WTFEEA8HK5h+KDcqR0aZIiEYEEBECAAYF
+AjtKFVcACgkQliSD4VZixzSYCgCeJpt98LMq02q9W1bK5iPUvCkcsSYAn1dqFcoX
+ctXVnMj53z8zfAaW0BcwiEYEEBECAAYFAjtLFwcACgkQDqdWtRRIQ/XMGQCdH1u9
+tmtUYY3ExVLdT/H2IIQCU3MAoI69Y4Z17RDh4Bj2gmJwmEAmfDwbiEYEEBECAAYF
+AjtMF8oACgkQ1w1fWGA80Hj2mwCfazudYZSMmQWO85xZvg0uTB3rhZQAn3DSyrvX
+xIpmv0CcnBtUQu5N21kSiEYEEBECAAYFAjtRuWUACgkQ5DsVPMtGficbLACeNpRJ
+OS9AZ7q7bhX2sBJglKLloTsAoLm5FTnY6iAySfPZZlwAVeE6zMJwiEYEEBECAAYF
+AjtSxD8ACgkQO/YJxouvzb1F7ACfVp8vhxAWCeRZN3InlvYLrxFTng4An1QO6+D3
+QUjX+0YRNZ3tpZDTSd6QiEYEEBECAAYFAjtXQl8ACgkQeRYvNvf2qtklNwCfcg4T
+ss3C9Nf6NiyOAHhXO4JLhtkAn055IHb4i2IO5TQLSQi0tk4ktZVfiEYEEBECAAYF
+AjtnOlkACgkQwAsNNiHlPr2cagCg07IN1/MaXn+8yd4Ncp9/723gEBgAnjNCoGAA
+ccbvCCVE29sXBNAvUo8MiEYEEBECAAYFAjuYRI4ACgkQkC29kYw4qQpqwACfcyB4
+krJFqyeHoKzRYDqW8JDUdvcAn2pa3UDeKM7FVe8LgCQyz0McM4JqiEYEEBECAAYF
+AjwH+10ACgkQ2tKwXV88MYVF8gCeMoYaFN7v/VDmuYt+G1BXDxzcuusAnR8fAcIy
+BjSffB0yEIwaA7O9X7ZxiEYEEBECAAYFAjwIEdIACgkQaliC34RARgJ9zgCfS1K0
+bROVSB+9wX4g+xEE0phEAToAn3etSLME5hzsisIRMjUsGbBDe7+aiEYEEBECAAYF
+AjwjtVQACgkQRHJT9Ar9DKjv+QCbBE3lRMzyKxTbPUd9v+nB8EVqv4cAn0DxPkAI
+kuriAuwtOjCypTDNydyxiEYEEBECAAYFAjxdq0AACgkQ7vDbNLMhJgNwvwCeMc0Q
+mOS0ctJOX1J9a3DWkMyUdf4An3iIslZ7stkMOi1VdyE5fR2YDvNFiEYEEBECAAYF
+Ajxw4+MACgkQGM0lpSLzivNlngCeLdkkRkcyHVKttl6Z9IQExE+gaNsAnRko+7BQ
+Ou5jXMfGarg1rE2zDhsFiEYEEBECAAYFAjxxJxIACgkQscRzFz57S3PkJwCg3qep
+dTsiNKuGYC6a1RlJZTBqkiEAn2G6ypvCpWAL43LWbMbyyf/rYxSoiEYEEBECAAYF
+AjxxQYIACgkQOhqmNZCaVAYvbACgz9mXzo/nC64mx03IFgL8oFuBAhIAoL91NILX
+xGYrkaOnM+2Ci20UvA3ZiEYEEBECAAYFAjxzeIMACgkQo+C50no0+t5J7QCgpSCg
+GQ8eMefvsDsF0DlEZzuAHNoAoK1TFwuK7ZowUQJyWp1tKDtNDbx3iEYEEBECAAYF
+Ajx+gfMACgkQjjtznt0rzJ3/dgCgnDMnLna3yPskxeVf32wDbTHLxf0AnjWCw4lf
+YauS0LumGv9uHN9PaErhiEYEEBECAAYFAjyAY8EACgkQ14NrbAzZIOdEPgCgt5Di
+ZfRFkvzAPecRDCIp3pOdUwkAnjj1CDE+Kzg2RiK9Z73QM8B0J4driEYEEBECAAYF
+AjyBd5kACgkQ/3vbrZlD49+lmwCfS9apz+gEHsRV6ELS4NtCLvrJsRkAn3Aexpis
+dP+8KwolieJwaVPitN2giEYEEBECAAYFAjyMzCQACgkQhbmQdcKRDkGoiACaAqrw
+Xn6kf3aD7wss1rgQmrCtJKIAoIU6uifoxBubp2+YjW6kjbnkFMD0iEYEEBECAAYF
+AjyXNDoACgkQoegCcNp0M5aGrgCeLBRQ8CAVzPO8OTz2TMFqYLIbFrcAoK2qJqoj
+mF2+THtFCHz0hhiBAekNiEYEEBECAAYFAjyXNjgACgkQg2i7WWb7wYxzxwCfcrZ5
+yTwjn9Sh1S/yL3MBKBs8uxUAn0pC4GgIsbbaxcf1QA5AYwFiPcPEiEYEEBECAAYF
+AjyxODEACgkQJXt5TsZsoD0pVgCfTIJ88OFNFlnUFoNZemDdbd4ZqEsAn1y5ZyCl
+5SYkqFTGiVtkgtIIEhK7iEYEEBECAAYFAjyxguAACgkQeuuK7Uc6ScnBgACfUlQr
+rDUb78b93JEvThA/f1ZankIAni448ZxagzPjnj/vH33yK14agnq0iEYEEBECAAYF
+Ajyxj4MACgkQocWSfM5dzg4qigCdHrjYquNu2aphWggG5E0G6zCW5MEAn1NQJmKk
+TEUsbanbVOBx1G5wvYkeiEYEEBECAAYFAjyyhzsACgkQVlEzpFDUq7k99gCeMJc5
+KvC2gAHgCVjv6Hn7AKgY+rMAnRFIrjunb1Sh77542URoWAVmuPN0iEYEEBECAAYF
+AjzyIFQACgkQX1807qC7Pev9PgCfcW15D2cS4UTkn11BSqn+pgrA4KIAoKzLDc78
+X3OFDzVXTOvk8V89OshGiEYEEBECAAYFAj1uHIwACgkQKMb1a4F8NWhPPQCaAprF
+vggEHBTVR+KWzm0Z3l9ijLIAnAw2QtJ1Mlnz0ctNwSJwORM87/ARiEYEEBECAAYF
+Aj2ERksACgkQ1DyzBZX+yjSzyACgjUKL3CH2UYciEAarZU9H0ZYIIWQAnA6I1aJ0
+FgWiF2bd/jgWaBL2jtd4iEYEEBECAAYFAj2F5U4ACgkQdZc6ENbQhKbt/gCfblKS
+qJohqhaFawtXPs8TX1UqY/sAnjqwumhFN4YAAez36gItTB9BxcmJiEYEEBECAAYF
+Aj43BmIACgkQkQghntzeiQqeGACfSyyIi1vPniQOq8xLfgjDxFkkVEYAoJSFbH8u
+hrwBMa8aOIRkjN9uRdY2iEYEEBECAAYFAj+Q/gkACgkQdt8qX2QD4/2oiwCfbZU8
+0h75YoE0cx5+E/ytzozrwxQAnjtYw4qDSX22n9sMhPW1CO8XZdXdiEYEEBECAAYF
+AkCXK/YACgkQs9OWc5ZoRwHECACdHr0sI25gaWa1+uBYpkF3h7EWAnsAn31wzQoC
+tVuJnd7dqqxn6nFacEHLiEYEEBECAAYFAkCnUqEACgkQt+hxIz4tn23BmgCfbd5O
+5fC/zDHoS4VjKyQW39li0pwAnRaNn2SP7ThVdF7xjlueyhqPPvUPiEYEEhECAAYF
+Aj0EW94ACgkQj/Eaxd/oD7Lv2ACfUACXl0hDfGeEdbGjhIa/hSaZCrkAmwV4SdeJ
+nBoXV22VBEekmTfzHKHEiEYEExECAAYFAjyvU4oACgkQ6pxm6rn41tmEewCbB4FZ
+6z6dmSJ2epBIdeoS8KHLNhEAn2ZcUDKfuFpVVDuV/bMhpjbbHJRIiEYEExECAAYF
+Aj0FswMACgkQoWMMj3Tgt2a46gCdFwSWzfEmyuvfjnmNPzCyvdO2R2cAoJRl1Ibl
+/2hPXjenl1f08pQLThZAiEYEExECAAYFAj0GRB8ACgkQKb5dImj9VJ8FHACcDjdy
+CPMWjSbrXKCVFjDtuapl428AnRSI7e1VYRJcVdGmrAtmu360GrQpiEYEExECAAYF
+Aj2J/ScACgkQ74J3yv6ZHpg4ogCgj8BllYTJEQ5sF62Qd2q9o2FNJ8cAn2K/7zpy
+9M/Oig+yIYofaN+5fnUUiEYEExECAAYFAj4ykiMACgkQaqtaJwF/Vr1MmgCfcNfO
+Om6/woHpEtuFVgYXvUh0tG4AnRTPBwdemHFViOojNJ0glWck/84ciEYEExECAAYF
+Aj/F5joACgkQnkDjEAAKq6SChgCfViT5D2pKjVM9g+s3P+riRxshF3wAn0G9MGUz
+O1YnhpTDmS7/I2WrLT36iEYEExECAAYFAj/QvIgACgkQ9MN1Y319OPMyOACgnMDI
+EYY31K8RDRdITRYPyzg0aPMAnjkHIZ2QZ5cbeFv5LIQiAt/8WUluiEYEExECAAYF
+AkDa3nAACgkQRTxFSQIw1gIEmQCgmo4Laf3buzEbtM746FMJeqy9aY0AniIpYHTJ
+gFn20iSIwYlJ5JiNoWk3iEsEEhECAAwFAkCn2cEFgwmw+ycACgkQt5wosOl/hW1+
+GQCgxL4gvRYl/yXAZkXQztRWe1Ia4kYAmP8KsKNrVcT3k4XXah2XYPMN7CCITAQQ
+EQIADAUCPQET/wWDBrWxagAKCRAUETjdo+RdZq2NAJ0X3oMzaR2t5MZtZMqNMxO7
+AHcC1gCg7FMURGjJQKfudOy58PhCnEiQkKKITAQQEQIADAUCPYYC5QWDBjDChAAK
+CRBT4oVOC+Hw4/6WAJ9MuNF9WKFE1BD8xUi4e216xf+z/gCfVkG2HwbYS8J+I5TY
+qg6OXcxlQniITAQQEQIADAUCP45usAWDBChWuQAKCRAKYuU0N6eRSQYxAKCmKHZy
+5EYupyF671eAWW+lvnSS0gCeLMwyTHhyp8FqbJGfmDkEcURKFv6ITAQQEQIADAUC
+P5J4BwWDBCRNYgAKCRDvy83/YfBbjOkoAJ9vyA2+SFX9sR1S1L9teAAzjxExrACe
+MadTGJ3+vmBbybQzMcuOq9GA/8iITAQQEQIADAUCQL9HPwWDCZmNqQAKCRDZLSTf
+3ZZcgzxlAJ94ZJIXvViFSYBCuTiwGH8JViHWVACfeF0eysjY5OZ+aOTjeEOOZ1tj
+luaITAQQEQIADAUCQNtUXgWDCX2AigAKCRD2KOuTR0MgbAUIAJ4zEBlRY1zow2Rn
+VnlJyV8+Zega2QCffe1gFTh83WIngScIyI9NSEcsNLqITAQQEQIADAUCQPEidwWD
+CWeycQAKCRCS+/1Xhvylkt/8AJ4qxfg3sSNOlrujmtPxRQUISxWCnQCePI4fRvNx
+zIXcP8AlFD/QW1Y66OiITAQSEQIADAUCPl5xiwWDBVhT3gAKCRBQXohHIudfS6AD
+AKCdnk2cFYneP3/uyXODkjL+lTpR6wCgto0mJSBV+D6He4/i9QmG6b3U/9uITAQS
+EQIADAUCP3sJOgWDBDu8LwAKCRBbs/UZWBZ5Gr9kAJ4vqVUqQTWIWIL9iieUHMuo
+0B1WSACggEfxVgNctEiAGnJ9J3BzVjFN4MOITAQSEQIADAUCP4/uPwWDBCbXKgAK
+CRAospXD9G6tuzd8AKCcP407jZCo64f6Ydsj2POiuw8X6gCeIdx30Zx8jzTtA9/C
+WnzzqP29btmITAQSEQIADAUCP565+wWDBBgLbgAKCRDKsy6J6grA5DRrAJwLEBZB
+jIKbb/ymMaPiu/U3ZykNzgCdED1+XXMe/3/RUsiTRvI0FdjtEXqITAQTEQIADAUC
+PQdNFwWDBq94UgAKCRA8YsrY5NQyTYgyAJ9ReRl+ZmswUiJg7wX+dpAwGz/3hQCf
+Zet/a5ohJis+50htGTFib5HY2tmITAQTEQIADAUCPXh4sgWDBj5MtwAKCRDQGpwZ
+TXZs3qu4AKCLa4WOHhLLQqPJ3vrR29+lr/2O0wCeMfI9DS0dhKpJkMP2ppC9v8Xc
++UyITAQTEQIADAUCPXkxEwWDBj2UVgAKCRBwXFOJ1cGzWFqVAKCJHkZNLHh9IKqS
+KTOs445cCicNVwCdEVDXd2aSMtxHLgTxvEu2bzE/IB2ITAQTEQIADAUCPYOt8wWD
+BjMXdgAKCRAC1u0h4yxPS6DNAJoDnRKfJ67zae2HSKQ1WfMcPhbR4ACcD1bEYGaa
+m9Zg6rks5PLZ9V7Y/4SITAQTEQIADAUCPYX8CgWDBjDJXwAKCRD1ayajpjmec9ly
+AJ9S/E1eOhZgSwBgnPfP4xYN4at8lACfeyVcX1x53Y4A3diBhk1OUgLtRRqITAQT
+EQIADAUCPYgQ5AWDBi60hQAKCRCDZcvc3U1O/tBUAKCv4L8/uCoYO6lhMLbWOXTu
+Y98b9wCgtn3OSavVgXoGvuzNQqSxJqfp/C2ITAQTEQIADAUCPYg7AAWDBi6KaQAK
+CRAdvV51g5nhu5YzAJ9/Rhh0VnuB1zWqMJp5cOEJ8t7Q4ACfU4m5n94oaT6LRX9J
+wuk4wuf9IIKITAQTEQIADAUCPbbBngWDBgADywAKCRBWQSbyKfGb0fKKAJ9o1uPI
+iUdgD1wC/ywuTPm4dGhN7gCdHIM98AWIE9lmHAk0OWZMQKiVcv+ITAQTEQIADAUC
+PvYinQWDBMCizAAKCRCh9u6UJAtMPbVNAJ9wq7LcwSMlGuKQMGAq2kg/Vq3ZxACb
+BGVk14o5PRQnhE23amIAepMPjuCITAQTEQIADAUCPvbPvAWDBL/1rQAKCRAFi1rN
+RBxfgf+OAJ9pBdb4u+OglpxU1it3GFdRjHZr7gCgxBX/L7ONydo1FtlMfq6erh8E
+MHmITAQTEQIADAUCPwCeWgWDBLYnDwAKCRAyjNaz68J1FaxZAJ9Pcr30X/EtYYmQ
+43XxaI+egwjqCACggnySjSlQCJ1i8FsI6Y7gxJSFH7mITAQTEQIADAUCPwWrlwWD
+BLEZ0gAKCRBOuDTo4szwD4nXAKCa5yk/2tzU2PM8cMU1xCiRFun9EQCdG9y1b/wD
+ANof9u1CM+1eBAYJus+ITAQTEQIADAUCP4+UeAWDBCcw8QAKCRBsdheMoO2YLRmb
+AJ9e3VofuPQhcKigyc2RnXVGhNsBuwCg5IOmh2+CLIMlqNljiHGNrppBJyqITAQT
+EQIADAUCP5BBPgWDBCaEKwAKCRDs5+pfa9v3dgHdAJwJtQJr8RLOiKXB5jfrO7sc
+GbHDYACeKTNZV9sWZloRjJE3cY684glpGLSITAQTEQIADAUCP5BTGAWDBCZyUQAK
+CRCdCKgM7ZCNah0bAJ9YalTNX4jyQt4/KOX8Dbz0sovDjQCdEAwRdGOcDBjMuf96
+WvcniwCM2AeITAQTEQIADAUCP5BtvgWDBCZXqwAKCRCVLFYjbKds9NDpAJ90vu3d
+OjGIwjFEwsnsFvNoMknQ4QCeJ1vLTVyOLc0jr/EJ+G2sbPEYoqqITAQTEQIADAUC
+P5EaJwWDBCWrQgAKCRDjpo3KppjamQenAJ9RludXwb623B84iQeVDnN1tCCN1QCe
+M7KFktG2G52kiH4CtdvNxKrQqLSITAQTEQIADAUCP5KauQWDBCQqsAAKCRC1qZ97
+20UtJx51AJ97pZsy9jjfAekIOXZEW6ufIbMX/gCgjHk/XOEQBKRo4mEiEEcXUFDC
+g4+ITAQTEQIADAUCP5Mq2wWDBCOajgAKCRCtIBqBlDpfDnT6AJ93guwhwKsysCXU
+j1Wl0KJA1tENQwCguKm5HVJEddhwFv8Le5ciGmDnBHiITAQTEQIADAUCP5QF5wWD
+BCK/ggAKCRA6JSu9nSRLVQh3AJ4gMeJmROax54nhlYkYret8zNciUwCeIzFGKkwf
+8MG9/G8hS2mJNuwC1ayITAQTEQIADAUCP5UJmgWDBCG7zwAKCRBMMvkImd2UaI03
+AKDTq3siME3Ug+UXLorMu6jQm+SxPgCgrMZoxFjCraNIqSbkHlGhaZfWhEaITAQT
+EQIADAUCP5WRRAWDBCE0JQAKCRAbJ9dS+kmmGp20AJ9opauNO0RwohwSdSQ7/Suy
+wmcmVgCfX7KoofMwOO2ICavDXjhy0el+nxeITAQTEQIADAUCP5wyawWDBBqS/gAK
+CRA2AlZTq+CxBg62AJ0cLAuRBJtNZ965pbSXhm7LbGAHeACgv9292klqEJtMd0Sw
+Mj15EjzJoYiITAQTEQIADAUCQNxSDgWDCXyC2gAKCRDND5yibr2jWYSXAKDKFv8S
+7k+dyzPbxlAuoVyJbsDO6gCeMmWWouMPUuCDiAHyj2ZiEhiyrgmITAQTEQIADAUC
+QOQZsAWDCXS7OAAKCRAdyR/zjvUg0f06AJ9Ev31lB/7hWWzm4NVBSK4sCK20GgCc
+DVLwfhgVU/ezePrnn/ZQNyibd66IYwQTEQIAGwUCNu1I6gUJDMl8gAMLCgMDFQMC
+AxYCAQIXgAASCRBd4kmWWwNYogdlR1BHAAEBtdYAn1IJbSJ46kvsBjq8X44hoybD
+ZlbWAKCS2jR5Z+CmMC5WDqNepHXAe3alA4kAlQMFEDuB4BNSrOsu06QsYQEB6AYD
+/iRZgJ2U+hTGt879PPwLW1y7dQFbjMHqbyyM7eml9ZbC+m+jqNvMsniFCR5qvStM
+gbXuUZGGpd41mL5+vqF0wwM00nBQe+rr5grY2oMPCSEJRNtHEamOsbc4GP59nrwb
+UhA7MKPSrPCvh9bvh+XQ7MSlar9eVBkqvnYmKdaKI1ioiKIEEwECAAwFAj+WOcoF
+gwQgi58ACgkQ4WdUde/jR62JlQP+N3YY93o16UtsuXFobwn0fTiEI5V+PDkE9b5Z
+VDr2E+do3bhERbgol6j5LQQ2vrn+BMfj42hiLQPHbHQDo1QyqlwpK/CBKt8r0i3m
+14ZqiB9sciGnLVQK1ZTBMzNs3loZEOO5W6d1ynxTGzcO/pxsPVmwerJxs9kmaxOj
+zkicWbaJARUDBRA3Q97TUoBXRHZTQB0BAchxB/9iTH4O9RoIshiUysQgMpncn9o9
+snx+sCO/NiSuAVleHNBP1d/Kvo6SGLJYoVfbfLPMNVyuZ4jGi8JQjsgVjpAz93nI
+evhjz7Xwd3JpS9oUvPej1mdWnUB4AnkKQfN+5+eso9Gk7OC9cWq20lU9tpVMDIlO
+j8GHR9kYfJ4fBbzdCGbG5Z9pzo+96gDUMzX5ZrHlChdV4eHJPMi60XeK+mpocQFQ
+H3GBUSTeM3Sy93JoYJLdAA2ZcwMF5xI8HRx8u0rwCZNXnDTgPaRbDiW7587n3dWn
+7Pwmxu/CPtCQ4YO+WdjcKvHio7CqojtM8/7xuclkp3Wb1pE1s9w929ca9SHdiQEV
+AwUQOcqYVhpPhku+30gxAQGDOwgAjoKCGePm8h7g2edNYGosrPTMcZ8PNCMETXMZ
+ozgCbEd5oWvotRaZnta2CZyj/u5gOrE7z8XR2PNttenuHVDii5y0KwaaTR12/wrp
+9VJ61wLy/4zncnx/C9Nwg/Mu9Y2bMS8EuL16yWNrm6YxprWsaaYy7G251NI7cseX
+cVnuAowzm6k8ovEwCAqVl4s7EUibNQQCuDgH4idUdr410fDnpUalpvsGYf1wqhs9
+3RbjU7pNEaLmnlz8zESHYaev+JpMVAfnw/jjWp97xyCual75xrc/aj93anrobvU/
+sSKCDbteDzW9xYyjqZGu2npn+rBR4iUHZf9j/glwT0PVnH/jf4kCIgQSAQIADAUC
+P8yfvgWDA+olqwAKCRDYwgoJWiRXz0OCEACNCPskc7m7duoBwLTw5AwYgNox0XKo
+Qi2X+Tipv8J9Acwy+Wbno5NLyH6dSuNS+V4vCxHGVaY7xS5CKa7iSJ8XzRgX0JPV
+AC8fSlXI9fhSu/wg2z19a2y1QUUe3GYPLsapEsVk5GfcBqWW7WHmQD2BQrfR+uBK
+jj8ruaAZL4At8V2bv0K8A5J2whETQLub6tSXwN3EWhdSVpRsoQn1rSIBuI5d5Z07
+sEUS3ypVI9jPSRYOTwvQjtfT/PcrigcBbtVIEtyjMfTttWgtuW2cJ9u2kim5oTDN
+iQQEPlP521MHRmad1hU1z098Wo9AhSPxZDK8/XHv/hbvI5HeD1ydkR1uBmijtLAT
+wNQ8rwFLJiKeB9i9C5OC3Mxlx5xNr2I566TI+ZyaMO7HBqBw7fQqgLS/loFvPdou
+jzssjhacWNs+NRcO1imOZokm0IX2FOUPekyY+D42s1MQqw3VnddZWtPDBEOuDNUu
+3nPyEnbKHSoQdOjEkx1OfQu3Aau227R5aoNFEFvNTrQkfpr7MKiexPa7pnQn8Ovo
+ASAbIEwnkcEf5s7n2vbPVEGnO4cOb52/zMh2BWkFsrRp1z3+JA4doDTfI5/aLd59
+jDYrUtYtNuqqFLdh3wpc5f4zJBiYxP04LaLDje5zudlEZSDr6zJfBbieCVrXQhJ1
+522vVXv7wSDln4kBHAQTAQIABgUCQQm8qgAKCRAz/XFX/s5mTrURB/9GUhTUyJUC
+Wg4MrQUruZQNjYQRxB/s8f57zAf+i94Qp1vlfnGmwWUaf0pqJtMpqMJEPd08Ehdv
+xTz4dnOY+cTH9X6tZFMqSX5PSTi0bbT2oBIXL913Iw3joRRPeETgc9tZQHBrgXGh
+s82h0HxXw/oAiAsPOiibIu8r2D7JhOzD5S+JKfIWIWsFAgcyQTgDQjoIL3LrcB7p
+AmUDlQF9746dEhon1cgY5pn2mStb9BmEWyQWOaPi7OWb+SGCDAAzeNWD1BbHsME9
+g0eZ2ZmJTyBk2fnDTL4ga5lyi9ACRzrtywSDUGeanfhOcKM4onFhQQrNccUsFyWv
+IeJkLPJfYySTiEwEExECAAwFAkENp5kFgwlLLU8ACgkQK6gmAsLOgJkgrwCfSnWg
+A74uG11T8fAfX9ydAUJU2nIAnA2iQrW3wCpoVcPHta3pA7AgSy1OiEwEExECAAwF
+AkEiMZoFgwk2o04ACgkQ+FmQsCSK63MHpgCfbI+x0F43mVjuYH9x75SBB8xX62YA
+njdVEXOlJ5zGwzGMQQRvhsl4A0ZriEwEEBECAAwFAkCoZL4FgwmwcCoACgkQEglj
+nRFKqFyRfwCeLMs/2xu844NRFZnsfyZqmM6nrZ4AoII4PrRQ2bTXCSRquIAbKKVS
+mNCpiEwEEhECAAwFAkGE6LYFgwjT7DIACgkQGKDMjVcGpLSMfwCguvt1VXNNOwTt
++G8IaHegL/HKnr0AoKauzSZ7Aq4oqNpaqz8vjDHvC6rpiEUEEBECAAYFAkGD05gA
+CgkQ9oi/YaVie2HDkACY2ltP58r6yt2xXVGEEaAwUU11EgCghgAhfALotSGYZtRJ
+tQ0vJt8TwBeITAQTEQIADAUCQYDw7AWDCNfj/AAKCRCxifa00jpByMsjAJ9xoUvw
+HdCrTUStZZeH09ZLzsw9BACeKtR7STIUWRpjLI7JpvrU8LL84BuITAQTEQIADAUC
+QYQB/wWDCNTS6QAKCRBOPKkCbitD3DKnAJ9jxfE7KXqILRgMKQrQc7z2PwBEsgCf
+RtCsIsW9kyO/meLeaESpR3q78fuITAQTEQIADAUCQYS+fAWDCNQWbAAKCRBNs9nu
+f0WE2uIjAJwMkleJYoAA8wZRCR84E4aEfA4CaACfbIzYIZ0PW+bvTQUQXvgaYbe/
+KbSISQQTEQIACQUCQYPcBQIHAAAKCRBBKBqeoOKNGJ//AKCMgnS5OVhpAisl9s+n
+GcLYpnRqCQCgk2cbBc+o0EisSNl4zRwlsJWlNjWITAQTEQIADAUCQYToHwWDCNPs
+yQAKCRAsyKVocMis5RgMAKC/kLjySXt8sT611FLfHn8osc9/HwCeNlQAqB5HgTZr
+9G86V4cJ3ZrtLluITAQTEQIADAUCQYVcuQWDCNN4LwAKCRBPpFU812tTWeM9AJ9y
+IqNHnm1qw4FDTECKcMrn/N6+MwCfWzp6GKkgGSrilEd6tP5dvl07jZGITAQTEQIA
+DAUCQYSQigWDCNREXgAKCRCU8fT3OsvSI6G4AJkB2TDVVkOZnO2FjDkw6NDTKdnL
+6gCfZPwzN1BsmP8dTnFSVgR1gX7pXJiITAQTEQIADAUCQYVWQgWDCNN+pgAKCRCo
+j/3PzGEe5p7WAJ0bw/UjTVnFHJXC3DE6U2VTqizKvACfYLGpNvoNacjH+SpGU8ST
+QJFwKaCITAQTEQIADAUCQYVHBAWDCNON5AAKCRAN5ydtXgV38l1PAJwKnPVaD6TC
+E6QLNyFsz1cNStf33ACeJJBCSh5k7ZKnyxT2ZuzbEXylmzSIRgQQEQIABgUCQYYP
+qAAKCRDqCcRAP/9gbKkhAJ9BslntaM00WnDA3ASUif+zU2JSJACfaFzFnixQJYyE
+aD+kDlwob3MiXCWITAQTEQIADAUCQYfBuwWDCNETLQAKCRBWbTYs7gl36JFCAJ95
+KY68gAsi6WfNtkfLhG6BBH6d5QCgirc/IEr9yXpxl/OEUNbfCca++giITAQTEQIA
+DAUCQYfr6gWDCNDo/gAKCRBNPHyhVU+0xi9DAJ9f0VlmH917bnWapcM/cIndw5Ae
+kwCgsZYTbwiSfbmXBvqGmNt7bPHuj6CITAQTEQIADAUCQYw8WQWDCMyYjwAKCRCJ
+IbXczRWogwpeAJ0fP2Mpau62+T30QvLvMdc24JtSFQCfbGa6Uvpvp4aGjVlHU00D
+8iAkYzWIRgQTEQIABgUCQY0U/AAKCRD4LlzASysrnntVAKCb8oWOwdMhp/aplHoG
+W5pv8sWk+QCbBiyRs7fUPDPZZk7B+3gs4yqpsLOITAQTEQIADAUCQZzwYQWDCLvk
+hwAKCRBXmeUthM+akBMpAJ9vGDrEAF/vosLl+igjQBkdVuHyWwCfUgx4E3MUznyE
+QCcWAoeTFAmM+IqITAQTEQIADAUCQZIwWQWDCMakjwAKCRD/ZHcDTJFx6Y6BAJ49
+ketS9mbvkg43Wv10LVLu9RP/ZQCfWcqxNf5B9nnfz534Swk0m+IKjCSITAQTEQIA
+DAUCQZlZZQWDCL97gwAKCRBK8VQqljpUsKmnAKCyheW90s5jIo4wsqoS1ZbCfFRz
+bACgpaYZ85fkVenMqH5t/AeNEOfQX/mIRgQTEQIABgUCQaoVNgAKCRDO23/xky2D
+Y6y+AKCYepkU1ktnW8SukTGrcqAwRCmoIQCfXD5W/B5uKYDEfhlErhOFImPD1e2I
+SwQTEQIADAUCQerjsgWDCG3xNgAKCRC92TO3hf7Bfw8UAJjYqD/zuVRLdu1uCZbL
+BGFuVP6kAJ4pgjY/zP5hWXaSl+L5+oEClfb+/YhMBBARAgAMBQJBrJuNBYMIrDlb
+AAoJECxJgcTDNIbARj0AnA7N0c4Ns1o2y27RybNckjso1A3XAJoDseQ5VYuYTOKr
+x4uXV4zVBeAHcYhMBBARAgAMBQJBwhKCBYMIlsJmAAoJEBhZ0B9ne6Hs5OAAn1yH
+Oz6XSUAJNPC5LQtb2hit35ZiAJ9ApmeXEdYE6zgRT3jZrjir/EhMzIhMBBARAgAM
+BQJBwijgBYMIlqwIAAoJEIHC9+viE7aSN4YAnA/NFK5EtShDIEdO/EtLLJ7IoRxo
+AJ90DeOjyzeFsvgw1hwbC/ZLqK+WPYhMBBARAgAMBQJBwikwBYMIlqu4AAoJEGtw
+7Nldw/Rz/BUAoIpDsq64H5BN+XxTg0Cm4gXPB4YqAJ93UxNgU4SS2sxSvaMueIeP
+HLOuJ4hMBBARAgAMBQJCIvNsBYMINeF8AAoJENioB8fM7CJ7/gwAnik7rlwNgCPc
+pLzF3sdevzvOxffaAKDhBcX7S3oLb0p36iJqIEVX1b+f0YhMBBARAgAMBQJCKJ4B
+BYMIMDbnAAoJECwA7lLYUpVYBRQAn2YzlQGyrvie8kjl4uperz9/kdssAJ9ZeQgm
+1Dj6KBMofCjwz3kI5cSmlohMBBIRAgAMBQJBsYRwBYMIp1B4AAoJEAFS1gPf6sS5
+9m0AnjTIpKrVOGXAPwwEmqiK1Vh6E4qaAJwPQSRv0VroLjnEuC7k1ytTXIJFRYhM
+BBMRAgAMBQJBqjHJBYMIrqMfAAoJEHQ6VUzk8IfXS6MAn1b2h4coFheuA3mNstHR
+IHFq9ROiAJ45k+V2FvQoWJz3aVb3W8tVcgYXS4hMBBMRAgAMBQJBqyVEBYMIra+k
+AAoJEM6KedeYAW3HK58AninBow4efQ8Ii+vCVMmcUZI/wbnuAJ9028GcLlmaHSVW
+sFYK2YfI01cvTohMBBMRAgAMBQJBtzyaBYMIoZhOAAoJEBHy3EPK5jRCRGQAoI3W
+osJGFXaxJeMhtJHIrzl4ONY7AJ9hWMYKlMieQZdpHbWZTOsiCJjy+4hMBBMRAgAM
+BQJBuB8qBYMIoLW+AAoJEOVcsYNHeJ+74vwAoIoCeGH3M/bycKeykI+yeaXI78Hd
+AKCCd63fz06xMBvjJsG8YdldyIVWC4hMBBMRAgAMBQJBuCvXBYMIoKkRAAoJEOFn
+vWHVQeFEyH4AnRNFwQQ37Rz0LS5nOuxLaOaRUJcqAJsGzzqdi6YXSEvHVQxJSIaw
+36YdJ4hMBBMRAgAMBQJBuFoNBYMIoHrbAAoJEATEHzbNJISp7Q8AnR1G2I3agHt6
+eg2IOQzPXNMwkQK6AKCcmjlAmYDLC30kG3IHuN9yclRbLIhMBBMRAgAMBQJBuXbe
+BYMIn14KAAoJED66vOIb8CHTqvEAn0L0IqrwpcpT1O0eijqWjuwEz/PeAJ9/QXQN
+Ippz1e7+BA3k/xUWGxRpzIhMBBMRAgAMBQJBwqpyBYMIlip2AAoJEDxtQMm+Lwr2
+wL0AniPqOWABEeev+hFFfxzO7Jeli/A4AKCCNzSrsY7ucWEfuvtN2KVfnJfl4ohM
+BBMRAgAMBQJCCIx6BYMIUEhuAAoJECKlHI3tT+DADxQAoKn6T6Q8lNgY9Nu10ZVx
+LMU3/3GIAKC5VPmhh5KfHzoFIeNTOXJG/nVNXokCIgQQAQIADAUCQcIpbgWDCJar
+egAKCRCq4+bOZqFEaNKoD/kBxrf+A7YtQviSiSheWwm4jzFHqU1GziVnx9lqmpjG
+Ff49WgkVxI/KA64+gQNuuIlnHWgFFvNsJ8kH9AtVzSAu8dT6s8DXu0ZnwHI3LdTN
+hh/4cNRJsUEIi6j0MWw2m76bK2WJXS0K1YxmNkRBiOdUzt8KXjX55+gjQ+Y2R+xQ
+YA+vvAx7+smPk0rm+iWTM1fSUEXZp1+tAfC9J1lI9sGx0pLMr0JeY0Gd2i92UL+y
+GG1MECEyA1M1vxe9dGM8QUrRYR/qi1uefPUs3dPdsLwTiGZZk9WaQcks+wmAZ6TT
+pN/b+5nfbrUWDjJDSe7E5X+9JM07OcCePA1kQiBVe44DEdCgbLZlt3ao/XgZNRxP
+FEEdQGrscwSwMUnOq6i5Hwm3y1olH6CjN0s14hfU9tkudAJY0reTsVm5UN8vBe09
+I17DQ2Jb8kAohE21gFgOLM1Rk8oO9QEuLK8EKv9xWStOgGKXnKz5ZV8ZiBmMgM0i
+ESs//9L1jqRTOVjOjkTSkBkFwVnS7BvSM9BTgU3dEls0i1iAkQkSl3wOixysnCfW
+MHgX2CTnQZZjs+3TPkswWtl/ZgPdqcFBGctYGOL3qHdylFQWs6dNIsyGhu6nDESM
+jkhQtTeCIlsxBKHTnm7C3MWuL5+PdmonxYfrkal8GVv3CCGGAtkYMHPIHcZyVeF/
+mIhMBBMRAgAMBQJBk629BYMIxScrAAoJENZr6jfBP8e2AVsAoKR3MfZ+Kpd6Kcvg
+Ts/cCeRlpynpAKCDmw8VBhga70t30XZYhUnmPmQVsYhMBBMRAgAMBQJCNqp8BYMI
+IipsAAoJENXFt0PEp+o+6fkAn2VjI9bSV5E/wq+alHEOjEXHtNHHAJ9K8bXfx5kG
+/EMfDrAt/DtPcYJ1CohMBBMRAgAMBQJCIf49BYMINtarAAoJEMjYuSxPcUYFd14A
+ni5vzEoG4gM6dwiWUf490IatIw2BAJ911L/lVgLLiSIafk02F3OoVIT43ohMBBAR
+AgAMBQJCIoDuBYMINlP6AAoJEAHF69jK2POjuHUAn3bZ17H2pOTQ5RZPwflDaI56
+ZxXVAJ9UGcqwfql043be5/Ur1X06IBG2/IhMBBARAgAMBQJCU42LBYMIBUddAAoJ
+EJbzTXpP9IY1OoIAoLTuWw/NW8fzZOKjEmUKCiY8sFujAJ0aqkuG+CpDi0Pdhgv9
+dyaM8zhnwIhMBBARAgAMBQJCmI6ABYMHwEZoAAoJEE225xuAYagwpNwAn038PEqZ
+4JeypuFY7GRDxhTJuzJJAJ9k7ucqhZADqXVoc5BGi717B0IeJYhMBBIRAgAMBQJC
+lgKkBYMHwtJEAAoJEIuWKUP8JD88GcUAnRyOmvlFE+EgK5mKPPKhaUIxIItEAJwP
+IT8/DGMp9rjDGHLpPIivUv7QGIiDBBMRAgBDBQJClZzDBYMHwzglNhpodHRwOi8v
+d3d3LnZhbmhldXNkZW4uY29tL3BncC1rZXktc2lnbmluZy1wb2xpY3kuaHRtbAAK
+CRAwGQ6MHyjYrrWTAJ0TDJOB+fY11o6HcbIqhNG+PnwCQQCfY2WGFLbCP8M4MJPB
+2K+YMOlUff6IRgQQEQIABgUCQrq7vQAKCRAe4EyBJF1k1MxFAKCqSb/8ZhpMf5Wk
+h3S4YNPWjdjGpgCgsSfRL5/BUaS3WG0iwBGWPVTLm1+ITAQQEQIADAUCQr0yYQWD
+B5uihwAKCRCvZCSxPb07IGcAAJ0WBhMS+0h1IytXNVkR8LPorAA6ngCePLLGeTK4
+WMeuinFDuGakfzmYRTKITAQQEQIADAUCQr1FbgWDB5uPegAKCRDrbNbFiT+tB15S
+AJ9bVuCFqCPeE+tWe4YqEvJZtCJ1KACgmoyS72NSmLSL2qBQthTrnO31IWSIRgQQ
+EQIABgUCQtBBlgAKCRBanbQDLq9NgE+XAJ0X13N0QQ4Dqo1xhJFpCma8X9cW7ACf
+SkrXnKhjVbxUZhfZfH+arJON28qIRgQQEQIABgUCQvaGJAAKCRCJzUshYHVZ5gSD
+AKCy7NLRML3GUdfmatVkfJ6bbkyYzQCeIqZYvCWRaO62nwUkrtHWeVn4YoGIRgQQ
+EQIABgUCQvaNDQAKCRDVTq5LyZhwsegXAKCHvcHNwB3prOBdNWdkVuOoSMxXRACf
+QwGlFJVFdIvsv0Mt1DEBpjeqk9qITAQQEQIADAUCQuUFlwWDB3PPUQAKCRCDYTpQ
+FoJ9Awv7AJ4l9p4K17osQzVWkoOL5Cdu+RFyyQCeLOGb4rE5qE+QBvKNdYYU0aGF
+QeGIRgQTEQIABgUCQtNUDwAKCRDfzAaZLMRV2d2IAKDVOdKomGy42wOuIliIDUjB
+JDrH3ACgggk7OONHvOy95qiJsd62gHaILrWITAQQEQIADAUCQuKdnQWDB3Y3SwAK
+CRD0PnJmPMiMCfD4AJ9b8uVV5VtHqhcN7Hy+5Vj2pua19gCeI3Z9Ssgbqmps34Rd
+Z1Wt81EaN7qIRgQQEQIABgUCQvZT6gAKCRAXiTm5ct1YOA5TAJ0ek7qCSn33zq72
+5dFKmmApjgQ63wCfVSfXISqqYy95pNpzkNKyClelXzWITAQSEQIADAUCQutt6gWD
+B21m/gAKCRDCb3AWAcbLg8ZhAJ9GjNV6hwo/My2vqWxB4JlwzbErpgCgjyozjM/q
+SMFh26dVy+59xJU/nOKITAQSEQIADAUCQvD5fgWDB2fbagAKCRBY2pavC5ARQTO2
+AJ0eI0FkQfjrju80hIH6uYlj20mZRQCgvhkfxc8tP8RNdNZyn0hr2uZliZ+ITAQS
+EQIADAUCQvmyDAWDB18i3AAKCRDiEt3umyBltxd0AJ945N9DAos87C+B/49mbLJ/
+WgkpWQCeMax/gmJO35XskfVpsK9J30RXRL2InAQQAQIABgUCQyCv0AAKCRC0a5I7
+bYq+cV5uA/9UAgGKyGzHBFRzr52z7CHiNmm168PA+o5S9y9TF/2n+2jmBm3qoY30
+24GL/XdOxLAWecjj0X3ZOeA1oONFI/mbCMD6T7bT4fmlTLfQcSPGiMoSAdbKWCKF
+7YBzsJJu1k8It2lP7NEjf8+SJIgjCVngYAYO7gXBeIhDzjj2gp21ZYhGBBARAgAG
+BQJDILAFAAoJEMWvd0pYUQta9zgAoJtxC4p6v9O/RNr3ugjSjuWWZfghAKC9/h/1
+8PwIqoVMKiUuYndDYo0SXYhMBBARAgAMBQJDIUxxBYMHN4h3AAoJEBSp1Git8Ip/
+xZwAnRHVnCadUFQM341BNs+7OHu5p68zAKCOZcgJLFbxOzD13fYz98/Gy2sbY4hM
+BBMRAgAMBQJDIZVDBYMHNz+lAAoJEL/r08ZBzwMiDIUAoOyG2vdPDHx2YTbLPaV+
+4jsqtc4MAJ9F8nfCP99Z/+JTch3rKgWkLi2ovYhMBBARAgAMBQJDI3VNBYMHNV+b
+AAoJEJugk2taNf1CsmgAoLmV/zQXM7K+JntozG1/eXFBS6vgAKCSjDXGE0sz8KLg
+tHV8ZsMD4IkYPohMBBARAgAMBQJDI3gFBYMHNVzjAAoJEDFIu+8e7yb0EScAn2+s
+gAl07YjPjS6axYQp0C79NUMLAJ0TQqZq1rlmIioyfjId64QOA1Pkw4hMBBARAgAM
+BQJDKKE0BYMHMDO0AAoJEEk++45dZPhwHGsAn3XR7Qv8MQoYhMW1/tnYoWPn7ZXm
+AKDbh09ir7I20Mi5UB36tvAvetf+TYhMBBARAgAMBQJDIJ3pBYMHODb/AAoJEJT+
+3vmtNrUVE1kAnjfUoHZiEbaGrL3VHksxgifLGnLgAJ498MeO4kO9R87+EnDZYHK0
+fFMeE4hMBBARAgAMBQJDIKhFBYMHOCyjAAoJEGxk7XjeNO+hxPMAn3iMsjHDY9BU
+Rxw2L8S+7FvBbZ44AJ9BZe+sKNwrgm4Vd1H29pV8xpNzUYhMBBMRAgAMBQJDIKH3
+BYMHODLxAAoJEDA62eiAWc/cPNYAnA3+W8mLCuZv8aqvuRE1tmCyAtt5AJ4xqohe
+9C6a7t8d/cDM7HepmJsxy4hMBBMRAgAMBQJDJCP5BYMHNLDvAAoJEHw0FqlEG6/3
+PjsAnRdZahoPcOU/AjSlqxl9v0oS6BRRAJ4kMlTD8RqKCnWybISf0HUa/j8g/4ii
+BBABAgAMBQJDJcl+BYMHMwtqAAoJEA348Hf+CljYwoQD+QEn5r4ngyDRIcaWKcy1
+i+zEhBBbsQVpla90jM1BCcmpNM/71vrZwekOdh/a+6FYUoir9J2NjjHGQBK08uEs
+QChnvvW4PGodTELh8Z85ooL5HJmVfzmN2gG0oKh4qrNoalZidgNsO4I8hk/xgTXB
+7WJUHGCRFYN7ir7GYjUggfPFiEYEEBECAAYFAkNfjG4ACgkQ5XoO79RjNtpO6wCf
+UB/3gkAhn8b2LSlUC1l8JJ/hqnkAoN5aTQEc/tc5LUq1AgSnHiCVPhrIiEwEExEC
+AAwFAkPTbagFgwaFZ0AACgkQ5klUNHCsE9V2zQCgzkut4Nc+lbI9B22bynL2Y6nK
+yMUAnjyLudX4A3A0KUsZn8PZ1hSnBY8ZiEYEEBECAAYFAkQFytwACgkQ9Jgd/vNm
+D1M0ZQCeNMkLbWzJKyTHI0K0RBTLpWaJfOEAoIBbTLBDooQLOk30HerHkHmxwCiq
+iEYEEBECAAYFAkQGZN0ACgkQIIdHgCGsbMTMXwCghGM37FHu/5AxG5/qXIq1PbW6
+5O4AmwdLE2OTC6+CbJtDwFW0vqXoQMKxiEYEEBECAAYFAkQH63kACgkQ3HeLB051
+S+3vGwCfWlGCEvkmjJgxYN1Gi8SkGkdQUfYAoOlKetRNM1Ja6x9rNuYGVwgU2YB/
+iJwEEwECAAYFAkQNdgYACgkQpOAUxG0aO7EZowQAkdtUOmOGm1HBQu7NBKncx2pt
+NzIUUMNmn2lAXLB65dB+4iDjY70uuGARfDbAUF2O1I9VxZMK54nsA6eRs8RdZ7Ur
+5IkHoBr4LyvkYx5IsdqzyT8m/5T4K7kT+gDxzR8Jjb1U8s5ZhMlRyhCLRtp9JDwI
+2FbSaCkowI5hjsD8fm+JARwEEAECAAYFAkQG/cgACgkQ+fnDJwmNErO9MAf/ZpJE
++ZYPMThTVK+faygoqXJLGjCsTLf5OAKrvefM1LiB6Gx6CGU/nQKe2mJt4eC45VbV
+SAdd65KcXdCdgYt3U+t3+if+FmqDDgofNM9i/2rWvnyb2ExNEOQb+ol2PS7rSs9W
+e92+8IhaaTxkDmd905eoXVmEx+kaxS8DYskT856BQxNVTUVdmznNayE1GCroaAqo
+qXg4qQcumvRajfYYtGKQGrejSmmaLOgfoTXMC8Wmae22CBD9VMPWlnoeqjtAudBc
+mOtfo97ujQurvxq3hJnyxDdq+xKKXP39QEIIujRdMgA/W3sdPV8oTnns7MEOEGqP
+KBX+/kb/rTVDFRAOPYhGBBARAgAGBQJEKFdaAAoJEBH0xB6z+64zhtQAnReWnha7
+l1rvH2qKpDDD5HCIFOpKAJsGGGv/6WnZxoTEzbKdmHxO40mReYhGBBMRAgAGBQJE
+XP0qAAoJEIqjYq/pcjLN3qAAnRGdHEY8HrmS09ITQ/S0utQsfKqjAJ490qoLeX1G
+3WfiSR8LWr67cK3RO4hGBBMRAgAGBQJEXP0xAAoJEKffWHJw1EwjPqgAoI1oRXYw
+NKE7KIi+vsClHG3eWxk7AKDn0nhQ8GKBen6AFcGwPPzaIOCl4IhGBBMRAgAGBQJD
+RBukAAoJEOrUtZD2iZvAJ64An0d999TYuIbuA+Jna9e7pIVt5siOAJwNykt/zttA
+wm74mL6CaKX6io68eIhGBBARAgAGBQJEBYJYAAoJEG9dWWgc1S3oYp8AoMcB1tdm
+RSVI7MW1UBSZE1M6D2HSAKC99gRHBYroBd+acHYp6GlfJdO5j4hGBBARAgAGBQJE
+Bgo0AAoJEJrJ0ixjXGNLUXgAoN/eGtbGjZJPkCNnKMpYhpiDplc2AJ97PYkGRlUA
+/jUCUqU1HMZPvPTCBIhMBBIRAgAMBQJEBisnBYMGUqnBAAoJEN/mV5IylcXNMSUA
+oM+XSeK25/CceiiYl6+j/GVrf/ZEAJ44x1xyDjITeGnQ0XU38nrZ8P5JdYhMBBIR
+AgAMBQJEBitnBYMGUqmBAAoJEKDlFb85iAlU1t4An37J47WV25DgUtjZ/QZ33AMP
+60r4AJ95E6lAZkRO7Mo7y6oo61uONUqv44icBBMBAgAGBQJEDXXqAAoJEP3SdHpO
+RjpqiWID/3NC4K0HYRky7d8wxch1KtlmqoWuuEGY5/eVZt985g42eD9W81Xa+hoi
+S2Xf+bw3ZzVVtgeR1a75alakJ8QpOVJVXKfiI2f2S2sQYQ2f6VJZethgKXp0tla0
+Cesc2HVkVj7/8ZpKeEtjY4P+nzBYWC/ryiDxcYWQRB4LExuRaGaHiQIcBBABAgAG
+BQJED0iVAAoJEBoqB+ocV7nZkhgP/j9pbZhf6HOUIwJvPbD5OUqDioRo6Iveev/I
+lKY2NOBY6FSNhUc9O4RGxE0IMtVV6tuyCv1omdBdwgx8s+MYPqTQ9phNM+DK7DGV
+5agwZaEkH/DB3B7w000/oZYgxj5MR4rgqrhHztKriqCbXjHijAKlnMlrsrYTTvzv
++q/Auhncilt47zoveQPEANqienWWVUI6ijjZh4pMZ/C2Bseek3UkBUgyW/uPJCRP
+PkDjGE0+6XeLiTKMOnjmvZEoGJq58AAKhE10iPugt+7dW1ABil6rwm/jasqLFbms
+DPG57AoyTmo+jmcEarnFl5HAM0sHque+i8XAkmG51dLCnndUmtrRgyJ9vGSRsava
+tH9bVRW6pH5pRISE+bPNMatbowoKHGW13SG18WxggCvojFyqOtj4mQdqDertNLBZ
+lEuTVYqKttkxdV08/0Sb+em+tvSDdLkDFZyGDVzX1tC7lCkFiYAPhh7RGhcTqrHr
+RC8yU3roEFnjOZdYiokE/Yqrlc/Vkx4WPk3QXOusTkuCIYo6miwC7/nD3QyitDh4
+iwaphHkJ6kMtM9FuLwvtMZ2DyFvdNrrqQWtQGV4aPsG+xNJ13g7w89FDItz57N7Y
+xwdnTLiglCGUbLS+a0AxxNYqnOlUnY8k86KTRbY9Gn1nVkr6PPJIcLsfGh0/kVML
+Z9YNgmgHiQIiBBABAgAMBQJEBQ2ZBYMGU8dPAAoJEG427xrMjaswKkMP+gN7Njms
+8ThD6iNUAlBOOUeb4E4O0sv1YdDFi/0mAvnzjOBkywyPLMSWiuUozldhkGgw0yET
+FLJ2LFMKjMsnJ8jaz0v9FGUyYkTwYQ5zEE8DWohHvpzEUaYN7DKEQJpqjRr/xV8Z
+OhV+ozLWHQGX1neWzs9JAI96e6aaQLcn2IrUoT+094SJ7aDv81TLdQD/7IrZrUOL
+GkzyuPq/7VLY3zpzsQl8Wg2pwA8rxpQSnF1faFEWrMhsWV0D+mdTt9IZqyksR/kq
+rgkKfcFwO8l+KnZrb5MW0Yx2xoxEJIxL9D5U1VTLyIGb+kLUxOSZ2l0uaBLBpvfV
+N8Lv8uKMYNs3pM/8/i8lR2QzaWp+XhnnO65dHi9V4QSb8A03NHJCD0vvQaTHbon1
++dnTwYywZN0L8xIveBlW1SjcJrSkEUY679wKeSUDYGjEjUnijpT8nHC2nmDtDwSx
+aBDvZDyeeCwCR5VixMC3OouwSpsQDxnMeVb7fqka5WLehhth2aWCT9gTK9sVeC8k
+6qMOm/GjNMRDISA7J2tJXDLRLe7+Ga7Nv/oVFOb7/K+LS/qlu+gDIu3lmCc+zWnZ
+pDEJ+jzrQB5+1VOyFK46MCHP8dUZP9E7xlJDfsZo7j/vLpnDYsHl62MgLe6t+kRD
+kI30E4O5bgzUvEKb+N2rEaP/9DpYPh29nKl2iQIiBBABAgAMBQJEBREiBYMGU8PG
+AAoJEB0ajtzhQKBUMKsQAIccrd9HIYJqH5+DeS0stdWOEcZ7Vj4yIKM4nfME5li0
+/VT97HskqBBKU9OofCitdQbrSN6+GCkqW9RQLZAwk04fsZMOhxBq1xa6M3Mf0fB/
+aeq4XoOQ/o2DseOvpYwuPnwtIEKy+btWqbhNWMW1//JpIPBjkhN5fOYKNESnKs+a
+F5OwNvXOx/b5IKVfXzq01T/Db11Tbkeek+GIk5n5SUdBX/BqPJJ8xHMTTbuBugnD
+DaefHa57MsWq+EnKDv/WDwmMdG3zVPV/h7vkyfztw6be52LCb5MbvZUKtqc4m+LE
+8fdDzo2JZd55nNqZA5zkou5gvjYqkEkchY7IrOqNF/Tw9J6qH+2dUITbhKGDA+lY
+LTFermjVLOTkXomjdCibdyJn8J8fRghj6nVoiUBPu2n3N/ks5GCaQ2QlKAS8JIwq
+xTGW89OwzviJWi/D6KPlkq7ZqIQIbHu3tAhLsujSoyW4OsNyiXG4+Prs92wpXupX
+I3gDCZd9Ip/aPtcKTdXPFdGoEg7TwSvQVCxZo8ZxqyHzoFoC+nQcGFJt1uP22VVU
+Uz4JeEB67St+2+Ve334V4y9HJ0R+wdHxUAQdSpwARgm6GaygZeqOH3EJ1VO3iRNi
+/84zbWfWm4HW5KB6sHfMHL5iS6y7fnXNKGYmvmh1UlHORhL8SwbI+iacZT/i1KR7
+iEYEEBECAAYFAkRIoSkACgkQBYtazUQcX4FaAACgna/Uo5shsZrb/Wvb6GTFtgG1
+ahkAoI9GhTHnw87+wDc6DLMi1XqtKKqpiEYEEBECAAYFAkRIyf0ACgkQpy/2bEK9
+ZF20YQCfZwjbh+78sBcUx7Cmgubeh11vfUsAnioDXgcu1a3SAJRyN8bNBwA8b1+8
+iEYEEBECAAYFAkRbCWUACgkQf94+j/M+P8ZIRgCdFnRdJiYV36ltrJKCDPw7fSBf
+w9oAoI/t+yOUaIto0sIIz+SRLz9JVRsgiEYEEBECAAYFAkRgh8oACgkQ/QEEsOIz
+yJhleACgwjG6lnyEPFvFMSao2MMrWOwlRXEAoJoD++s3cUp37TS6nFSHMUNKPIfP
+iEYEExECAAYFAkRP7XUACgkQP9IdKpo6VVjzxgCglZUus9zNtYV/oy7VassWKTdr
+VisAoLjGY1PPmmd6tD9SeCEVPdO8tUA5iEwEEBECAAwFAkRd1IoFgwX7AF4ACgkQ
+W6iT5Ow+mN9gGACghe7DhSkAu9q7YYCKBkn9Qf72/mMAn0bmcEDPL9HJbJCsRKD0
+fJICnxUQiEwEEBECAAwFAkRfF04FgwX5vZoACgkQvBAJ2g6XJT+KOACfZ9+/pP1U
+3DqeSnYxSHhd7ok+XW8AoLBB+W/tda7q3WS8D4s7aAFg8Vi9iEwEEhECAAwFAkRd
+tkIFgwX7HqYACgkQMjUtRWf3gmRNRACggx7OyFYyH0UrjJVAf6KU8hCy2vcAn1Cr
+uSzN1QWb/QUfJd+nwB5kBO/UiNwEEAECAAYFAkRQtqIACgkQ0dlSBAnpodWC7gYA
+lfbh6eetnO5Ow0owZlUWgKtwID980bBjWlRr96iRMB2f18tNNIuVwhLUIIF7myal
+sDp3rLcCrtBmdZnAxvmJiGVvMkjO9Bu1mQc2ZvMs5TvPk1wDGzfmkpSQN6mggwYu
+gAbtyiUUJ4JCANn8CwuPEtenrjpkT96T9CTepC0GV0bLfv0YIIpsqZ/8nfIwXDAu
+A/LJawvXm1RXK48VTBSpuBmm6QXC4LQyvWgp9+QIQcpoGuzeTno0W5ieKC3jRLVZ
+iQEcBBABAgAGBQJEW3BXAAoJEGdNh9WRGQ75MVwH/30INi9nn1TOW+viXt6yMZvu
+BWYLsd9DEstr7lk2/Z+WSrtL8EBGk8Ql9g15eik/5dr+RGhYIAnkqcZILiU+hOny
+q8juHclic9LShXmp9nQgl6TQrEXqJl0ZuxiStwhmGNysYinR/VKV+sHsWFQGiA70
+vB3fnW5rLDjyXhkFDpb/FAxFdn/Q7tjiEuJeu9THFnCzTvefDPSMu4mH3JVp8v2D
+B9SUMigJG87ptBLWJxM7C851a613qzfOCwqbizSkBfCY+YKoUQxZXYgSnDd7o1Sr
+WjAURfo94wEY6w3CQgValsuPfAxgRSMC70zt7+swzOqv93SGp4nzeD38nL6IItOI
+nAQTAQIABgUCRJWOyAAKCRDcBtzPeST6c46+A/9opADZ3jKtRoxJuzL09JXnYlGJ
+E5FpFSCs/m87asigQtqZU2S0DqF/bZ0UqR+1rwkv3IVykg99S4FjaYxc708xglqs
+chcX3386twiy5KB1SDXmTZ7d/tklJn2eJynyBCLnh0/w08ijf8bmAqwwZc4m9TZ7
+GivP5GMWIvDcF8D51YhGBBARAgAGBQJEvTrNAAoJEDjp85Y24BGvVTAAnRiSdKbe
+Qxk69mnsl8vmv4cOj2U1AKC0R1kTnI4VGf0NFjbnfqSaMPfT84hGBBARAgAGBQJE
+wntwAAoJEEIIBcaJB0+tRGwAnilDar71HtNqIUXMyidO/V2bs7P/AJ0Tm2tuic5W
+bbRObvyH8CzCcLViN4hGBBARAgAGBQJEjURnAAoJEKevmBqDrDNKAvsAoJNKLU2c
+wX995QRM5K6tOw0V0gCvAKCAMvex50/FNQtWCjM6FYQhV9eTWIhGBBARAgAGBQJF
+V6cVAAoJEPS0sMx5fr+rjnwAnRoZriBEXLKu+0e+DfD/vPVKTuCpAJ9W/dJVFesd
+Ydvf2R8sVucmAKNjwYiBBBMRAgBBBQJFW1kyOhpodHRwOi8vd3d3LmZhYnJpemlv
+dGFyaXp6by5vcmcvZG9jdW1lbnRpL2dwZy1zaWduLXBvbGljeS8ACgkQMjV6RfHo
+5uSTZgCg3lHgDeEh4qwys9thqLwnNCz4nmoAoL8J/waoD8wxdGTefn9Kv22rU6ZM
+iEYEEBECAAYFAkXse7AACgkQz+hIv/xnhaJIVACgjhIIFFyQ0uDhTOa8ImzupVd9
+9YYAn2uTkBnk9iSJm71qfs4Iu1LOvvKXiEYEEBECAAYFAkXt5D0ACgkQd75ZE3dJ
+2dmEVwCeJgdRu5Ni/xStvaoQcxrOCx/knbEAoJdyrhE92y/5vlouhwK33NlOm1IS
+iEYEEBECAAYFAkXDwT0ACgkQjqqHRDkpnTEhgACfQWRjxiNPo6YmjLbHOUgjF+RO
+8nwAnihqF6P3Gdi7daIVTVSRa2Ia4ihriEYEEBECAAYFAkXDwUgACgkQ+kRiIcQk
+Je2mfACg6p9lx3RNENpNaMhOaBRyAmXf0BsAn36apAhkjBrVZAaCrfHElgl1SsGE
+iEYEEBECAAYFAkXDwVEACgkQ1AYyHAdPXoTxxwCg0GzM7dJmuddR46W99BuAPVLX
+t9sAoK7dduLTQOdPmba5tCPGUQ2g6eaIiEYEEBECAAYFAkXDwVgACgkQLQlxeEoI
+qt8ukQCfbKG3JLBwrHY/f7qc477HPJQXLdQAn3yHpYokpCsXxsszP//H4o2hLlq9
+iEYEEBECAAYFAkXq9sYACgkQTjhS9MN8HQmnbACfdV4/4tmiFOg14OzZOHqWo2+Q
+jDAAoIs6qLFQtxyPhtMhzOaf27lOpHB2iEYEExECAAYFAkVYPE0ACgkQVPRhauu8
+LyYHUwCgnjbzsFKjk8GdtCPLxLnmyO0AAz8An2bszA71hnvtLgzQrIVf8mbc3pLZ
+iEYEEBECAAYFAkXt2wcACgkQ0ZUMdhYT6NWcOQCeLtaRo4tzAYQo3DuXU2vpcflB
+b3YAniNnNGWqXSahYoquHUQ/IUD8iCN5iEYEEBECAAYFAkXt+BUACgkQ3pioii3b
+AKwxxgCfZbOiEAKcfo6Dk9wXXyVPMGLXE6UAn0FBnlwRjzVsG8QR4oTUjWS5L9E/
+iGMEExECABsDCwoDAxUDAgMWAgECF4AFAka1xZEFCRcuKX8AEgdlR1BHAAEBCRBd
+4kmWWwNYokHUAKCKSLq+i1yHrG8ZXqJRk+d4SyanGwCeKFwqqRr3tbae+m4iK+Ec
+yY+BR2a0HVdlcm5lciBLb2NoIDx3ZXJuZXJAZnNmZS5vcmc+iGMEExECACMCGwMF
+CRNri/8CHgECF4AFAkJZQHoFCwcKAwIDFQIDAxYCAQAKCRBd4kmWWwNYovxpAJ0f
+tTtETxhK8aKfIok/+43wNbQASwCfSFCPuVKTNHpv4JJ79feDCtfxxLGITAQSEQIA
+DAUCQvmyDAWDB18i3AAKCRDiEt3umyBltyi2AJ9vQod9BNEKmH7IsQGKPDSmnzuI
+RQCdGaBGlA0R0Bjjldv0vEBtcbVB/BmInAQQAQIABgUCQyCv0AAKCRC0a5I7bYq+
+cY0kA/0U+JNuaHih2INmjGtIyNtn0uLR5OVxpFDy9fvh1A/PQIcnv6Cznf0+/1EO
+pC8dO6HWQxs6d1n1ZK1yDPc3boyLjxLLxuWd6B4xM7HsjqvBvW2fvVFcpPioawST
+63swdZIWdvz5c7a3SOSipeuepxyutXLiLfcCB5HviXbCkYf4+ohGBBARAgAGBQJD
+ILAFAAoJEMWvd0pYUQtaHroAoPk4cr3Cd0eUk1ceNnoBMeP+281CAKDjuLEpyr2S
+4txh6EvT+jz0PfWJVohMBBARAgAMBQJDIUxxBYMHN4h3AAoJEBSp1Git8Ip/wbMA
+oJemraY1wFzUJAWsY3D4bFxLppX5AKCA+jLM2kD/5oRZbIqSzGtkok9ZY4hMBBMR
+AgAMBQJDIZVDBYMHNz+lAAoJEL/r08ZBzwMi8KkAoJ0FJADGDhigHpm7dLEoRUa+
+ZpxFAKDFQvGvWe8G3qCzb/LIdyzfIJ0hzohMBBARAgAMBQJDI3VNBYMHNV+bAAoJ
+EJugk2taNf1CygoAoNAK8rnU1FUY7ZJzCgw+ZjtzL3jEAKDIwfErE8XTv5PP0sJM
+CUJhxf7r4ohMBBARAgAMBQJDI3gFBYMHNVzjAAoJEDFIu+8e7yb0pT4An37QJM1Z
+P++YHev7oYJknn57POoKAJ9lOdPWCuFuiCdPM9L4CvAUAeGd1IhMBBARAgAMBQJD
+KKE0BYMHMDO0AAoJEEk++45dZPhw6PYAoJf6zUL8WFtgMLXr7gYeknvv8MJ7AKCL
+XLi8Tu2SzTIc/PeFUqoLeSUoH4hMBBARAgAMBQJDIJ3pBYMHODb/AAoJEJT+3vmt
+NrUVuFoAn3oCb9Z5+SeuRbBf3F4jy7oXa4ZEAJwIVmjnLrfaQvYWsNmTOK9Ao/Qy
+TohMBBARAgAMBQJDIKhFBYMHOCyjAAoJEGxk7XjeNO+hJh4AnREqzDeFWvNqKJgz
+LY5MMDPmqE8rAJ4khVpKsCn4zTTL88oIg4d7Q52gSohMBBMRAgAMBQJDIKH3BYMH
+ODLxAAoJEDA62eiAWc/cOX0An1VJdoTDlAW2y4cxBiiqPbvwYzhPAJ9SFl+1uI/T
+6PadAFhV1le5/NSTB4hMBBMRAgAMBQJDJCP5BYMHNLDvAAoJEHw0FqlEG6/3e/YA
+n0xTVNplMGLfwL21U4uztcQo0C+9AJ9XF8ORPSTU3jzv6j7q+kBRwZpz2oiiBBAB
+AgAMBQJDJcl+BYMHMwtqAAoJEA348Hf+CljYLmQD/2aFAfI9tLHiBvHkYX/GOJ5V
+9bOhh5/9y1ldbd7mJZhYm4gkTxd/4TeO+iOFj4OjjcvGYfQo6O/B7n3M/VVNcpdJ
+Cd+GjUvqVucwtEJu/Zlejx6T2zAjxpZxhVAk9U1iQ+tVC7ld+PEnLoHDsEI1cjuO
+SDVEh4S836xlym5CtQGBiEYEEBECAAYFAkNfjG8ACgkQ5XoO79RjNtr/CQCgvQam
+DsV4gii8XMn7N5nViO1J2mUAoO4AtHtN2l2Imsrv+y4W8wtpFyKEiEwEExECAAwF
+AkPTbagFgwaFZ0AACgkQ5klUNHCsE9WrtwCfSFV3kQnpq8TEP5Sd15JR6zHawLkA
+nj7OzbtoOwobgeWTB6NrVOh45wvHiEYEEBECAAYFAkQFyuAACgkQ9Jgd/vNmD1NS
+6wCgjFSuWKUMECj8lq751xuRhdES0BIAnj4nvo+sxUykCpiNdGmD/kv8BR76iEYE
+EBECAAYFAkQGZN0ACgkQIIdHgCGsbMShDwCeLNGiHENHdyi4L+ZDohBWpUvzlLYA
+n3Uz1vuofNQ3JakVjyVqOFESowMYiEYEEBECAAYFAkQH63kACgkQ3HeLB051S+3p
+LACguWszxmfMO1IxV+HtYaxfhhogv1YAoIUPRfY0bNGfJbcpeQfr+CcDT3hziJwE
+EwECAAYFAkQNdgcACgkQpOAUxG0aO7HMBAQAlr0rX9d3DVtkoWDnJqjtxd2AEGIv
+epBd3bH4vxgaxlKHO8qF9QRJk3TMpp+AketiERWexrwsu3HRsINee/9gb6lkVkxS
+uTcSfn/NXT1fFLxyCEzxyhiC9nwKObj3JPOMRnJiPsET30aZ+K9/yfiuUfEUrDly
+gZy6OfFa/jY04eKJARwEEAECAAYFAkQG/cgACgkQ+fnDJwmNErObegf+JtFCMTbg
+ewZ4R+qmz7WWB1i4zOPCRe6O99EexdcXSOAHZ4r3oLiXMZEcjCQKZ5Wpz1TDqsob
+VkyW65Ws5UwbiTs1WO/WI10dHdp9Vrv+ALhsx32amwMV37qrA9RCoBIU0QQFVTMk
+Y1W4iLT0Myd/0C0VCHfMrV1S43ZPDQaC7V3yh1KCpZzjhZGTIKJSvckWjyTsUW2F
+vCusCakX2P/GoSs0oF5s0mSl3BvlbkxlI2ZzE1bNfVIpqSDR8jT1r87cwTJkEH57
+e3PrO3DEbiQTHjbyuwD9kNTTnV2oGvVWPF/FvsFBk+fln1yECv6SIpALU1/zVzG/
+wZyP4MwTIOb4NIhGBBARAgAGBQJEKFdaAAoJEBH0xB6z+64zBhUAoJ6kWu5gDqHB
+Z8Wan0YynEZi6tKyAJsHBacxx6UNYPENlVXlb0xl+kssa4h6BBMRAgA6BQJEXmVA
+MxpodHRwOi8vd3d3LnNjLWRlbHBoaW4tZXNjaHdlaWxlci5kZS9wZ3AvaW5kZXgu
+aHRtbAAKCRCUj9ag4Q9QLulZAJ992LLlu7wU5sJddqnffDzPoKh69QCgoX8QzBEi
+SZjLKSrALwLCTYI/akSIegQTEQIAOgUCRF5lZDMaaHR0cDovL3d3dy5zYy1kZWxw
+aGluLWVzY2h3ZWlsZXIuZGUvcGdwL2luZGV4Lmh0bWwACgkQtHXiB7q1gikU0QCf
+ZM81Hr4p7ZPwxMZW+TVcRdaSIjoAoMq7mN4xSLtRsB/lGlFLhc1O4soLiEYEExEC
+AAYFAkRc/SoACgkQiqNir+lyMs3HBACfb7fa3KzNGB9Oma3KDWeC42feCzAAoIfF
+w3OXxtigxx8+AowiXGsZmqI+iEYEExECAAYFAkRc/TEACgkQp99YcnDUTCOrZQCg
+gV7PoPMl1d+gvPTiuUAZm8UG/dYAn3PlOcTP4vxayC7OGSkoDA8Dut+KiEYEExEC
+AAYFAkNEG6QACgkQ6tS1kPaJm8DI0ACfRfci8SHm+sQpjzKqr0zxfJT5yF0AnA37
+mn7nQyY28SJ2sddCo/f1JhvAiEYEEBECAAYFAkQFglgACgkQb11ZaBzVLeiG9wCf
+aX6+h8bpMOraCn/sH1yQb6aI34EAoLzx4H6lGdyqnQTYiLXSrBTrto/niEYEEBEC
+AAYFAkQGCjQACgkQmsnSLGNcY0vZ4wCgvBjcB5ABcNYRMEFSWsClxhaRAqUAmwUv
+MA9NWdLk0pcUndbE3w70B5hUiEwEEhECAAwFAkQGKycFgwZSqcEACgkQ3+ZXkjKV
+xc2qMwCfdew+RX+7ultYmO0Y8gRoLJzjBfgAn1UkZILe3+NKZBJTd1ZowJQiljHI
+iEwEEhECAAwFAkQGK2cFgwZSqYEACgkQoOUVvzmICVQuFwCgqbjde48qPvUqLEip
+he/zFq6pqgAAn1dXi6z+1s+bHavwCQK/q+3K5gdHiJwEEwECAAYFAkQNdesACgkQ
+/dJ0ek5GOmrWRgQAoFF9IdTs5vX5OIDKIHW+d4aJfPg6w91SKkfpElDxNqZuk3rA
+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
+nj+zW9f9Z2M0K2r+gldEC2Ew2yTl
+=I1gH
+-----END PGP PUBLIC KEY BLOCK-----
https://src.fedoraproject.org/rpms/mingw-libgcrypt/c/f29153ff48812d4c246e...
1 year, 4 months