Open Destrocamil opened 1 year ago
Thanks for the report! I just tried running Plist.parse_xml
on the plist data in the log output that you provided, and it parsed fine without errors. So I am a bit stumped.
However, we did just release a new version of the plist gem, so there is a possibility it broke something in a non-obvious way.
Can you check the versions of Ruby, plist, and fastlane that are installed on each machine?
I think this will do it:
$ ruby -v
$ fastlane -v
$ ruby -e 'require "plist"; puts Plist::VERSION'
Thanks for your help! On the computer that works:
<details><summary>🚫 fastlane environment 🚫</summary>
### Stack
| Key | Value |
| --------------------------- | ---------------------------------------------------------- |
| OS | 13.2 |
| Ruby | 3.1.3 |
| Bundler? | false |
| Git | git version 2.39.2 |
| Installation Source | /opt/homebrew/Cellar/fastlane/2.212.0/libexec/bin/fastlane |
| Host | macOS 13.2 (22D49) |
| Ruby Lib Dir | /opt/homebrew/Cellar/ruby@3.1/3.1.3_1/lib |
| OpenSSL Version | OpenSSL 3.0.7 1 Nov 2022 |
| Is contained | false |
| Is homebrew | true |
| Is installed via Fabric.app | false |
| Xcode Path | /Applications/Xcode.app/Contents/Developer/ |
| Xcode Version | 14.2 |
| Swift Version | 5.7.2 |
### System Locale
| Variable | Value | |
| -------- | ----------- | - |
| LANG | en_US.UTF-8 | ✅ |
| LC_ALL | | |
| LANGUAGE | | |
<details><summary>`./fastlane/Appfile`</summary>
### fastlane gems
| Gem | Version | Update-Status |
| -------- | ------- | ------------------ |
| fastlane | 2.212.0 | 🚫 Update available |
### Loaded fastlane plugins:
**No plugins Loaded**
<details><summary><b>Loaded gems</b></summary>
| Gem | Version |
| ------------------------------- | ------------ |
| error_highlight | 0.3.0 |
| did_you_mean | 1.6.1 |
| atomos | 0.1.3 |
| rexml | 3.2.5 |
| CFPropertyList | 3.0.6 |
| claide | 1.1.0 |
| colored2 | 3.1.2 |
| nanaimo | 0.3.0 |
| xcodeproj | 1.22.0 |
| rouge | 2.0.7 |
| xcpretty | 0.3.0 |
| terminal-notifier | 2.0.0 |
| unicode-display_width | 1.8.0 |
| terminal-table | 1.8.0 |
| plist | 3.6.0 |
| public_suffix | 5.0.1 |
| addressable | 2.8.1 |
| multipart-post | 2.0.0 |
| word_wrap | 1.0.0 |
| optparse | 0.1.1 |
| tty-screen | 0.8.1 |
| tty-cursor | 0.7.1 |
| tty-spinner | 0.9.3 |
| artifactory | 3.0.15 |
| babosa | 1.0.4 |
| colored | 1.2 |
| highline | 2.0.3 |
| commander | 4.6.0 |
| excon | 0.99.0 |
| faraday-em_http | 1.0.0 |
| faraday-em_synchrony | 1.0.0 |
| faraday-excon | 1.1.0 |
| faraday-httpclient | 1.0.1 |
| faraday-multipart | 1.0.4 |
| faraday-net_http | 1.0.1 |
| faraday-net_http_persistent | 1.2.0 |
| faraday-patron | 1.0.0 |
| faraday-rack | 1.0.0 |
| faraday-retry | 1.0.3 |
| ruby2_keywords | 0.0.5 |
| faraday | 1.10.3 |
| unf_ext | 0.0.8.2 |
| unf | 0.1.4 |
| domain_name | 0.5.20190701 |
| http-cookie | 1.0.5 |
| faraday-cookie_jar | 0.0.7 |
| faraday_middleware | 1.2.0 |
| fastimage | 2.2.6 |
| gh_inspector | 1.1.3 |
| json | 2.6.1 |
| mini_magick | 4.12.0 |
| naturally | 2.2.1 |
| rubyzip | 2.3.2 |
| security | 0.1.3 |
| xcpretty-travis-formatter | 1.0.1 |
| dotenv | 2.8.1 |
| bundler | 2.3.26 |
| simctl | 1.6.10 |
| jwt | 2.7.0 |
| uber | 0.1.0 |
| declarative | 0.0.20 |
| trailblazer-option | 0.1.2 |
| representable | 3.2.0 |
| retriable | 3.1.2 |
| mini_mime | 1.1.2 |
| memoist | 0.16.2 |
| multi_json | 1.15.0 |
| os | 1.1.4 |
| signet | 0.17.0 |
| googleauth | 1.3.0 |
| httpclient | 2.8.3 |
| webrick | 1.8.1 |
| google-apis-core | 0.11.0 |
| google-apis-playcustomapp_v1 | 0.12.0 |
| google-apis-androidpublisher_v3 | 0.34.0 |
| google-cloud-env | 1.6.0 |
| google-cloud-errors | 1.3.0 |
| google-cloud-core | 1.6.0 |
| google-apis-iamcredentials_v1 | 0.17.0 |
| google-apis-storage_v1 | 0.19.0 |
| rake | 13.0.6 |
| digest-crc | 0.6.4 |
| google-cloud-storage | 1.44.0 |
| emoji_regex | 3.2.3 |
| jmespath | 1.6.2 |
| aws-partitions | 1.714.0 |
| aws-eventstream | 1.2.0 |
| aws-sigv4 | 1.5.2 |
| aws-sdk-core | 3.170.0 |
| aws-sdk-kms | 1.62.0 |
| aws-sdk-s3 | 1.119.1 |
| set | 1.0.2 |
| forwardable | 1.3.2 |
| logger | 1.5.0 |
| pathname | 0.2.0 |
| shellwords | 0.1.0 |
| cgi | 0.3.5 |
| date | 3.2.2 |
| timeout | 0.2.0 |
| stringio | 3.0.1 |
| securerandom | 0.2.0 |
| uri | 0.11.0 |
| openssl | 3.0.1 |
| digest | 3.1.0 |
| io-nonblock | 0.1.0 |
| ipaddr | 1.2.4 |
| io-wait | 0.2.1 |
| zlib | 2.1.1 |
| resolv | 0.2.1 |
| time | 0.2.0 |
| open-uri | 0.2.0 |
| mutex_m | 0.1.1 |
| net-http | 0.3.0 |
| net-protocol | 0.1.2 |
| ostruct | 0.5.2 |
| english | 0.7.1 |
| erb | 2.2.3 |
| strscan | 3.0.1 |
| abbrev | 0.1.0 |
| io-console | 0.5.11 |
| tempfile | 0.1.2 |
| delegate | 0.2.0 |
| fileutils | 1.6.0 |
| tmpdir | 0.1.2 |
| base64 | 0.1.1 |
| singleton | 0.1.1 |
| open3 | 0.1.1 |
| nkf | 0.1.1 |
| prettyprint | 0.1.1 |
| pp | 0.3.0 |
| find | 0.1.1 |
| yaml | 0.2.0 |
| psych | 4.0.4 |
</details>
*generated on:* **2023-02-28**
</details>
$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin22]
- fastlane -v
$ fastlane -v
[✔] 🚀 fastlane 2.212.0
- ruby -e
$ ruby -e 'require "plist"; puts Plist::VERSION'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in require': cannot load such file -- plist (LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in
require'
from -e:1:in `
On the computer where it does not work
swift-driver version: 1.62.15 <details><summary>✅ fastlane environment ✅</summary>
Key | Value |
---|---|
OS | 13.1 |
Ruby | 3.1.3 |
Bundler? | false |
Git | git version 2.37.1 (Apple Git-137.1) |
Installation Source | ~/.gem/ruby/3.1.3/bin/fastlane |
Host | macOS 13.1 (22C65) |
Ruby Lib Dir | ~/.rubies/ruby-3.1.3/lib |
OpenSSL Version | OpenSSL 1.1.1s 1 Nov 2022 |
Is contained | false |
Is homebrew | false |
Is installed via Fabric.app | false |
Xcode Path | /Applications/Xcode-14.2.app/Contents/Developer/ |
Xcode Version | 14.2 |
Swift Version | 5.7.2 |
Variable | Value | |
---|---|---|
LANG | en_US.UTF-8 | ✅ |
LC_ALL | en_US.UTF-8 | ✅ |
LANGUAGE | en_US.UTF-8 | ✅ |
Gem | Version | Update-Status |
---|---|---|
fastlane | 2.212.1 | ✅ Up-To-Date |
No plugins Loaded
- ruby -v
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [arm64-darwin22]
- fastlane -v
[✔] 🚀 fastlane 2.212.1
- ruby -e
% ruby -e 'require "plist"; puts Plist::VERSION' ruby -e 'require "plist"; puts Plist::VERSION' 3.7.0
Actually now I see that the ruby version is way more updated on one machine than the other BUT the `fastlane env` command tells me they are the same :/
One thing to notice is on the machine that works, fastlane was installed using brew. On the machine that does not work, I guess it was installed via some gem thing.
We are too many machines with different configs and then this happens and I have no control of changes.
Thankss <3
OK, it looks like a different version of the plist gem is installed on the two machines.
On the machine where it is not working, can you try the following:
$ gem uninstall -aI plist
$ gem install plist:3.6.0
Then see if you can still reproduce the error.
If that doesn't change anything, then the next thing you could try is updating fastlane itself. I see that the machine that is working is using an older version of fastlane. Could you verify that it still works after updating to fastlane 2.212.1?
Finally: after digging into how fastlane and altool
work for notarizing, it seems like altool
might be outputting verbose logs that are getting mixed in with the XML output and causing the parse error.
On the machine where it is not working, do you have any environment variable set that could be causing Xcode tools to emit verbose logs? Try running this command:
$ env
And scan through the output to see if anything looks like it could be related to Xcode that is different between the two machines.
Also, can you share the xcrun altool --notarize-app
command that is being used on both machines? It should be in the fastlane log output. You can redact any credentials or identifiers.
Hey @mattbrictson ! So, let's breakdown:
env
variables that can cause such issue. The only thing regarding verbosity is part of the fastlane
action notarize
. I will try to set the print_log
and verbose
params to false and will let you know the outcome.xcrun altool --notarize-app
is exactly the same, but I will send the full command in a few.
xcrun altool --notarize-app -t osx -f "Output/App/App.app.zip" --primary-bundle-id com.company.App--output-format xml --asc-provider "SomethingInc" -u some@email.com -p @env:FL_NOTARIZE_PASSWORD
One thing I noticed - and seems to be the only difference between the output of both machines - is that on the machine that does not work, I get some log about Trying to find transporter at (...) Unable to find transporter, using REST APIs
.
Thing is that I don't have transporter on the computer it works also x)
Also, on the computer that works, I can clearly see the steps:
[10:39:23]: Uploading package to notarization service, might take a while
[10:39:23]: $ xcrun altool --notarize-app -t osx -f (...) @env:FL_NOTARIZE_PASSWORD
(...)
Querying request status
[10:40:47]: $ xcrun altool --notarization-info *** --output-format xml -u some@email.com -p @env:FL_NOTARIZE_PASSWORD
While on the other it's just a bunch of steps mixed up.
I would say that this is nothing related to your project so, if you don't have clue or any hint, I would say to close this issue. Sorry for the trouble!
Thanks once again!
@Destrocamil thanks for the additional info.
Based on your logs and my analysis of the fastlane source code, I think this is ultimately a fastlane problem and not something that can or should be dealt with in the plist gem.
Here's what I found:
xcrun altool
to perform the notarization (ref)Open3.open2e
to capture the output of the xcrun altool
command (ref)Plist.parse_xml
(ref)The problem (in my opinion) is that fastlane uses open2e
. This combines stdout and stderr output from the altool process into a single string.
If altool prints debug messages, progress messages, or other text on stderr (e.g. "Unable to find transporter..."), this gets combined with the XML plist into a single string. That combination of log messages and plist data is not valid XML.
When invalid XML is passed to Plist.parse_xml
, we get the Unimplemented element
error (which admittedly is not a great error message).
I think you should open a bug report in the fastlane repository. Feel free to link to or copy the contents of this comment.
As a workaround, you could continue troubleshooting why altool one machine is outputting different log messages. If you can somehow figure out how to suppress those messages, that may fix the XML parsing.
This is my first encounter with fastlane and altool, so I probably can't offer much insight.
Hello, I um using Fastline with some Fastlane action, mainly Gym and Notarize to build and notarize some macOS applications. Currently, I have 2 computer: both with same XCode versions, both with same macOS Ventura versions. The installation of fastlane was made equally across the machines. I have all the required env variables to perform notarization in place. On one computer, it works like a charm. On the other, notarization seems to finish with no errors (the notarization in its core) but then I got a
Unimplemented element
error.Here is part of the log
I am out of ideas. Thanks a lot for your help