mirror of
https://github.com/logos-storage/nim-chronos.git
synced 2026-01-03 22:13:06 +00:00
parent
d926415f42
commit
17fed89c99
11
.github/workflows/ci.yml
vendored
11
.github/workflows/ci.yml
vendored
@ -43,14 +43,10 @@ jobs:
|
||||
|
||||
name: '${{ matrix.target.os }}-${{ matrix.target.cpu }} (Nim ${{ matrix.branch }})'
|
||||
runs-on: ${{ matrix.builder }}
|
||||
continue-on-error: ${{ matrix.branch == 'devel' }}
|
||||
continue-on-error: ${{ matrix.branch == 'version-1-6' || matrix.branch == 'devel' }}
|
||||
steps:
|
||||
- name: Checkout nim-chronos
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: master
|
||||
path: nim-chronos
|
||||
submodules: false
|
||||
|
||||
- name: Install build dependencies (Linux i386)
|
||||
if: runner.os == 'Linux' && matrix.target.cpu == 'i386'
|
||||
@ -151,8 +147,7 @@ jobs:
|
||||
bash build_nim.sh nim csources dist/nimble NimBinaries
|
||||
echo '${{ github.workspace }}/nim/bin' >> $GITHUB_PATH
|
||||
|
||||
- name: Run nim-chronos tests
|
||||
working-directory: nim-chronos
|
||||
- name: Run tests
|
||||
run: |
|
||||
nim --version
|
||||
nimble --version
|
||||
|
||||
160
.github/workflows/multi_nim.yml
vendored
160
.github/workflows/multi_nim.yml
vendored
@ -1,160 +0,0 @@
|
||||
name: Daily
|
||||
on:
|
||||
schedule:
|
||||
- cron: "30 5 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target:
|
||||
- os: linux
|
||||
cpu: amd64
|
||||
- os: linux
|
||||
cpu: i386
|
||||
- os: macos
|
||||
cpu: amd64
|
||||
- os: windows
|
||||
cpu: amd64
|
||||
#- os: windows
|
||||
#cpu: i386
|
||||
branch: [version-1-2, version-1-4, version-1-6, devel]
|
||||
include:
|
||||
- target:
|
||||
os: linux
|
||||
builder: ubuntu-18.04
|
||||
shell: bash
|
||||
- target:
|
||||
os: macos
|
||||
builder: macos-10.15
|
||||
shell: bash
|
||||
- target:
|
||||
os: windows
|
||||
builder: windows-2019
|
||||
shell: msys2 {0}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: ${{ matrix.shell }}
|
||||
|
||||
name: '${{ matrix.target.os }}-${{ matrix.target.cpu }} (Nim ${{ matrix.branch }})'
|
||||
runs-on: ${{ matrix.builder }}
|
||||
continue-on-error: ${{ matrix.branch == 'devel' }}
|
||||
steps:
|
||||
- name: Checkout nim-chronos
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: master
|
||||
path: nim-chronos
|
||||
submodules: false
|
||||
|
||||
- name: Install build dependencies (Linux i386)
|
||||
if: runner.os == 'Linux' && matrix.target.cpu == 'i386'
|
||||
run: |
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt-fast update -qq
|
||||
sudo DEBIAN_FRONTEND='noninteractive' apt-fast install \
|
||||
--no-install-recommends -yq gcc-multilib g++-multilib \
|
||||
libssl-dev:i386
|
||||
mkdir -p external/bin
|
||||
cat << EOF > external/bin/gcc
|
||||
#!/bin/bash
|
||||
exec $(which gcc) -m32 "\$@"
|
||||
EOF
|
||||
cat << EOF > external/bin/g++
|
||||
#!/bin/bash
|
||||
exec $(which g++) -m32 "\$@"
|
||||
EOF
|
||||
chmod 755 external/bin/gcc external/bin/g++
|
||||
echo '${{ github.workspace }}/external/bin' >> $GITHUB_PATH
|
||||
|
||||
- name: MSYS2 (Windows i386)
|
||||
if: runner.os == 'Windows' && matrix.target.cpu == 'i386'
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
path-type: inherit
|
||||
msystem: MINGW32
|
||||
install: >-
|
||||
base-devel
|
||||
git
|
||||
mingw-w64-i686-toolchain
|
||||
|
||||
- name: MSYS2 (Windows amd64)
|
||||
if: runner.os == 'Windows' && matrix.target.cpu == 'amd64'
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
path-type: inherit
|
||||
install: >-
|
||||
base-devel
|
||||
git
|
||||
mingw-w64-x86_64-toolchain
|
||||
|
||||
- name: Restore Nim DLLs dependencies (Windows) from cache
|
||||
if: runner.os == 'Windows'
|
||||
id: windows-dlls-cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: external/dlls-${{ matrix.target.cpu }}
|
||||
key: 'dlls-${{ matrix.target.cpu }}'
|
||||
|
||||
- name: Install DLLs dependencies (Windows)
|
||||
if: >
|
||||
steps.windows-dlls-cache.outputs.cache-hit != 'true' &&
|
||||
runner.os == 'Windows'
|
||||
run: |
|
||||
mkdir -p external
|
||||
curl -L "https://nim-lang.org/download/windeps.zip" -o external/windeps.zip
|
||||
7z x -y external/windeps.zip -oexternal/dlls-${{ matrix.target.cpu }}
|
||||
|
||||
- name: Path to cached dependencies (Windows)
|
||||
if: >
|
||||
runner.os == 'Windows'
|
||||
run: |
|
||||
echo '${{ github.workspace }}'"/external/dlls-${{ matrix.target.cpu }}" >> $GITHUB_PATH
|
||||
|
||||
- name: Derive environment variables
|
||||
run: |
|
||||
if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then
|
||||
PLATFORM=x64
|
||||
else
|
||||
PLATFORM=x86
|
||||
fi
|
||||
echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV
|
||||
|
||||
ncpu=
|
||||
MAKE_CMD="make"
|
||||
case '${{ runner.os }}' in
|
||||
'Linux')
|
||||
ncpu=$(nproc)
|
||||
;;
|
||||
'macOS')
|
||||
ncpu=$(sysctl -n hw.ncpu)
|
||||
;;
|
||||
'Windows')
|
||||
ncpu=$NUMBER_OF_PROCESSORS
|
||||
MAKE_CMD="mingw32-make"
|
||||
;;
|
||||
esac
|
||||
[[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1
|
||||
echo "ncpu=$ncpu" >> $GITHUB_ENV
|
||||
echo "MAKE_CMD=${MAKE_CMD}" >> $GITHUB_ENV
|
||||
|
||||
- name: Build Nim and Nimble
|
||||
run: |
|
||||
curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh
|
||||
env MAKE="${MAKE_CMD} -j${ncpu}" ARCH_OVERRIDE=${PLATFORM} NIM_COMMIT=${{ matrix.branch }} \
|
||||
QUICK_AND_DIRTY_COMPILER=1 QUICK_AND_DIRTY_NIMBLE=1 CC=gcc \
|
||||
bash build_nim.sh nim csources dist/nimble NimBinaries
|
||||
echo '${{ github.workspace }}/nim/bin' >> $GITHUB_PATH
|
||||
|
||||
- name: Run nim-chronos tests
|
||||
working-directory: nim-chronos
|
||||
run: |
|
||||
nim --version
|
||||
nimble --version
|
||||
nimble install -y --depsOnly
|
||||
nimble install -y libbacktrace
|
||||
nimble test
|
||||
nimble test_libbacktrace
|
||||
@ -1,5 +1,5 @@
|
||||
packageName = "chronos"
|
||||
version = "3.0.10"
|
||||
version = "3.0.11"
|
||||
author = "Status Research & Development GmbH"
|
||||
description = "Chronos"
|
||||
license = "Apache License 2.0 or MIT"
|
||||
|
||||
@ -431,7 +431,7 @@ when defined(windows):
|
||||
loop.processTimersGetTimeout(curTimeout)
|
||||
|
||||
# Processing handles
|
||||
var lpNumberOfBytesTransferred: Dword
|
||||
var lpNumberOfBytesTransferred: DWORD
|
||||
var lpCompletionKey: ULONG_PTR
|
||||
var customOverlapped: PtrCustomOverlapped
|
||||
|
||||
|
||||
@ -190,7 +190,7 @@ proc createAsyncPipe*(): tuple[read: AsyncFD, write: AsyncFD] =
|
||||
of ERROR_PIPE_CONNECTED:
|
||||
discard
|
||||
of ERROR_IO_PENDING:
|
||||
var bytesRead = 0.Dword
|
||||
var bytesRead = 0.DWORD
|
||||
if getOverlappedResult(pipeIn, addr ovl, bytesRead, 1) == 0:
|
||||
discard closeHandle(pipeIn)
|
||||
discard closeHandle(pipeOut)
|
||||
|
||||
@ -53,9 +53,9 @@ else:
|
||||
when hasThreadSupport:
|
||||
type
|
||||
SelectorImpl[T] = object
|
||||
rSet: FdSet
|
||||
wSet: FdSet
|
||||
eSet: FdSet
|
||||
rSet: Fdset
|
||||
wSet: Fdset
|
||||
eSet: Fdset
|
||||
maxFD: int
|
||||
fds: ptr SharedArray[SelectorKey[T]]
|
||||
count: int
|
||||
@ -64,9 +64,9 @@ when hasThreadSupport:
|
||||
else:
|
||||
type
|
||||
SelectorImpl[T] = object
|
||||
rSet: FdSet
|
||||
wSet: FdSet
|
||||
eSet: FdSet
|
||||
rSet: Fdset
|
||||
wSet: Fdset
|
||||
eSet: Fdset
|
||||
maxFD: int
|
||||
fds: seq[SelectorKey[T]]
|
||||
count: int
|
||||
@ -307,7 +307,7 @@ proc selectInto*[T](s: Selector[T], timeout: int,
|
||||
results: var openArray[ReadyKey]): int =
|
||||
var tv = Timeval()
|
||||
var ptv = addr tv
|
||||
var rset, wset, eset: FdSet
|
||||
var rset, wset, eset: Fdset
|
||||
|
||||
verifySelectParams(timeout)
|
||||
|
||||
|
||||
@ -621,16 +621,16 @@ when defined(windows):
|
||||
WSAENOBUFS* = 10055
|
||||
WSAETIMEDOUT* = 10060
|
||||
|
||||
proc cancelIo*(hFile: HANDLE): WINBOOL
|
||||
proc cancelIo*(hFile: Handle): WINBOOL
|
||||
{.stdcall, dynlib: "kernel32", importc: "CancelIo".}
|
||||
proc connectNamedPipe*(hPipe: HANDLE, lpOverlapped: ptr OVERLAPPED): WINBOOL
|
||||
proc connectNamedPipe*(hPipe: Handle, lpOverlapped: ptr OVERLAPPED): WINBOOL
|
||||
{.stdcall, dynlib: "kernel32", importc: "ConnectNamedPipe".}
|
||||
proc disconnectNamedPipe*(hPipe: HANDLE): WINBOOL
|
||||
proc disconnectNamedPipe*(hPipe: Handle): WINBOOL
|
||||
{.stdcall, dynlib: "kernel32", importc: "DisconnectNamedPipe".}
|
||||
proc setNamedPipeHandleState*(hPipe: HANDLE, lpMode, lpMaxCollectionCount,
|
||||
proc setNamedPipeHandleState*(hPipe: Handle, lpMode, lpMaxCollectionCount,
|
||||
lpCollectDataTimeout: ptr DWORD): WINBOOL
|
||||
{.stdcall, dynlib: "kernel32", importc: "SetNamedPipeHandleState".}
|
||||
proc resetEvent*(hEvent: HANDLE): WINBOOL
|
||||
proc resetEvent*(hEvent: Handle): WINBOOL
|
||||
{.stdcall, dynlib: "kernel32", importc: "ResetEvent".}
|
||||
|
||||
template getTransportTooManyError*(code: int = 0): ref TransportTooManyError =
|
||||
|
||||
@ -451,7 +451,7 @@ when defined(linux):
|
||||
# ARPHRD_NONE = 0xFFFE
|
||||
|
||||
type
|
||||
SockAddr_nl = object
|
||||
Sockaddr_nl = object
|
||||
family: cushort
|
||||
pad: cushort
|
||||
pid: uint32
|
||||
@ -614,14 +614,14 @@ when defined(linux):
|
||||
IfOther
|
||||
|
||||
proc createNetlinkSocket(pid: Pid): SocketHandle =
|
||||
var address: SockAddr_nl
|
||||
var address: Sockaddr_nl
|
||||
address.family = cushort(AF_NETLINK)
|
||||
address.groups = 0
|
||||
address.pid = cast[uint32](pid)
|
||||
var res = posix.socket(AF_NETLINK, posix.SOCK_DGRAM, NETLINK_ROUTE)
|
||||
if res != SocketHandle(-1):
|
||||
if posix.bindSocket(res, cast[ptr SockAddr](addr address),
|
||||
SockLen(sizeof(SockAddr_nl))) != 0:
|
||||
SockLen(sizeof(Sockaddr_nl))) != 0:
|
||||
discard posix.close(res)
|
||||
res = SocketHandle(-1)
|
||||
res
|
||||
@ -632,7 +632,7 @@ when defined(linux):
|
||||
rmsg: Tmsghdr
|
||||
iov: IOVec
|
||||
req: NLReq
|
||||
address: SockAddr_nl
|
||||
address: Sockaddr_nl
|
||||
|
||||
type TIovLen = type iov.iov_len
|
||||
|
||||
@ -648,7 +648,7 @@ when defined(linux):
|
||||
rmsg.msg_iov = addr iov
|
||||
rmsg.msg_iovlen = 1
|
||||
rmsg.msg_name = cast[pointer](addr address)
|
||||
rmsg.msg_namelen = SockLen(sizeof(SockAddr_nl))
|
||||
rmsg.msg_namelen = SockLen(sizeof(Sockaddr_nl))
|
||||
let res = posix.sendmsg(fd, addr rmsg, 0).TIovLen
|
||||
(res == iov.iov_len)
|
||||
|
||||
@ -658,7 +658,7 @@ when defined(linux):
|
||||
var
|
||||
rmsg: Tmsghdr
|
||||
iov: IOVec
|
||||
address: SockAddr_nl
|
||||
address: Sockaddr_nl
|
||||
buffer: array[64, byte]
|
||||
|
||||
type TIovLen = type iov.iov_len
|
||||
@ -696,7 +696,7 @@ when defined(linux):
|
||||
rmsg.msg_iov = addr iov
|
||||
rmsg.msg_iovlen = 1
|
||||
rmsg.msg_name = cast[pointer](addr address)
|
||||
rmsg.msg_namelen = SockLen(sizeof(SockAddr_nl))
|
||||
rmsg.msg_namelen = SockLen(sizeof(Sockaddr_nl))
|
||||
let res = posix.sendmsg(fd, addr rmsg, 0).TIovLen
|
||||
(res == iov.iov_len)
|
||||
|
||||
@ -704,14 +704,14 @@ when defined(linux):
|
||||
var
|
||||
rmsg: Tmsghdr
|
||||
iov: IOVec
|
||||
address: SockAddr_nl
|
||||
address: Sockaddr_nl
|
||||
data.setLen(IFLIST_REPLY_BUFFER)
|
||||
iov.iov_base = cast[pointer](addr data[0])
|
||||
iov.iov_len = IFLIST_REPLY_BUFFER
|
||||
rmsg.msg_iov = addr iov
|
||||
rmsg.msg_iovlen = 1
|
||||
rmsg.msg_name = cast[pointer](addr address)
|
||||
rmsg.msg_namelen = SockLen(sizeof(SockAddr_nl))
|
||||
rmsg.msg_namelen = SockLen(sizeof(Sockaddr_nl))
|
||||
var length = posix.recvmsg(fd, addr rmsg, 0)
|
||||
if length >= 0:
|
||||
data.setLen(length)
|
||||
@ -993,7 +993,7 @@ elif defined(macosx) or defined(bsd):
|
||||
ifi_reserved1 {.importc: "ifi_reserved1".}: uint32
|
||||
ifi_reserved2 {.importc: "ifi_reserved2".}: uint32
|
||||
|
||||
SockAddr_dl = object
|
||||
Sockaddr_dl = object
|
||||
sdl_len: byte
|
||||
sdl_family: byte
|
||||
sdl_index: uint16
|
||||
@ -1081,7 +1081,7 @@ elif defined(macosx) or defined(bsd):
|
||||
let family = cast[int](ifap.ifa_addr.sa_family)
|
||||
if family == AF_LINK:
|
||||
var data = cast[ptr IfData](ifap.ifa_data)
|
||||
var link = cast[ptr SockAddr_dl](ifap.ifa_addr)
|
||||
var link = cast[ptr Sockaddr_dl](ifap.ifa_addr)
|
||||
res[i].ifIndex = cast[int](link.sdl_index)
|
||||
let nlen = cast[int](link.sdl_nlen)
|
||||
if nlen < len(link.sdl_data):
|
||||
@ -1093,19 +1093,19 @@ elif defined(macosx) or defined(bsd):
|
||||
res[i].mtu = cast[int](data.ifi_mtu)
|
||||
elif family == posix.AF_INET:
|
||||
fromSAddr(cast[ptr Sockaddr_storage](ifap.ifa_addr),
|
||||
SockLen(sizeof(SockAddr_in)), ifaddress.host)
|
||||
SockLen(sizeof(Sockaddr_in)), ifaddress.host)
|
||||
elif family == posix.AF_INET6:
|
||||
fromSAddr(cast[ptr Sockaddr_storage](ifap.ifa_addr),
|
||||
SockLen(sizeof(SockAddr_in6)), ifaddress.host)
|
||||
SockLen(sizeof(Sockaddr_in6)), ifaddress.host)
|
||||
if not isNil(ifap.ifa_netmask):
|
||||
var na: TransportAddress
|
||||
var family = cast[cint](ifap.ifa_netmask.sa_family)
|
||||
if family == posix.AF_INET:
|
||||
fromSAddr(cast[ptr Sockaddr_storage](ifap.ifa_netmask),
|
||||
SockLen(sizeof(SockAddr_in)), na)
|
||||
SockLen(sizeof(Sockaddr_in)), na)
|
||||
elif family == posix.AF_INET6:
|
||||
fromSAddr(cast[ptr Sockaddr_storage](ifap.ifa_netmask),
|
||||
SockLen(sizeof(SockAddr_in6)), na)
|
||||
SockLen(sizeof(Sockaddr_in6)), na)
|
||||
ifaddress.net = IpNet.init(ifaddress.host, na)
|
||||
|
||||
if ifaddress.host.family != AddressFamily.None:
|
||||
|
||||
@ -868,7 +868,7 @@ elif defined(windows):
|
||||
else:
|
||||
# We should not raise defects in this loop.
|
||||
discard disconnectNamedPipe(Handle(server.sock))
|
||||
discard closeHandle(HANDLE(server.sock))
|
||||
discard closeHandle(Handle(server.sock))
|
||||
raiseAssert osErrorMsg(osLastError())
|
||||
else:
|
||||
# Server close happens in callback, and we are not started new
|
||||
@ -1022,7 +1022,7 @@ elif defined(windows):
|
||||
|
||||
proc pauseAccept(server: StreamServer) {.inline.} =
|
||||
if server.apending:
|
||||
discard cancelIO(Handle(server.sock))
|
||||
discard cancelIo(Handle(server.sock))
|
||||
|
||||
proc resumeAccept(server: StreamServer) {.inline.} =
|
||||
if not(server.apending):
|
||||
@ -1081,7 +1081,7 @@ elif defined(windows):
|
||||
server.asock.closeSocket()
|
||||
retFuture.fail(getServerUseClosedError())
|
||||
server.clean()
|
||||
of OsErrorCode(common.WSAENETDOWN), OSErrorCode(common.WSAENETRESET),
|
||||
of OSErrorCode(common.WSAENETDOWN), OSErrorCode(common.WSAENETRESET),
|
||||
OSErrorCode(common.WSAECONNABORTED),
|
||||
OSErrorCode(common.WSAECONNRESET),
|
||||
OSErrorCode(common.WSAETIMEDOUT):
|
||||
@ -1223,7 +1223,7 @@ elif defined(windows):
|
||||
cb: continuationPipe,
|
||||
udata: cast[pointer](server))
|
||||
server.apending = true
|
||||
let res = connectNamedPipe(HANDLE(server.sock),
|
||||
let res = connectNamedPipe(Handle(server.sock),
|
||||
cast[POVERLAPPED](addr server.aovl))
|
||||
if res == 0:
|
||||
let err = osLastError()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user