New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
go1.15: go build -v fails unless -tags PSIPHON_DISABLE_QUIC is passed #866
Comments
Documented workaroundPsiphon devs just recommended this workaround (which also works for me): |
I adapted the build script accordingly. Is it worth a PR? |
Who's building using How about: we create one/two files in the top-level package that only conditionally build if either we're in Go 1.14 or the user has provided the What do you think? |
When I started to figure out how to build the project, the first thing I did was to have a look at the build script to see the necessary flags etc.. But I'm fine with adding a file that crashes the build on compile time if preconditions are not met. I'll propose something in a PR, together with the changes for the build script. EDIT: This compile time hack should be undone as soon as soon as the psyphon folks have updated their fork. |
Yes, indeed. Ideally, the tag should only be added to the compilation when using Go 1.15, while Go 1.14 binaries should continue to be compiled without it. So the only functional change is better user experiences for folks on Go 1.15. |
* workaround to build probe-engine with go1.15 (#866) * change order of arguments so that empty -tags argument will be ignored correctly
I just figured it's probably more transparent to inform the user running the build script that we're applying this workaround. Also, in readme_compiletimecheck.go, let us mention explicitly what is the build script that we could use for increased clarity. Related to #866.
We now have a workaround for people building using go1.15. We wanna make sure with a simple smoke test we produce a working miniooni binary. Also part of #866.
* build-cli.sh: say it when we apply workaround I just figured it's probably more transparent to inform the user running the build script that we're applying this workaround. Also, in readme_compiletimecheck.go, let us mention explicitly what is the build script that we could use for increased clarity. Related to #866. * github/workflows: make sure we don't break go1.15 builds We now have a workaround for people building using go1.15. We wanna make sure with a simple smoke test we produce a working miniooni binary. Also part of #866.
So, this is where we are at now. When using Go 1.15 and compiling, you'll get:
and
Also building with
We will still keep it open and pinned. People compiling with Go 1.15 will still see an error unless they do not apply the workaround when building. Also, the name of the issue can now be changed. |
* fix(oonimkall/session.go): export stats to mobile Closes #959 * fix(ndt7): reduce unnecessary memory usage Closes #719 * Update to github.com/ooni/probe-assets@20201023140148 Part of #590 * chore: update dependencies Part of #972 * chore: update the user-agent header we use See #972 * fix: psiphon is now using PSIPHON_DISABLE_QUIC Related to #866 * chore(version.go): we're at 0.19.0 stable See #972 * chore: update bundled certificates See #972 While there make sure releases documentation highlights the purpose rather than just the action we need to perform.
Changed issue title since now both the latest stable release (v0.19.0) and master use |
So, after #747, it seems we always need to add |
Releasing a version of probe-engine that only builds with `-tags PSIPHON_DISABLE_QUIC` for every version of Go is a bad idea. This PR is based of https://github.com/ooni/psiphon, which is vendors psiphon sources and all its dependencies in a way that does not cause conflicts in the package path. This codebase also disables QUIC support when using Go 1.15 (now the default on Fedora), so we don't have any conflict and the code builds seamlessly. Because I've been told by Psiphon developers that they're working to upgrade their QUIC implementation, this means we are not going to use Psiphon without QUIC for a long time when using Go 1.15. Also, they told me it should ~fine to use Psiphon without QUIC anyway. Lastly, we're currently using Go 1.14 for building our own packages, so we're not removing anything from our official packages. With this diff committed, we dramatically simplify dependency management and we remove the requirement of specifying a manual flag to get probe-engine (and hence probe-cli) to compile with Go 1.15. This is the reference issue: #866.
This issue has been solved by #1022. |
We can close now |
Reopening until we have a stable version for which this is fixed! |
Moving to next Sprint where we'll publish a release fixing this issue. |
No need to keep this in Sprint 26, since it's mentioned at #1004. Removing from this milestone. |
This is fixed in v0.20.0 |
(We have now completely mitigated this issue by building atop the documented workaround.)
This is the output I obtain when compiling using Go 1.15:
The reason seems to be that Go 1.15 changed its
tls.ConnectionState
structure. There is a fix applied upstream that handles this issue. It seems Psiphon is using its own fork of quic-go: https://github.com/Psiphon-Labs/quic-go.This means that, for fixing the issue, the Psiphon devs need to backport the patch. For now, it's important to use Go 1.14 only for building OONI.
The text was updated successfully, but these errors were encountered: