#12103 - CI for OpenBSD (#12105)

* Working on OpenBSD CI
* Condense steps into 2 steps to make output easier to follow.
* Move up one directory after csources build.
* Remove FreeBSD build manifest and add OpenBSD test ignores for coroutines and hot code reloading.
* If runCI fails, run the test results script.
* Add email trigger for build failure
* Remove .git from repository URL
* Disable SFML test on OpenBSD
* Disable tgetaddrinfo on OpenBSD as only UDP and TCP protocols are supported.
* Remove getFilePermissions as it causes CI test failures with NimScript.
* Set clang as cc in nim.cfg and use gmake to build csources.
* Add getCurrentDir to nimscript.
* Remove duplicate getCurrentDir and check for not weirdTarget.
* Add CI badge for OpenBSD.
* Disable tests which allocate lots of memory for OpenBSD.
* Use `CORO_BACKEND_SETJMP` on OpenBSD rather than ucontext.
* Simplify building of koch
* Disable t8657 on OpenBSD. See issue #13760.
* Fix #12142 - tarray_of_channels fails on OpenBSD
* Disable thhtpclient_ssl and tosprocterminate on OpenBSD. These tests can be enabled at a later date after fixing them.
* Install libffi.
* Set path to libc for openbsd.
* Disable tevalffi for now.
* Remove tevalffi.nim.
* Use ncpuonline sysctl rather than ncpu.
* Disable tacceptcloserace and tasynchttpserver on OpenBSD.
* Enable tacceptcloserace and tasynchttpserver.
* Fix #13775 as suggested by @alaviss - use /bin/cat on OpenBSD rather than /bin/sh.
* Enable test on OpenBSD.
* Disable tflowvar on OpenBSD.
This commit is contained in:
Euan
2020-04-21 14:05:21 +01:00
committed by GitHub
parent 89e6a7ab48
commit 7828199827
20 changed files with 56 additions and 15 deletions

31
.builds/openbsd.yml Normal file
View File

@@ -0,0 +1,31 @@
image: openbsd/latest
packages:
- gmake
- sqlite3
- node
- boehm-gc
- pcre
- sfml
- sdl2
- libffi
sources:
- https://github.com/nim-lang/Nim
environment:
CC: /usr/bin/clang
tasks:
- setup: |
cd Nim
git clone --depth 1 -q https://github.com/nim-lang/csources.git
gmake -C csources -j $(sysctl -n hw.ncpuonline)
bin/nim c koch
echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
- test: |
cd Nim
if ! ./koch runCI; then
nim c -r tools/ci_testresults.nim
exit 1
fi
triggers:
- action: email
condition: failure
to: Andreas Rumpf <rumpf_a@web.de>

View File

@@ -17,6 +17,8 @@ when defined(windows):
const libcDll = "msvcrt.dll"
elif defined(linux):
const libcDll = "libc.so(.6|.5|)"
elif defined(openbsd):
const libcDll = "/usr/lib/libc.so(.95.1|)"
elif defined(bsd):
const libcDll = "/lib/libc.so.7"
elif defined(osx):

View File

@@ -167,7 +167,7 @@ path="$lib/pure"
@end
@end
@if macosx or freebsd:
@if macosx or freebsd or openbsd:
cc = clang
tlsEmulation:on
gcc.options.always = "-w"

View File

@@ -48,7 +48,7 @@ when defined(windows):
{.warning: "ucontext coroutine backend is not available on windows, defaulting to fibers.".}
when defined(nimCoroutinesSetjmp):
{.warning: "setjmp coroutine backend is not available on windows, defaulting to fibers.".}
elif defined(haiku):
elif defined(haiku) or defined(openbsd):
const coroBackend = CORO_BACKEND_SETJMP
when defined(nimCoroutinesUcontext):
{.warning: "ucontext coroutine backend is not available on haiku, defaulting to setjmp".}

View File

@@ -2818,11 +2818,7 @@ when not weirdTarget and (defined(linux) or defined(solaris) or defined(bsd) or
len = readlink(procPath, result, len)
setLen(result, len)
when defined(openbsd):
proc isExecutable(path: string): bool =
let p = getFilePermissions(path)
result = fpUserExec in p and fpGroupExec in p and fpOthersExec in p
when not weirdTarget and defined(openbsd):
proc getApplOpenBsd(): string =
# similar to getApplHeuristic, but checks current working directory
when declared(paramStr):
@@ -2846,15 +2842,12 @@ when defined(openbsd):
break
if len(result) > 0:
if isExecutable(result):
return expandFilename(result)
return ""
return expandFilename(result)
# search in path
for p in split(string(getEnv("PATH")), {PathSep}):
var x = joinPath(p, exePath)
if existsFile(x) and isExecutable(x):
if existsFile(x):
return expandFilename(x)
else:
result = ""

View File

@@ -1,4 +1,4 @@
# <img src="https://raw.githubusercontent.com/nim-lang/assets/master/Art/logo-crown.png" height="28px"/> Nim [![Build Status][badge-nim-travisci]][nim-travisci] [![builds.sr.ht freebsd status](https://builds.sr.ht/~araq/nim/freebsd.yml.svg)](https://builds.sr.ht/~araq/nim/freebsd.yml?)
# <img src="https://raw.githubusercontent.com/nim-lang/assets/master/Art/logo-crown.png" height="28px"/> Nim [![Build Status][badge-nim-travisci]][nim-travisci] [![builds.sr.ht freebsd status](https://builds.sr.ht/~araq/nim/freebsd.yml.svg)](https://builds.sr.ht/~araq/nim/freebsd.yml?) [![builds.sr.ht openbsd status](https://builds.sr.ht/~araq/nim/openbsd.yml.svg)](https://builds.sr.ht/~araq/nim/openbsd.yml?)
This repository contains the Nim compiler, Nim's stdlib, tools and documentation.
For more information about Nim, including downloads and documentation for

View File

@@ -237,6 +237,8 @@ proc parseSpec*(filename: string): TSpec =
when defined(freebsd): result.err = reDisabled
of "arm64":
when defined(arm64): result.err = reDisabled
of "openbsd":
when defined(openbsd): result.err = reDisabled
else:
result.parseErrors.addLine "cannot interpret as a bool: ", e.value
of "cmd":

View File

@@ -1,5 +1,6 @@
discard """
target: "c"
disabled: "openbsd"
"""
import coro

View File

@@ -1,6 +1,7 @@
discard """
output: "Exit 1\nExit 2"
disabled: "macosx"
disabled: "openbsd"
target: "c"
"""
import coro

View File

@@ -1,4 +1,5 @@
discard """
disabled: "openbsd"
disabled: "macosx"
output: '''
main: HELLO!
@@ -151,4 +152,4 @@ update 0
update 1
update 2
echo "done"
echo "done"

View File

@@ -1,4 +1,5 @@
discard """
disabled: "openbsd"
output: '''
fastcall_proc implementation #1 10
11

View File

@@ -2,6 +2,7 @@ discard """
action: run
exitcode: 1
target: "c"
disabled: "openbsd"
"""
# todo: remove `target: "c"` workaround once #10343 is properly fixed
close stdmsg

View File

@@ -2,6 +2,7 @@ discard """
action: compile
disabled: "windows"
disabled: "freebsd"
disabled: "openbsd"
"""
import sfml, os

View File

@@ -8,6 +8,7 @@ test
test
test
'''
disabled: "openbsd"
"""
# bug #2257

View File

@@ -4,6 +4,7 @@ bazbearbazbear
1'''
cmd: "nim $target --threads:on $options $file"
disabled: "openbsd"
"""
import threadpool

View File

@@ -15,7 +15,7 @@ block DGRAM_UDP:
doAssert aiList.ai_next == nil
freeAddrInfo aiList
when defined(posix) and not defined(haiku) and not defined(freebsd):
when defined(posix) and not defined(haiku) and not defined(freebsd) and not defined(openbsd):
block RAW_ICMP:
# the port will be ignored

View File

@@ -1,5 +1,6 @@
discard """
cmd: "nim $target --threads:on -d:ssl $options $file"
disabled: "openbsd"
"""
# Nim - Basic SSL integration tests

View File

@@ -8,6 +8,8 @@ import os, osproc, times, std / monotimes
when defined(Windows):
const ProgramWhichDoesNotEnd = "notepad"
elif defined(openbsd):
const ProgramWhichDoesNotEnd = "/bin/cat"
else:
const ProgramWhichDoesNotEnd = "/bin/sh"

View File

@@ -1,5 +1,6 @@
discard """
disabled: "windows"
disabled: "openbsd"
joinable: false
disabled: 32bit
"""

View File

@@ -1,6 +1,7 @@
discard """
output: '''success'''
joinable: false
disabled: "openbsd"
"""
# bug #4818