Skip to content
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

proposal: doc: document that Go 1.14 is last to support darwin/arm? #34751

Open
dmitshur opened this issue Oct 7, 2019 · 23 comments

Comments

@dmitshur
Copy link
Member

commented Oct 7, 2019

iOS 13 (and iPadOS 13) does not support running 32-bit apps. iOS 10 was the last version that supported 32-bit apps (with very visible warnings), and it's 3 years old.

Is it time to remove darwin/arm (leaving just darwin/arm64)? If so, the first step would be to document that Go 1.14 will be the final release with darwin/arm support.

Related to #34749. /cc @bradfitz @hyangah @eliasnaur

@eliasnaur

This comment has been minimized.

Copy link
Contributor

commented Oct 7, 2019

Other than the builder, darwin/arm support isn't too much extra hassle than just darwin/arm64.

Go runs on watchOS and tvOS now, and the first darwin/arm64 watch (Watch Series 4) was released just a year ago. Earlier models are 32-bit.

@steeve might care; he had reservations last time I asked. Steeve also runs the hardware darwin/arm builder which has been offline for quite a while.

@bradfitz

This comment has been minimized.

Copy link
Member

commented Oct 7, 2019

Not having a builder is another good reason to delete it.

That's actually our official policy: https://github.com/golang/go/wiki/PortingPolicy#removing-a-port

@dmitshur

This comment has been minimized.

Copy link
Member Author

commented Oct 7, 2019

Thanks for providing that information Elias. I was thinking about watchOS and tvOS but wasn't sure what the state of their 32->64-bit migration was.

From looking over https://en.wikipedia.org/wiki/Apple_TV, I understand the current Apple TV devices (4th and 5th generations) support 64-bit (only?), but 3rd generation (released in 2013, discontinued in 2016) did not.

It sounds like watchOS devices aren't as far along, but iOS/iPadOS and tvOS are.

@steeve

This comment has been minimized.

Copy link
Contributor

commented Oct 7, 2019

We are planning on removing arm support in a few weeks/months (most likely when we migrate to xcode 11). Although not just yet.

Supporting older WatchOS hardware looks like a pretty good reason to keep it though since it can now run Go (and I mean, how cool is that), which is fairly new with 1.13.

The builder being off-line is on me though, I'll fix that tomorrow morning.

@eliasnaur

This comment has been minimized.

Copy link
Contributor

commented Oct 7, 2019

@dmitshur, I briefly considered AppleTV. Only the 4th generation support the App Store, so we don't need 32-bit support for AppleTV.

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 8, 2019

I have restarted the darwin_arm and darwin_arm64 builders. 🤞

@golang golang deleted a comment Oct 8, 2019
@eliasnaur

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 8, 2019

I have restarted the darwin_arm and darwin_arm64 builders. crossed_fingers

If only it was that easy: https://farmer.golang.org/temporarylogs?name=darwin-arm64-mn4m2zdaios&rev=cedb561617ea40c72dc018b38c4d5f0862595fe8&st=0xc0020f51e0

ERROR: Could not connect to lockdownd, error code -21
@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 8, 2019

ERROR: Could not connect to lockdownd, error code -21

Alas, libimobiledevice needed an update, and somehow one of the iPhones wouldn't pair with the computer unless itunes was launched. Should be good now.

EDIT: it wasn't good, missing env vars. Should be better now.

@eliasnaur

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 8, 2019

Still no luck:

error: The specified item could not be found in the keychain.
go_darwin_arm_exec: codesign: exit status 1
FAIL	bytes	0.277s
@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 8, 2019

Yes saw that. I'm on it.

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

Still working on it, now with new errors:

Install: VerifyingApplication (40%)ERROR: Install failed. Got error "ApplicationVerificationFailed" with code 0xe8008015: Failed to verify code signature of /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.UKJYBy/extracted/gotest.app : 0xe8008015 (A valid provisioning profile for this executable was not found.)
go_darwin_arm_exec: ideviceinstaller -i "/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/tmp/go_darwin_arm_exec_352375303/gotest.app": exit status 128 (5 attempts)
FAIL	html	274.599s
@eliasnaur

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

For errors like that I usually created a scratch project in Xcode, filled in the team and bundle ID from the GOIOS_* environment variables and made sure I could run the project on the device.

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

@eliasnaur Yes, I forgot to regenerate the provisioning profile after recreating the development certificate.

New error though, which I'm kinda clueless in https://farmer.golang.org/temporarylogs?name=darwin-arm-mg912baios&rev=ce83f41fed32bfc7826ec0cd7756a34594f8746b&st=0xc00c7d02c0:

*** Test killed with quit: ran too long (19m0s).
FAIL	compress/gzip	1140.013s

I see the app on the device, although I don't see it starting.

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

Also, I don't see the development images mounted on the devices

@eliasnaur

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

@eliasnaur Yes, I forgot to regenerate the provisioning profile after recreating the development certificate.

New error though, which I'm kinda clueless in https://farmer.golang.org/temporarylogs?name=darwin-arm-mg912baios&rev=ce83f41fed32bfc7826ec0cd7756a34594f8746b&st=0xc00c7d02c0:

*** Test killed with quit: ran too long (19m0s).
FAIL	compress/gzip	1140.013s

I see the app on the device, although I don't see it starting.

The wrapper times out while waiting on misc/ios/go_darwin_arm_exec.go:443, which is the ideviceinstall -i command. I don't know why.

You could try to kill the builder and run all.bash manually, as described in misc/ios/README. You did the hard work already, so hopefully

$ GOIOS_DEVICE_ID=8e5c23a5d0843d1ffe164ea0b2f2500599c3ebff GOARCH=arm64 CGO_ENABLED=1 CC_FOR_TARGET=$(pwd)/../misc/ios/clangwrap.sh ./all.bash

reproduces the hang.

EDIT: Alternatively, use make.bash above and run

$ export PATH=$GOROOT/bin:$PATH        # to add the exec wrapper to PATH
$ GOIOS_DEVICE_ID=8e5c23a5d0843d1ffe164ea0b2f2500599c3ebff GOARCH=arm64 CGO_ENABLED=1 go test -v archive/tar

to see debug output from the wrapper.

There is also a debug bool in misc/ios/go_darwin_arm_exec.go that you could flip before make.bash.

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

Yes, running it manually, I see it signing the binary, then running ideviceinstaller (doesn't show up in the console though, I'm seeing it because the app appears on the device).

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

Ok I got a repro: ideviceinstaller is stuck on GeneratingApplicationMap. Digging.

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

Somehow it's working fine on the arm64 device. I have tried to reset the arm device, no luck. I'll try another device tomorrow. In the mean time the arm64 builder should be back online.

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 9, 2019

The last build is failed for what looks like legitimate failures

@steeve

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 10, 2019

For the record:

lldb: running program
panic: open /private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/reflect: no such file or directory

goroutine 49 [running]:
internal/reflectlite_test.loadTypes(0x1300b4310, 0x6b, 0x100e258fe, 0x7, 0x1300b08a0)
	/private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/internal/reflectlite/reflect_mirror_test.go:79 +0x130
internal/reflectlite_test.TestMirrorWithReflect.func1(0x1300b8ce0, 0x1300b4310, 0x6b, 0x100e258fe, 0x7, 0x1300b08a0)
	/private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/internal/reflectlite/reflect_mirror_test.go:104 +0x70
created by internal/reflectlite_test.TestMirrorWithReflect
	/private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/internal/reflectlite/reflect_mirror_test.go:102 +0x1e0
FAIL	internal/reflectlite	29.700s

And (more obscure):

lldb: running program
FAIL	runtime	37.602s
@eliasnaur

This comment was marked as off-topic.

Copy link
Contributor

commented Oct 10, 2019

For the record:

lldb: running program
panic: open /private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/reflect: no such file or directory

goroutine 49 [running]:
internal/reflectlite_test.loadTypes(0x1300b4310, 0x6b, 0x100e258fe, 0x7, 0x1300b08a0)
	/private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/internal/reflectlite/reflect_mirror_test.go:79 +0x130
internal/reflectlite_test.TestMirrorWithReflect.func1(0x1300b8ce0, 0x1300b4310, 0x6b, 0x100e258fe, 0x7, 0x1300b08a0)
	/private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/internal/reflectlite/reflect_mirror_test.go:104 +0x70
created by internal/reflectlite_test.TestMirrorWithReflect
	/private/var/folders/qq/qxn86k813bn9fjxydm095rxw0000gp/T/workdir-host-darwin-amd64-zenly-ios/go/src/internal/reflectlite/reflect_mirror_test.go:102 +0x1e0
FAIL	internal/reflectlite	29.700s

This tests seems to load files which are not available on the tethered setup. It should probably just be skipped.

And (more obscure):

lldb: running program
FAIL	runtime	37.602s

After running make.bash, running the runtime tests in verbose mode should be as easy as

  export PATH=$GOROOT/bin:$PATH
  GOIOS_DEVICE_ID=... GOARCH=arm64 CGO_ENABLED=1 go test -v runtime

Perhaps additional -run <pattern>s might tease out the offending test.

@eliasnaur

This comment has been minimized.

Copy link
Contributor

commented Oct 11, 2019

Perhaps we should move the discussion to https://golang.org/issue/34847.

@bcmills

This comment has been minimized.

Copy link
Member

commented Oct 11, 2019

Let's move the builder discussion to #31497, assuming those are still the builders we intend to use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
6 participants
You can’t perform that action at this time.