Commit Graph

47 Commits

Author SHA1 Message Date
Elias Naur 8999747ad2 app,gpu,internal/vk: add Vulkan port for Wayland, X11, Android
This change implements a Vulkan port for the two renderers, old and
compute. Run with GIORENDERER=forcecompute to test the compute renderer.

To shake out bugs faster, it is also made the default on systems that
support it. To disable Vulkan and force the use of OpenGL, use the
`novulkan` tag:

$ go run -tags novulkan gioui.org/example/kitchen

Don't forget to file an issue describing the issue that prompted the use
of the tag.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-09-21 18:40:05 +02:00
Pierre Curto 30663a71c5 build: check gofmt and sign-off first
Fixes #264

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>
2021-09-06 17:09:21 +02:00
Elias Naur 671f0b1858 .builds: update Google Chrome repository URL
The old one no longer works.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-09-01 14:28:58 +02:00
Elias Naur a77d74f20a .builds: disable go.local.mod test for gogio
I gave up figuring out how to run it under Go 1.17.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-07-27 12:23:20 +02:00
Elias Naur 17e9896e58 .builds: upgrade to Go 1.16.6
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-07-27 12:23:20 +02:00
Elias Naur a7be7cc22b .builds: bump android SDK version to fix gogio builds
Upgrade gogio's version of the gioui.org module while here.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-05-19 11:38:43 +02:00
Elias Naur e49afe7fa1 .builds: silence apt-get, curl commands
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-03-28 15:45:13 +02:00
Elias Naur c2e0910c8b .builds: don't pass -v to go test
Some tests are so verbose they hide the relevant error messages.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-03-28 14:17:04 +02:00
Elias Naur 33a1c4722a .builds: don't set EGL_PLATFORM for chrome tests
EGL_PLATFORM=surfaceless allows rendering tests to complete in headless
mode. However, the headless chrome tests fail with that setting. Change
the linux builder to only set the variable when needed.

Enable verbose output of tests while here. We can keep an eye on skipped
tests that way.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2021-02-18 08:33:42 +01:00
Elias Naur 74cee277ca .builds: clarify missing sign-off error message
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-12-17 21:35:18 +01:00
Elias Naur e0a8202aa0 .builds: enable headless OpenGL tests on linux
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-12-17 20:35:28 +01:00
Chris Waldon eb719eaa54 ci: configure automatic mirroring to GitHub
Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
2020-12-14 23:56:54 +01:00
Elias Naur b456e987f7 .builds: prepare for splitting out examples in separate repository
The example module is moving to git.sr.ht/~eliasnaur/gio-example.
We still need some main package for testing gogio, so update reference
to use the module path (gioui.org/example).

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-12-08 19:40:57 +01:00
Elias Naur 53e0733d20 .builds: test iOS/Android builds of the gioui.org module, not just the example
The kitchen example may not yet refer to the newest version of the gioui.org
module.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-12-05 14:32:13 +01:00
Elias Naur eb91b2c517 .builds: install chrome dependency just before needing it
Reduces the time it takes for core and example tests to complete.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-12-04 19:06:08 +01:00
Elias Naur e2f9ebe87e .builds: add check for missing sign-offs
As suggested by Chris Waldon, this will catch pushes to master and
also during automatic testing of patches sent to the mailing list.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-19 18:56:47 +01:00
Elias Naur 8886f9de56 .builds: add SPDX license header
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-19 18:44:57 +01:00
Elias Naur fe9c11dfe3 .builds: move go fmt check last
The check is important, but shouldn't block the other tests from running.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-19 18:11:55 +01:00
Elias Naur 829ee4559c .builds: remove annotations
They're gone from sr.ht, according to
https://todo.sr.ht/~sircmpwn/git.sr.ht/318#event-47831.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-08-29 18:27:55 +02:00
Elias Naur c03dde453c .builds: merge android.yml into linux.yml
sr.ht recently lowered the number of concurrent builders per commit
to 4.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-08-29 17:50:31 +02:00
Elias Naur 9543b5f8f3 .builds: add missing dependency
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-08-24 19:42:09 +02:00
Daniel Martí 9ad412ea0b cmd: bump gioui.org dependency, use -modfile properly on CI
A simple 'go test -modfile=<path>' won't work properly for the
end-to-end tests, since they run 'go build' under the hood as well.

To properly propagate the flag, we need to use GOFLAGS. Since -modfile
is always relative to the current directory, we can't use it to test
many packages at once, nor can we use it via 'go test ./gogio'.

While at it, document this distinction in go.local.mod to prevent others
getting confused like I did.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2020-05-10 20:32:53 +02:00
Daniel Martí ec34eb4919 cmd: add a go.local.mod for development
It's essentially a copy of go.mod, but with the gioui.org module replaed
with the parent directory. Useful when wanting to try a change in the
root module as part of a gogio invocation or end-to-end test, such as
either of the following:

	$ cd cmd; go test -modfile=go.local.mod ./...
	$ cd cmd/gogio; go build -modfile=../go.local.mod

Since go.sum can essentially be shared, and since it seems to work with
the go tool, use a symlink. The way the -modfile flag works, if given
foo.mod, it will use the sum file at foo.sum. The only caveat is that
'go mod tidy -modfile=go.mod.local' will try to remove gioui.org lines,
since that module is replaced. So tidy shouldn't be used with -modfile.

In the future, the only upkeep needed for go.local.mod is to update the
external dependencies to mirror changes in go.mod. This is not automated
nor checked by CI, but it could be in the future if it becomes
repetitive or error-prone.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2020-05-06 08:41:00 +02:00
Elias Naur 0542796463 .builds: add webassembly build test
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-04-01 13:32:18 +02:00
Chris Waldon daecdcaabf ci: add skeleton for sourcehut annotations
This commit adds the necessary task to the CI job to generate sourcehut
annotations as documented here:

https://man.sr.ht/git.sr.ht/annotations.md

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
2020-03-15 09:30:37 +01:00
Daniel Martí acfe91ec3e CI: add wine on Linux for the Windows e2e test
Installing it on Debian was enough, with the only wrinkle that
propagating -race won't work when we're cross-compiling, since
cross-compilation disables CGo by default.

For now, just skip the test in that edge case. If we want to use the
race detector on Windows in the future, we need to get a Windows CI
builder somehow.

Tested on my fork; see https://builds.sr.ht/~mvdan/job/164899.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2020-03-08 10:52:08 +01:00
Daniel Martí b064899967 cmd/gogio: groundwork for Windows e2e tests on Wine
First, move from debian unstable to testing, since sway was promoted to
testing as of earlier this week.

Second, use the --sync option when using xdotool to move an X11 mouse.
This makes the command block until the mouse has finished moving to the
specified location, removing a potential race with the following
'xdotool click' command.

Third, deduplicate some logic into driverBase: tempDir to create a
temporary directory within a test, and needPrograms to skip a test if
the required programs aren't available.

Lastly, split the code that starts the X11 server into a method, so that
the future Wine e2e driver can reuse it. Since Wine is tightly coupled
with X11, we can reuse a good part of the code, including the X11 server
and the xdotool mechanisms.

We also add a TODO to perhaps improve the handling of the app's output
under each of the e2e test cases.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2020-03-02 10:29:17 +01:00
Elias Naur 4b7387369b .builds: upgrade to Go 1.14 final
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-02-27 21:56:18 +01:00
Daniel Martí 150b34aede .builds: re-add sway on Debian
It passes now, thanks to the recent work to add retries to screenshots.

If it turns out to still not be reliable enough, we can look at this
again.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2020-02-20 09:12:02 +01:00
Daniel Martí 47544697fa .builds: switch to Go 1.14rc1 release downloads
On Linux and FreeBSD, this means we no longer need to install Go twice,
since we don't need to bootstrap a Go build. This reduces the "install
go" step by over half a minute, and avoids installing a number of distro
packages.

Debian requires the pkg-config package to be explicit, as it's not part
of the build-essential metapackage, and we need it. It was being pulled
as a dependency from the golang package before.

OpenBSD is nearly the same change, modulo the fact that Go doesn't have
a binary release for it. So instead, we keep installing Go via the
system's package, and we download and build a source archive.

Finally, switch from Debian testing+experimental to simply unstable.
Sway 1.4 finally hit unstable a few days ago, and experimental is
extremely unstable, so this is a step in the right direction. Add a TODO
about going to just testing once sway 1.4 arrives there.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2020-02-09 10:58:35 +01:00
Elias Naur 5f3f7b3514 .builds: make the GLFW example build on the automatic builders
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-02-08 00:14:20 +01:00
Elias Naur dcacca3442 .builds: don't rely on Sway being available
The Sway Debian experimental package is currently broken. Make it
optional.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-02-03 14:47:11 +01:00
Elias Naur fb07ad6593 .builds: add missing dependency
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-01-24 15:00:46 +01:00
Elias Naur b4f73b3ef7 .builds: add missing xkbcommon-x11 dependency
The dependency was added when merging the X11 and Wayland keyboard
handling.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-28 12:09:29 +01:00
Elias Naur e683b19b29 .builds: use Go 1.14 for the basic tests
WebAssembly builds require Go 1.14 since the breaking change in Go,
golang.org/cl/203600.

gofmt -w -s . as well.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-06 18:35:44 +01:00
Elias Naur 4719d56f86 .builds: fix go fmt test and go fmt -w -s .
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-05 12:50:07 +01:00
Daniel Martí 4d7c89fec3 cmd/gogio: simplify the test -race setup
In an earlier commit, we made it possible to run the e2e tests with the
race detector enabled everywhere via GOFLAGS=-race go test.

However, that's not at all standard; most users will simply use 'go test
-race'. Moreover, having 'go test -race' run the test program with the
race detector, but not the e2e gio app, is a bit useless.

Instead, have the tests detect when they run with the race detector, and
enable the race detector in the test app too. As before, the JS test is
skipped whenever -race is used.

This also means we can test with -race in the same way in each of the
modules, which simplifies CI.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2019-11-04 22:21:21 +01:00
Elias Naur 2bee95358a .builds: run the cmd tests with and without -race
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-03 13:06:14 +01:00
Elias Naur cc4b407647 .build,cmd: add -race to test programs
It's not possible to set GOFLAGS=-race because some programs are
built for webassembly where -race is not supported.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-03 12:09:02 +01:00
Elias Naur b3635c78ee .builds: add sway as dependency for Wayland end-to-end test
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-02 18:55:31 +01:00
Elias Naur 06aa0da2a2 .builds: add scrot to the linux image for the X11 end-to-end test
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-02 10:43:50 +01:00
Elias Naur 837b5f6bab .builds: install xdotool in the linux builder to satisfy the X11 test
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-01 22:27:42 +01:00
Elias Naur f418684c0e .builds: set GOFLAGS=-mod=readonly to catch stale go.mod files
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-11-01 18:00:28 +01:00
Elias Naur c131a7f423 .builds: remove existing $PATH from PATH settings
$PATH is not expanded anyway, and it's better to be explicit.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-10-30 11:49:44 +01:00
Elias Naur 7939f142bd .builds: remove unused path from PATH
It was left over from when the builds didn't use the distro version
of Go.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-10-30 11:41:24 +01:00
Elias Naur fe54f3df4e .builds: add xvfb package to the linux builder for X11 end-to-end test
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-10-29 20:04:47 +01:00
Elias Naur b8edf2ee04 .builds: switch from fedora/latest to debian/testing
Fedora builds kept failing at package installation. See
~sircmpwn/builds.sr.ht#220.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-10-29 17:48:12 +01:00