diff --git a/abi_used_libs b/abi_used_libs --- a/abi_used_libs +++ b/abi_used_libs @@ -1,4 +1,5 @@ libc.so.6 libdl.so.2 libm.so.6 +libpthread.so.0 librt.so.1 diff --git a/files/0003-fix-tasyncsend4757-test.patch b/files/0003-fix-tasyncsend4757-test.patch new file mode 100644 --- /dev/null +++ b/files/0003-fix-tasyncsend4757-test.patch @@ -0,0 +1,28 @@ +diff -Nru nim-0.17.2.orig/tests/async/tasyncsend4757.nim nim-0.17.2/tests/async/tasyncsend4757.nim +--- nim-0.17.2.orig/tests/async/tasyncsend4757.nim 2017-09-07 21:45:44.000000000 +0300 ++++ nim-0.17.2/tests/async/tasyncsend4757.nim 2017-11-06 22:31:36.859257572 +0300 +@@ -3,11 +3,22 @@ + output: "Finished" + """ + +-import asyncdispatch ++import asyncdispatch, asyncnet ++ ++proc createServer(port: Port) {.async.} = ++ var server = newAsyncSocket() ++ server.setSockOpt(OptReuseAddr, true) ++ bindAddr(server, port) ++ server.listen() ++ while true: ++ let client = await server.accept() ++ discard await client.recvLine() ++ ++asyncCheck createServer(10335.Port) + + proc f(): Future[void] {.async.} = + let s = newAsyncNativeSocket() +- await s.connect("example.com", 80.Port) ++ await s.connect("localhost", 10335.Port) + await s.send("123") + echo "Finished" + diff --git a/files/0005-fix-tnewasyncudp-endianness.patch b/files/0005-fix-tnewasyncudp-endianness.patch new file mode 100644 --- /dev/null +++ b/files/0005-fix-tnewasyncudp-endianness.patch @@ -0,0 +1,12 @@ +diff -Nru nim-0.17.2.orig/tests/async/tnewasyncudp.nim nim-0.17.2/tests/async/tnewasyncudp.nim +--- nim-0.17.2.orig/tests/async/tnewasyncudp.nim 2017-09-07 21:45:44.000000000 +0300 ++++ nim-0.17.2/tests/async/tnewasyncudp.nim 2017-11-09 19:53:36.659185006 +0300 +@@ -86,7 +86,7 @@ + size = 0 + var grammString = $buffer + if grammString.startswith("Message ") and +- saddr.sin_addr.s_addr == 0x100007F: ++ saddr.sin_addr.s_addr == nativesockets.ntohl(INADDR_LOOPBACK): + await sendTo(server, addr grammString[0], len(grammString), + cast[ptr SockAddr](addr saddr), slen) + inc(msgCount) diff --git a/files/0007-fix-floats-in-tests.patch b/files/0007-fix-floats-in-tests.patch new file mode 100644 --- /dev/null +++ b/files/0007-fix-floats-in-tests.patch @@ -0,0 +1,139 @@ +diff -Nru nim-0.17.2.orig/lib/pure/complex.nim nim-0.17.2/lib/pure/complex.nim +--- nim-0.17.2.orig/lib/pure/complex.nim 2017-09-07 21:45:44.000000000 +0300 ++++ nim-0.17.2/lib/pure/complex.nim 2017-11-15 23:03:41.767066276 +0300 +@@ -378,6 +378,9 @@ + + + when isMainModule: ++ template assertEqual(actual: float, expected: float, epsilon = 1.0e-8, msg = "") = ++ doAssert(actual == expected or abs(abs(actual) - abs(expected)) < epsilon, msg) ++ + var z = (0.0, 0.0) + var oo = (1.0,1.0) + var a = (1.0, 2.0) +@@ -399,7 +402,7 @@ + assert( tt/10.0 == a ) + assert( oo+(-1.0) == i ) + assert( (-1.0)+oo == i ) +- assert( abs(oo) == sqrt(2.0) ) ++ assertEqual( abs(oo), sqrt(2.0) ) + assert( conjugate(a) == (1.0, -2.0) ) + assert( sqrt(m1) == i ) + assert( exp(ipi) =~ m1 ) +@@ -437,7 +440,7 @@ + assert( arccsch(a) =~ arcsinh(1/a) ) + assert( arccoth(a) =~ arctanh(1/a) ) + +- assert( phase(a) == 1.1071487177940904 ) ++ assertEqual( phase(a), 1.1071487177940904 ) + var t = polar(a) + assert( rect(t.r, t.phi) =~ a ) + assert( rect(1.0, 2.0) =~ (-0.4161468365471424, 0.9092974268256817) ) +diff -Nru nim-0.17.2.orig/lib/pure/stats.nim nim-0.17.2/lib/pure/stats.nim +--- nim-0.17.2.orig/lib/pure/stats.nim 2017-09-07 21:45:44.000000000 +0300 ++++ nim-0.17.2/lib/pure/stats.nim 2017-11-15 22:59:02.094909978 +0300 +@@ -304,47 +304,50 @@ + {.pop.} + + when isMainModule: ++ template assertEqual(actual: float, expected: float, epsilon = 1.0e-8, msg = "") = ++ doAssert(actual == expected or abs(abs(actual) - abs(expected)) < epsilon, msg) ++ + proc clean(x: float): float = + result = round(1.0e8*x).float * 1.0e-8 + + var rs: RunningStat + rs.push(@[1.0, 2.0, 1.0, 4.0, 1.0, 4.0, 1.0, 2.0]) + doAssert(rs.n == 8) +- doAssert(clean(rs.mean) == 2.0) +- doAssert(clean(rs.variance()) == 1.5) +- doAssert(clean(rs.varianceS()) == 1.71428571) +- doAssert(clean(rs.skewness()) == 0.81649658) +- doAssert(clean(rs.skewnessS()) == 1.01835015) +- doAssert(clean(rs.kurtosis()) == -1.0) +- doAssert(clean(rs.kurtosisS()) == -0.7000000000000001) ++ assertEqual(clean(rs.mean), 2.0) ++ assertEqual(clean(rs.variance()), 1.5) ++ assertEqual(clean(rs.varianceS()), 1.71428571) ++ assertEqual(clean(rs.skewness()), 0.81649658) ++ assertEqual(clean(rs.skewnessS()), 1.01835015) ++ assertEqual(clean(rs.kurtosis()), -1.0) ++ assertEqual(clean(rs.kurtosisS()), -0.7000000000000001) + + var rs1, rs2: RunningStat + rs1.push(@[1.0, 2.0, 1.0, 4.0]) + rs2.push(@[1.0, 4.0, 1.0, 2.0]) + let rs3 = rs1 + rs2 +- doAssert(clean(rs3.mom2) == clean(rs.mom2)) +- doAssert(clean(rs3.mom3) == clean(rs.mom3)) +- doAssert(clean(rs3.mom4) == clean(rs.mom4)) ++ assertEqual(clean(rs3.mom2), clean(rs.mom2)) ++ assertEqual(clean(rs3.mom3), clean(rs.mom3)) ++ assertEqual(clean(rs3.mom4), clean(rs.mom4)) + rs1 += rs2 +- doAssert(clean(rs1.mom2) == clean(rs.mom2)) +- doAssert(clean(rs1.mom3) == clean(rs.mom3)) +- doAssert(clean(rs1.mom4) == clean(rs.mom4)) ++ assertEqual(clean(rs1.mom2), clean(rs.mom2)) ++ assertEqual(clean(rs1.mom3), clean(rs.mom3)) ++ assertEqual(clean(rs1.mom4), clean(rs.mom4)) + rs1.clear() + rs1.push(@[1.0, 2.2, 1.4, 4.9]) +- doAssert(rs1.sum == 9.5) +- doAssert(rs1.mean() == 2.375) ++ assertEqual(rs1.sum, 9.5) ++ assertEqual(rs1.mean(), 2.375) + + when not defined(cpu32): + # XXX For some reason on 32bit CPUs these results differ + var rr: RunningRegress + rr.push(@[0.0,1.0,2.8,3.0,4.0], @[0.0,1.0,2.3,3.0,4.0]) +- doAssert(rr.slope() == 0.9695585996955861) +- doAssert(rr.intercept() == -0.03424657534246611) +- doAssert(rr.correlation() == 0.9905100362239381) ++ assertEqual(rr.slope(), 0.9695585996955861) ++ assertEqual(rr.intercept(), -0.03424657534246611) ++ assertEqual(rr.correlation(), 0.9905100362239381) + var rr1, rr2: RunningRegress + rr1.push(@[0.0,1.0], @[0.0,1.0]) + rr2.push(@[2.8,3.0,4.0], @[2.3,3.0,4.0]) + let rr3 = rr1 + rr2 +- doAssert(rr3.correlation() == rr.correlation()) +- doAssert(clean(rr3.slope()) == clean(rr.slope())) +- doAssert(clean(rr3.intercept()) == clean(rr.intercept())) ++ assertEqual(rr3.correlation(), rr.correlation()) ++ assertEqual(clean(rr3.slope()), clean(rr.slope())) ++ assertEqual(clean(rr3.intercept()), clean(rr.intercept())) +diff -Nru nim-0.17.2.orig/lib/pure/times.nim nim-0.17.2/lib/pure/times.nim +--- nim-0.17.2.orig/lib/pure/times.nim 2017-09-07 21:45:44.000000000 +0300 ++++ nim-0.17.2/lib/pure/times.nim 2017-11-15 22:58:50.670901055 +0300 +@@ -1387,18 +1387,21 @@ + + + when isMainModule: ++ template assertEqual(actual: float, expected: float, epsilon = 1.0e-8, msg = "") = ++ doAssert(actual == expected or abs(abs(actual) - abs(expected)) < epsilon, msg) ++ + # this is testing non-exported function + var + t4 = getGMTime(fromSeconds(876124714)) # Mon 6 Oct 08:58:34 BST 1997 + t4L = getLocalTime(fromSeconds(876124714)) +- assert toSeconds(t4, initInterval(seconds=0)) == 0.0 +- assert toSeconds(t4L, initInterval(milliseconds=1)) == toSeconds(t4, initInterval(milliseconds=1)) +- assert toSeconds(t4L, initInterval(seconds=1)) == toSeconds(t4, initInterval(seconds=1)) +- assert toSeconds(t4L, initInterval(minutes=1)) == toSeconds(t4, initInterval(minutes=1)) +- assert toSeconds(t4L, initInterval(hours=1)) == toSeconds(t4, initInterval(hours=1)) +- assert toSeconds(t4L, initInterval(days=1)) == toSeconds(t4, initInterval(days=1)) +- assert toSeconds(t4L, initInterval(months=1)) == toSeconds(t4, initInterval(months=1)) +- assert toSeconds(t4L, initInterval(years=1)) == toSeconds(t4, initInterval(years=1)) ++ assertEqual toSeconds(t4, initInterval(seconds=0)), 0.0 ++ assertEqual toSeconds(t4L, initInterval(milliseconds=1)), toSeconds(t4, initInterval(milliseconds=1)) ++ assertEqual toSeconds(t4L, initInterval(seconds=1)), toSeconds(t4, initInterval(seconds=1)) ++ assertEqual toSeconds(t4L, initInterval(minutes=1)), toSeconds(t4, initInterval(minutes=1)) ++ assertEqual toSeconds(t4L, initInterval(hours=1)), toSeconds(t4, initInterval(hours=1)) ++ assertEqual toSeconds(t4L, initInterval(days=1)), toSeconds(t4, initInterval(days=1)) ++ assertEqual toSeconds(t4L, initInterval(months=1)), toSeconds(t4, initInterval(months=1)) ++ assertEqual toSeconds(t4L, initInterval(years=1)), toSeconds(t4, initInterval(years=1)) + + # Further tests are in tests/stdlib/ttime.nim + # koch test c stdlib diff --git a/package.yml b/package.yml --- a/package.yml +++ b/package.yml @@ -1,8 +1,8 @@ name : nim -version : 0.17.0 -release : 10 +version : 0.17.2 +release : 11 source : - - https://nim-lang.org/download/nim-0.17.0.tar.xz : 36e18dd9384f6c67e6d0199b871b43e774a0af30532698184d6f5a9cc9ac7a9b + - https://nim-lang.org/download/nim-0.17.2.tar.xz : aaff1b5023fc4a5708f1d7d9fd8e2a29f1a7f58bf496532ff1e9d7e7c7ec82bd license : MIT component : programming summary : Nim programming language @@ -10,11 +10,30 @@ Nim is a statically typed, imperative programming language. setup : | %patch < $pkgfiles/0001-Change-to-correct-dirs.patch + # fix some tests + %patch -p1 < $pkgfiles/0003-fix-tasyncsend4757-test.patch + %patch -p1 < $pkgfiles/0005-fix-tnewasyncudp-endianness.patch + %patch -p1 < $pkgfiles/0007-fix-floats-in-tests.patch +builddeps : + - nodejs-devel # check +rundeps : + - glibc-devel + - linux-headers build : | ./build.sh bin/nim c koch ./koch nimble + ./koch tools install : | ./install.sh %installroot% - install -Dm00755 bin/nimble $installdir/usr/bin/nimble + + install -Dm00755 bin/* $installdir/usr/bin + install -Dm00644 tools/nim.bash-completion $installdir/usr/share/bash-completion/completions/nim + install -Dm00644 dist/nimble/nimble.bash-completion $installdir/usr/share/bash-completion/completions/nimble mv $installdir%libdir%/nim/compiler.nimble $installdir%libdir%/nim/compiler/ +check : | + # don't test everything because it's too long + for cat in lib async float io bind rodfiles js debugger global threads + do + ./koch tests --pedantic category $cat -d:nimCoroutines || (echo "$cat test category failed" && exit 1) + done diff --git a/pspec_x86_64.xml b/pspec_x86_64.xml --- a/pspec_x86_64.xml +++ b/pspec_x86_64.xml @@ -2,8 +2,8 @@ nim - Joshua Strobl - joshua@stroblindustries.com + Pierre-Yves + pyu@riseup.net MIT programming @@ -106,6 +106,7 @@ /usr/lib64/nim/compiler/procfind.nim /usr/lib64/nim/compiler/readme.txt /usr/lib64/nim/compiler/renderer.nim + /usr/lib64/nim/compiler/reorder.nim /usr/lib64/nim/compiler/rodread.nim /usr/lib64/nim/compiler/rodutils.nim /usr/lib64/nim/compiler/rodwrite.nim @@ -137,7 +138,6 @@ /usr/lib64/nim/compiler/suggest.nim /usr/lib64/nim/compiler/syntaxes.nim /usr/lib64/nim/compiler/tccgen.nim - /usr/lib64/nim/compiler/testability.nim /usr/lib64/nim/compiler/transf.nim /usr/lib64/nim/compiler/trees.nim /usr/lib64/nim/compiler/treetab.nim @@ -208,9 +208,11 @@ /usr/lib64/nim/pure/asyncdispatch.nim.cfg /usr/lib64/nim/pure/asyncfile.nim /usr/lib64/nim/pure/asyncftpclient.nim + /usr/lib64/nim/pure/asyncfutures.nim /usr/lib64/nim/pure/asynchttpserver.nim /usr/lib64/nim/pure/asyncmacro.nim /usr/lib64/nim/pure/asyncnet.nim + /usr/lib64/nim/pure/asyncstreams.nim /usr/lib64/nim/pure/base64.nim /usr/lib64/nim/pure/basic2d.nim /usr/lib64/nim/pure/basic3d.nim @@ -258,7 +260,8 @@ /usr/lib64/nim/pure/httpcore.nim /usr/lib64/nim/pure/httpserver.nim /usr/lib64/nim/pure/includes/asynccommon.nim - /usr/lib64/nim/pure/includes/asyncfutures.nim + /usr/lib64/nim/pure/includes/osenv.nim + /usr/lib64/nim/pure/includes/oserr.nim /usr/lib64/nim/pure/ioselectors.nim /usr/lib64/nim/pure/ioselects/ioselectors_epoll.nim /usr/lib64/nim/pure/ioselects/ioselectors_kqueue.nim @@ -349,7 +352,7 @@ /usr/lib64/nim/system/gc2.nim /usr/lib64/nim/system/gc_common.nim /usr/lib64/nim/system/gc_ms.nim - /usr/lib64/nim/system/gc_stack.nim + /usr/lib64/nim/system/gc_regions.nim /usr/lib64/nim/system/hti.nim /usr/lib64/nim/system/inclrtl.nim /usr/lib64/nim/system/jssys.nim @@ -389,16 +392,18 @@ /usr/lib64/nim/wrappers/postgres.nim /usr/lib64/nim/wrappers/sqlite3.nim /usr/lib64/nim/wrappers/tinyc.nim + /usr/share/bash-completion/completions/nim + /usr/share/bash-completion/completions/nimble /usr/share/nim - - 2017-08-30 - 0.17.0 + + 2017-11-29 + 0.17.2 Packaging update - Joshua Strobl - joshua@stroblindustries.com + Pierre-Yves + pyu@riseup.net \ No newline at end of file