Because of how fdb-go-install.sh functions, it's necessary to use to use
the folder that the script installs to, located at
$GOPATH/src/github.com/apple/foundationdb/bindings/go. Since modules
will use the version from
$GOPATH/pkg/mod/github.com/apple/foundationdb/bindings/go and has a checksum of it
stored in go.sum, it's not possible to use this package currently with modules enabled.
I believe the solution to this problem is to use replace directives:
https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-directive
After using the install script, adding
`replace github.com/apple/foundationdb/bindings/go => $GOPATH/src/github.com/apple/foundationdb/bindings/go`
will allow Go programs to be built normally with modules.
Note: $GOPATH cannot be used directly and must be expanded into an absolute
or relative path.
This go.mod must be added for replace directives to work correctly.
This encapsulates logic for how to report particular error messages.
So far only used for reporting an actor not containing a wait statement,
as this warning should be suppressed in certain contexts.
We could change other error messages to use this class, but since they
don't have any logic I don't think the extra indirection is appropriate.
After this change I am able to load foundationdb.sln with vscode and get
features like jump to definition and autocomplete.
IntermediateOutputPath will now use a default value.
This fixes the ctest prb.
CI was broken because TestRunner errored at:
Traceback (most recent call last):
File "/foundationdb/tests/TestRunner/TestRunner.py", line 373, in <module>
res = run_simulation_test(basedir, args)
File "/foundationdb/tests/TestRunner/TestRunner.py", line 313, in run_simulation_test
options.log_format, return_codes)
File "/foundationdb/tests/TestRunner/TestRunner.py", line 261, in process_traces
parser.processTraces()
File "/foundationdb/tests/TestRunner/TestRunner.py", line 112, in processTraces
obj = self.processLine(line, linenr)
File "/foundationdb/tests/TestRunner/TestRunner.py", line 222, in processLine
xml.sax.parseString(line, handler, errorHandler=errorHandler)
File "/usr/lib/python3.4/xml/sax/__init__.py", line 45, in parseString
inpsrc.setByteStream(BytesIO(string))
TypeError: 'str' does not support the buffer interface
Which means you can't parse a string to parseString. This was fixed by
3.7, but our CI runs 3.4, so we need to .encode() `line` before passing
it, so that it ends up as a `bytes`.