From b47a661c55b8647282d411462bab2df39701e8d4 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 10 May 2017 08:33:53 +0100 Subject: [PATCH] 2017.05 --- ...1-2-rsa-Fix-build-with-OpenSSL-1.1.x.patch | 108 ------- ...eprecated-warnings-for-OpenSSL-1.1.x.patch | 49 ---- sources | 2 +- ...wbimage-fix-build-with-OpenSSL-1.1.x.patch | 96 ------- u-boot-openssl-1.1.patch | 271 ++++++++++++++++++ uboot-tools.spec | 21 +- 6 files changed, 283 insertions(+), 264 deletions(-) delete mode 100644 U-Boot-1-2-rsa-Fix-build-with-OpenSSL-1.1.x.patch delete mode 100644 U-Boot-2-2-rsa-Fix-deprecated-warnings-for-OpenSSL-1.1.x.patch delete mode 100644 tools-kwbimage-fix-build-with-OpenSSL-1.1.x.patch create mode 100644 u-boot-openssl-1.1.patch diff --git a/U-Boot-1-2-rsa-Fix-build-with-OpenSSL-1.1.x.patch b/U-Boot-1-2-rsa-Fix-build-with-OpenSSL-1.1.x.patch deleted file mode 100644 index c597a44..0000000 --- a/U-Boot-1-2-rsa-Fix-build-with-OpenSSL-1.1.x.patch +++ /dev/null @@ -1,108 +0,0 @@ -From patchwork Mon Feb 13 09:00:36 2017 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [U-Boot,1/2] rsa: Fix build with OpenSSL 1.1.x -From: Jelle van der Waa -X-Patchwork-Id: 727164 -Message-Id: <20170213090037.29223-1-jelle@vdwaa.nl> -To: Andrew Duda , Simon Glass , - "mario . six @ gdsys . cc" -Cc: u-boot@lists.denx.de -Date: Mon, 13 Feb 2017 10:00:36 +0100 - -The rsa_st struct has been made opaque in 1.1.x, add forward compatible -code to access the n, e, d members of rsa_struct. - -EVP_MD_CTX_cleanup has been removed in 1.1.x and EVP_MD_CTX_reset should be -called to reinitialise an already created structure. ---- - lib/rsa/rsa-sign.c | 33 +++++++++++++++++++++++++++------ - 1 file changed, 27 insertions(+), 6 deletions(-) - -diff --git a/lib/rsa/rsa-sign.c b/lib/rsa/rsa-sign.c -index 8c6637e328..965fb00f95 100644 ---- a/lib/rsa/rsa-sign.c -+++ b/lib/rsa/rsa-sign.c -@@ -20,6 +20,19 @@ - #define HAVE_ERR_REMOVE_THREAD_STATE - #endif - -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+void RSA_get0_key(const RSA *r, -+ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) -+{ -+ if (n != NULL) -+ *n = r->n; -+ if (e != NULL) -+ *e = r->e; -+ if (d != NULL) -+ *d = r->d; -+} -+#endif -+ - static int rsa_err(const char *msg) - { - unsigned long sslErr = ERR_get_error(); -@@ -409,7 +422,11 @@ static int rsa_sign_with_key(RSA *rsa, struct checksum_algo *checksum_algo, - ret = rsa_err("Could not obtain signature"); - goto err_sign; - } -- EVP_MD_CTX_cleanup(context); -+ #if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_MD_CTX_cleanup(context); -+ #else -+ EVP_MD_CTX_reset(context); -+ #endif - EVP_MD_CTX_destroy(context); - EVP_PKEY_free(key); - -@@ -479,6 +496,7 @@ static int rsa_get_exponent(RSA *key, uint64_t *e) - { - int ret; - BIGNUM *bn_te; -+ const BIGNUM *key_e; - uint64_t te; - - ret = -EINVAL; -@@ -487,17 +505,18 @@ static int rsa_get_exponent(RSA *key, uint64_t *e) - if (!e) - goto cleanup; - -- if (BN_num_bits(key->e) > 64) -+ RSA_get0_key(key, NULL, &key_e, NULL); -+ if (BN_num_bits(key_e) > 64) - goto cleanup; - -- *e = BN_get_word(key->e); -+ *e = BN_get_word(key_e); - -- if (BN_num_bits(key->e) < 33) { -+ if (BN_num_bits(key_e) < 33) { - ret = 0; - goto cleanup; - } - -- bn_te = BN_dup(key->e); -+ bn_te = BN_dup(key_e); - if (!bn_te) - goto cleanup; - -@@ -527,6 +546,7 @@ int rsa_get_params(RSA *key, uint64_t *exponent, uint32_t *n0_invp, - { - BIGNUM *big1, *big2, *big32, *big2_32; - BIGNUM *n, *r, *r_squared, *tmp; -+ const BIGNUM *key_n; - BN_CTX *bn_ctx = BN_CTX_new(); - int ret = 0; - -@@ -548,7 +568,8 @@ int rsa_get_params(RSA *key, uint64_t *exponent, uint32_t *n0_invp, - if (0 != rsa_get_exponent(key, exponent)) - ret = -1; - -- if (!BN_copy(n, key->n) || !BN_set_word(big1, 1L) || -+ RSA_get0_key(key, NULL, &key_n, NULL); -+ if (!BN_copy(n, key_n) || !BN_set_word(big1, 1L) || - !BN_set_word(big2, 2L) || !BN_set_word(big32, 32L)) - ret = -1; - diff --git a/U-Boot-2-2-rsa-Fix-deprecated-warnings-for-OpenSSL-1.1.x.patch b/U-Boot-2-2-rsa-Fix-deprecated-warnings-for-OpenSSL-1.1.x.patch deleted file mode 100644 index 2b3852a..0000000 --- a/U-Boot-2-2-rsa-Fix-deprecated-warnings-for-OpenSSL-1.1.x.patch +++ /dev/null @@ -1,49 +0,0 @@ -From patchwork Mon Feb 13 09:00:37 2017 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [U-Boot,2/2] rsa: Fix deprecated warnings for OpenSSL 1.1.x -From: Jelle van der Waa -X-Patchwork-Id: 727165 -Message-Id: <20170213090037.29223-2-jelle@vdwaa.nl> -To: Andrew Duda , Simon Glass , - "mario . six @ gdsys . cc" -Cc: u-boot@lists.denx.de -Date: Mon, 13 Feb 2017 10:00:37 +0100 - -ERR_remove_thread_state is deprecated in OpenSSL 1.1.x and does not do -anything anymore. Thread initialisation and deinitialisation is now -handled by the OpenSSL library. - -Signed-off-by: Jelle van der Waa ---- - lib/rsa/rsa-sign.c | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/lib/rsa/rsa-sign.c b/lib/rsa/rsa-sign.c -index 965fb00f95..347a6aa89e 100644 ---- a/lib/rsa/rsa-sign.c -+++ b/lib/rsa/rsa-sign.c -@@ -16,10 +16,6 @@ - #include - #include - --#if OPENSSL_VERSION_NUMBER >= 0x10000000L --#define HAVE_ERR_REMOVE_THREAD_STATE --#endif -- - #if OPENSSL_VERSION_NUMBER < 0x10100000L - void RSA_get0_key(const RSA *r, - const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) -@@ -356,9 +352,9 @@ static void rsa_remove(void) - { - CRYPTO_cleanup_all_ex_data(); - ERR_free_strings(); --#ifdef HAVE_ERR_REMOVE_THREAD_STATE -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L - ERR_remove_thread_state(NULL); --#else -+#elif OPENSSL_VERSION_NUMBER < 0x10000000L - ERR_remove_state(0); - #endif - EVP_cleanup(); diff --git a/sources b/sources index 17214e2..a4c37b0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2017.05-rc3.tar.bz2) = f76d01057ca282ca629279865a65cb8404d5e0e96f5f73bfaaa9c66de351f18962143450788ba9c6b9187c4b774e3527f9eb796daa3d0bbcf7fde87ce1c40428 +SHA512 (u-boot-2017.05.tar.bz2) = be270f9242a72b05463092a022bbabd54996762de1ff23bf7575124ac02e62f49572a4e2f6f571a5019047d40027e56e35593b5cc373c4a5a39b100c3377ba93 diff --git a/tools-kwbimage-fix-build-with-OpenSSL-1.1.x.patch b/tools-kwbimage-fix-build-with-OpenSSL-1.1.x.patch deleted file mode 100644 index 0ca9b69..0000000 --- a/tools-kwbimage-fix-build-with-OpenSSL-1.1.x.patch +++ /dev/null @@ -1,96 +0,0 @@ -From ecb15353f2a0fd9612c25442b9d73b7b60bc3eff Mon Sep 17 00:00:00 2001 -From: Jelle van der Waa -Date: Tue, 14 Feb 2017 22:51:57 +0100 -Subject: [PATCH] tools: kwbimage fix build with OpenSSL 1.1.x - -The rsa_st struct has been made opaque in 1.1.x, add forward compatible -code to access the n, e, d members of rsa_struct. - -EVP_MD_CTX_cleanup has been removed in 1.1.x and EVP_MD_CTX_reset should be -called to reinitialise an already created structure. - -Signed-off-by: Jelle van der Waa ---- - tools/kwbimage.c | 35 +++++++++++++++++++++++++++++------ - 1 file changed, 29 insertions(+), 6 deletions(-) - -diff --git a/tools/kwbimage.c b/tools/kwbimage.c -index 93797c99da..e66b035408 100644 ---- a/tools/kwbimage.c -+++ b/tools/kwbimage.c -@@ -22,6 +22,25 @@ - #include - #include - #include -+ -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+void RSA_get0_key(const RSA *r, -+ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) -+{ -+ if (n != NULL) -+ *n = r->n; -+ if (e != NULL) -+ *e = r->e; -+ if (d != NULL) -+ *d = r->d; -+} -+ -+#else -+void EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx) -+{ -+ EVP_MD_CTX_reset(ctx); -+} -+#endif - #endif - - static struct image_cfg_element *image_cfg; -@@ -470,12 +489,16 @@ static int kwb_export_pubkey(RSA *key, struct pubkey_der_v1 *dst, FILE *hashf, - char *keyname) - { - int size_exp, size_mod, size_seq; -+ const BIGNUM *key_e, *key_n; - uint8_t *cur; - char *errmsg = "Failed to encode %s\n"; - -- if (!key || !key->e || !key->n || !dst) { -+ RSA_get0_key(key, NULL, &key_e, NULL); -+ RSA_get0_key(key, NULL, &key_n, NULL); -+ -+ if (!key || !key_e || !key_n || !dst) { - fprintf(stderr, "export pk failed: (%p, %p, %p, %p)", -- key, key->e, key->n, dst); -+ key, key_e, key_n, dst); - fprintf(stderr, errmsg, keyname); - return -EINVAL; - } -@@ -490,8 +513,8 @@ static int kwb_export_pubkey(RSA *key, struct pubkey_der_v1 *dst, FILE *hashf, - * do the encoding manually. - */ - -- size_exp = BN_num_bytes(key->e); -- size_mod = BN_num_bytes(key->n); -+ size_exp = BN_num_bytes(key_e); -+ size_mod = BN_num_bytes(key_n); - size_seq = 4 + size_mod + 4 + size_exp; - - if (size_mod > 256) { -@@ -520,14 +543,14 @@ static int kwb_export_pubkey(RSA *key, struct pubkey_der_v1 *dst, FILE *hashf, - *cur++ = 0x82; - *cur++ = (size_mod >> 8) & 0xFF; - *cur++ = size_mod & 0xFF; -- BN_bn2bin(key->n, cur); -+ BN_bn2bin(key_n, cur); - cur += size_mod; - /* Exponent */ - *cur++ = 0x02; /* INTEGER */ - *cur++ = 0x82; - *cur++ = (size_exp >> 8) & 0xFF; - *cur++ = size_exp & 0xFF; -- BN_bn2bin(key->e, cur); -+ BN_bn2bin(key_e, cur); - - if (hashf) { - struct hash_v1 pk_hash; --- -2.11.1 - diff --git a/u-boot-openssl-1.1.patch b/u-boot-openssl-1.1.patch new file mode 100644 index 0000000..3f1e725 --- /dev/null +++ b/u-boot-openssl-1.1.patch @@ -0,0 +1,271 @@ +From patchwork Mon May 8 19:31:19 2017 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot,v3,1/2] rsa: Fix build with OpenSSL 1.1.x +From: Jelle van der Waa +X-Patchwork-Id: 759762 +X-Patchwork-Delegate: trini@ti.com +Message-Id: <20170508193120.17348-2-jelle@vdwaa.nl> +To: Simon Glass , Andrew Duda , + "mario . six @ gdsys . cc" , u-boot@lists.denx.de +Cc: Tom Rini +Date: Mon, 8 May 2017 21:31:19 +0200 + +The rsa_st struct has been made opaque in 1.1.x, add forward compatible +code to access the n, e, d members of rsa_struct. + +EVP_MD_CTX_cleanup has been removed in 1.1.x and EVP_MD_CTX_reset should be +called to reinitialise an already created structure. +--- + lib/rsa/rsa-sign.c | 44 ++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 38 insertions(+), 6 deletions(-) + +diff --git a/lib/rsa/rsa-sign.c b/lib/rsa/rsa-sign.c +index 8c6637e328..1da4ef7fff 100644 +--- a/lib/rsa/rsa-sign.c ++++ b/lib/rsa/rsa-sign.c +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -20,6 +21,19 @@ + #define HAVE_ERR_REMOVE_THREAD_STATE + #endif + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++static void RSA_get0_key(const RSA *r, ++ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) ++{ ++ if (n != NULL) ++ *n = r->n; ++ if (e != NULL) ++ *e = r->e; ++ if (d != NULL) ++ *d = r->d; ++} ++#endif ++ + static int rsa_err(const char *msg) + { + unsigned long sslErr = ERR_get_error(); +@@ -286,16 +300,22 @@ static int rsa_init(void) + { + int ret; + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + ret = SSL_library_init(); ++#else ++ ret = OPENSSL_init_ssl(0, NULL); ++#endif + if (!ret) { + fprintf(stderr, "Failure to init SSL library\n"); + return -1; + } ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + SSL_load_error_strings(); + + OpenSSL_add_all_algorithms(); + OpenSSL_add_all_digests(); + OpenSSL_add_all_ciphers(); ++#endif + + return 0; + } +@@ -335,12 +355,15 @@ err_set_rsa: + err_engine_init: + ENGINE_free(e); + err_engine_by_id: ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + ENGINE_cleanup(); ++#endif + return ret; + } + + static void rsa_remove(void) + { ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + CRYPTO_cleanup_all_ex_data(); + ERR_free_strings(); + #ifdef HAVE_ERR_REMOVE_THREAD_STATE +@@ -349,6 +372,7 @@ static void rsa_remove(void) + ERR_remove_state(0); + #endif + EVP_cleanup(); ++#endif + } + + static void rsa_engine_remove(ENGINE *e) +@@ -409,7 +433,11 @@ static int rsa_sign_with_key(RSA *rsa, struct checksum_algo *checksum_algo, + ret = rsa_err("Could not obtain signature"); + goto err_sign; + } +- EVP_MD_CTX_cleanup(context); ++ #if OPENSSL_VERSION_NUMBER < 0x10100000L ++ EVP_MD_CTX_cleanup(context); ++ #else ++ EVP_MD_CTX_reset(context); ++ #endif + EVP_MD_CTX_destroy(context); + EVP_PKEY_free(key); + +@@ -479,6 +507,7 @@ static int rsa_get_exponent(RSA *key, uint64_t *e) + { + int ret; + BIGNUM *bn_te; ++ const BIGNUM *key_e; + uint64_t te; + + ret = -EINVAL; +@@ -487,17 +516,18 @@ static int rsa_get_exponent(RSA *key, uint64_t *e) + if (!e) + goto cleanup; + +- if (BN_num_bits(key->e) > 64) ++ RSA_get0_key(key, NULL, &key_e, NULL); ++ if (BN_num_bits(key_e) > 64) + goto cleanup; + +- *e = BN_get_word(key->e); ++ *e = BN_get_word(key_e); + +- if (BN_num_bits(key->e) < 33) { ++ if (BN_num_bits(key_e) < 33) { + ret = 0; + goto cleanup; + } + +- bn_te = BN_dup(key->e); ++ bn_te = BN_dup(key_e); + if (!bn_te) + goto cleanup; + +@@ -527,6 +557,7 @@ int rsa_get_params(RSA *key, uint64_t *exponent, uint32_t *n0_invp, + { + BIGNUM *big1, *big2, *big32, *big2_32; + BIGNUM *n, *r, *r_squared, *tmp; ++ const BIGNUM *key_n; + BN_CTX *bn_ctx = BN_CTX_new(); + int ret = 0; + +@@ -548,7 +579,8 @@ int rsa_get_params(RSA *key, uint64_t *exponent, uint32_t *n0_invp, + if (0 != rsa_get_exponent(key, exponent)) + ret = -1; + +- if (!BN_copy(n, key->n) || !BN_set_word(big1, 1L) || ++ RSA_get0_key(key, &key_n, NULL, NULL); ++ if (!BN_copy(n, key_n) || !BN_set_word(big1, 1L) || + !BN_set_word(big2, 2L) || !BN_set_word(big32, 32L)) + ret = -1; + +From patchwork Mon May 8 19:31:20 2017 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot,v3,2/2] tools: kwbimage fix build with OpenSSL 1.1.x +From: Jelle van der Waa +X-Patchwork-Id: 759763 +X-Patchwork-Delegate: trini@ti.com +Message-Id: <20170508193120.17348-3-jelle@vdwaa.nl> +To: Simon Glass , Andrew Duda , + "mario . six @ gdsys . cc" , u-boot@lists.denx.de +Cc: Tom Rini +Date: Mon, 8 May 2017 21:31:20 +0200 + +The rsa_st struct has been made opaque in 1.1.x, add forward compatible +code to access the n, e, d members of rsa_struct. + +EVP_MD_CTX_cleanup has been removed in 1.1.x and EVP_MD_CTX_reset should be +called to reinitialise an already created structure. + +Signed-off-by: Jelle van der Waa +--- + tools/kwbimage.c | 36 ++++++++++++++++++++++++++++++------ + 1 file changed, 30 insertions(+), 6 deletions(-) + +diff --git a/tools/kwbimage.c b/tools/kwbimage.c +index 2c637c7446..8c0e730e7b 100644 +--- a/tools/kwbimage.c ++++ b/tools/kwbimage.c +@@ -18,10 +18,30 @@ + #include "kwbimage.h" + + #ifdef CONFIG_KWB_SECURE ++#include + #include + #include + #include + #include ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++static void RSA_get0_key(const RSA *r, ++ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) ++{ ++ if (n != NULL) ++ *n = r->n; ++ if (e != NULL) ++ *e = r->e; ++ if (d != NULL) ++ *d = r->d; ++} ++ ++#else ++void EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx) ++{ ++ EVP_MD_CTX_reset(ctx); ++} ++#endif + #endif + + static struct image_cfg_element *image_cfg; +@@ -470,12 +490,16 @@ static int kwb_export_pubkey(RSA *key, struct pubkey_der_v1 *dst, FILE *hashf, + char *keyname) + { + int size_exp, size_mod, size_seq; ++ const BIGNUM *key_e, *key_n; + uint8_t *cur; + char *errmsg = "Failed to encode %s\n"; + +- if (!key || !key->e || !key->n || !dst) { ++ RSA_get0_key(key, NULL, &key_e, NULL); ++ RSA_get0_key(key, &key_n, NULL, NULL); ++ ++ if (!key || !key_e || !key_n || !dst) { + fprintf(stderr, "export pk failed: (%p, %p, %p, %p)", +- key, key->e, key->n, dst); ++ key, key_e, key_n, dst); + fprintf(stderr, errmsg, keyname); + return -EINVAL; + } +@@ -490,8 +514,8 @@ static int kwb_export_pubkey(RSA *key, struct pubkey_der_v1 *dst, FILE *hashf, + * do the encoding manually. + */ + +- size_exp = BN_num_bytes(key->e); +- size_mod = BN_num_bytes(key->n); ++ size_exp = BN_num_bytes(key_e); ++ size_mod = BN_num_bytes(key_n); + size_seq = 4 + size_mod + 4 + size_exp; + + if (size_mod > 256) { +@@ -520,14 +544,14 @@ static int kwb_export_pubkey(RSA *key, struct pubkey_der_v1 *dst, FILE *hashf, + *cur++ = 0x82; + *cur++ = (size_mod >> 8) & 0xFF; + *cur++ = size_mod & 0xFF; +- BN_bn2bin(key->n, cur); ++ BN_bn2bin(key_n, cur); + cur += size_mod; + /* Exponent */ + *cur++ = 0x02; /* INTEGER */ + *cur++ = 0x82; + *cur++ = (size_exp >> 8) & 0xFF; + *cur++ = size_exp & 0xFF; +- BN_bn2bin(key->e, cur); ++ BN_bn2bin(key_e, cur); + + if (hashf) { + struct hash_v1 pk_hash; diff --git a/uboot-tools.spec b/uboot-tools.spec index 8b054f3..80a445e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc3 +#global candidate rc3 Name: uboot-tools Version: 2017.05 -Release: 0.7%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities Group: Development/Tools @@ -13,14 +13,12 @@ Source1: armv7-boards Source2: armv8-boards Patch1: add-BOOTENV_INIT_COMMAND-for-commands-that-may-be-ne.patch -Patch2: U-Boot-1-2-rsa-Fix-build-with-OpenSSL-1.1.x.patch -Patch3: U-Boot-2-2-rsa-Fix-deprecated-warnings-for-OpenSSL-1.1.x.patch -Patch4: tools-kwbimage-fix-build-with-OpenSSL-1.1.x.patch -Patch5: mx6cuboxi-Add-support-for-sata.patch -Patch6: mx6-Initial-Hummingboard-2-support.patch -Patch7: sti-STiH410-B2260-support.patch -Patch8: AW64-add-spl-atf-support.patch -Patch9: use-Fedora-specific-EFI-path-name.patch +Patch2: u-boot-openssl-1.1.patch +Patch3: mx6cuboxi-Add-support-for-sata.patch +Patch4: mx6-Initial-Hummingboard-2-support.patch +Patch5: sti-STiH410-B2260-support.patch +Patch6: AW64-add-spl-atf-support.patch +Patch7: use-Fedora-specific-EFI-path-name.patch # Patch9: 0001-arm-mvebu-enable-generic-distro-boot-config.patch @@ -262,6 +260,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue May 9 2017 Peter Robinson 2017.05-01 +- 2017.05 + * Wed May 3 2017 Peter Robinson 2017.05-0.7.rc7 - 2017.05 RC3