EAS Build (iOS) fails - `command not found` in Xcode logs

Today I started integrating EAS Build for our (recently ejected) expo project. I was able to fire off a build, which failed at the “Run fastlane” step. That itself didn’t give me much to work with:

The following build commands failed:
	PhaseScriptExecution Bundle\ React\ Native\ code\ and\ images /Users/expo/Library/Developer/Xcode/DerivedData/modobioclientapp-dqlllvvfgjjmhmbsxkankuwglfor/Build/Intermediates.noindex/ArchiveIntermediates/modobioclientapp/IntermediateBuildFilesPath/modobioclientapp.build/Release-iphoneos/modobioclientapp.build/Script-00DD1BFF1BD5951E006B06BC.sh
(1 failure)
[02:31:07]: Exit status: 65

After checking out the Xcode logs, I found this:

/Users/expo/Library/Developer/Xcode/DerivedData/modobioclientapp-dqlllvvfgjjmhmbsxkankuwglfor/Build/Intermediates.noindex/ArchiveIntermediates/modobioclientapp/IntermediateBuildFilesPath/modobioclientapp.build/Release-iphoneos/modobioclientapp.build/Script-00DD1BFF1BD5951E006B06BC.sh: line 4: ..: command not found
/Users/expo/Library/Developer/Xcode/DerivedData/modobioclientapp-dqlllvvfgjjmhmbsxkankuwglfor/Build/Intermediates.noindex/ArchiveIntermediates/modobioclientapp/IntermediateBuildFilesPath/modobioclientapp.build/Release-iphoneos/modobioclientapp.build/Script-00DD1BFF1BD5951E006B06BC.sh: line 5: ode_modulesexpo-updatesscriptscreate-manifest-ios.sh: command not found

That’s better! Here I can see that there’s / or \ characters missing in the script path, which then fails to run. The path seemed familiar, and I eventually remembered there was a change in git, which appeared after running eas build:configure, and which definitely seems related.

So now I’m stuck, because when I leave the change in, the build fails… When I tried reverting it (without touching the other autogenerated stuff), I got this:

expo-updates module is not configured. Please run "eas build:configure" first to configure the project

Anyone has an idea what’s going on here? Any help with this would be greatly appreciated.

hi! are you using windows? what version of eas-cli are you using? this should have been resolved with [config-plugins] eas build:configure fixes for windows by wkozyra95 · Pull Request #3266 · expo/expo-cli · GitHub

i have pushed eas-cli@0.9.0 that should resolve this issue. please let me know if the issue persists

1 Like

Hi Brent! Thanks for the reply… Unfortunately, the fix didn’t work for me. (I tried 0.9.0 and 0.9.1). Still got the same build error as before, because after running build:configure, the project.pbxproj file contained the same edit again.
Today, I got a colleague to run both the configuration and build script on a mac, which was then successful. (yay!) However, after checking out his branch and running eas build myself, I got this error:

expo-updates module is not configured. Please run "eas build:configure" first to configure t
he project
    Error: Path to expo-updates/scripts/create-manifest-ios.sh is missing in a "Bundle
    React Native code and images" build phase.

And yes, you were right, I am using Windows.

can you share the diff of your project when you run build:configure on your windows machine after it has been configured on a mac?

Sure. It’s the same diff as before.

1 Like

Can you make sure you are using the correct version with eas --version ? Sometimes user have 2 installations of cli and the older one is earlier in PATH.

Can you launch node interpreter and run process.platform and require('path').sep ? Make sure to launch it in the same environment as eas-cli (whether you normally use it under WSL or not)

My eas-cli version is 0.9.1, I made sure of that before, just forgot to mention it. I had the previous version installed through yarn global add, and then replaced it with this one. There’s no other mention of eas-cli anywhere else (package.json etc)

process.platform => win32
require('path').sep => \\

There’s no other mention of eas-cli anywhere else (package.json etc)

It could be installed e.g via npm (npm and yarn have different install dirs)

My eas-cli version is 0.9.1, I made sure of that before, just forgot to mention it.

Just to make sure, di you checked that via eas --version command or you are just assuming based on yarn global add output?

Based on looking through code that is responsible for that I don’t see how it could happen, even if there is some bug in that code it should not make the same changes, it’s handled here expo-cli/Updates.ts at master · expo/expo-cli · GitHub and it’s just simple if that replaces separators

The only explanation I could see is a problem with node dependency and somehow the version of @expo/config-plugins that is resolved in global node_modules is not the one specified in package.json. You might try checking manually what version of packages you have there(I’m not sure where those modules are installed on windows)

Yes, I ran eas --version. This is the output: eas-cli/0.9.1 win32-x64 node-v14.16.0
I only installed eas-cli through yarn; I checked npm list --global just to be sure and it’s not there.

As for the package versions, I’m not exactly sure what to look for, but I can tell you that in my yarn’s global node_modules, there’s eas-cli v0.9.1, which requires @expo/config-plugins v1.0.24, and the installed version of this package in the same node_modules folder is 1.0.24, according to its package.json.