]> Pileus Git - ~andy/sunrise/commitdiff
dev-lang/dmd: Bump to 2.062. Keeping some older versions in case of regressions.
authorMarco Leise <marco.leise@gmx.de>
Fri, 22 Feb 2013 03:57:42 +0000 (04:57 +0100)
committerMarco Leise <marco.leise@gmx.de>
Fri, 22 Feb 2013 03:57:42 +0000 (04:57 +0100)
dev-lang/dmd/ChangeLog
dev-lang/dmd/Manifest
dev-lang/dmd/dmd-2.062.ebuild [moved from dev-lang/dmd/dmd-2.059.ebuild with 85% similarity]
dev-lang/dmd/files/2.059-issue-7907.patch [deleted file]
dev-lang/dmd/files/2.059-issue-7911.patch [deleted file]
dev-lang/dmd/files/2.059-issue-7922.patch [deleted file]
dev-lang/dmd/files/2.059-outOfMemoryError-undeprecation.patch [deleted file]
dev-lang/dmd/files/2.059-std-path-sep-deprecation.patch [deleted file]
dev-lang/dmd/files/dmd-2.059-makefile.patch [deleted file]
dev-lang/dmd/files/dmd-2.062-makefile.patch [new file with mode: 0644]

index 40681472d5b620d0365b85b241b36c01dd1e4374..f71f0f4db0ae1a60f5aa6131705fc58d760c829a 100644 (file)
@@ -2,6 +2,16 @@
 # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
 # $Header: $
 
+*dmd-2.062 (22 Feb 2013)
+
+  22 Feb 2013; Marco Leise (mleise) <marco.leise@gmx.de> -dmd-2.059.ebuild,
+  -files/2.059-issue-7911.patch,
+  -files/2.059-outOfMemoryError-undeprecation.patch,
+  -files/2.059-std-path-sep-deprecation.patch, -files/dmd-2.059-makefile.patch,
+  +dmd-2.062.ebuild, +files/dmd-2.062-makefile.patch,
+  -files/2.059-issue-7907.patch, -files/2.059-issue-7922.patch:
+  Bump to 2.062. Keeping some older versions in case of regressions.
+
 *dmd-2.061 (23 Jan 2013)
 
   23 Jan 2013; Marco Leise (mleise) <marco.leise@gmx.de> -dmd-2.058.ebuild,
index 4ba8511a1ed4d68e3e2da2a0bba14484fbaf4336..c4588e1ac2e618ff5662252f6369075e554513ce 100644 (file)
@@ -1,22 +1,17 @@
-AUX 2.059-issue-7907.patch 9542 SHA256 515861e0fd4e79b7cf1e3b401f2e32235d2bb4d3d7e7855e46da85925fe234ea SHA512 41348b0bde6e62fcc4c0283a477901253c69f8b2c90c62b92a1c137cd36423867d3f2fb5445afb694429928e9b8342417f068e70e9d739dfb01564f055ac6353 WHIRLPOOL dd4347e1e793671c41ff324cd5e1a0bf1647371f3e7a59a8e581971d2fed0636dfc0d9727a2bfd13d1160a3e8beb07581e1aeeb304d6a6554d7e8c73be763050
-AUX 2.059-issue-7911.patch 820 SHA256 ab15b4d821c902ff529ab97245ff954e66779b65ccfefcf6a638ae568ff66ffa SHA512 4bfc35be86c61c2ea8868d5dd99ba1a54ed6164be961a6b47ab72ce91d50efafbf23020a7bda9e69855c7f700f59c209e872db67e7954317509817ad93b51955 WHIRLPOOL e32e40423b2ce7b3416b6ef040ead609c9d3284af65312a285a1df2a74d15edfe0b0413793159a24ec5470a66850e3a13dd430260d515ed6b087aea0c6fb8a32
-AUX 2.059-issue-7922.patch 6229 SHA256 82c387f6321329a4763c689114d32e09ee9d0f4e92ed38c32f06f7948079d0fb SHA512 ef921d5ad643a54a670be2da3e7b4f5cbadcabfcfce74551d2731a4361acbf1bfe319ae17e3dc92d5230cdc8ddd8db4ef55081a6911db7d63233c7af8af991bc WHIRLPOOL 08ec13ac37f48e263e9a33640fb7cc56b9b7a99fa275ae79da50b4a2c65d7dd1c51283a1f693bd015dc32c65db1823432161f6aec4e986e2699088af8765f5fb
-AUX 2.059-outOfMemoryError-undeprecation.patch 553 SHA256 6b36b490cce2a9bc72a28adaf85887f30cb26999189e1c84e32d68820e72713a SHA512 5d538f1dc1da0a3f3919f9dc7f5f02465cd0cd38f2b1339a53cea8f882c7041e4ef37b08ffb14563ab2e20cae0fabd8b76dd59434a8acf105ce3c752db7f0405 WHIRLPOOL 30c7425274b813d76886e0c343be40fc7721807089f76f3ce56c512d1a3cde1b50f28bb8642688c18d9e6d18b9b1592fe07e957c67577bab220f40cd74268aac
-AUX 2.059-std-path-sep-deprecation.patch 1378 SHA256 b196c8a274bb5bd9268311fa6bdd14ecf3c42cd711ef12f016d3addff4ab980b SHA512 1239ffc0aca873eb20fb094a34cc47237f6702c9daf6955dd47df0b7920270b4460ab96c499e653a1244394385a9231fd86b74d5362d75546e0250083783991f WHIRLPOOL f7ef554f74f6e5d51be6a51405e8ef5f26c50fc6f3f84270c7e3d7f39217916d72666b6307fa605417920e1b148ec94ac321e465e89662ba92577e9ed8a7c12e
 AUX dmd-1.066-makefile.patch 16530 SHA256 df0c6db1578747b9cc5bbc9ccb14ab53599d7e2456d68f60d40ee98daa61dbb6 SHA512 4426b2acd6861418617d513d1809b6c79d2cba0c899b6bd5d233ea3a54894af8851fa06bb52607823ca4f7dcbb958e14057ff8e20d9eb686b99eff582e85fe63 WHIRLPOOL 29a6e32f13545e4aa6219462467327d980a63a0921288d4bdc45e3af7cd8c7875b10cc388a8f6dedb207fbd27ec3569bddc6402d4cf5acf3bd176021a670c732
-AUX dmd-2.059-makefile.patch 1843 SHA256 e8cb107bd1943950f077c696275e01920b1f0351ebcf1734f7dc862eb3392a9c SHA512 17b56c3d44d0a7c91105d2ea496f798b78ab1361ba790fbf7e64af0993a6906e7497719d8a9ef905fe2bc20904922eca17cb52443b75faab5a5f8050d3c3c0e2 WHIRLPOOL 4cd92627a92d6df2fdb9ebd39c711a1e49214c3a1a3ebd73811584a54e200afc0868fb25b8cbfb71d6fdb21dd95ec15bb7ed6d3953e2d5117aa52aab71795310
 AUX dmd-2.060-makefile.patch 782 SHA256 973b43d90be6d801254c7c07fb1cf57f790214d2bfab37e159e0026d21d0ff4e SHA512 d91c3c6856cf59cf1e930d153ee91ff5c6c680497a04d1ef169ffb28137b58ef721aaed1f9913c0f455716797e4e93f17f7b8ac3fb69658f8e0b1026ccf539e2 WHIRLPOOL d05c628261d95f08ec36cffd0af82d00f8422f58eb7dc67a5e37402c7834daa40cda82d3376cc181480caf14f47bcee1dd840d082e6856c58b6879f7492d5422
 AUX dmd-2.061-makefile.patch 767 SHA256 2f6f2743dc3665e27d90b1f5c0f347fa55b8a4b7f9d6c17de701f48c549a4b62 SHA512 980b43e8ff60f8849a5aa0f0429331336820d6b45c5864ffd0f09db341c4016b984121e082d32c59a5979d36acaaf563bc4f763330a0335a8b3bd321a54b698f WHIRLPOOL 3e3ed997eabb89414b739f55f7b8b24aa6b89d3aa0fc7475d8490c10edbfc1a61f13a01d4a9269addc5b08fa1bba8589c02180f8c5c45c6ab3ddf937f7d5bc78
+AUX dmd-2.062-makefile.patch 767 SHA256 2f6f2743dc3665e27d90b1f5c0f347fa55b8a4b7f9d6c17de701f48c549a4b62 SHA512 980b43e8ff60f8849a5aa0f0429331336820d6b45c5864ffd0f09db341c4016b984121e082d32c59a5979d36acaaf563bc4f763330a0335a8b3bd321a54b698f WHIRLPOOL 3e3ed997eabb89414b739f55f7b8b24aa6b89d3aa0fc7475d8490c10edbfc1a61f13a01d4a9269addc5b08fa1bba8589c02180f8c5c45c6ab3ddf937f7d5bc78
 AUX dmd.bashcomp 4486 SHA256 b679b0c676035eda48948eeb6c2a8184c6effdc97d8c98d1ca4b071f345e4ac6 SHA512 b54fd8b457be79d923bd7eacd4c98a5e5840a11b71a562c426bf60814ae0438123693e3295e35c1dbf1585b2568125209368fd0bf590b19addd963c5fde25f22 WHIRLPOOL 1fc1e2776813156798c298c28a7d5c6c0d46dd39bdce0fce00573a8f42ff2d99b3eeaea0eff28f9dc3663c61d67fe6b43b5550021093afd8b7d49ffc705ac815
 AUX slot-compat.patch 376 SHA256 d9f1f19b158c3cc52e133751e834460b12a0fa003192d50ba40421bf9ff56763 SHA512 d49c8768fc9c5169086e495c7fc93678747059e84ec6a6d105b11426f1d3b05ce0bc9a372d41960dd878274ce2ebf22b6ba6066be276b98ed728b5e46b1ed099 WHIRLPOOL d431e306e66e53fdf089d933ed9d42337e12805927b6e56641037d29d5566f6ce15f6d8439edd76b43b4158974d8bd96f35cd5ad1a254b7ce8e87863ca52c208
 AUX stackelf.patch 3527 SHA256 56835f1bb5b5f33edbb2bdf650bdb9e459f3670db205b2aeb0a367a868517a96 SHA512 62de8d7427bd05b77eaea14769dfa94621365b3b62e8126341d50c7fef89fd7552946c0bfb4c9fcccdb26f66deb2787b68fe56849b0d694b45007a84bec84a76 WHIRLPOOL 40925f60883ad2f736b6398da6253cd674590c9ef3cd7bce2d510e8f3e795db48ffa64b5ef0fe85562716dd633136eab55ec59f3fdc2f2aad76c3f702a94c8f3
 DIST dmd.1.066.zip 8958349 SHA256 26c421fdeaa3f81397cb9be858b8829eb01ebe11d6874c133b2ba2de249775fb
-DIST dmd.2.059.zip 26217241 SHA256 47c712f9c47e0ac156362dfbd5e90f6ed63eb6ffbd0cc96c7db3f9d48ccd9a50
 DIST dmd.2.060.zip 26819944 SHA256 8da5b46e34e476c29155eff8507aa7a6a82545b1e236f27bad2b6613d2165498 SHA512 fa92ca034d37f753c8cf9ffe281108bbd5df0a4385a2d2bf1a7f191d7fc2ca4de442d6d71f760fcbc949510dc6b82b198c4516db10315ad62ffe22056f8a4af2 WHIRLPOOL af485b084b32806ddf7528dc6e74dbd211bca78f05d91c548fe912fdf6be11467c49b5b21304438d12636ef2502d9d7db7d0733d60c13a3dd748a6ac569cfbd2
 DIST dmd.2.061.zip 31601020 SHA256 13b546b69d628280f245ab19bf4ed27ab66a0085afdaf950e075e68acc7f4c93 SHA512 e1b68c1c73158a0ff792624f5e1dbb7e40c70a149071a5649965125239ab12b3da8a90cf3ccd618a8ef5554a9bbeb1a848246004e1f17cf7f81fd229f44b190b WHIRLPOOL b9a663501176de646414df443e173404d40de2c75080e57ea1b0fb224cc8b14673dd91f11e4046867b309070d169eed9a7002ec55265e10fb5487fd4f72a098a
+DIST dmd.2.062.zip 31993170 SHA256 cd2e1f719713ad3c24637b253b39ebf7baa28eb24d991c7e0fb2de21da41c18a SHA512 9278278777a87aafee5d0aaf41420280cd37d359770e5768d90929a27f7f77d3e83182128fef756b2ddc9bd5e006a28cb9a208b371db3bdbdc0629682514a41c WHIRLPOOL 73b1ddff3308f27c95aa5d3ee399461d51c568491fd8a5bd825e1df345e4c919e42614ca4cd3233b0c960229646c8769bd06e653b1390c80c464d9ddfc682045
 EBUILD dmd-1.066.ebuild 2252 SHA256 bc8776c7523f3b513b5879939d47261585b9af73271aa9fc3af1adeb8c5cd42f SHA512 a8c494be8f03828e6894fbd1bb6c34b5e9943e0ec7d818de9a1dd3a68e28d911296a4877d2801bed3d688f5275e7c4d6f1be8f3dc9c12dd1a1b5cc20197468de WHIRLPOOL c5fcaa96b2355884d39285524ecf6820ff44c114f66c38b1e2533ce7762653eda72400056bced547c3f8f1ca08e471d8cda1138f1623c2a44eb634266be3a65c
-EBUILD dmd-2.059.ebuild 4626 SHA256 1229163a4e578785566412214396637a68b00bc42e44f5d92b59db39ec56b0c7 SHA512 449f1c8769a3b7d5b97b245d92bca3fabaf03975d8ba710a8821fbacb8e7872a7de01c5225a255427b8d32b519bd6d7b9363789063dedea77ee38dfa114f477d WHIRLPOOL c1b4ddf0db5744fab4143dcaac0ff79f538a809f26df8d0e44705cbd7093ac8c8c2a07b9437496658da2bb7097ed28c0de6ee40254e8b9a747b32a6e4ece7d12
 EBUILD dmd-2.060.ebuild 4371 SHA256 573d7a07e233f1085c0967077cf4e674cff9c87fc3049111aae9723b1b73e5ce SHA512 9a7b743d5ca7e3d9ac2986b69f7ab80baee9a3b761bbd9e60566a63d189a6330eafd9eadfe6b15305bb13137ce5d4748d43ab53346400dcb02ecf7e8e09b4282 WHIRLPOOL 5d3899ac8cedd78eed124b9e39b8d6454465c1674dcde3626e17e4d6ed75cc9734ec1da122685bf4081eae7a91298aef53b01ab53c3852765c3f3956e3c4a7f4
 EBUILD dmd-2.061.ebuild 4409 SHA256 990e51c0d857dac36118012730ca4b7b0af214656c090002f73fea06434a8c6c SHA512 89e47ae30477d3ae386ccb7baf3610f375dbe653782d20de264da53bd28441c5f42f6d939d616eb1631ec28b506f4da7088d44040012d697f61c56c9172621cf WHIRLPOOL 71513c3966ce9885e6ddec0179790f79120916e5ffd8b27b7533f657ec20cf9cb04980407b063f35daa4000d0143e7785fd2a9747176c8572eb3b2d957cf7dee
-MISC ChangeLog 3096 SHA256 006c973278c44206e4836f4d3cc28ff2a9c979f68fe054ff16bf6e9564d044f7 SHA512 d8986f6dfe85d076c08bfe4b78dd785cc22d54b44ae7608d92bdd567de9be70b6a1996f319dd1aede9d57784be4558b5337a708101370f3e1ee0dceedc857a39 WHIRLPOOL 4e1e697a9c1973d544ddfa15b1aa74b5de1ec3a1d478695446a1da0f928f505142fef642e268ab812f912f039a6d02ebb76c8538072737cb6afe73e7f9d64d78
+EBUILD dmd-2.062.ebuild 4483 SHA256 73ed974b03fb6d6176b352fabaf69b55085ad0e8f57ecba5302ac9226f212eb2 SHA512 d552491b299e90fe5b3aaf5bc158597f8ae37c60205c4c867d2113141ee0448e56542a323d680c5e22da09564a87bda1598887da04c31ddae33ec0429ac02e01 WHIRLPOOL df22c9fa4adbe39683a50d981f942d7172453e521c0373c7ee6c0e0c105611f9ef621d562c430765bf8bd9dab85f18ac6b484b17f082e0f036081b724832639d
+MISC ChangeLog 3552 SHA256 f6d4380d31764b4170f7097c84b0aa633d0c2874fc41b1d21b83852f99223325 SHA512 8e5a37c31ecb1e35f64976398aab810930713d0c8bb84b35b389f2164793e808b7e390369dd3b8dbfb03ad11405c44e645c19f2d5e77449808f2c3f92548d6fb WHIRLPOOL c8fbfb078219addef7b45698ed59582fa19a66048a2d9506cdbc4d65414879cfd38514c37e51669f2e4102c6636c0bfdc70bddd0f776f6fffb8ce1c0c655ec66
 MISC metadata.xml 377 SHA256 5edc28143917c389d89a0af6623313c5f7ef81bf55dba92b39c611014fa6ed9e SHA512 c859bd7805b4a42bfbc5418e151638b63fe08e74e76722f2f95f20702549ded7b06058ce893ae22bd490d8c591e0c41e5dea3c24f46cb3f85463bb75096accba WHIRLPOOL 39e25417c4b28c27d16380faf4ac1d037e3576e6966715ef0dbc3737bc8a7f4c84c1234544fcab3e325766475df63594c7d09c10ec351e47c7559bee85aaa4be
similarity index 85%
rename from dev-lang/dmd/dmd-2.059.ebuild
rename to dev-lang/dmd/dmd-2.062.ebuild
index a0a7dcaaa4bdfd43c68c98d13c936621c1c3a2b8..5c42ed2b0b671b46f84caff58d6cb4cb577562df 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1999-2012 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -7,8 +7,8 @@ EAPI="4"
 inherit eutils multilib bash-completion-r1
 
 DESCRIPTION="Reference compiler for the D programming language"
-HOMEPAGE="http://www.digitalmars.com/d/"
-SRC_URI="http://ftp.digitalmars.com/${PN}.${PV}.zip"
+HOMEPAGE="http://dlang.org/"
+SRC_URI="http://downloads.dlang.org.s3.amazonaws.com/releases/2013/${PN}.${PV}.zip"
 
 # DMD supports amd64/x86 exclusively
 KEYWORDS="-* ~amd64 ~x86"
@@ -45,22 +45,18 @@ src_prepare() {
 
        # misc patches for the build process
        epatch "${FILESDIR}/${P}-makefile.patch"
-       epatch "${FILESDIR}/${PV}-issue-7907.patch"
-       epatch "${FILESDIR}/${PV}-issue-7911.patch"
-       epatch "${FILESDIR}/${PV}-issue-7922.patch"
-       epatch "${FILESDIR}/${PV}-std-path-sep-deprecation.patch"
-       epatch "${FILESDIR}/${PV}-outOfMemoryError-undeprecation.patch"
 }
 
 src_compile() {
        # DMD
-       ln -s . "dmd/mars" || die "Failed to add recursive symbolic link to DMD sources."
+       # Temporary fix, for missing VERSION file in source distribution.
+       echo "${PV}" > VERSION || die "Failed to set DMD version."
        if use x86; then
                einfo 'Building DMD for x86 ...'
-               emake -C dmd -f posix.mak MODEL=32
+               emake -C dmd -f posix.mak TARGET_CPU=X86 MODEL=32
        elif use amd64; then
                einfo 'Building DMD for amd64 ...'
-               emake -C dmd -f posix.mak MODEL=64
+               emake -C dmd -f posix.mak TARGET_CPU=X86 MODEL=64
        fi
 
        # druntime & Phobos
@@ -97,7 +93,7 @@ src_install() {
        cd "dmd" || die
        cat > dmd.conf << EOF
 [Environment]
-DFLAGS=-I/usr/include/phobos2 -I/usr/include/druntime -L--no-warn-search-mismatch -L--export-dynamic -L-lrt
+DFLAGS=-I/usr/include/phobos2 -I/usr/include/druntime -L--no-warn-search-mismatch -L--export-dynamic
 EOF
        insinto /etc
        doins dmd.conf
@@ -120,10 +116,10 @@ EOF
 
                # Bundled pre-compiled tools
                if use amd64; then
-                       dobin ../linux/bin64/{dumpobj,obj2asm,rdmd}
+                       dobin ../linux/bin64/{ddemangle,dman,dumpobj,obj2asm,rdmd}
                fi
                if use x86; then
-                       dobin ../linux/bin32/{dumpobj,obj2asm,rdmd}
+                       dobin ../linux/bin32/{ddemangle,dman,dumpobj,obj2asm,rdmd}
                fi
        fi
 
diff --git a/dev-lang/dmd/files/2.059-issue-7907.patch b/dev-lang/dmd/files/2.059-issue-7907.patch
deleted file mode 100644 (file)
index e04d226..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-diff -Nurp a/src/phobos/std/conv.d b/src/phobos/std/conv.d
---- a/src/phobos/std/conv.d    2012-04-17 12:02:10.824875716 +0200
-+++ b/src/phobos/std/conv.d    2012-04-17 12:15:10.654126508 +0200
-@@ -101,6 +101,12 @@ private
-         formatValue(w, src, f);
-         return w.data;
-     }
-+
-+    template isEnumStrToStr(S, T)   // @@@Workaround@@@
-+    {
-+        enum isEnumStrToStr = isImplicitlyConvertible!(S, T) &&
-+                              is(S == enum) && isSomeString!T;
-+    }
- }
- /**
-@@ -250,7 +256,7 @@ If the source type is implicitly convert
- to) simply performs the implicit conversion.
-  */
- T toImpl(T, S)(S value)
--    if (isImplicitlyConvertible!(S, T))
-+    if (isImplicitlyConvertible!(S, T) && !isEnumStrToStr!(S, T))
- {
-     alias isUnsigned isUnsignedInt;
-@@ -1032,8 +1038,7 @@ unittest
- /// ditto
- T toImpl(T, S)(S s)
--    if (!isImplicitlyConvertible!(S, T) &&
--        is(S == enum) &&
-+    if (is(S == enum) &&
-         isSomeString!T)
- {
-     return toStr!T(s);
-@@ -1042,21 +1047,26 @@ T toImpl(T, S)(S s)
- unittest
- {
-     debug(conv) scope(success) writeln("unittest @", __FILE__, ":", __LINE__, " succeeded.");
--    enum E { a, b, c }
--    assert(to! string(E.a) == "a"c);
--    assert(to!wstring(E.b) == "b"w);
--    assert(to!dstring(E.c) == "c"d);
--
--    enum F : real { x = 1.414, y = 1.732, z = 2.236 }
--    assert(to! string(F.x) == "x"c);
--    assert(to!wstring(F.y) == "y"w);
--    assert(to!dstring(F.z) == "z"d);
-+
-+    enum EB { a = true }
-+    enum EU { a = 0, b = 1, c = 2 }     // base type is unsigned
-+    enum EI { a = -1, b = 0, c = 1 }    // base type is signed (bug 7909)
-+    enum EF : real { a = 1.414, b = 1.732, c = 2.236 }
-+    enum EC { a = 'a', b = 'b' }
-+    enum ES : string { a = "aaa", b = "bbb" }
-+
-+    foreach (E; TypeTuple!(EB, EU, EI, EF, EC, ES))
-+    {
-+        assert(to! string(E.a) == "a"c);
-+        assert(to!wstring(E.a) == "a"w);
-+        assert(to!dstring(E.a) == "a"d);
-+    }
-     // Test an value not corresponding to an enum member.
--    auto o = cast(E)5;
--    assert(to! string(o) == "cast(E)5"c);
--    assert(to!wstring(o) == "cast(E)5"w);
--    assert(to!dstring(o) == "cast(E)5"d);
-+    auto o = cast(EU)5;
-+    assert(to! string(o) == "cast(EU)5"c);
-+    assert(to!wstring(o) == "cast(EU)5"w);
-+    assert(to!dstring(o) == "cast(EU)5"d);
- }
- /// ditto
-@@ -1073,7 +1083,7 @@ deprecated T toImpl(T, S)(S s, in T left
- /// ditto
- T toImpl(T, S)(S b)
--    if (is(Unqual!S == bool) &&
-+    if (isBoolean!S &&
-         isSomeString!T)
- {
-     return toStr!T(b);
-@@ -1090,7 +1100,7 @@ unittest
- /// ditto
- T toImpl(T, S)(S c)
--    if (isSomeChar!(Unqual!S) &&
-+    if (isSomeChar!S &&
-         isSomeString!T)
- {
-     return toStr!T(c);
-@@ -1132,7 +1142,7 @@ unittest
- /// ditto
- T toImpl(T, S)(S input)
--    if (isIntegral!S && isUnsigned!S &&
-+    if (isIntegral!S &&
-         isSomeString!T)
- {
-     return toStr!T(input);
-@@ -1149,26 +1159,7 @@ unittest
-         assert(to!string(to!Int(9)) == "9");
-         assert(to!string(to!Int(123)) == "123");
-     }
--}
--
--/// ditto
--T toImpl(T, S)(S value)
--    if (isIntegral!S && isSigned!S &&
--        isSomeString!T)
--{
--    return toStr!T(value);
--}
--unittest
--{
--    debug(conv) scope(success) writeln("unittest @", __FILE__, ":", __LINE__, " succeeded.");
--    assert(wtext(int.max) == "2147483647"w);
--    assert(wtext(int.min) == "-2147483648"w);
--    assert(to!string(0L) == "0");
--}
--
--unittest
--{
-     foreach (Int; TypeTuple!(byte, short, int, long))
-     {
-         debug(conv) scope(success) writeln("unittest @", __FILE__, ":", __LINE__, " succeeded.");
-@@ -1184,9 +1175,17 @@ unittest
-     }
- }
-+unittest
-+{
-+    debug(conv) scope(success) writeln("unittest @", __FILE__, ":", __LINE__, " succeeded.");
-+    assert(wtext(int.max) == "2147483647"w);
-+    assert(wtext(int.min) == "-2147483648"w);
-+    assert(to!string(0L) == "0");
-+}
-+
- /// ditto
- T toImpl(T, S)(S value, uint radix)
--    if (isIntegral!(Unqual!S) &&
-+    if (isIntegral!S &&
-         isSomeString!T)
- in
- {
-@@ -1194,7 +1193,7 @@ in
- }
- body
- {
--    static if (!is(Unqual!S == ulong))
-+    static if (!is(IntegralTypeOf!S == ulong))
-     {
-         enforce(radix >= 2 && radix <= 36, new ConvException("Radix error"));
-         if (radix == 10)
-@@ -2076,24 +2075,25 @@ Target parse(Target, Source)(ref Source
-         ~ to!string(s) ~ "'");
- }
--//@@@BUG4737@@@: typeid doesn't work for scoped enum with initializer
--version(unittest)
--{
--    private enum F : real { x = 1.414, y = 1.732, z = 2.236 }
--}
- unittest
- {
-     debug(conv) scope(success) writeln("unittest @", __FILE__, ":", __LINE__, " succeeded.");
--    enum E { a, b, c }
--    assert(to!E("a"c) == E.a);
--    assert(to!E("b"w) == E.b);
--    assert(to!E("c"d) == E.c);
--    assert(to!F("x"c) == F.x);
--    assert(to!F("y"w) == F.y);
--    assert(to!F("z"d) == F.z);
-+    enum EB : bool { a = true, b = false, c = a }
-+    enum EU { a, b, c }
-+    enum EI { a = -1, b = 0, c = 1 }
-+    enum EF : real { a = 1.414, b = 1.732, c = 2.236 }
-+    enum EC : char { a = 'a', b = 'b', c = 'c' }
-+    enum ES : string { a = "aaa", b = "bbb", c = "ccc" }
-+
-+    foreach (E; TypeTuple!(EB, EU, EI, EF, EC, ES))
-+    {
-+        assert(to!E("a"c) == E.a);
-+        assert(to!E("b"w) == E.b);
-+        assert(to!E("c"d) == E.c);
--    assertThrown!ConvException(to!E("d"));
-+        assertThrown!ConvException(to!E("d"));
-+    }
- }
- version (none)  // TODO: BUG4744
-diff -Nurp a/src/phobos/std/stdio.d b/src/phobos/std/stdio.d
---- a/src/phobos/std/stdio.d   2012-04-17 12:02:10.957874054 +0200
-+++ b/src/phobos/std/stdio.d   2012-04-17 12:15:10.648126586 +0200
-@@ -665,19 +665,19 @@ arguments in text format to the file. */
-         foreach (arg; args)
-         {
-             alias typeof(arg) A;
--            static if (isSomeString!A && !is(A == enum))
-+            static if (isSomeString!A)
-             {
-                 put(w, arg);
-             }
--            else static if (isIntegral!A && !is(A == enum))
-+            else static if (isIntegral!A)
-             {
-                 toTextRange(arg, w);
-             }
--            else static if (isBoolean!A && !is(A == enum))
-+            else static if (isBoolean!A)
-             {
-                 put(w, arg ? "true" : "false");
-             }
--            else static if (isSomeChar!A && !is(A == enum))
-+            else static if (isSomeChar!A)
-             {
-                 put(w, arg);
-             }
-diff -Nurp a/src/phobos/std/traits.d b/src/phobos/std/traits.d
---- a/src/phobos/std/traits.d  2012-04-17 12:02:10.897874804 +0200
-+++ b/src/phobos/std/traits.d  2012-04-17 12:15:10.647126599 +0200
-@@ -2693,7 +2693,7 @@ unittest
- /*
-  */
--template BooleanTypeOf(T)
-+template BooleanTypeOf(T) if (!is(T == enum))
- {
-            inout(bool) idx(        inout(bool) );
-     shared(inout bool) idx( shared(inout bool) );
-@@ -2727,7 +2727,7 @@ unittest
- /*
-  */
--template IntegralTypeOf(T)
-+template IntegralTypeOf(T) if (!is(T == enum))
- {
-            inout(  byte) idx(        inout(  byte) );
-            inout( ubyte) idx(        inout( ubyte) );
-@@ -2786,7 +2786,7 @@ unittest
- /*
-  */
--template FloatingPointTypeOf(T)
-+template FloatingPointTypeOf(T) if (!is(T == enum))
- {
-            inout( float) idx(        inout( float) );
-            inout(double) idx(        inout(double) );
-@@ -2825,7 +2825,7 @@ unittest
- /*
-  */
--template NumericTypeOf(T)
-+template NumericTypeOf(T) if (!is(T == enum))
- {
-     static if (is(IntegralTypeOf!T X))
-         alias X NumericTypeOf;
-@@ -2853,7 +2853,7 @@ unittest
- /*
-  */
--template UnsignedTypeOf(T)
-+template UnsignedTypeOf(T) if (!is(T == enum))
- {
-     static if (is(IntegralTypeOf!T X) &&
-                staticIndexOf!(Unqual!X, UnsignedIntTypeList) >= 0)
-@@ -2862,7 +2862,7 @@ template UnsignedTypeOf(T)
-         static assert(0, T.stringof~" is not an unsigned type.");
- }
--template SignedTypeOf(T)
-+template SignedTypeOf(T) if (!is(T == enum))
- {
-     static if (is(IntegralTypeOf!T X) &&
-                staticIndexOf!(Unqual!X, SignedIntTypeList) >= 0)
-@@ -2875,7 +2875,7 @@ template SignedTypeOf(T)
- /*
-  */
--template CharTypeOf(T)
-+template CharTypeOf(T) if (!is(T == enum))
- {
-            inout( char) idx(        inout( char) );
-            inout(wchar) idx(        inout(wchar) );
-@@ -2930,7 +2930,7 @@ unittest
- /*
-  */
--template StaticArrayTypeOf(T)
-+template StaticArrayTypeOf(T) if (!is(T == enum))
- {
-     inout(U[n]) idx(U, size_t n)( inout(U[n]) );
-@@ -2961,7 +2961,7 @@ unittest
- /*
-  */
--template DynamicArrayTypeOf(T)
-+template DynamicArrayTypeOf(T) if (!is(T == enum))
- {
-     inout(U[]) idx(U)( inout(U[]) );
-@@ -3001,7 +3001,7 @@ unittest
- /*
-  */
--template ArrayTypeOf(T)
-+template ArrayTypeOf(T) if (!is(T == enum))
- {
-     static if (is(StaticArrayTypeOf!T X))
-         alias X ArrayTypeOf;
-@@ -3017,7 +3017,7 @@ unittest
- /*
-  */
--template StringTypeOf(T) if (isSomeString!T)
-+template StringTypeOf(T) if (!is(T == enum) && isSomeString!T)
- {
-     alias ArrayTypeOf!T StringTypeOf;
- }
-@@ -3047,7 +3047,7 @@ unittest
- /*
-  */
--template AssocArrayTypeOf(T)
-+template AssocArrayTypeOf(T) if (!is(T == enum))
- {
-        immutable(V [K]) idx(K, V)(    immutable(V [K]) );
-@@ -3279,7 +3279,10 @@ Detect whether we can treat T as one of
-  */
- template isSomeString(T)
- {
--    enum isSomeString = isNarrowString!T || is(T : const(dchar[]));
-+    static if (is(T == enum))
-+        enum isSomeString = false;
-+    else
-+        enum isSomeString = isNarrowString!T || is(T : const(dchar[]));
- }
- unittest
diff --git a/dev-lang/dmd/files/2.059-issue-7911.patch b/dev-lang/dmd/files/2.059-issue-7911.patch
deleted file mode 100644 (file)
index 839e0bf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Nurp a/src/dmd/attrib.c b/src/dmd/attrib.c
---- a/src/dmd/attrib.c 2012-04-17 12:02:10.224883217 +0200
-+++ b/src/dmd/attrib.c 2012-04-17 12:31:56.293554287 +0200
-@@ -1402,6 +1402,23 @@ void StaticIfDeclaration::setScope(Scope
-     // But do set the scope, in case we need it for forward referencing
-     Dsymbol::setScope(sc);
-+
-+    // Set the scopes for both the decl and elsedecl, as we don't know yet
-+    // which will be selected, and the scope will be the same regardless
-+    Dsymbols *d = decl;
-+    for (int j = 0; j < 2; j++)
-+    {
-+        if (d)
-+        {
-+           for (size_t i = 0; i < d->dim; i++)
-+           {
-+               Dsymbol *s = (*d)[i];
-+
-+               s->setScope(sc);
-+           }
-+        }
-+        d = elsedecl;
-+    }
- }
- void StaticIfDeclaration::semantic(Scope *sc)
diff --git a/dev-lang/dmd/files/2.059-issue-7922.patch b/dev-lang/dmd/files/2.059-issue-7922.patch
deleted file mode 100644 (file)
index 0d5004d..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-diff -Nurp a/src/dmd/declaration.c b/src/dmd/declaration.c
---- a/src/dmd/declaration.c    2012-04-17 12:02:10.231883129 +0200
-+++ b/src/dmd/declaration.c    2012-04-17 12:37:45.585187488 +0200
-@@ -1361,11 +1361,17 @@ Lnomatch:
-                                         e->op = TOKblit;
-                                     }
-                                     e->type = t;
--                                    (*pinit) = new CommaExp(loc, e, (*pinit));
--                                    /* Replace __ctmp being constructed with e1
-+                                    /* Replace __ctmp being constructed with e1.
-+                                     * We need to copy constructor call expression,
-+                                     * because it may be used in other place.
-                                      */
--                                    dve->e1 = e1;
-+                                    DotVarExp *dvx = (DotVarExp *)dve->copy();
-+                                    dvx->e1 = e1;
-+                                    CallExp *cx = (CallExp *)ce->copy();
-+                                    cx->e1 = dvx;
-+
-+                                    (*pinit) = new CommaExp(loc, e, cx);
-                                     (*pinit) = (*pinit)->semantic(sc);
-                                     goto Ldtor;
-                                 }
-diff -Nurp a/src/dmd/opover.c b/src/dmd/opover.c
---- a/src/dmd/opover.c 2012-04-17 12:02:10.226883191 +0200
-+++ b/src/dmd/opover.c 2012-04-17 12:37:45.585187488 +0200
-@@ -354,9 +354,11 @@ Expression *UnaExp::op_overload(Scope *s
-             /* Rewrite op(e1) as:
-              *  op(e1.aliasthis)
-              */
--            UnaExp *e = (UnaExp *)syntaxCopy();
--            e->e1 = new DotIdExp(loc, e->e1, ad->aliasthis->ident);
--            return e->trySemantic(sc);
-+            Expression *e1 = new DotIdExp(loc, this->e1, ad->aliasthis->ident);
-+            Expression *e = copy();
-+            ((UnaExp *)e)->e1 = e1;
-+            e = e->trySemantic(sc);
-+            return e;
-         }
- #endif
-     }
-@@ -411,9 +413,11 @@ Expression *ArrayExp::op_overload(Scope
-             /* Rewrite op(e1) as:
-              *  op(e1.aliasthis)
-              */
--            UnaExp *e = (UnaExp *)syntaxCopy();
--            e->e1 = new DotIdExp(loc, e->e1, ad->aliasthis->ident);
--            return e->trySemantic(sc);
-+            Expression *e1 = new DotIdExp(loc, this->e1, ad->aliasthis->ident);
-+            Expression *e = copy();
-+            ((UnaExp *)e)->e1 = e1;
-+            e = e->trySemantic(sc);
-+            return e;
-         }
-     }
-     return NULL;
-@@ -456,9 +460,11 @@ Expression *CastExp::op_overload(Scope *
-             /* Rewrite op(e1) as:
-              *  op(e1.aliasthis)
-              */
--            UnaExp *e = (UnaExp *)syntaxCopy();
--            e->e1 = new DotIdExp(loc, e->e1, ad->aliasthis->ident);
--            return e->trySemantic(sc);
-+            Expression *e1 = new DotIdExp(loc, this->e1, ad->aliasthis->ident);
-+            Expression *e = copy();
-+            ((UnaExp *)e)->e1 = e1;
-+            e = e->trySemantic(sc);
-+            return e;
-         }
-     }
-     return NULL;
-@@ -714,9 +720,11 @@ L1:
-         /* Rewrite (e1 op e2) as:
-          *      (e1.aliasthis op e2)
-          */
--        BinExp *e = (BinExp *)syntaxCopy();
--        e->e1 = new DotIdExp(loc, e->e1, ad1->aliasthis->ident);
--        return e->trySemantic(sc);
-+        Expression *e1 = new DotIdExp(loc, this->e1, ad1->aliasthis->ident);
-+        Expression *e = copy();
-+        ((BinExp *)e)->e1 = e1;
-+        e = e->trySemantic(sc);
-+        return e;
-     }
-     // Try alias this on second operand
-@@ -729,9 +737,11 @@ L1:
-         /* Rewrite (e1 op e2) as:
-          *      (e1 op e2.aliasthis)
-          */
--        BinExp *e = (BinExp *)syntaxCopy();
--        e->e2 = new DotIdExp(loc, e->e2, ad2->aliasthis->ident);
--        return e->trySemantic(sc);
-+        Expression *e2 = new DotIdExp(loc, this->e2, ad2->aliasthis->ident);
-+        Expression *e = copy();
-+        ((BinExp *)e)->e2 = e2;
-+        e = e->trySemantic(sc);
-+        return e;
-     }
- #endif
-     return NULL;
-@@ -883,9 +893,11 @@ Expression *BinExp::compare_overload(Sco
-         /* Rewrite (e1 op e2) as:
-          *      (e1.aliasthis op e2)
-          */
--        BinExp *e = (BinExp *)syntaxCopy();
--        e->e1 = new DotIdExp(loc, e->e1, ad1->aliasthis->ident);
--        return e->trySemantic(sc);
-+        Expression *e1 = new DotIdExp(loc, this->e1, ad1->aliasthis->ident);
-+        Expression *e = copy();
-+        ((BinExp *)e)->e1 = e1;
-+        e = e->trySemantic(sc);
-+        return e;
-     }
-     // Try alias this on second operand
-@@ -894,9 +906,11 @@ Expression *BinExp::compare_overload(Sco
-         /* Rewrite (e1 op e2) as:
-          *      (e1 op e2.aliasthis)
-          */
--        BinExp *e = (BinExp *)syntaxCopy();
--        e->e2 = new DotIdExp(loc, e->e2, ad2->aliasthis->ident);
--        return e->trySemantic(sc);
-+        Expression *e2 = new DotIdExp(loc, this->e2, ad2->aliasthis->ident);
-+        Expression *e = copy();
-+        ((BinExp *)e)->e2 = e2;
-+        e = e->trySemantic(sc);
-+        return e;
-     }
-     return NULL;
-@@ -1131,9 +1145,11 @@ L1:
-         /* Rewrite (e1 op e2) as:
-          *      (e1.aliasthis op e2)
-          */
--        BinExp *e = (BinExp *)syntaxCopy();
--        e->e1 = new DotIdExp(loc, e->e1, ad1->aliasthis->ident);
--        return e->trySemantic(sc);
-+        Expression *e1 = new DotIdExp(loc, this->e1, ad1->aliasthis->ident);
-+        Expression *e = copy();
-+        ((BinExp *)e)->e1 = e1;
-+        e = e->trySemantic(sc);
-+        return e;
-     }
-     // Try alias this on second operand
-@@ -1143,9 +1159,11 @@ L1:
-         /* Rewrite (e1 op e2) as:
-          *      (e1 op e2.aliasthis)
-          */
--        BinExp *e = (BinExp *)syntaxCopy();
--        e->e2 = new DotIdExp(loc, e->e2, ad2->aliasthis->ident);
--        return e->trySemantic(sc);
-+        Expression *e2 = new DotIdExp(loc, this->e2, ad2->aliasthis->ident);
-+        Expression *e = copy();
-+        ((BinExp *)e)->e2 = e2;
-+        e = e->trySemantic(sc);
-+        return e;
-     }
- #endif
-     return NULL;
diff --git a/dev-lang/dmd/files/2.059-outOfMemoryError-undeprecation.patch b/dev-lang/dmd/files/2.059-outOfMemoryError-undeprecation.patch
deleted file mode 100644 (file)
index 47d96f6..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -Nurp a/src/phobos/std/path.d b/src/phobos/std/path.d
---- a/src/phobos/std/path.d    2012-04-17 12:02:10.980873765 +0200
-+++ b/src/phobos/std/path.d    2012-04-17 13:43:17.035037653 +0200
-@@ -59,6 +59,7 @@ version(Posix)
-     import core.stdc.errno;
-     import core.sys.posix.pwd;
-     import core.sys.posix.stdlib;
-+    private import core.exception : onOutOfMemoryError;
- }
-@@ -2795,7 +2796,6 @@ deprecated:
- version(Posix)
- {
-     private import core.sys.posix.pwd;
--    private import core.exception : onOutOfMemoryError;
- }
- version(Windows)
diff --git a/dev-lang/dmd/files/2.059-std-path-sep-deprecation.patch b/dev-lang/dmd/files/2.059-std-path-sep-deprecation.patch
deleted file mode 100644 (file)
index 79c5bc3..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -Nurp a/src/phobos/std/datetime.d b/src/phobos/std/datetime.d
---- a/src/phobos/std/datetime.d        2012-04-17 12:02:10.776876316 +0200
-+++ b/src/phobos/std/datetime.d        2012-04-17 13:37:56.468045292 +0200
-@@ -29286,7 +29286,7 @@ assert(tz.dstName == "PDT");
-         version(Posix)
-             auto file = tzDatabaseDir ~ name;
-         else version(Windows)
--            auto file = tzDatabaseDir ~ replace(strip(name), "/", sep);
-+            auto file = tzDatabaseDir ~ replace(strip(name), "/", dirSeparator);
-         enforce(file.exists, new DateTimeException(format("File %s does not exist.", file)));
-         enforce(file.isFile, new DateTimeException(format("%s is not a file.", file)));
-@@ -29595,10 +29595,10 @@ assert(tz.dstName == "PDT");
-         version(Posix)
-             subName = strip(subName);
-         else version(Windows)
--            subName = replace(strip(subName), "/", sep);
-+            subName = replace(strip(subName), "/", dirSeparator);
--        if(!tzDatabaseDir.endsWith(sep))
--            tzDatabaseDir ~= sep;
-+        if(!tzDatabaseDir.endsWith(dirSeparator))
-+            tzDatabaseDir ~= dirSeparator;
-         enforce(tzDatabaseDir.exists, new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir)));
-         enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir)));
diff --git a/dev-lang/dmd/files/dmd-2.059-makefile.patch b/dev-lang/dmd/files/dmd-2.059-makefile.patch
deleted file mode 100644 (file)
index 0505f48..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-The patches allow for MODEL, DMD (compiler for the library) and
-DDOC (documentation generator) to be overriden on the command line.
-The patch to gzio.c adds the missing errno.h include, to make the code portable:
-http://d.puremagic.com/issues/show_bug.cgi?id=5463
---- dmd2/src/dmd/posix.mak
-+++ dmd2/src/dmd/posix.mak
-@@ -29,7 +29,7 @@
- TK=tk
- ROOT=root
--MODEL=32
-+MODEL?=32
- ifeq (OSX,$(TARGET))
-     ## See: http://developer.apple.com/documentation/developertools/conceptual/cross_development/Using/chapter_3_section_2.html#//apple_ref/doc/uid/20002000-1114311-BABGCAAB
---- dmd2/src/druntime/posix.mak
-+++ dmd2/src/druntime/posix.mak
-@@ -20,12 +20,12 @@
-     endif
- endif
--DMD=dmd
-+DMD?=dmd
- DOCDIR=doc
- IMPDIR=import
--MODEL=32
-+MODEL?=32
- DFLAGS=-m$(MODEL) -O -release -inline -nofloat -w -d -Isrc -Iimport -property
- UDFLAGS=-m$(MODEL) -O -release -nofloat -w -d -Isrc -Iimport -property
---- dmd2/src/phobos/etc/c/zlib/gzio.c
-+++ dmd2/src/phobos/etc/c/zlib/gzio.c
-@@ -8,6 +8,7 @@
- /* @(#) $Id$ */
- #include <stdio.h>
-+#include <errno.h>
- #include "zutil.h"
---- dmd2/src/phobos/posix.mak
-+++ dmd2/src/phobos/posix.mak
-@@ -61,8 +61,6 @@
- # Variable defined in an OS-dependent manner (see below)
- CC =
--DMD =
--DDOC =
- CFLAGS =
- DFLAGS =
-@@ -83,14 +81,14 @@
- # Set CC and DMD
- ifeq ($(OS),win32wine)
-       CC = wine dmc.exe
--      DMD = wine dmd.exe
-+      DMD ?= wine dmd.exe
-       RUN = wine
- else
-       ifeq ($(OS),win32remote)
--              DMD = ssh 206.125.170.138 "cd code/dmd/phobos && dmd"
-+              DMD ?= ssh 206.125.170.138 "cd code/dmd/phobos && dmd"
-               CC = ssh 206.125.170.138 "cd code/dmd/phobos && dmc"
-       else
--              DMD = dmd
-+              DMD ?= dmd
-               ifeq ($(OS),win32)
-                       CC = dmc
-               else
-@@ -141,7 +139,7 @@
- endif
- # Set DDOC, the documentation generator
--DDOC=$(DMD)
-+DDOC?=$(DMD)
- # Set LIB, the ultimate target
- ifeq (,$(findstring win,$(OS)))
diff --git a/dev-lang/dmd/files/dmd-2.062-makefile.patch b/dev-lang/dmd/files/dmd-2.062-makefile.patch
new file mode 100644 (file)
index 0000000..50f6a7e
--- /dev/null
@@ -0,0 +1,35 @@
+The patches allow for MODEL, DMD (compiler for the library) and
+DDOC (documentation generator) to be overriden on the command line.
+--- dmd2/src/dmd/posix.mak
++++ dmd2/src/dmd/posix.mak
+@@ -49,7 +49,7 @@
+ TK=tk
+ ROOT=root
+-MODEL=32
++MODEL?=32
+ ifneq (x,x$(MODEL))
+     MODEL_FLAG=-m$(MODEL)
+ endif
+--- dmd2/src/druntime/posix.mak
++++ dmd2/src/druntime/posix.mak
+@@ -37,7 +37,7 @@
+ DOCDIR=doc
+ IMPDIR=import
+-MODEL=32
++MODEL?=32
+ override PIC:=$(if $(PIC),-fPIC,)
+ DFLAGS=-m$(MODEL) -O -release -inline -w -Isrc -Iimport -property $(PIC)
+--- dmd2/src/phobos/posix.mak
++++ dmd2/src/phobos/posix.mak
+@@ -149,7 +149,7 @@
+ endif
+ # Set DDOC, the documentation generator
+-DDOC=$(DMD)
++DDOC?=$(DMD)
+ # Set LIB, the ultimate target
+ ifeq (,$(findstring win,$(OS)))