Skip to content

Add support for Linux/arm64 (aarch64) #112

@anthonyfok

Description

@anthonyfok

After initial diagnosis of gohugoio/hugo#1772, I discovered that fsnotify is using some syscalls that are unavailable on the Linux for ARM64 platform. Here is the result of go test -v ./... run:

=== RUN   TestPollerWithBadFd
--- PASS: TestPollerWithBadFd (0.00s)
=== RUN   TestPollerWithData
--- FAIL: TestPollerWithData (0.13s)
    inotify_poller_test.go:82: poller failed: function not implemented
=== RUN   TestPollerWithWakeup
--- FAIL: TestPollerWithWakeup (0.13s)
    inotify_poller_test.go:101: poller failed: function not implemented
=== RUN   TestPollerWithClose
--- FAIL: TestPollerWithClose (0.13s)
    inotify_poller_test.go:116: poller failed: function not implemented
=== RUN   TestPollerWithWakeupAndData
--- FAIL: TestPollerWithWakeupAndData (0.13s)
    inotify_poller_test.go:137: poller failed: function not implemented
=== RUN   TestPollerConcurrent
--- FAIL: TestPollerConcurrent (0.13s)
    inotify_poller_test.go:180: poller failed: function not implemented
    inotify_poller_test.go:197: expected true
=== RUN   TestInotifyCloseRightAway
--- PASS: TestInotifyCloseRightAway (0.05s)
=== RUN   TestInotifyCloseSlightlyLater
--- PASS: TestInotifyCloseSlightlyLater (0.18s)
=== RUN   TestInotifyCloseSlightlyLaterWithWatch
--- PASS: TestInotifyCloseSlightlyLaterWithWatch (0.18s)
=== RUN   TestInotifyCloseAfterRead
--- PASS: TestInotifyCloseAfterRead (0.18s)
=== RUN   TestInotifyCloseCreate
--- FAIL: TestInotifyCloseCreate (0.13s)
    inotify_test.go:136: Took too long to wait for event
=== RUN   TestInotifyStress
--- FAIL: TestInotifyStress (0.13s)
    inotify_test.go:242: Got an error from watcher: function not implemented
=== RUN   TestInotifyRemoveTwice
--- PASS: TestInotifyRemoveTwice (0.00s)
=== RUN   TestInotifyInnerMapLength
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
testing.RunTests(0x234a50, 0x2d23e0, 0x1e, 0x1e, 0x482000e600)
    /usr/lib/go/src/testing/testing.go:562 +0x680
testing.(*M).Run(0x4820043ef0, 0x1e63b0)
    /usr/lib/go/src/testing/testing.go:494 +0x84
main.main()
    github.com/go-fsnotify/fsnotify/_test/_testmain.go:114 +0x118

goroutine 37 [chan receive]:
github.com/go-fsnotify/fsnotify.TestInotifyInnerMapLength(0x48200ca120)
    /home/foka/go/src/github.com/go-fsnotify/fsnotify/inotify_test.go:332 +0x524
testing.tRunner(0x48200ca120, 0x2d2518)
    /usr/lib/go/src/testing/testing.go:456 +0xbc
created by testing.RunTests
    /usr/lib/go/src/testing/testing.go:561 +0x654

goroutine 38 [select]:
github.com/go-fsnotify/fsnotify.(*Watcher).readEvents(0x48200fc230)
    /home/foka/go/src/github.com/go-fsnotify/fsnotify/inotify.go:193 +0x368
created by github.com/go-fsnotify/fsnotify.NewWatcher
    /home/foka/go/src/github.com/go-fsnotify/fsnotify/inotify.go:60 +0x3c4
exit status 2
FAIL    github.com/go-fsnotify/fsnotify 6.358s

Tested on Debian sid (arm64), Linux kernel 3.16.0-4-arm64, go1.5.2 linux/arm64, on Debian "porterbox" test machine asachi.debian.org running on an APM X-Gene Mustang board.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions