From 73c9ae84cab61a9c7086c6646d29f0fe3dc7c5c3 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 3 Apr 2015 05:44:47 +0000 Subject: [PATCH] Fix parallel build wrt symlinking of generated libs #545028 by Martin von Gagern. Package-Manager: portage-2.2.18/cvs/Linux x86_64 Manifest-Sign-Key: 0xD2E96200 --- dev-libs/openssl/ChangeLog | 7 ++- dev-libs/openssl/Manifest | 39 ++++++------ .../openssl-1.0.2a-parallel-symlinking.patch | 61 +++++++++++++++++++ dev-libs/openssl/openssl-1.0.2a.ebuild | 3 +- 4 files changed, 90 insertions(+), 20 deletions(-) create mode 100644 dev-libs/openssl/files/openssl-1.0.2a-parallel-symlinking.patch diff --git a/dev-libs/openssl/ChangeLog b/dev-libs/openssl/ChangeLog index a4aace73a5f9..15c7bd08c686 100644 --- a/dev-libs/openssl/ChangeLog +++ b/dev-libs/openssl/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for dev-libs/openssl # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/openssl/ChangeLog,v 1.646 2015/04/03 05:43:32 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-libs/openssl/ChangeLog,v 1.647 2015/04/03 05:44:45 vapier Exp $ + + 03 Apr 2015; Mike Frysinger + +files/openssl-1.0.2a-parallel-symlinking.patch, openssl-1.0.2a.ebuild: + Fix parallel build wrt symlinking of generated libs #545028 by Martin von + Gagern. 02 Apr 2015; Mike Frysinger openssl-1.0.2a.ebuild, files/openssl-1.0.2a-parallel-build.patch, diff --git a/dev-libs/openssl/Manifest b/dev-libs/openssl/Manifest index d9f3ec4d6b69..1e2fb3845891 100644 --- a/dev-libs/openssl/Manifest +++ b/dev-libs/openssl/Manifest @@ -29,9 +29,12 @@ AUX openssl-1.0.2-CVE-2015-0291.patch 16069 SHA256 be4f9fa463a027e7c77396a8d3ddc AUX openssl-1.0.2-ipv6.patch 18811 SHA256 9ff3150c75f3f3e6a9773ffe54d90994cbf68cc919134aea68e09e7ed921763d SHA512 58e293f8f19a3fad08729b842dd977b73fedb0c49208d87a056bfea857c0e2b79a310d7d098c04429b65564fce64defeda6d1dcc3068ad5a80ef276db6421e54 WHIRLPOOL 36a0fffc7238011b93077bed94c9507f2ffc1cf199e6c06e94d01589cdc84a6568b9122e1a120b8262bd0a1c43f25169a29796c92a78338dd9f03b4cc2cdf0b8 AUX openssl-1.0.2-parallel-build.patch 10661 SHA256 bc5622150a964dc2d9909f41557140b696ce1bdfa4e2b12cc3e0e51029ead32b SHA512 a4957304a4424016cd8a1c6552c422cd042d737e12f96235ec54d1e601ccbe8cb79d931ac8777d1a599bd4a70eac4e6700a24362f14fb04eb273df82f2de0d01 WHIRLPOOL 5b34e45dcb0db6649e26d275925ca008f5201afbc22184e15c5324513bc0ed40ee271a70686e10a20bb219b3c4bd2148323b317ead97cdc27a3c897c0a07d228 AUX openssl-1.0.2-s_client-verify.patch 648 SHA256 b6ca2278dd9833f87a1d0037cb3cac8aee0f8326ff13ece1f08a536b8545eb77 SHA512 78b09ae700096205582785584a268776af46fc5bc94a0faa1ce6087ffcc945649e69269ff7fa88dedd5df1a5cdecc53e885de1e39506470f23b02028ca962104 WHIRLPOOL 8e7c90d37c1736b4b2f2c38d1c12dcfee4996a50a2a7dd07645a0c0b6616006d11232dd0f88ab735833e1c46aa171ceb5e1288c3d57296010bdda59295de7599 -AUX openssl-1.0.2a-malloc-typo.patch 1388 SHA256 0e1fb553295c90082f7ca8410f4bf5d879b73fb194b7ca2c42ad2c070f575110 SHA512 03d7d3d200a8e5ab72388370d6124769fa20e7d6c014f6078f5d690aa4616909c1ba2e1c5b5c873177a71794b00cab201142a5b22683ff6b943b84dbf13737b0 WHIRLPOOL a6919aa7b832192f40288d18cc42079629829fa8eb5a90c6232d52fe6b7433e9b44a36f2c63288aac9ff66886b5129d178d5303e65dc7194d858c3eea5730fd8 -AUX openssl-1.0.2a-parallel-build.patch 11315 SHA256 eb5bd4e1eefb386b2fa60f39d08d9190a645bf09131140499db5bfc07e1ae539 SHA512 62fcde74c57b45047d43d8b24bfeae131bbca61c927eb7450811e9672ba2409575fe0e39ae25963609e38c5cd6a823eb11e2cec329a9a78b6a906209cf39ccd4 WHIRLPOOL 992a5b209415459084312019ee65bc22352592eeda4e5419abc64d5bbb07cd7eef49e3135bfaa38595133c5b5e4574ae87104b422c0fabe8507486289153fee0 -AUX openssl-1.0.2a-x32-asm.patch 1487 SHA256 9f25af447f6acd835254ef42a04aa64ca7c70be82190093ce0cbc302df65bda4 SHA512 65462611b5ed58d1c295b63f59ede54f097aa67994fa00d0205148fd9b2da682c7de317ebd3c31b38317e587de9097bd928be7fd265d49b8e6d8743f57021255 WHIRLPOOL 1f7e13282adf4cd9d6239720675e91efd784ca9e44cfc6e5ad453bb56e2ab05f4021c56347a4879444ef4be136fe334e3600186889b8a585b0b95fc8af36ed4a +AUX openssl-1.0.2a-malloc-typo.patch 1440 SHA256 f911737f715f8af87786cc46a196b78c7d9af0fbb4af77bff178dc817ee9d9c6 SHA512 5b4c9bcd24a80bcb17e21ffdd88b1a58f1794ae6069e773483ed1595022d212ace521aef3faa90df489b549fc60c0e871d5d711859a599b6373dc67af29a0c4b WHIRLPOOL 18d3e7b1df3b15b08aaa260081d54125c9f0cdc65c77ccc0ae5c642c5752fcb58e31e905bb1fb6c73736d1dee3f22dd1a7c399df8b3f6baeb47e9dbae5d26937 +AUX openssl-1.0.2a-parallel-build.patch 9573 SHA256 db2dcdb27062923d2818f988787bb802c292053d1d8a5bf032800e658c7bd196 SHA512 eef70d7662fe1c84ea8a998b1b394900805a91ae371a99e45ea07725ac218ffd6be5b75add647724e1a6b5556884bcb4a5be31b97254fd62b63aeead7ff701e3 WHIRLPOOL cbd5822db1da8e59b604f502856586c7251aa31594eefb3cfb4c0aa6bc33587df6298a245b8f733486d7a3f053bb33ff29066725dd4430dc9f9b2c54bb5464dc +AUX openssl-1.0.2a-parallel-install-dirs.patch 2013 SHA256 eddd8a5123748052c598214487ac178e4bfa4e31ba2ec520c70d59c8c5bfa2e9 SHA512 c3b97fa318b9627bcaf4f39d1615c46322c1081cded135af5b5115beb2be74ead46084119fce5643b12c54b6851c33bfb624694ccf6f3d32060b6d56239d3674 WHIRLPOOL 59228ad2796e28edf7508a3b3bbdab36f7b678922566a1ed43a86727371c7b6b8c362431f49812e7c60a9aa72134d7fffaeb7be0efb6b5ca0f10e1c716b6a557 +AUX openssl-1.0.2a-parallel-obj-headers.patch 1359 SHA256 147c3eeaad614c044749ea527cb433eae5e2d5cad34a78c6ba61cd967bfbe01f SHA512 ac8224bc088099d72e7e6761303b8653766372bd027536951c458bd22fd0526163de22bf27675e0292a12ae7257a5c1edf26a92747e00cc139e13e1b624b4072 WHIRLPOOL 58b1de7c90ed96a077065ff6abfdeaffd98ce68cc9a2551dab7ff3d04e9b38be8d4bb94a6830f4e6c3d997747345c43f76c31f4c7b825f56fd488e85b9c6179e +AUX openssl-1.0.2a-parallel-symlinking.patch 1967 SHA256 5be3c20d64cadaed7bc4e8e500e8a67faafded7fb326779620fdb29397c44d87 SHA512 ee6c057134b31a96af5ffc3558011f8f4ffda4a2ceb2967f32cd01b6ee0ce7b386fd195c19936923404da46c33eee38a2bab335da1a16b835ac9f9d02157bdf6 WHIRLPOOL daf64bf9d14b0516b4e9dd75d3b806b1e389defe604de9e0d19860ef10436b9a534d14cfec6422c85e9134998dfe9917d257730036daf813fce0ae7d1f6be284 +AUX openssl-1.0.2a-x32-asm.patch 1561 SHA256 8bcff04217c5ad82448e27d14f3559a157c2cad89b5fb2b6af701fff1664f86d SHA512 fbb23393e68776e9d34953f85ba3cbb285421d50f06bd297b485c7cffc8d89ca8caff6783f21038ae668b5c75056c89dc652217ac8609b5328e2c28e70ac294c WHIRLPOOL 70163beaed966de948562c3a633828846d12eda7b04526c7e33746c67af5a20ecf47e9e9e5cce33abf7444676f4b15b770204e95db75d0b91a9db13c46ff92bb DIST openssl-0.9.8ze.tar.gz 3734873 SHA256 ee3da602826e975b47e4d7af8a27be8258c160876194898c58881eab814b55b8 SHA512 6ab08065ab2cdf6699e462e2a082e6d4c21f027383e12d4dd1d0dce2a4073ae52230494215b3fe24b8a8d73f5f5dd3a1fe53c66acd8db6e162e4bf3636e229c3 WHIRLPOOL 8a5de0aed7b48007b3b8092726c9c8eb6771c49d388baaff4d7ba3591be0b1856cb17842db5bc608994b38f5d87a8b07a441c874523e577b786a4612bba7789f DIST openssl-0.9.8zf.tar.gz 3822386 SHA256 d5245a29128984192acc5b1fc01e37429b7a01c53cadcb2645e546718b300edb SHA512 8a68f024c31b7de25e19732ad556a27d69cface8e7a546ca4221873053a270e5e36336626f7fe857bbbec5427204bddbb5fc9dea8d7a187a8db6719d970431ab WHIRLPOOL 842e5bc71a12bf363fe797e95faf988ae949aa15f8faee935ee8861e4093e9d4e0b766b24dda8d415f29d2ee2821050cfc3ce095d265d59574e7fe0af4024c66 DIST openssl-1.0.0r.tar.gz 4095201 SHA256 6538b33a1b95681c86ac8c5cc54d22835f0f0a5bf42ee6df4138c672d7e75f17 SHA512 a65292a7b43f7d0637952476356a95908b5843ca17f717158dd4d2171113192f04c92f4f9133bb4750172f06367dae64733aa239b90c52d4d9323f467012428f WHIRLPOOL 71c7d726a3a5d70735d4b34c3e00c15fa2ef8640801f8a265e4e92cf01db4a517630084dd7632850f3df6f4dbd848a3a7ec908a71db996a45c29f1ac53ac7877 @@ -46,23 +49,23 @@ EBUILD openssl-1.0.0r.ebuild 7105 SHA256 9a73119cf74c7e219a4a25edfb3b8510f46a97b EBUILD openssl-1.0.1l-r1.ebuild 8880 SHA256 eed2ddde72a8e8d33027839ea595c1cac8ce93168db7aaa11ec909de1c89f6a4 SHA512 95983b1fbc937baa686b4265abf80b41c804946a8db15b1b1e7e282b408d61ab0d7c69c1970763b34a45876a4c822a662fafa47e976df797930d75ac458f7330 WHIRLPOOL 11d26c49e525bc162cadf7ab7ea068f480b21e9fe7e5b61eb8552c050d34371f5d4cf23257cf07c42b152dfdca0efbf78441f9942480bedf4b2ba032ac074903 EBUILD openssl-1.0.1m.ebuild 8825 SHA256 84b6db3267866e27dd0e20a446aa48b1ed153d9d863ee2ac40abb581a66781c5 SHA512 9a91a519fb3d3e7b1587b9ba79e0cadfc4a8ffd6d4dd0727131e880f15cef63a886284a3bfa22b7194229aefbc40750205ba65d011246b4c03112cc8ee2692f4 WHIRLPOOL 819642d7f8e8a13aabd816a680b475de737d259d7a260c5d621454bae3425034820c916f0d61ef023fa71ab723badb64fef2f508bd1383d6fafe9d953bbcbd7b EBUILD openssl-1.0.2-r3.ebuild 8925 SHA256 16b32e6b3a83e270e067558d29a80578576e23adca0f35a5a4176492c32170cf SHA512 25ca31b089457de899b1c2ba409041f4b1b866830aa27ac5b62e344f6141e4587d54d5c1d7e5530c3df36e6093613c8d34a0d7e96553f3427f5c374e498621dd WHIRLPOOL 38cf25a45265d8f01973f982c5c7bb16df6bd5e7ac4721f5aa84e8c95a066284ed538c688489bb06af7067b07bb1590ddcfee5be31a82aeca82f46bd25c04219 -EBUILD openssl-1.0.2a.ebuild 8892 SHA256 2fa0a89a32176ac0d385e869c709d7ea2e90a80f05af7c4c010d81fcbc37871b SHA512 955ba1256ee1136bd97d1075b31d6dcae8e0db163cd9603b0b99afff3bb7ff816833d30e69766b09efa648463129124f863408a4c7937eef44857d41980a0c62 WHIRLPOOL 30c6c6d9a955fc4be9066a5aada55ea074b151a9f8652fde27b88ddf49bfd29094acaadf320c5bdbde6c7c1bbea4bee7937c2dbadcec17a570f5a9b855f44da4 -MISC ChangeLog 99746 SHA256 07dbb2e005d3063619c80a41449a3d3bc7c1c80c1926e80021ddf734a6d1c677 SHA512 80b9712f357692b5c9972c592ecabfc4be4327e3174c57d1fb40cf8ac88e0d733cfd1dc44b5a8bdc7e6a3d4bc8c112fdb5f2ea7c6577af92d97c38a5e1ba3052 WHIRLPOOL e5ef6bc2d0335596959d84f9ea5ba7ed5fce5788f4016623a5e0bf1e7f074084a470ff60c70b7e9f2a5a69bed024eacfba89875e3cba0f136eff7f0a4eb91693 +EBUILD openssl-1.0.2a.ebuild 9081 SHA256 a19ab518fdf35f21e2c8e57c57dc641784ba367741a17358a4645c7659822ce5 SHA512 fbe27fdf9f9c9160b4687f83f6836f0c4f43cedc0e0a70797fa33c803c6e9cd6cc6260dc406c0449b9bcd977e0175df836abf9498a33a8192040e0bb5275d15d WHIRLPOOL 98c4cedc4eefbf809bf2eb8fc885ea09315ed38b0aa9816d942afd78f4c6497b3114cb21f8d5d6746b95ec3c8f61625eda1b00abb0ebd7877e8014f8b01c1dff +MISC ChangeLog 100449 SHA256 5012132dfce85ff781c4b6dfcda271152238ee2b40fe255a955136c8272616e9 SHA512 2219a7a33492d59f5bf5d02a0e6b7b76d1f54f1453f5bef312d8f55ebb9954f74f63de499a02720464b12738a0d9c2fc36bd020c875c597e23a7fdd79954a19a WHIRLPOOL 58afbb6271d7000def3d67a41a9a454249f8d6a6255a8b1f1510ae6c4d9704d435430f77ddde338ff2064549641270b23fe13cc98be268aa753c0bb57405ba33 MISC metadata.xml 730 SHA256 229ceddc7f42d44d7cee107774dc210810cfcf866040306eb95e1c09da0279fc SHA512 31e307f60d08e38d39892f13f8d7bff9b530bf99d489983d224c9a0d061593448732f2a60beb70abc560672b49347567e20ea5692892274882bf4e955cbd52cd WHIRLPOOL edbcd6c8010d6282a798faf68279bb5a74420588f339ee2c59d110546a61d2911b30071bac8f7e2b60b33711d4d13b5226c6b5a195aa458ab8502fa1fe520c90 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 -iQIcBAEBCAAGBQJVDU/SAAoJEPGu1DbS6WIAbaQQAJmv3776CVOP3AL1csnX7ZPl -FQ1NAAFXn6YFmiPdPVXbDMymNGGU3UrpyANBwKcoQZFx3n2Gs9nhbl3O6Mth0Zfj -tjFY5sZv7sbp07WQ3itPMUteogkpegGHGRc8DzlNH7cHI964qlIy/2f0ifYuLh9+ -fMBY3PZC3sytM8k9baltXbw6fabfpHZtPrPSMwxFs/5tzTs6KQ4XVRGLxAbe5c71 -TGQI3K93O39Wvuy3llcShWCurSQUnHOcUEqJ7YKyo/8WLQMNbTpqUQoA1h7nfdwT -iiUR98MbyV0Uy0U8QRCSDBa5uqBnJSG5SCmvg4Z2s9atMzjZeDE3V5Xqt63WNW9p -Cf9Zw1W9u8vKO2UDjeynn1zLDqgFrzZKCERUm1lS3cKDFqtLliuLgXOPzZp+LwAc -tQ8oaNiHSoqT6WO9jbeyvkmNsfRVJXkyDQZX3/4jXOr4nVsq0bwSYG2lJu01kbyc -Fuu7g0dNKnCOXQOFo8SPxCEgundsG/Y/YMpIS/9M0LgLTq8zVCsAQ+CqV49pftjt -holCYswUUOiDvGnKrskRNvb1gR4jzDiKFtunLezCK04r13v5UQL8m8X+JGoQS6XT -Bh11ZDASl8HMMoUhloeDWQZFsClMrEwbKq6Oz3yB335aTMshdaph2eKhGpxeggFz -FXE3xz9s42BL2UY8BR6D -=MhMh +iQIcBAEBCAAGBQJVHijPAAoJEPGu1DbS6WIAY2AP/A/abEL6tUFK8bEmrwRdk5vH +w7sQHPbXUNevubaNrBRx0yN9infODQrRYEihVmDFO2ZdpPk3HBPFSVmrWvNMJ3to +egvsoBAc76xMmzLXt+cxLl//yD02nWA4sBOkRzZYxjK0xgKck4jiDRlxErMniW82 +mGgl4zPMAd2/b0YSel+uex3TamWfL0yqhljypoHIvwL0sJDwVoE+ldAbocHq8ag+ +0CkbgG7d86Ir8v/b+kN1NhfZHJONh+78/BFUG2Os/+SO6C7WYOjo3OFP1hCNdGb8 +xbMi0YFFhoRTIKslyIYX6dfP1IoRsN43fA6p4FfFMsxzELqGnkB4uFPmiPCfXA4t +i4P7ydhGcuD1oyMInKPuSTIpOMZF6RzBn6v+jHQ7KwGOQx60lKAUze1JFc5keG4T +RhaGZqO3JAMq6xQU2AS4V9CtFvYIAc33PSEG/swJz9n9hjSULSL4Cykk3ZLQjAMl +m+Y+Rl7yd1cmpHnkLyeo2lt+zD+hLH69ll9agsFeO7zYcrPPEKlIZ3xy//yRZjs1 +3GDDdkfYgVdV6SFijg58T7oeXJkWafvByB24whkyHInAu9YDe9vkZpgNR9pwHiX6 +hEtECPxD790n73av2vNGKFlH07j3g0Q6TSFLvnSR8OduB4vzba4QdiM2FhmZlZdo +eTIIhbdyKwu9wpe2JieS +=Ya9F -----END PGP SIGNATURE----- diff --git a/dev-libs/openssl/files/openssl-1.0.2a-parallel-symlinking.patch b/dev-libs/openssl/files/openssl-1.0.2a-parallel-symlinking.patch new file mode 100644 index 000000000000..d894f2c87e5f --- /dev/null +++ b/dev-libs/openssl/files/openssl-1.0.2a-parallel-symlinking.patch @@ -0,0 +1,61 @@ +From cc81af135bda47eaa6956a0329cbbc55bf993ac1 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Fri, 3 Apr 2015 01:16:23 -0400 +Subject: [PATCH] fix race when symlink shareds libs + +When the crypto/ssl targets attempt to build their shared libs, they run: + cd ..; make libcrypto.so.1.0.0 +The top level Makefile in turn runs the build-shared target for that lib. + +The build-shared target depends on both do_$(SHLIB_TARGET) & link-shared. +When building in parallel, make is allowed to run both of these. They +both run Makefile.shared for their respective targets: +do_$(SHLIB_TARGET) -> + link_a.linux-shared -> + link_a.gnu -> + ...; $(LINK_SO_A) -> + $(LINK_SO) -> + $(SYMLINK_SO) +link-shared -> + symlink.linux-shared -> + symlink.gnu -> + ...; $(SYMLINK_SO) + +The shell code for SYMLINK_SO attempts to do a [ -e lib ] check, but fails +basic TOCTOU semantics. Depending on the load, that means two processes +will run the sequence: + rm -f libcrypto.so + ln -s libcrypto.so.1.0.0 libcrypto.so + +Which obviously fails: + ln: failed to create symbolic link 'libcrypto.so': File exists + +Since we know do_$(SHLIB_TARGET) will create the symlink for us, don't +bother depending on link-shared at all in the top level Makefile when +building things. + +Reported-by: Martin von Gagern +URL: https://bugs.gentoo.org/545028 +--- + Makefile.org | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Makefile.org b/Makefile.org +index 890bfe4..576c60e 100644 +--- a/Makefile.org ++++ b/Makefile.org +@@ -350,7 +350,10 @@ link-shared: + libs="$$libs -l$$i"; \ + done + +-build-shared: do_$(SHLIB_TARGET) link-shared ++# The link target in Makefile.shared will create the symlink for us, so no need ++# to call link-shared directly. Doing so will cause races with two processes ++# trying to symlink the lib. ++build-shared: do_$(SHLIB_TARGET) + + do_$(SHLIB_TARGET): + @ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \ +-- +2.3.4 + diff --git a/dev-libs/openssl/openssl-1.0.2a.ebuild b/dev-libs/openssl/openssl-1.0.2a.ebuild index 6539d343081d..86acfdea4f06 100644 --- a/dev-libs/openssl/openssl-1.0.2a.ebuild +++ b/dev-libs/openssl/openssl-1.0.2a.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/openssl/openssl-1.0.2a.ebuild,v 1.8 2015/04/03 05:43:32 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-libs/openssl/openssl-1.0.2a.ebuild,v 1.9 2015/04/03 05:44:45 vapier Exp $ EAPI="4" @@ -62,6 +62,7 @@ src_prepare() { epatch "${FILESDIR}"/${PN}-1.0.2a-parallel-build.patch epatch "${FILESDIR}"/${PN}-1.0.2a-parallel-obj-headers.patch epatch "${FILESDIR}"/${PN}-1.0.2a-parallel-install-dirs.patch + epatch "${FILESDIR}"/${PN}-1.0.2a-parallel-symlinking.patch #545028 epatch "${FILESDIR}"/${PN}-1.0.2-ipv6.patch epatch "${FILESDIR}"/${PN}-1.0.2-s_client-verify.patch #472584 epatch "${FILESDIR}"/${P}-malloc-typo.patch #543828 -- 2.26.2