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

build seems fine but brew install <octapp> returns exit status 1 (failure) #268

Closed
apjanke opened this issue Apr 12, 2024 · 2 comments
Closed
Assignees
Labels
bug Something isn't working
Milestone

Comments

@apjanke
Copy link
Contributor

apjanke commented Apr 12, 2024

After fixing up the GCC and Qt build failures by downgrading to Xcode 15.2 and Xcode CLT 15.1, my runs of bundle_octave_app seem to do a successful install of octave and all its dependencies in the /Applications/Octave-<ver>.app Homebrew installation. But the brew install <octave> command returns a nonzero exit status indicating failure. That causes the script to abort, and not go through the subsequent steps of munging and packaging the app in a DMG. And I just don't like it when things fail for no apparent reason.

I think I recall seeing this before, but I don't remember the exact circumstances.

Symptoms

On angharad, macOS 14.4.1, Xcode 15.2, CLT 15.1, Intel, bare metal:

bundle_octave_app run at Fri Apr 12 <time> EDT 2024 on angharad.local
  macOS 14.4.1, arch x86_64 (Intel)
  Xcode 15.2, Xcode CLT 15.1.0.0.1.1700200546, clang Apple clang version 15.0.0 (clang-1500.1.0.2.5)
  LaTeX: pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024)
  bundle_octave_app from git commit a452ba6
[...]

f | /Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/gnu-sed/bin//gsed 's,^lib,,; s,\.la$,.oct,'`; \
	  else \
	    echo "error: dlname is empty in $ltlib!"; \
	    exit 1; \
	  fi; \
	  lnames=`/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/gnu-sed/bin//gsed -n -e "s/library_names='\([^']*\)'/\1/p" < $top_build_dir/$ltlib`; \
	  if [ -n "$lnames" ]; then \
	    rm -f $f $lnames $dl; \
	  fi \
	done
mkdir -p /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/etc
/usr/bin/install -c -m 644 libinterp/DOCSTRINGS /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/etc/built-in-docstrings
==> Cleaning
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/liboctave.la
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/liboctgui.la
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/liboctinterp.la
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/info/dir
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/site/api-v58/m (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/site/api-v58 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/site/m (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/site (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct/x86_64-apple-darwin23.4.0 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct/api-v58/x86_64-apple-darwin23.4.0 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct/api-v58 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/site/oct/x86_64-apple-darwin23.4.0 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/site/oct (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/site (empty)
==> Finishing up
==> ln -sf /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/bin/octave /Applications/Octave-8.4.0.app/Contents/Resources/usr/bin/octave-oct
==> Caveats
octave-octapp@8.4.0 is keg-only, which means it was not symlinked into /Applications/Octave-8.4.0.app/Contents/Resources/usr,
because so it can be installed alongside regular octave.

If you need to have octave-octapp@8.4.0 first in your PATH, run:
  echo 'export PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/bin:$PATH"' >> ~/.zshrc

For compilers to find octave-octapp@8.4.0 you may need to set:
  export LDFLAGS="-L/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib"
  export CPPFLAGS="-I/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/include"

For pkg-config to find octave-octapp@8.4.0 you may need to set:
  export PKG_CONFIG_PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib/pkgconfig"
==> Summary
🍺  /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0: 2,519 files, 62.5MB, built in 9 minutes 55 seconds
==> Running `brew cleanup octave-octapp@8.4.0`...
==> Caveats
==> octave-octapp@8.4.0
octave-octapp@8.4.0 is keg-only, which means it was not symlinked into /Applications/Octave-8.4.0.app/Contents/Resources/usr,
because so it can be installed alongside regular octave.

If you need to have octave-octapp@8.4.0 first in your PATH, run:
  echo 'export PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/bin:$PATH"' >> ~/.zshrc

For compilers to find octave-octapp@8.4.0 you may need to set:
  export LDFLAGS="-L/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib"
  export CPPFLAGS="-I/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/include"

For pkg-config to find octave-octapp@8.4.0 you may need to set:
  export PKG_CONFIG_PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib/pkgconfig"
brew install <octapp> exit status: 1
bundle_octave_app: ERROR: brew install returned failure (1); aborted.

On montague, macOS 12.74, Xcode 14.2, Xcode CLT 14.2, Intel, VM under VMware:

bundle_octave_app run at Fri Apr 12 <time> EDT 2024 on montague.local
  macOS 12.7.4, arch x86_64 (Intel)
  Xcode 14.2, Xcode CLT 14.2.0.0.1.1668646533, clang Apple clang version 14.0.0 (clang-1400.0.29.202)
  LaTeX: pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024)
  bundle_octave_app from git commit a452ba6
[...]

	  fi \
	done
mkdir -p /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/etc
/usr/bin/install -c -m 644 libinterp/DOCSTRINGS /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/etc/built-in-docstrings
==> Cleaning
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/liboctave.la
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/liboctgui.la
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/liboctinterp.la
rm /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/info/dir
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/site/api-v58/m (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/site/api-v58 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/site/m (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/share/octave/8.4.0/site (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct/x86_64-apple-darwin21.6.0 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct/api-v58/x86_64-apple-darwin21.6.0 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct/api-v58 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site/oct (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/site (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/site/oct/x86_64-apple-darwin21.6.0 (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/site/oct (empty)
rmdir: /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/lib/octave/8.4.0/site (empty)
==> Finishing up
==> ln -sf /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0/bin/octave /Applications/Octave-8.4.0.app/Contents/Resources/usr/bin/octave-oc
==> Caveats
octave-octapp@8.4.0 is keg-only, which means it was not symlinked into /Applications/Octave-8.4.0.app/Contents/Resources/usr,
because so it can be installed alongside regular octave.

If you need to have octave-octapp@8.4.0 first in your PATH, run:
  echo 'export PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/bin:$PATH"' >> ~/.zshrc

For compilers to find octave-octapp@8.4.0 you may need to set:
  export LDFLAGS="-L/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib"
  export CPPFLAGS="-I/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/include"

For pkg-config to find octave-octapp@8.4.0 you may need to set:
  export PKG_CONFIG_PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib/pkgconfig"
==> Summary
🍺  /Applications/Octave-8.4.0.app/Contents/Resources/usr/Cellar/octave-octapp@8.4.0/8.4.0: 2,519 files, 61.5MB, built in 11 minutes 39 seconds
==> Running `brew cleanup octave-octapp@8.4.0`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Caveats
==> octave-octapp@8.4.0
octave-octapp@8.4.0 is keg-only, which means it was not symlinked into /Applications/Octave-8.4.0.app/Contents/Resources/usr,
because so it can be installed alongside regular octave.

If you need to have octave-octapp@8.4.0 first in your PATH, run:
  echo 'export PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/bin:$PATH"' >> ~/.zshrc

For compilers to find octave-octapp@8.4.0 you may need to set:
  export LDFLAGS="-L/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib"
  export CPPFLAGS="-I/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/include"

For pkg-config to find octave-octapp@8.4.0 you may need to set:
  export PKG_CONFIG_PATH="/Applications/Octave-8.4.0.app/Contents/Resources/usr/opt/octave-octapp@8.4.0/lib/pkgconfig"
brew install <octapp> exit status: 1
bundle_octave_app: ERROR: brew install returned failure (1); aborted.
janke@montague octave-app-bundler %

References

@apjanke apjanke self-assigned this Apr 12, 2024
@apjanke apjanke added the bug Something isn't working label Apr 12, 2024
@apjanke apjanke added this to the 8.4.0 milestone Apr 12, 2024
@apjanke
Copy link
Contributor Author

apjanke commented Apr 12, 2024

Looking at this issue from core Homebrew:

Looks like maybe the brew install command will return nonzero if it fails to link the package. My octave-octapp* formulae are keg_only so they don't get linked. Maybe brew install is not special casing the case of keg_only formulae, and is returning 1 because it didn't successfully link the package, even though the reason for that is that the formula requested that it not be linked?

Just a hypothesis; I haven't looked at the brew code for this. And I don't remember this failing in the past like this.

@apjanke
Copy link
Contributor Author

apjanke commented Apr 15, 2024

I'm continuing to assume that the 1 exit status happens when a keg-only formula is installed. I added code in commit 0c6e5cb9a to deal with it, checking with brew list to see if the installation succeeded, and treat that as success. Marking this as Closed.

@apjanke apjanke closed this as completed Apr 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Archived in project
Development

No branches or pull requests

1 participant