diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e054dd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/libguestfs.keyring +SOURCES/nbdkit-1.8.0.tar.gz diff --git a/.nbdkit.metadata b/.nbdkit.metadata new file mode 100644 index 0000000..48f7ac4 --- /dev/null +++ b/.nbdkit.metadata @@ -0,0 +1,2 @@ +1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring +32c12f1563d2d00b186a9e65e9012324a46d3c81 SOURCES/nbdkit-1.8.0.tar.gz diff --git a/SOURCES/0001-partitioning-Rename-crc32-to-efi_crc32-to-avoid-conf.patch b/SOURCES/0001-partitioning-Rename-crc32-to-efi_crc32-to-avoid-conf.patch new file mode 100644 index 0000000..0fcfa60 --- /dev/null +++ b/SOURCES/0001-partitioning-Rename-crc32-to-efi_crc32-to-avoid-conf.patch @@ -0,0 +1,461 @@ +From 8538ef6a2caabe2b261903859754af32e4239346 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 13 Nov 2018 10:54:06 +0000 +Subject: [PATCH] partitioning: Rename crc32 to efi_crc32 to avoid conflict + with zlib. + +zlib exports a symbol called crc32, which is also the name of our +EFI-specific CRC calculation function. As a result if we link nbdkit +or the plugin with zlib (even indirectly) then we may end up using the +zlib symbol, which causes a segmentation fault. Renaming our function +avoids this. I also renamed the source files to make the name less +generic, since this function really only works for EFI CRCs, not for +general CRCs. + +This only affects RHEL 7. I believe that's because Fedora uses a flag +such as --as-needed or similar. + +(cherry picked from commit fc789b9c3a9d0b6b4b0ae63a08ea34a70e0ea8db) +--- + plugins/partitioning/Makefile.am | 4 +- + plugins/partitioning/crc32.c | 140 ----------------------------------- + plugins/partitioning/crc32.h | 41 ---------- + plugins/partitioning/efi-crc32.c | 140 +++++++++++++++++++++++++++++++++++ + plugins/partitioning/efi-crc32.h | 41 ++++++++++ + plugins/partitioning/partition-gpt.c | 6 +- + 6 files changed, 186 insertions(+), 186 deletions(-) + delete mode 100644 plugins/partitioning/crc32.c + delete mode 100644 plugins/partitioning/crc32.h + create mode 100644 plugins/partitioning/efi-crc32.c + create mode 100644 plugins/partitioning/efi-crc32.h + +diff --git a/plugins/partitioning/Makefile.am b/plugins/partitioning/Makefile.am +index bc768be..8519bda 100644 +--- a/plugins/partitioning/Makefile.am ++++ b/plugins/partitioning/Makefile.am +@@ -37,8 +37,8 @@ EXTRA_DIST = nbdkit-partitioning-plugin.pod + plugin_LTLIBRARIES = nbdkit-partitioning-plugin.la + + nbdkit_partitioning_plugin_la_SOURCES = \ +- crc32.c \ +- crc32.h \ ++ efi-crc32.c \ ++ efi-crc32.h \ + partitioning.c \ + partition-gpt.c \ + partition-mbr.c \ +diff --git a/plugins/partitioning/crc32.c b/plugins/partitioning/crc32.c +deleted file mode 100644 +index e707a50..0000000 +--- a/plugins/partitioning/crc32.c ++++ /dev/null +@@ -1,140 +0,0 @@ +-/* This code was taken from parted and indirectly from other sources +- * as you can see from the messages below. The license is compatible +- * with the permissive license used in nbdkit. - RWMJ 2018-09-16 +- */ +- +-/* +- * Dec 5, 2000 Matt Domsch +- * - Copied crc32.c from the linux/drivers/net/cipe directory. +- * - Now pass seed as an arg +- * - changed unsigned long to uint32_t, added #include +- * - changed len to be an unsigned long +- * - changed crc32val to be a register +- * - License remains unchanged! It's still GPL-compatable! +- */ +- +- /* ============================================================= */ +- /* COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or */ +- /* code or tables extracted from it, as desired without restriction. */ +- /* */ +- /* First, the polynomial itself and its table of feedback terms. The */ +- /* polynomial is */ +- /* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */ +- /* */ +- /* Note that we take it "backwards" and put the highest-order term in */ +- /* the lowest-order bit. The X^32 term is "implied"; the LSB is the */ +- /* X^31 term, etc. The X^0 term (usually shown as "+1") results in */ +- /* the MSB being 1. */ +- /* */ +- /* Note that the usual hardware shift register implementation, which */ +- /* is what we're using (we're merely optimizing it by doing eight-bit */ +- /* chunks at a time) shifts bits into the lowest-order term. In our */ +- /* implementation, that means shifting towards the right. Why do we */ +- /* do it this way? Because the calculated CRC must be transmitted in */ +- /* order from highest-order term to lowest-order term. UARTs transmit */ +- /* characters in order from LSB to MSB. By storing the CRC this way, */ +- /* we hand it to the UART in the order low-byte to high-byte; the UART */ +- /* sends each low-bit to hight-bit; and the result is transmission bit */ +- /* by bit from highest- to lowest-order term without requiring any bit */ +- /* shuffling on our part. Reception works similarly. */ +- /* */ +- /* The feedback terms table consists of 256, 32-bit entries. Notes: */ +- /* */ +- /* The table can be generated at runtime if desired; code to do so */ +- /* is shown later. It might not be obvious, but the feedback */ +- /* terms simply represent the results of eight shift/xor opera- */ +- /* tions for all combinations of data and CRC register values. */ +- /* */ +- /* The values must be right-shifted by eight bits by the "updcrc" */ +- /* logic; the shift must be unsigned (bring in zeroes). On some */ +- /* hardware you could probably optimize the shift in assembler by */ +- /* using byte-swap instructions. */ +- /* polynomial $edb88320 */ +- /* */ +- /* -------------------------------------------------------------------- */ +- +-#include +- +-#include +-#include +- +-#include "crc32.h" +- +-static const uint32_t crc32_tab[] = { +- 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, +- 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, +- 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, +- 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, +- 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, +- 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, +- 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, +- 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, +- 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, +- 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, +- 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, +- 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, +- 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, +- 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, +- 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, +- 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, +- 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, +- 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, +- 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, +- 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, +- 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, +- 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, +- 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, +- 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, +- 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, +- 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, +- 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, +- 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, +- 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, +- 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, +- 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, +- 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, +- 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, +- 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, +- 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, +- 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, +- 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, +- 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, +- 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, +- 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, +- 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, +- 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, +- 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, +- 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, +- 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, +- 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, +- 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, +- 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, +- 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, +- 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, +- 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, +- 0x2d02ef8dL +- }; +- +-/* Return a 32-bit CRC of the contents of the buffer. */ +- +-static uint32_t +-efi_crc32 (const void *buf, size_t len, uint32_t seed) +-{ +- size_t i; +- uint32_t crc32val; +- const unsigned char *s = buf; +- +- crc32val = seed; +- for (i = 0; i < len; i++) { +- crc32val = +- crc32_tab[(crc32val ^ s[i]) & 0xff] ^ +- (crc32val >> 8); +- } +- return crc32val; +-} +- +-uint32_t +-crc32 (const void *buf, size_t len) +-{ +- return efi_crc32 (buf, len, ~0L) ^ ~0L; +-} +diff --git a/plugins/partitioning/crc32.h b/plugins/partitioning/crc32.h +deleted file mode 100644 +index 6bd5d2d..0000000 +--- a/plugins/partitioning/crc32.h ++++ /dev/null +@@ -1,41 +0,0 @@ +-/* nbdkit +- * Copyright (C) 2018 Red Hat Inc. +- * All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions are +- * met: +- * +- * * Redistributions of source code must retain the above copyright +- * notice, this list of conditions and the following disclaimer. +- * +- * * Redistributions in binary form must reproduce the above copyright +- * notice, this list of conditions and the following disclaimer in the +- * documentation and/or other materials provided with the distribution. +- * +- * * Neither the name of Red Hat nor the names of its contributors may be +- * used to endorse or promote products derived from this software without +- * specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND +- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR +- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +- * SUCH DAMAGE. +- */ +- +-#ifndef NBDKIT_CRC32_H +-#define NBDKIT_CRC32_H +- +-#include +- +-extern uint32_t crc32 (const void *buf, size_t len); +- +-#endif /* NBDKIT_CRC32_H */ +diff --git a/plugins/partitioning/efi-crc32.c b/plugins/partitioning/efi-crc32.c +new file mode 100644 +index 0000000..2b080d3 +--- /dev/null ++++ b/plugins/partitioning/efi-crc32.c +@@ -0,0 +1,140 @@ ++/* This code was taken from parted and indirectly from other sources ++ * as you can see from the messages below. The license is compatible ++ * with the permissive license used in nbdkit. - RWMJ 2018-09-16 ++ */ ++ ++/* ++ * Dec 5, 2000 Matt Domsch ++ * - Copied crc32.c from the linux/drivers/net/cipe directory. ++ * - Now pass seed as an arg ++ * - changed unsigned long to uint32_t, added #include ++ * - changed len to be an unsigned long ++ * - changed crc32val to be a register ++ * - License remains unchanged! It's still GPL-compatable! ++ */ ++ ++ /* ============================================================= */ ++ /* COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or */ ++ /* code or tables extracted from it, as desired without restriction. */ ++ /* */ ++ /* First, the polynomial itself and its table of feedback terms. The */ ++ /* polynomial is */ ++ /* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */ ++ /* */ ++ /* Note that we take it "backwards" and put the highest-order term in */ ++ /* the lowest-order bit. The X^32 term is "implied"; the LSB is the */ ++ /* X^31 term, etc. The X^0 term (usually shown as "+1") results in */ ++ /* the MSB being 1. */ ++ /* */ ++ /* Note that the usual hardware shift register implementation, which */ ++ /* is what we're using (we're merely optimizing it by doing eight-bit */ ++ /* chunks at a time) shifts bits into the lowest-order term. In our */ ++ /* implementation, that means shifting towards the right. Why do we */ ++ /* do it this way? Because the calculated CRC must be transmitted in */ ++ /* order from highest-order term to lowest-order term. UARTs transmit */ ++ /* characters in order from LSB to MSB. By storing the CRC this way, */ ++ /* we hand it to the UART in the order low-byte to high-byte; the UART */ ++ /* sends each low-bit to hight-bit; and the result is transmission bit */ ++ /* by bit from highest- to lowest-order term without requiring any bit */ ++ /* shuffling on our part. Reception works similarly. */ ++ /* */ ++ /* The feedback terms table consists of 256, 32-bit entries. Notes: */ ++ /* */ ++ /* The table can be generated at runtime if desired; code to do so */ ++ /* is shown later. It might not be obvious, but the feedback */ ++ /* terms simply represent the results of eight shift/xor opera- */ ++ /* tions for all combinations of data and CRC register values. */ ++ /* */ ++ /* The values must be right-shifted by eight bits by the "updcrc" */ ++ /* logic; the shift must be unsigned (bring in zeroes). On some */ ++ /* hardware you could probably optimize the shift in assembler by */ ++ /* using byte-swap instructions. */ ++ /* polynomial $edb88320 */ ++ /* */ ++ /* -------------------------------------------------------------------- */ ++ ++#include ++ ++#include ++#include ++ ++#include "efi-crc32.h" ++ ++static const uint32_t crc32_tab[] = { ++ 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, ++ 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, ++ 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, ++ 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, ++ 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, ++ 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, ++ 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, ++ 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, ++ 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, ++ 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, ++ 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, ++ 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, ++ 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, ++ 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, ++ 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, ++ 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, ++ 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, ++ 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, ++ 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, ++ 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, ++ 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, ++ 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, ++ 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, ++ 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, ++ 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, ++ 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, ++ 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, ++ 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, ++ 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, ++ 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, ++ 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, ++ 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, ++ 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, ++ 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, ++ 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, ++ 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, ++ 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, ++ 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, ++ 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, ++ 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, ++ 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, ++ 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, ++ 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, ++ 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, ++ 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, ++ 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, ++ 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, ++ 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, ++ 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, ++ 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, ++ 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, ++ 0x2d02ef8dL ++ }; ++ ++/* Return a 32-bit CRC of the contents of the buffer. */ ++ ++static uint32_t ++_efi_crc32 (const void *buf, size_t len, uint32_t seed) ++{ ++ size_t i; ++ uint32_t crc32val; ++ const unsigned char *s = buf; ++ ++ crc32val = seed; ++ for (i = 0; i < len; i++) { ++ crc32val = ++ crc32_tab[(crc32val ^ s[i]) & 0xff] ^ ++ (crc32val >> 8); ++ } ++ return crc32val; ++} ++ ++uint32_t ++efi_crc32 (const void *buf, size_t len) ++{ ++ return _efi_crc32 (buf, len, ~0L) ^ ~0L; ++} +diff --git a/plugins/partitioning/efi-crc32.h b/plugins/partitioning/efi-crc32.h +new file mode 100644 +index 0000000..76f5a6a +--- /dev/null ++++ b/plugins/partitioning/efi-crc32.h +@@ -0,0 +1,41 @@ ++/* nbdkit ++ * Copyright (C) 2018 Red Hat Inc. ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are ++ * met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * * Neither the name of Red Hat nor the names of its contributors may be ++ * used to endorse or promote products derived from this software without ++ * specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ++ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A ++ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR ++ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#ifndef NBDKIT_EFI_CRC32_H ++#define NBDKIT_EFI_CRC32_H ++ ++#include ++ ++extern uint32_t efi_crc32 (const void *buf, size_t len); ++ ++#endif /* NBDKIT_EFI_CRC32_H */ +diff --git a/plugins/partitioning/partition-gpt.c b/plugins/partitioning/partition-gpt.c +index 14a58ad..5fb7602 100644 +--- a/plugins/partitioning/partition-gpt.c ++++ b/plugins/partitioning/partition-gpt.c +@@ -44,7 +44,7 @@ + + #include "byte-swapping.h" + +-#include "crc32.h" ++#include "efi-crc32.h" + #include "regions.h" + #include "virtual-disk.h" + +@@ -121,10 +121,10 @@ create_gpt_partition_header (const void *pt, int is_primary, + header->nr_partition_entries = htole32 (GPT_PTA_SIZE); + header->size_partition_entry = htole32 (GPT_PT_ENTRY_SIZE); + header->crc_partitions = +- htole32 (crc32 (pt, GPT_PT_ENTRY_SIZE * GPT_PTA_SIZE)); ++ htole32 (efi_crc32 (pt, GPT_PT_ENTRY_SIZE * GPT_PTA_SIZE)); + + /* Must be computed last. */ +- header->crc = htole32 (crc32 (header, sizeof *header)); ++ header->crc = htole32 (efi_crc32 (header, sizeof *header)); + } + + static void +-- +1.8.3.1 + diff --git a/SOURCES/nbdkit-1.8.0.tar.gz.sig b/SOURCES/nbdkit-1.8.0.tar.gz.sig new file mode 100644 index 0000000..6389648 --- /dev/null +++ b/SOURCES/nbdkit-1.8.0.tar.gz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIcBAABAgAGBQJb6eXmAAoJEJFzj3Pht2ig3noP/j1WW7G+X3lvqMMm9tx4RnY3 +7y9U9Ze2LAbM+SLtu7gh47N4zbYMtCa5Ws9gLpJb51ViC4olBGzZfGwGqZO0EoGz +seOWEK/XakdRTfiE8O9Cn0bjPlMTA8OzGaAPMLPKUMOSqBcT6oomJLggKHU0nEpm +CchcnAnsxEVn6porKJPyHAfIkpGCRzccTCpCSTkTg/jzPv9O1bMue4kwhT4nV3ui +YPPfEmfkNu9GdVB4P3MZzYFROoxarONUp0MifoFNEaBvztNjTRLCiXrqPSNRkhzN +9041NVwkXZgX1r9jEJxm6NEaFj9rrJoUcvGefoNIc376E0XTaO+3MUr1HqtFKCki +954k4FtV6Yb6gqzSOAfCevikv/HapKYLhC7sY4MyimnHSwk7ZZfN52qgm7oYdIbM +GuRYDtNQzulESWnh99zzfMFLDo9SPPAjqmNguJ/a924FJl0k1U+vxNcsFhUyeLF2 +94SSIB9eLGzphSZWqCRfipV89C8qJka6ExCmslBUsPk7HxsObzDTo3BIdxJ52LUN +1fiwB75C64k3NEXuAc9vX0xled9exEliTcyDOWMhxam8HT/hoVFlZ5aFmk3Xtgiv +o0gKb51vpJnJym8YorebFXKqzWXFZze3nnadGM8QErfwlFvSCVmebzu8qesPN6Tt +/22YLADVHl3N6yVZzvkQ +=d9cL +-----END PGP SIGNATURE----- diff --git a/SPECS/nbdkit.spec b/SPECS/nbdkit.spec new file mode 100644 index 0000000..72c29a5 --- /dev/null +++ b/SPECS/nbdkit.spec @@ -0,0 +1,736 @@ +%global _hardened_build 1 + +%ifarch aarch64 %{arm} %{ix86} x86_64 ppc %{power64} +%global have_libguestfs 1 +%endif + +# Architectures where the complete test suite must pass. +# +# On all other architectures, a simpler test suite must pass. This +# omits any tests that run full qemu, since running qemu under TCG is +# often broken on non-x86_64 arches. +%global complete_test_arches x86_64 + +# Currently everything has Python 2. RHEL 7 doesn't have Python 3. +%if 0%{?rhel} != 7 +%global have_python3 1 +%endif + +# If we should verify tarball signature with GPGv2. +%global verify_tarball_signature 1 + +# If there are patches which touch autotools files, set this to 1. +%global patches_touch_autotools 1 + +# The source directory. +%global source_directory 1.8-stable + +Name: nbdkit +Version: 1.8.0 +Release: 2%{?dist} +Summary: NBD server + +License: BSD +URL: https://github.com/libguestfs/nbdkit + +Source0: http://libguestfs.org/download/nbdkit/%{source_directory}/%{name}-%{version}.tar.gz +%if 0%{verify_tarball_signature} +Source1: http://libguestfs.org/download/nbdkit/%{source_directory}/%{name}-%{version}.tar.gz.sig +# Keyring used to verify tarball signature. +Source2: libguestfs.keyring +%endif + +# Patches come from: +# https://github.com/libguestfs/nbdkit/tree/rhel-7.7 + +# Patches. +Patch0001: 0001-partitioning-Rename-crc32-to-efi_crc32-to-avoid-conf.patch + +%if 0%{patches_touch_autotools} +BuildRequires: autoconf, automake, libtool +%endif + +%if 0%{?rhel} == 7 +# On RHEL 7, nothing in the virt stack is shipped on aarch64 and +# libguestfs was not shipped on POWER (fixed in 7.5). We could in +# theory make all of this work by having lots more conditionals, but +# for now limit this package to x86_64 on RHEL. +ExclusiveArch: x86_64 +%endif + +%ifnarch %{complete_test_arches} +BuildRequires: autoconf, automake, libtool +%endif +BuildRequires: /usr/bin/pod2man +BuildRequires: gnutls-devel +BuildRequires: libselinux-devel +%if 0%{?have_libguestfs} +BuildRequires: libguestfs-devel +%endif +BuildRequires: libvirt-devel +BuildRequires: xz-devel +BuildRequires: zlib-devel +BuildRequires: libcurl-devel +BuildRequires: perl-devel +BuildRequires: perl(ExtUtils::Embed) +BuildRequires: python2-devel +%if 0%{?have_python3} +BuildRequires: python3-devel +%endif +%ifarch %{ocaml_native_compiler} +# Requires OCaml 4.02.2 which contains fix for +# http://caml.inria.fr/mantis/view.php?id=6693 +BuildRequires: ocaml >= 4.02.2 +%endif +BuildRequires: ruby-devel +%if 0%{verify_tarball_signature} +BuildRequires: gnupg2 +%endif + +# Only for running the test suite: +BuildRequires: /usr/bin/certtool +BuildRequires: /usr/bin/qemu-img +BuildRequires: /usr/bin/socat +BuildRequires: /usr/sbin/ss + +%description +NBD is a protocol for accessing block devices (hard disks and +disk-like things) over the network. + +'nbdkit' is a toolkit for creating NBD servers. + +The key features are: + +* Multithreaded NBD server written in C with good performance. + +* Well-documented, simple plugin API with a stable ABI guarantee. + Allows you to export "unconventional" block devices easily. + +* Liberal license (BSD) allows nbdkit to be linked to proprietary + libraries or included in proprietary code. + +You probably want to install one of more plugins (%{name}-plugin-*). + +To develop plugins, install the %{name}-devel package and start by +reading the nbdkit(1) and nbdkit-plugin(3) manual pages. + + +%package basic-plugins +Summary: Basic plugins for %{name} +License: BSD + +Requires: %{name}%{?_isa} = %{version}-%{release} + +# For upgrade path, remove these in Fedora 30. +Obsoletes: %{name}-plugin-file < 1.1.19-1 +Obsoletes: %{name}-plugin-nbd < 1.1.19-1 +Obsoletes: %{name}-plugin-streaming < 1.1.19-1 + + +%description basic-plugins +This package contains some basic plugins for %{name} which have only +trivial dependencies. + +nbdkit-data-plugin Serve small amounts of data from the command line. + +nbdkit-file-plugin The normal file plugin for serving files. + +nbdkit-memory-plugin A virtual memory plugin. + +nbdkit-nbd-plugin An NBD forwarding plugin. + +nbdkit-null-plugin A null (bitbucket) plugin. + +nbdkit-pattern-plugin Fixed test pattern. + +nbdkit-partitioning-plugin Create virtual disks from partitions. + +nbdkit-random-plugin Random content plugin for testing. + +nbdkit-split-plugin Concatenate one or more files. + +nbdkit-streaming-plugin A streaming file serving plugin. + +nbdkit-zero-plugin Zero-length plugin for testing. + + +%package example-plugins +Summary: Example plugins for %{name} +License: BSD + +Requires: %{name}%{?_isa} = %{version}-%{release} + +# For upgrade path, remove this in Fedora 30. +Obsoletes: %{name}-plugin-examples < 1.1.19-1 + + +%description example-plugins +This package contains example plugins for %{name}. + + +# The plugins below have non-trivial dependencies are so are +# packaged separately. + +%package plugin-python-common +Summary: Python 2 and 3 plugin common files for %{name} +License: BSD + +Requires: %{name}%{?_isa} = %{version}-%{release} + + +%description plugin-python-common +This package contains common files shared between Python 2 +and Python 3 %{name} plugins. + +You should not install this package directly. Instead install +either %{name}-plugin-python2 or %{name}-plugin-python3. + + +%package plugin-python2 +Summary: Python 2 plugin for %{name} +License: BSD + +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-plugin-python-common = %{version}-%{release} + + +%description plugin-python2 +This package lets you write Python 2 plugins for %{name}. + + +%ifarch %{ix86} x86_64 +%package plugin-vddk +Summary: VMware VDDK plugin for %{name} +License: BSD + +Requires: %{name}%{?_isa} = %{version}-%{release} + + +%description plugin-vddk +This package is a plugin for %{name} which connects to +VMware VDDK for accessing VMware disks and servers. +%endif + + +%package devel +Summary: Development files and documentation for %{name} +License: BSD + +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: pkgconfig + + +%description devel +This package contains development files and documentation +for %{name}. Install this package if you want to develop +plugins for %{name}. + + +%prep +%if 0%{verify_tarball_signature} +tmphome="$(mktemp -d)" +gpgv2 --homedir "$tmphome" --keyring %{SOURCE2} %{SOURCE1} %{SOURCE0} +%endif +%autosetup -p1 +%if 0%{patches_touch_autotools} +autoreconf -i +%endif + +%ifnarch %{complete_test_arches} +# Simplify the test suite so it doesn't require qemu. +sed -i -e '/^if HAVE_LIBGUESTFS/,/^endif HAVE_LIBGUESTFS/d' tests/Makefile.am +sed -i -e '/^if HAVE_GUESTFISH/,/^endif HAVE_GUESTFISH/d' tests/Makefile.am +automake +%endif + +# Ancient qemu-io in RHEL 7 doesn't support -f FORMAT option. However +# we can just omit it and the tests still work fine. +for f in tests/*.sh; do + sed -i -e 's/qemu-io -f raw/qemu-io/g' \ + -e 's/qemu-io -r -f raw/qemu-io -r/g' $f +done + +# Disable numerous tests which cannot work with ancient gnutls or +# qemu-img on RHEL 7. +for f in tests/test-cache.sh \ + tests/test-cow.sh \ + tests/test-data-7E.sh \ + tests/test-data-file.sh \ + tests/test-data-raw.sh \ + tests/test-floppy.sh \ + tests/test-fua.sh \ + tests/test-iso.sh \ + tests/test-log.sh \ + tests/test-memory-largest-for-qemu.sh \ + tests/test-offset2.sh \ + tests/test-parallel-file.sh \ + tests/test-parallel-nbd.sh \ + tests/test-partitioning2.sh \ + tests/test-partitioning3.sh \ + tests/test-pattern.sh \ + tests/test-pattern-largest-for-qemu.sh \ + tests/test-truncate1.sh \ + tests/test-truncate2.sh ; do + rm $f + touch $f + chmod +x $f +done + +# Patch doesn't set permissions correctly. XXX +chmod +x tests/test-vddk.sh + + +%build +# Force immediate binding for hardened build for plugins. +# https://bugzilla.redhat.com/show_bug.cgi?id=977446#c13 +export LDFLAGS="$LDFLAGS -Wl,-z,now" + +# Build for Python 3 in a separate subdirectory. Upstream does not +# support srcdir!=builddir so copy the whole source. +copy="$(mktemp -d)" +cp -a . "$copy" +mv "$copy" python3 + +%configure --disable-static --with-tls-priority=NORMAL \ + --disable-lua \ + --disable-perl \ + --disable-ocaml \ + --disable-ruby \ + --without-curl \ + --without-ext2 \ + --without-libvirt \ + --without-zlib \ + --without-liblzma \ + --without-libguestfs +make %{?_smp_mflags} + +%if 0%{?have_python3} +pushd python3 +export PYTHON=%{_bindir}/python3 +%configure --disable-static --disable-lua --disable-perl --disable-ocaml --disable-ruby +# Verify that it picked the correct version of Python +# to avoid RHBZ#1404631 happening again silently. +grep '^PYTHON_VERSION = 3' Makefile +make %{?_smp_mflags} +unset PYTHON +popd +%endif + + +%install +%make_install + +pushd $RPM_BUILD_ROOT%{_libdir}/nbdkit/plugins/ +mv nbdkit-python-plugin.so nbdkit-python2-plugin.so +# For backwards compatibility, "the" python plugin is Python 2. +# Probably we will change this in future if Fedora switches +# exclusively to Python 3. +ln -s nbdkit-python2-plugin.so nbdkit-python-plugin.so +popd + +# Disable built-in filters but leave the empty directory. +rm -r $RPM_BUILD_ROOT%{_libdir}/%{name}/filters/nbdkit-*-filter.so +rm -r $RPM_BUILD_ROOT%{_mandir}/man1/nbdkit-*-filter.1* + +# Delete libtool crap. +find $RPM_BUILD_ROOT -name '*.la' -delete + +# Delete the VDDK plugin on !x86 architectures since it is not +# applicable there. +%ifnarch %{ix86} x86_64 +rm $RPM_BUILD_ROOT%{_libdir}/%{name}/plugins/nbdkit-vddk-plugin.so +rm $RPM_BUILD_ROOT%{_mandir}/man1/nbdkit-vddk-plugin.1* +%endif + +# Remove bash-completion (if it was built) because we don't want to +# support it. +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d + +# Remove some basic plugins which we don't want to support. We may +# add these back later if there is customer demand. +rm $RPM_BUILD_ROOT%{_libdir}/%{name}/plugins/nbdkit-floppy-plugin.so +rm $RPM_BUILD_ROOT%{_mandir}/man1/nbdkit-floppy-plugin.1* +rm $RPM_BUILD_ROOT%{_libdir}/%{name}/plugins/nbdkit-iso-plugin.so +rm $RPM_BUILD_ROOT%{_mandir}/man1/nbdkit-iso-plugin.1* +rm $RPM_BUILD_ROOT%{_libdir}/%{name}/plugins/nbdkit-sh-plugin.so +rm $RPM_BUILD_ROOT%{_mandir}/man3/nbdkit-sh-plugin.3* + + +%check +# Workaround for broken libvirt (RHBZ#1138604). +mkdir -p $HOME/.cache/libvirt + +# Make sure we can see the debug messages (RHBZ#1230160). +export LIBGUESTFS_DEBUG=1 +export LIBGUESTFS_TRACE=1 + +make check -j1 || { + cat tests/test-suite.log + exit 1 + } + + +%files +%doc README +%license LICENSE +%{_sbindir}/nbdkit +%dir %{_libdir}/%{name} +%dir %{_libdir}/%{name}/plugins +%dir %{_libdir}/%{name}/filters +%{_mandir}/man1/nbdkit.1* + + +%files basic-plugins +%doc README +%license LICENSE +%{_libdir}/%{name}/plugins/nbdkit-data-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-file-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-memory-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-nbd-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-null-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-partitioning-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-pattern-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-random-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-split-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-streaming-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-zero-plugin.so +%{_mandir}/man1/nbdkit-data-plugin.1* +%{_mandir}/man1/nbdkit-file-plugin.1* +%{_mandir}/man1/nbdkit-memory-plugin.1* +%{_mandir}/man1/nbdkit-nbd-plugin.1* +%{_mandir}/man1/nbdkit-null-plugin.1* +%{_mandir}/man1/nbdkit-partitioning-plugin.1* +%{_mandir}/man1/nbdkit-pattern-plugin.1* +%{_mandir}/man1/nbdkit-random-plugin.1* +%{_mandir}/man1/nbdkit-split-plugin.1* +%{_mandir}/man1/nbdkit-streaming-plugin.1* +%{_mandir}/man1/nbdkit-zero-plugin.1* + + +%files example-plugins +%doc README +%license LICENSE +%{_libdir}/%{name}/plugins/nbdkit-example*-plugin.so +%{_mandir}/man1/nbdkit-example*-plugin.1* + + +%files plugin-python-common +%doc README +%license LICENSE +%{_mandir}/man3/nbdkit-python-plugin.3* + + +%files plugin-python2 +%{_libdir}/%{name}/plugins/nbdkit-python-plugin.so +%{_libdir}/%{name}/plugins/nbdkit-python2-plugin.so + + +%ifarch %{ix86} x86_64 +%files plugin-vddk +%doc README +%license LICENSE +%{_libdir}/%{name}/plugins/nbdkit-vddk-plugin.so +%{_mandir}/man1/nbdkit-vddk-plugin.1* +%endif + + +%files devel +%doc OTHER_PLUGINS README TODO +%license LICENSE +# Include the source of the example plugins in the documentation. +%doc plugins/example*/*.c +#%doc plugins/example4/nbdkit-example4-plugin +#%doc plugins/perl/example.pl +#%doc plugins/python/example.py +#%doc plugins/ruby/example.rb +%{_includedir}/nbdkit-common.h +%{_includedir}/nbdkit-filter.h +%{_includedir}/nbdkit-plugin.h +%{_mandir}/man1/nbdkit-captive.1* +%{_mandir}/man3/nbdkit-filter.3* +%{_mandir}/man3/nbdkit-plugin.3* +%{_mandir}/man1/nbdkit-probing.1* +%{_mandir}/man1/nbdkit-protocol.1* +%{_mandir}/man1/nbdkit-service.1* +%{_mandir}/man1/nbdkit-tls.1* +%{_libdir}/pkgconfig/nbdkit.pc + + +%changelog +* Wed Jun 26 2019 Richard W.M. Jones - 1.8.0-2 +- Explicitly disable nbdkit-ext2-plugin in configure + resolves: rhbz#1724242 + +* Tue Nov 13 2018 Richard W.M. Jones - 1.8.0-1 +- Rebase to upstream stable version 1.8.0. + resolves: rhbz#1621894 + +* Thu Nov 08 2018 Richard W.M. Jones - 1.2.6-1.el7_6.2 +- Enhanced Python error reporting. + resolves: rhbz#1613946 + +* Fri Oct 12 2018 Pino Toscano - 1.2.6-1.el7_6.1 +- Fix TLS priority. (RHBZ#1632220) + +* Wed Aug 1 2018 Richard W.M. Jones - 1.2.6-1 +- New stable version 1.2.6. + +* Wed Jul 25 2018 Richard W.M. Jones - 1.2.5-1 +- New stable version 1.2.5. +- Enable VDDK plugin on x86-64 only. +- Small refactorings in the spec file. + +* Sun Jul 1 2018 Richard W.M. Jones - 1.2.4-4 +- Add all upstream patches since 1.2.4 was released. + +* Thu Jun 14 2018 Richard W.M. Jones - 1.2.4-3 +- Fix use of autopatch/autosetup macros in prep section. + +* Tue Jun 12 2018 Richard W.M. Jones - 1.2.4-2 +- Add all upstream patches since 1.2.4 was released. +- Drop example4 and tar plugins since they depend on Perl. + +* Sat Jun 9 2018 Richard W.M. Jones - 1.2.4-1 +- New stable version 1.2.4. +- Remove upstream patches. +- Enable tarball signatures. +- Add upstream patch to fix tests when guestfish not available. + +* Wed Jun 6 2018 Richard W.M. Jones - 1.2.3-1 +- New stable version 1.2.3. +- Add patch to work around libvirt problem with relative socket paths. +- Add patch to fix the xz plugin test with recent guestfish. +- Fix version in VDDK plugin spec file. + +* Sat Apr 21 2018 Richard W.M. Jones - 1.2.2-1 +- New stable version 1.2.2. + +* Fri Apr 20 2018 Tomáš Golembiovský - 1.2.1-2 +- Fix link to sources + +* Mon Apr 9 2018 Richard W.M. Jones - 1.2.1-1 +- New stable version 1.2.1. + +* Fri Apr 6 2018 Richard W.M. Jones - 1.2.0-1 +- Move to stable branch version 1.2.0. +- Escape macros in %%changelog +- Run a simplified test suite on all arches. + +* Thu Mar 15 2018 Tomáš Golembiovský - 1.1.26-2 +- Enable python2 plugin. + +* Sat Dec 23 2017 Richard W.M. Jones - 1.1.26-1 +- New upstream version 1.1.26. +- Add new pkg-config file and dependency. + +* Wed Dec 06 2017 Richard W.M. Jones - 1.1.25-1 +- New upstream version 1.1.25. + +* Tue Dec 05 2017 Richard W.M. Jones - 1.1.24-1 +- New upstream version 1.1.24. +- Add tar plugin (new subpackage nbdkit-plugin-tar). + +* Tue Dec 05 2017 Richard W.M. Jones - 1.1.23-1 +- New upstream version 1.1.23. +- Add example4 plugin. +- Python3 tests require libguestfs so disable on s390x. + +* Sun Dec 03 2017 Richard W.M. Jones - 1.1.22-1 +- New upstream version 1.1.22. +- Enable tests on Fedora. + +* Sat Dec 02 2017 Richard W.M. Jones - 1.1.20-1 +- New upstream version 1.1.20. +- Add nbdkit-split-plugin to basic plugins. + +* Sat Dec 02 2017 Richard W.M. Jones - 1.1.19-2 +- OCaml 4.06.0 rebuild. + +* Thu Nov 30 2017 Richard W.M. Jones - 1.1.19-1 +- New upstream version 1.1.19. +- Combine all the simple plugins in %%{name}-basic-plugins. +- Add memory and null plugins. +- Rename the example plugins subpackage. +- Use %%license instead of %%doc for license file. +- Remove patches now upstream. + +* Wed Nov 29 2017 Richard W.M. Jones - 1.1.18-4 +- Fix Python 3 builds / RHEL macros (RHBZ#1404631). + +* Tue Nov 21 2017 Richard W.M. Jones - 1.1.18-3 +- New upstream version 1.1.18. +- Add NBD forwarding plugin. +- Add libselinux-devel so that SELinux support is enabled in the daemon. +- Apply all patches from upstream since 1.1.18. + +* Fri Oct 20 2017 Richard W.M. Jones - 1.1.16-2 +- New upstream version 1.1.16. +- Disable python3 plugin on RHEL/EPEL <= 7. +- Only ship on x86_64 in RHEL/EPEL <= 7. + +* Wed Sep 27 2017 Richard W.M. Jones - 1.1.15-1 +- New upstream version 1.1.15. +- Enable TLS support. + +* Fri Sep 01 2017 Richard W.M. Jones - 1.1.14-1 +- New upstream version 1.1.14. + +* Fri Aug 25 2017 Richard W.M. Jones - 1.1.13-1 +- New upstream version 1.1.13. +- Remove patches which are all upstream. +- Remove grubby hack, should not be needed with modern supermin. + +* Sat Aug 19 2017 Richard W.M. Jones - 1.1.12-13 +- Rebuild for OCaml 4.05.0. + +* Thu Aug 03 2017 Fedora Release Engineering - 1.1.12-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.1.12-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Jun 27 2017 Richard W.M. Jones - 1.1.12-10 +- Rebuild for OCaml 4.04.2. + +* Sun Jun 04 2017 Jitka Plesnikova - 1.1.12-9 +- Perl 5.26 rebuild + +* Mon May 15 2017 Richard W.M. Jones - 1.1.12-8 +- Rebuild for OCaml 4.04.1. + +* Fri Feb 10 2017 Fedora Release Engineering - 1.1.12-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Jan 12 2017 Vít Ondruch - 1.1.12-6 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.4 + +* Fri Dec 23 2016 Richard W.M. Jones - 1.1.12-5 +- Rebuild for Python 3.6 update. + +* Wed Dec 14 2016 Richard W.M. Jones - 1.1.12-4 +- Fix python3 subpackage so it really uses python3 (RHBZ#1404631). + +* Sat Nov 05 2016 Richard W.M. Jones - 1.1.12-3 +- Rebuild for OCaml 4.04.0. + +* Mon Oct 03 2016 Richard W.M. Jones - 1.1.12-2 +- Compile Python 2 and Python 3 versions of the plugin. + +* Wed Jun 08 2016 Richard W.M. Jones - 1.1.12-1 +- New upstream version 1.1.12 +- Enable Ruby plugin. +- Disable tests on Rawhide because libvirt is broken again (RHBZ#1344016). + +* Wed May 25 2016 Richard W.M. Jones - 1.1.11-10 +- Add another upstream patch since 1.1.11. + +* Mon May 23 2016 Richard W.M. Jones - 1.1.11-9 +- Add all patches upstream since 1.1.11 (fixes RHBZ#1336758). + +* Tue May 17 2016 Jitka Plesnikova - 1.1.11-7 +- Perl 5.24 rebuild + +* Wed Mar 09 2016 Richard W.M. Jones - 1.1.11-6 +- When tests fail, dump out test-suite.log so we can debug it. + +* Fri Feb 05 2016 Richard W.M. Jones - 1.1.11-5 +- Don't run tests on x86, because kernel is broken there + (https://bugzilla.redhat.com/show_bug.cgi?id=1302071) + +* Thu Feb 04 2016 Fedora Release Engineering - 1.1.11-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jan 11 2016 Richard W.M. Jones - 1.1.11-3 +- Add support for newstyle NBD protocol (RHBZ#1297100). + +* Sat Oct 31 2015 Richard W.M. Jones - 1.1.11-1 +- New upstream version 1.1.11. + +* Thu Jul 30 2015 Richard W.M. Jones - 1.1.10-3 +- OCaml 4.02.3 rebuild. + +* Sat Jun 20 2015 Richard W.M. Jones - 1.1.10-2 +- Enable libguestfs plugin on aarch64. + +* Fri Jun 19 2015 Richard W.M. Jones - 1.1.10-1 +- New upstream version. +- Enable now working OCaml plugin (requires OCaml >= 4.02.2). + +* Wed Jun 17 2015 Fedora Release Engineering - 1.1.9-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Jun 11 2015 Jitka Plesnikova - 1.1.9-5 +- Perl 5.22 rebuild + +* Wed Jun 10 2015 Richard W.M. Jones - 1.1.9-4 +- Enable debugging messages when running make check. + +* Sat Jun 06 2015 Jitka Plesnikova - 1.1.9-3 +- Perl 5.22 rebuild + +* Tue Oct 14 2014 Richard W.M. Jones - 1.1.9-2 +- New upstream version 1.1.9. +- Add the streaming plugin. +- Include fix for streaming plugin in 1.1.9. + +* Wed Sep 10 2014 Richard W.M. Jones - 1.1.8-4 +- Rebuild for updated Perl in Rawhide. +- Workaround for broken libvirt (RHBZ#1138604). + +* Sun Aug 17 2014 Fedora Release Engineering - 1.1.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 21 2014 Richard W.M. Jones - 1.1.8-1 +- New upstream version 1.1.8. +- Add support for cURL, and new nbdkit-plugin-curl package. + +* Fri Jun 20 2014 Richard W.M. Jones - 1.1.7-1 +- New upstream version 1.1.7. +- Remove patches which are now all upstream. + +* Sat Jun 07 2014 Fedora Release Engineering - 1.1.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Mar 06 2014 Dan Horák - 1.1.6-4 +- libguestfs is available only on selected arches + +* Fri Feb 21 2014 Richard W.M. Jones - 1.1.6-3 +- Backport some upstream patches, fixing a minor bug and adding more tests. +- Enable the tests since kernel bug is fixed. + +* Sun Feb 16 2014 Richard W.M. Jones - 1.1.6-1 +- New upstream version 1.1.6. + +* Sat Feb 15 2014 Richard W.M. Jones - 1.1.5-2 +- New upstream version 1.1.5. +- Enable the new Python plugin. +- Perl plugin man page moved to section 3. +- Perl now requires ExtUtils::Embed. + +* Mon Feb 10 2014 Richard W.M. Jones - 1.1.4-1 +- New upstream version 1.1.4. +- Enable the new Perl plugin. + +* Sun Aug 4 2013 Richard W.M. Jones - 1.1.3-1 +- New upstream version 1.1.3 which fixes some test problems. +- Disable tests because Rawhide kernel is broken (RHBZ#991808). +- Remove a single quote from description which confused emacs. +- Remove patch, now upstream. + +* Sat Aug 03 2013 Fedora Release Engineering - 1.1.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sun Jul 21 2013 Richard W.M. Jones - 1.1.2-3 +- Fix segfault when IPv6 client is used (RHBZ#986601). + +* Tue Jul 16 2013 Richard W.M. Jones - 1.1.2-2 +- New development version 1.1.2. +- Disable the tests on Fedora <= 18. + +* Tue Jun 25 2013 Richard W.M. Jones - 1.1.1-1 +- New development version 1.1.1. +- Add libguestfs plugin. +- Run the test suite. + +* Mon Jun 24 2013 Richard W.M. Jones - 1.0.0-4 +- Initial release.