-
-
Notifications
You must be signed in to change notification settings - Fork 12.9k
nesfab 1.6 (new formula) #211113
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
base: main
Are you sure you want to change the base?
nesfab 1.6 (new formula) #211113
Conversation
Thanks for contributing to Homebrew! 🎉 It looks like you're having trouble with a CI failure. See our contribution guide for help. You may be most interested in the section on dealing with CI failures. You can find the CI logs in the Checks tab of your pull request. |
c51f52b
to
20a8846
Compare
Hi Homebrew maintainers. I'm feeling stuck after multiple rounds of searching, editing, and resubmitting. I feel like I'm missing something simple. This project uses a C++20 feature ( # ...
on_macos do
depends_on "llvm" => :build if DevelopmentTools.clang_build_version <= 1599
end
# ...
fails_with :clang do
build 1599
cause "Missing std::lexicographical_compare_three_way"
end However, the build still fails on macOS 13. (It builds on macOS 15 because I happened to get a successful run there. The PR has always failed before trying macOS 14, so I'm not confident whether it succeeds or fails there.) I see two paths forward:
Thanks for any help you can offer! |
@vtbassmatt I think this error happens because it still uses system Clang. Set |
Thank you! I see now that the PR I copied from was using |
|
Yep, a new hell 😁 because a different thing breaks when I use llvm@latest, so I’m trying to use llvm@16 to match what works on macOS 14 & 15. I had to go to bed so didn’t get a chance to troubleshoot this one last night. |
42544d8
to
57533dc
Compare
😭 OK, I'm crying uncle. I cannot seem to get this building on macOS 13.
Number 4 perplexes me the most. It actually seems like the correct path forward, if someone can help me understand what I need to do in the Homebrew CI to get this fixed.
Help, please 🙏 |
@vtbassmatt instead of ENV.prepend_path "HOMEBREW_LIBRARY_PATHS", Formula["llvm@18"].opt_lib/"c++" |
f3c715d
to
e8b4988
Compare
Thanks. Gave it a try, and it still failed in the same way. I've cribbed some stuff from the toolchain_path = "/Library/Developer/CommandLineTools"
cpp_base = (MacOS.version >= :big_sur) ? MacOS::CLT.sdk_path : toolchain_path
system "make", "GIT_COMMIT=#{git_sha}-homebrew", "CXX=#{ENV.cxx}",
"-isysroot", MacOS::CLT.sdk_path,
"-isystem", "#{cpp_base}/usr/include/c++/v1",
"-isystem", "#{MacOS::CLT.sdk_path}/usr/include",
"-isystem", "#{toolchain_path}/usr/include",
"release" though I'm not sure what Make will do with those |
Seems like the easiest way is declaring that it needs at least macOS 14 to build. |
That's the conclusion I've arrived at as well 🤣. I'm going to try dropping Ventura before I pull any more hair out. |
Appreciate everyone's help getting here! Yup, it turned out that I just needed to say "so long" to Ventura / macOS 13. It builds on 14+. |
@SMillerDev sorry to bother you - do I need to do anything else to have this contribution accepted? |
Formula/n/nesfab.rb
Outdated
# for this version only, point to a specific commit. post-1.6, this will point to a tagged release. | ||
url "https://github.com/pubby/nesfab/archive/da18a43dc7b941cc4c56c949303aa37633fdc1b0.tar.gz" | ||
version "1.6" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We'll need to wait for a tagged release
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I will ask upstream if they can do a small release so we have something to point to.
Formula/n/nesfab.rb
Outdated
system "make", "clean" | ||
system "make", "GIT_COMMIT=#{git_sha}-homebrew", "CXX=#{ENV.cxx}", "debug" if Hardware::CPU.intel? | ||
system "make", "GIT_COMMIT=#{git_sha}-homebrew", "CXX=#{ENV.cxx}", "ARCH=", "debug" if Hardware::CPU.arm? | ||
bin.install "nesfab" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't want to build debug builds
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This formula is for a compiler. The debug
flavor inserts runtime checks into the generated code to help with the development experience, while the release
flavor doesn't since the target system is very resource-constrained. It's definitely unusual that upstream chose to make these two different builds rather than an option to a single binary, but refactoring that is beyond the scope of adding to a package manager. Both are necessary for a full development environment.
Is there another naming convention I could use for the binaries, or some other way to make this fit the spirit of the Homebrew policy without major surgery on upstream's architectural choice?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if both flavors are useful, we can probably install both. (this also sounds like static/dynamic shared lib)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, great. If this aspect won't be a blocker, I believe that's the last open question from Homebrew. I'll see if upstream is willing to cut a release, I can point to it, and maybe get this thing merged!
Formula/n/nesfab.rb
Outdated
if OS.mac? | ||
system "make", "GIT_COMMIT=#{git_sha}-homebrew", "CXX=#{ENV.cxx}", "release" if Hardware::CPU.intel? | ||
system "make", "GIT_COMMIT=#{git_sha}-homebrew", "CXX=#{ENV.cxx}", "ARCH=", "release" if Hardware::CPU.arm? | ||
bin.install "nesfab" => "nesfab-release" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there no make install
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is not. Upstream builds a single binary and so recommends people to simply build the thing and copy it into someplace in $PATH
.
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
Not stale. Waiting until upstream does a point release that I can rebase to. |
upstream has made a 1.6_mac release, https://github.com/pubby/nesfab/releases/tag/v1.6_mac? |
Unfortunately it didn’t have everything needed to land a working Homebrew package. Enough time has elapsed now that perhaps the maintainer can be persuaded to do another point release. I was waiting to see if anyone had more thoughts on #211113 (comment) though. |
yeah, probably, also better to move the installation process into the upstream as well (like one goal to install both flavors) |
HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>
, where<formula>
is the name of the formula you're submitting?brew test <formula>
, where<formula>
is the name of the formula you're submitting?brew audit --strict <formula>
(after doingHOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>
)? If this is a new formula, does it passbrew audit --new <formula>
?Adds NESFab. NESFab is a programming language/compiler for creating NES games. It qualifies for inclusion in Homebrew because it's maintained (v1.6 came out within the last week), is known (689 GitHub stars), is used (there has been recent GitHub and Discord activity related to macOS builds), and has a homepage.