Commit Graph

89 Commits (f392619036201c7de442206ad2f9c20923a3e60d)

Author SHA1 Message Date
Sam Mikes (He/him/his) 22dabbeeb5 docker: refactor and update docker image build
Fixes tailscale/tailscale#15674

update docker image datestamp
make docker-shell target use the build image with an explicit /bin/bash command
retain the docker-remove-shell-image target in case something depends on it, but clarify that it is now a no-op
hoist all ENV declarations
hoist all mkdir commands
combine mkdir commands
use env vars in mkdir
combine apt-get commands into single RUN
make argument order consistent in apt-get commands
collect packages into fewer apt-get commands
add clean up of temporary files after apt-get
expand apt-get commands to one package per line
sort packages in apt-get commands
combine go installation commands into single RUN
update golang version to 1.24.1
also copy build.gradle file
ensure gradlew is executable before running
remove trailing newline

per review comment, extract multiline apt-get command
into shell script, copy and run that shell script within
image during docker build

Signed-off-by: Sam Mikes (He/him/his) <sam.mikes@gm.com>
8 months ago
Jonathan Nobels 9a69bc3483
android: update base builder image (#625)
Updating our base builder to eclipse-temurin:21 to
fix apt dependency errors.  Updating the default
toolchains to speed up the build.

Updates tailscale/tailscale#15210

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
9 months ago
kari-ts 45d97105fb
android: intall zip (#624)
Add zip installation to Dockerfile and bump Docker image version

Updates tailscale/tailscale#15210
Signed-off-by: kari-ts <kari@tailscale.com>
9 months ago
kari-ts 141b1cff45
Makefile: make unstripped libtailscale and debug symbols (#619)
- Added Makefile targets to build an unstripped version of the libtailscale AAR.
- Extracted the native .so (libgojni.so) from the unstripped AAR.
- Generated a debug symbols file (libgojni.so.debug) using llvm-objcopy with --only-keep-debug.
- Stripped the native library (libgojni.so.stripped) with --strip-debug and repackaged the final AAR.

This allows the build chain to produce a stripped AAR for the app and a separate debug symbols file that can be uploaded to Google Play for crash deobfuscation.

Signed-off-by: kari-ts <kari@tailscale.com>
Updates tailscale/tailscale#15210
9 months ago
kari-ts 2f91d068c7
Makefile: update -compat flag (#616)
Updates tailscale/tailscale#15015

Signed-off-by: kari-ts <kari@tailscale.com>
9 months ago
Jonathan Nobels f90967efae
Makefile: run version before attempting to build the apk/aab (#566)
Makefile: run version before any APK builds

updates tailscle/corp#24686

We must ensure the correct version file exists before
kicking off any of the apk or aab builds.  This also revs
the docker image so we're picking up the latest
toolchain.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
James Tucker e89c259749 Makefile: fix clean action dependencies
The explicit target was removed during patch production, but the
dependency wasn't removed from the clean action.

Updates #546
Updates tailscale/tailscale#13850

Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
James Tucker e7325f7d5f Makefile,*: use tailscale.com/cmd/mkversion
We've suffered misalignment in versioning and toolchain usage due to the
shell invocations downstream of ./version/tailscale-version.sh, but also
the whole version data scheme in the Makefile was quite complicated, and
required synchronization in the build.grade.

- Makfile no longer needs to be version aware itself.
- A Makefile target tailscale.version refreshes a local cached output
  from tailscale.com/cmd/mkversion which is updated when go.mod / go.sum
  change.
- build.gradle loads tailscale.version to get the version string.
- ldflags are produced from tailscale.version via version-ldflags.sh

Updates tailscale/tailscale#13850

Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
Brad Fitzpatrick 2e9f6b735e Makefile: fix typo in comment
Updates #cleanup

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
1 year ago
kari-ts 18b8c78754
android: update PR description for bumposs to use "bump" (#543)
Updates #cleanup

Signed-off-by: kari-ts <kari@tailscale.com>
1 year ago
Brad Fitzpatrick f26a828cbd Makefile: use "tailscale_go" build tag when using Tailscale's Go toolchain
Updates tailscale/tailscale#13527

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
1 year ago
James Tucker 2fcb080aa6 Makefile: ensure go.toolchain.rev is included in bumposs
Updates #501

Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
James Tucker 9e09fad087 Makefile: update go.toolchain.rev atomically
Updates #501

Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
James Tucker 204173d10c Makefile: use explicit path to command invocations
Make does not respect PATH updates made inside the Makefile for program
lookup in invocations. This can be worked around a number of ways, but
differences between the Linux gmake versions in CI, and the macOS gmake
versions on developer machines constrain us.

Updates #501

Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
James Tucker 209045d4f7 Makefile: remove go toolchain version marker in clean as well
The go wrapper script in tool/go assumes that .extracted is
representative of the state of the toolchain directory, so it must be
removed when the toolchain directory is removed.

Updates #501

Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
James Tucker 7888447f3f Makefile: disable GOTOOLCHAIN from dynamic switching
Go has a new build facility that can utilize other toolchains if a
module says so, but we manage the toolchain in our own way, so disable
it.

Updates #501

Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
James Tucker 72c410465c Makefile: add command to start emulator
This emulator command starts an emulator and keeps running in the
foreground so as to avoid creating zombies.

Updates #343

Co-authored-by: kari@tailscale.com
Signed-off-by: James Tucker <james@tailscale.com>
1 year ago
Jonathan Nobels e195def5e2
android: fix clean build (#499)
updates tailscale/corp#17686

'make clean' will now purge the cached toolchain to ensure you're using the
right go version when switching branches.  make clean is run in CI before
building anything and the docker container name is updated to pick that up.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels ab7ab73736
android: fix versioning and bump oss (#490)
* android: update docker image names for go 1.23

updates #cleanup

We need to regenerate the docker images, we'll
denote the new ones with a go1.23 extension.

This also sets the TS_USE_TOOLCHAIN flag so
we're using the corp toolchain which fixes some
versioning script issues.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>

* android: bumping OSS

OSS and Version updated to 1.73.104-te7b5e8c8c-g161457b99b5

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>

---------

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Anton Tolchanov fb8a4f51dc Makefile: fix docker-shell command line
- Fix volume mounting (positional argument to `-v`)
- Correct the make target name in README

Updates tailscale/corp#19670

Signed-off-by: Anton Tolchanov <anton@tailscale.com>
1 year ago
Andrea Gottardo 19581721cf
android: bump OSS to 1.73.73, use Go 1.23 (#485)
Updates #cleanup

OSS and Version updated to 1.73.73

Signed-off-by: Andrea Gottardo <andrea@gottardo.me>
1 year ago
Jonathan Nobels 502eada21a
makefile: add tag_release recipe (#474)
updates #cleanup

The tag_release recipe was integrated with bumposs, but it's
still needed to manually tag branches such as the release
branch.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels 716152b57d
makefile: add bump_version_code recipe back (#464)
updates tailscale/corp#21644

The docker build sill requires the recipe for bumping
the version code by one before we run the second
androidTV build.  This was removed, which breaks the
build.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels 76ab7eab92
makefile: fix bumposs to properly set version and tag (#456)
Updates #cleanup

bumposs was not properly setting the version.  Split the tasks
into separate recipes.  Simply calling make bumposs should
now generate a single commit with the proper versioning
in build.gradle.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels 32e48dc78e
makefile: consolidate bump/tag (#453)
Updates #cleanup

Bumping oss and tagging the release are now combined into a single step.   make bumposs will
now bump to the latest OSS, tag the commit and update the version number in build.gradle in
a single step.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels 6deb61a20e
android/docker: combine CMD invocations into a single line (#448)
android/docker: combine CMD into a single line

 updates tailscale/corp#21644

docker ignores all but the last CMD invocation.  These
have to be combined into a single line.  The clean is
redundant.  We run a clean on the mounted directory
before we kick off make docker-run-build.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels b9477c64a8
android/gradle: separate release and release_tv (#447)
updates tailscale/corp#21644

release_tv should init with the release target or it doesn't
build the right thing.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels 2f59feef20
android/makefile: add tv-specific build variant (#445)
android/makefile: add tv-specific build

 updates tailscale/corp#21644

This will build a second tailscale-release-tv.aab with the leanback flag set
suitable for submission for android-tv.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels 66fa3c41a6
docs/makefile: update docker build instructions (#442)
#cleanup

Updated the notes on refreshing docker build containers
Removed the jarsign output from the build as it contains
the jks password.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels dfda774dc0
makefile: reuse image and remove container for builds (#440)
Updates tailscale/corp#19670

Build optimization to reuse the existing build image and to
remove the individual containers post build.   Image name
is parameterized.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
1 year ago
Jonathan Nobels 80864fec12
android/makefile: make keystore path a parameter (#420)
Updates tailscale/corp#19670

This makes the keystore path a paramater so it's not
expected to be at the repo root, allowing the builder to
leave it where ever it lhappens to get written.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
2 years ago
Jonathan Nobels a74e30d4e2
android/docker: update makefile and dockerfile for build automation (#394)
android/docker: update makefile for build automation

Updates tailsale/corp#19670

Added a dockerfile to run the full release build in addition to the
shell environment.

The build will now look for JKS_PASSWORD in the environment for
completing the signing step without user interaction.

Several smaller recipes added to the makefile for building the
docker builder image, running and cleaning it up independently
to make debugging issues quicker.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
2 years ago
James Tucker 3f864b28c7
Makefile: clean up the Makefile (#354)
The Makefile has been through a lot of change in recent iterations and
is overdue another cleaning.

- Variables still in use are moved to the variable definition area at
  the top of the file
- Added three distinct sections separated by comment: android build, go
  build and utility tasks.
- Relocated tasks into one of those three sections as appropriate
- Removed intermediate phony targets from the APK builds, as they're
  just making the build harder to trace file wise.
- Shifted from a central PHONY definition to incrementally defined
  dependencies to ensure every non-file task is correctly marked.
- Switch the final APK moves to use install -C to avoid updating the
  target files unless actually necessary.
- Add some missing dependencies on some tasks, centralized the gradle
  dependencies into a single task for easier re-use.
- Remove some single-use variable definitions.
- Don't promote /bin to high in $PATH when $JAVA_HOME is un-set.

Updates #cleanup

Signed-off-by: James Tucker <james@tailscale.com>
2 years ago
kari-ts 39628be8a6
libtailscale, android: fix allow LAN access (#324)
-Exclude local routes in VPNServiceBuilder
-Maybe update TUN on new state update where state >= starting
-Clean up updateTUN

Updates tailscale/corp#18984
Updates tailscale/corp#18202

Signed-off-by: kari-ts <kari@tailscale.com>
2 years ago
kari-ts 81acaef5b7
android: rip android_legacy (#335)
Updates #cleanup
Signed-off-by: kari-ts <kari@tailscale.com>
2 years ago
kari-ts 3e32e97261
Makefile: clean up legacy builds (#316)
-Remove legacy builds
-Update version number and name using last unstable

Updates tailscale/corp#18202
Fixes tailscale/corp#19001

Signed-off-by: kari-ts <kari@tailscale.com>
2 years ago
Percy Wegmann 482b350ce0 android: add smoke test
The test verifies that one can log in via the UI and hit hello.ts.net.

Updates tailscale/corp#18202

Signed-off-by: Percy Wegmann <percy@tailscale.com>
2 years ago
kari-ts 38f57b4737
build.gradle, Makefile: remove custom fdroid build (#297)
We're no longer using GoogleSignIn, so there's no need for separate product flavors
Clean up unused dependencies
Updates tailscale/corp#18202

Signed-off-by: kari-ts <kari@tailscale.com>
2 years ago
Percy Wegmann 54dccff232 android/ui: strip DWARF debug information from libtailscale
Reduces total size for 4 architectures from 59517778 to 33420646

Updates tailscale/corp#18202

Signed-off-by: Percy Wegmann <percy@tailscale.com>
2 years ago
Will Norris 9fcdcfe630 Makefile: add help text to make commands
Add `make help` command, which prints available commands and their
description.  I'm not 100% sure which commands should be documented, so
took an initial attempt at it.

This also makes `make help` the default command, aligning it with the
Makefiles in corp and oss.

Updates tailscale/corp#18202

Signed-off-by: Will Norris <will@tailscale.com>
2 years ago
James Tucker 4e923a65c1 *: introduce tool/go following our common pattern
- This tool/go does not currently invoke gocross, as there's more work to
do in gocross to be fully compatible with gomobile.
- Use GOBIN to target the output destinations for gomobile and gobind.
- Remove the old toolchain targets from the Makefile.
- Use ~/.cache/tailscale-go, like the OSS repo does.
- Introduce go.toolchain.rev as we have in the OSS repo, and update it in
the bumposs task.

Updates tailscale/corp#18202

Signed-off-by: James Tucker <james@tailscale.com>
2 years ago
James Tucker 2a14964878 Makefile: cleanup the new builds more
- Provide version flags to the build
- Add the new build targets to all
- Move the old fdroid and release builds close to their siblings
- Build gomobile into android/build/go for a small reduction in linker
  wait time
- Fix the test target so it's now triggering the gomobile build
- Make the install target use the new android build
- Add missing items to the clean target

Updates tailscale/corp#18202

Signed-off-by: James Tucker <james@tailscale.com>
2 years ago
James Tucker 244221706f Makefile: cleanup go mobile builds some
No need to build into /tmp, the go cache will handle this for us, we can
just use go run.

Updates tailscale/corp#18202

Signed-off-by: James Tucker <james@tailscale.com>
2 years ago
Percy Wegmann 5e7e36e3bc android: switch to using gomobile
gomobile replaces our custom JNI bindings

Updates tailscale/corp#18202

Signed-off-by: Percy Wegmann <percy@tailscale.com>
2 years ago
kari-ts 98a72c2963 android: new backend
Create pkg/tailscale, a Go library for the new Android app which handles starting up and running the local backend
-On initialization, get the JVM and app context to make JNI work
-Send filesystem directory path

Add a logging bridge from Go to Android (copied from Gio)

Add connect function which sends request to edit prefs instead of setting prefs

Future:
-Make build.gradle more portable
-Fix connect and make sure Quick Tiles still works

Updates tailscale/corp#18202

Signed-off-by: Percy Wegmann <percy@tailscale.com>
2 years ago
Anton Tolchanov e16303e1d8 Makefile: update aab file path
Seems like something that was missed in #182

Signed-off-by: Anton Tolchanov <anton@tailscale.com>
2 years ago
James Tucker bf7bf94b52 .github/workflows,Makefile: add a build check CI for the new app
Updates tailscale/tailscale#10992

Signed-off-by: James Tucker <james@tailscale.com>
2 years ago
Jonathan Nobels 4f46c38c99
Jonathan/notifier (#179)
android: add notifier support a data model and compose dependencies

fixes ENG-2084
fixes ENG-2086

Adds support for the ipnBusWatcher directly via a JNI API rather than HTTP via LocalAPIClient

Adds a rudimentary controller class and a model from which we can construct ViewModels

Cleans up some of the JNI bindings.  Adds hooks for ensuring the JNI setup is complete before attempting to do LocalAPIClient things.

Cleans up some wildcard imports.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
Signed-off-by: Percy Wegmann <percy@tailscale.com>
Co-authored-by: Percy Wegmann <percy@tailscale.com>
2 years ago
kari-ts 464f089388
android: restructure app (#182)
Make android_legacy for the old app and remove some of the new models from it
Modify Makefile to build the legacy app and the new app

Updates tailscale/tailscale#10992

Signed-off-by: kari-ts <kari@tailscale.com>
2 years ago
kari-ts bf9be063d7
Makefile: update go version for bumposs (#165)
Updates tailscale/tailscale#10992

Signed-off-by: kari-ts <kari@tailscale.com>
2 years ago