This is how I did it: 1. `git clone https://github.com/ooni/probe-engine internal/engine` 2. ``` (cd internal/engine && git describe --tags) v0.23.0 ``` 3. `nvim go.mod` (merging `go.mod` with `internal/engine/go.mod` 4. `rm -rf internal/.git internal/engine/go.{mod,sum}` 5. `git add internal/engine` 6. `find . -type f -name \*.go -exec sed -i 's@/ooni/probe-engine@/ooni/probe-cli/v3/internal/engine@g' {} \;` 7. `go build ./...` (passes) 8. `go test -race ./...` (temporary failure on RiseupVPN) 9. `go mod tidy` 10. this commit message Once this piece of work is done, we can build a new version of `ooniprobe` that is using `internal/engine` directly. We need to do more work to ensure all the other functionality in `probe-engine` (e.g. making mobile packages) are still WAI. Part of https://github.com/ooni/probe/issues/1335
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # OONI probe measurement engine
 | |
| 
 | |
| [](https://godoc.org/github.com/ooni/probe-engine) [](https://github.com/ooni/probe-engine/actions?query=workflow%3Ashorttests) [](https://github.com/ooni/probe-engine/actions?query=workflow%3Aalltests) [](https://coveralls.io/github/ooni/probe-engine?branch=master) [](https://goreportcard.com/report/github.com/ooni/probe-engine)
 | |
| 
 | |
| This repository contains OONI probe's [measurement engine](
 | |
| https://github.com/ooni/spec/tree/master/probe#engine). That is, the
 | |
| piece of software that implements OONI nettests as well as all the
 | |
| required functionality to run such nettests.
 | |
| 
 | |
| We expect you to use the Go version indicated in [go.mod](go.mod).
 | |
| 
 | |
| ## Integrating ooni/probe-engine
 | |
| 
 | |
| We recommend pinning to a specific version of probe-engine:
 | |
| 
 | |
| ```bash
 | |
| go get -v github.com/ooni/probe-engine@VERSION
 | |
| ```
 | |
| 
 | |
| See also the [workflows/using.yml](.github/workflows/using.yml) test
 | |
| where we check that the latest commit can be imported by a third party.
 | |
| 
 | |
| We do not provide any API stability guarantee.
 | |
| 
 | |
| ## Building miniooni
 | |
| 
 | |
| [miniooni](cmd/miniooni) is a small command line client used for
 | |
| research and quality assurance testing. Build using:
 | |
| 
 | |
| ```bash
 | |
| go build -v ./cmd/miniooni/
 | |
| ```
 | |
| 
 | |
| See also `./build-cli.bash` for more advanced builds (e.g. to create
 | |
| statically linked and/or stripped binaries).
 | |
| 
 | |
| We don't provide any `miniooni` command line flags stability guarantee.
 | |
| 
 | |
| See
 | |
| 
 | |
| ```bash
 | |
| ./miniooni --help
 | |
| ```
 | |
| 
 | |
| for more help.
 | |
| 
 | |
| ## Building Android bindings
 | |
| 
 | |
| ```bash
 | |
| ./build-android.bash
 | |
| ```
 | |
| 
 | |
| We automatically build Android bindings whenever commits are pushed to the
 | |
| `mobile-staging` branch. Such builds could be integrated by using:
 | |
| 
 | |
| ```Groovy
 | |
| implementation "org.ooni:oonimkall:VERSION"
 | |
| ```
 | |
| 
 | |
| Where VERSION is like `2020.03.30-231914` corresponding to the
 | |
| time when the build occurred.
 | |
| 
 | |
| ## Building iOS bindings
 | |
| 
 | |
| ```bash
 | |
| ./build-ios.bash
 | |
| ```
 | |
| 
 | |
| We automatically build iOS bindings whenever commits are pushed to the
 | |
| `mobile-staging` branch. Such builds could be integrated by using:
 | |
| 
 | |
| ```ruby
 | |
| pod 'oonimkall', :podspec => 'https://dl.bintray.com/ooni/ios/oonimkall-VERSION.podspec'
 | |
| ```
 | |
| 
 | |
| Where VERSION is like `2020.03.30-231914` corresponding to the
 | |
| time when the build occurred.
 | |
| 
 | |
| ## Updating dependencies
 | |
| 
 | |
| ```
 | |
| go get -u -v ./... && go mod tidy
 | |
| ```
 |