5
54
Fork
You've already forked blue
4

Darwin support #274

Manually merged
old merged 1 commit from lshoravi/blue:linuss/macos-port into main 2026年06月23日 15:17:47 +02:00
Contributor
Copy link

Hi. Super exciting project! Looking to add support for macOS. This PR is a proof-of-concept: I am utilizing the main guile-fibers package to import the events-*, but the needed code could be vendored in, theoretically.

The main reason is that epoll isn't on macOS but kqueue is. Upstream fibers uses libevent since a little while back. Also, the darwin branch was apparently never compiled, as it had illegal kwargs.

Hi. Super exciting project! Looking to add support for macOS. This PR is a proof-of-concept: I am utilizing the main guile-fibers package to import the events-*, but the needed code could be vendored in, theoretically. The main reason is that epoll isn't on macOS but kqueue is. Upstream fibers uses libevent since a little while back. Also, the darwin branch was apparently never compiled, as it had illegal kwargs.
Owner
Copy link

I am not sure but is there some bits missing here? I see that you implemented some definition for the events for Darwin platforms, but the define are empty?

Keep me up to date on this! Would be very cool if we have it works on platforms other than Linux for the Alpha!

I am not sure but is there some bits missing here? I see that you implemented some definition for the events for Darwin platforms, but the define are empty? Keep me up to date on this! Would be very cool if we have it works on platforms other than Linux for the Alpha!
Author
Contributor
Copy link

FWIW This builds on my machine:

linuss@DCP96WG1C6 build % ls
blue		docs		pre-inst-env	tests
linuss@DCP96WG1C6 build % uname
Darwin
linuss@DCP96WG1C6 build % ./pre-inst-env blue --jobs=4 build
;;; note: source file /opt/homebrew/Cellar/guile/3.0.11/share/guile/3.0/srfi/srfi-1.scm
;;; newer than compiled /opt/homebrew/Cellar/guile/3.0.11/lib/guile/3.0/ccache/srfi/srfi-1.go
	TPL	/Users/linuss/src/blue/build/blue/.real/blue
	GUILEC	/Users/linuss/src/blue/build/blue/utils/strings.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/tty.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/version.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/pkg-config.go
	MKINFO	/Users/linuss/src/blue/build/docs/blue.info
	GUILEC	/Users/linuss/src/blue/build/blue/utils/list.go
	GUILEC	/Users/linuss/src/blue/build/blue/command.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/logging.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/build.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/host.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/check.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/clean.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/configure.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/hash.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/glob.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/help.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/repl.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/environ.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/replay.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/diagnostics.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/gnu.go
	GUILEC	/Users/linuss/src/blue/build/blue/utils/colors.go
	GUILEC	/Users/linuss/src/blue/build/blue/command/builtin/serialize.go
	GUILEC	/Users/linuss/src/blue/build/blue/configuration/find.go
	GUILEC	/Users/linuss/src/blue/build/blue/ui/options.go
	GUILEC	/Users/linuss/src/blue/build/blue/build.go
	GUILEC	/Users/linuss/src/blue/build/blue/configuration/guess.go
	GUILEC	/Users/linuss/src/blue/build/blue/configuration/states.go
	GUILEC	/Users/linuss/src/blue/build/blue/ui/autocomplete.go
	GUILEC	/Users/linuss/src/blue/build/blue/computation.go
	GUILEC	/Users/linuss/src/blue/build/blue/ui/entrypoints/autocomplete.go
	GUILEC	/Users/linuss/src/blue/build/blue/configuration/toolchain/c.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/variable.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/testable.go
	GUILEC	/Users/linuss/src/blue/build/blue/ui.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/file.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/dependency.go
	GUILEC	/Users/linuss/src/blue/build/blue/debugging/advice.go
	GUILEC	/Users/linuss/src/blue/build/blue/debugging/backtrace.go
	GUILEC	/Users/linuss/src/blue/build/blue/debugging/coverage.go
	GUILEC	/Users/linuss/src/blue/build/blue/debugging/trace.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/command.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/cli-option.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/configuration.go
	GUILEC	/Users/linuss/src/blue/build/blue/exceptions.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/affinity.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/blueprint.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/conditions.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/channels.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/buildable.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/counter.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/events.go
	GUILEC	/Users/linuss/src/blue/build/blue/types/autocompletable.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/deque.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/interrupts.go
	GUILEC	/Users/linuss/src/blue/build/blue/syntax.go
	GUILEC	/Users/linuss/src/blue/build/blue/subprocess.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/io-wakeup.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/nameset.go
	GUILEC	/Users/linuss/src/blue/build/blue/store.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/template-file.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/texinfo.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/posix-clocks.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/operations.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/tarball.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/guile/test-driver.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/guile/configuration.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/standard/configuration.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/repl.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/psq.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/copy-file.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/c/dependency.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/guile.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/c/configuration.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/binutils/configuration.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/stack.go
	GUILEC	/Users/linuss/src/blue/build/blue/states.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/scheduler.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/timers.go
	GUILEC	/Users/linuss/src/blue/build/blue/serialize.go
	GUILEC	/Users/linuss/src/blue/build/blue/preferences.go
	GUILEC	/Users/linuss/src/blue/build/blue/file-system/directory.go
	GUILEC	/Users/linuss/src/blue/build/blue/fibers/timer-wheel.go
	GUILEC	/Users/linuss/src/blue/build/blue/file-system/find.go
	GUILEC	/Users/linuss/src/blue/build/blue/parsers/cli.go
	GUILEC	/Users/linuss/src/blue/build/blue/stencils/c.go
	GUILEC	/Users/linuss/src/blue/build/blue/file-system/temp.go
	GUILEC	/Users/linuss/src/blue/build/blue/file-system/utils.go
	GUILEC	/Users/linuss/src/blue/build/blue/file-system/path.go
	GUILEC	/Users/linuss/src/blue/build/blue/oop.go
	GUILEC	/Users/linuss/src/blue/build/blue/load.go
	GUILEC	/Users/linuss/src/blue/build/blue/io.go
	GUILEC	/Users/linuss/src/blue/build/blue/graph/sort.go
	GUILEC	/Users/linuss/src/blue/build/blue/job.go
linuss@DCP96WG1C6 build %

I think it's not as straightforward as just vendoring in fibers again, doing so lead to a deadhang. I can have a look again.

FWIW This builds on my machine: ``` linuss@DCP96WG1C6 build % ls blue docs pre-inst-env tests linuss@DCP96WG1C6 build % uname Darwin linuss@DCP96WG1C6 build % ./pre-inst-env blue --jobs=4 build ;;; note: source file /opt/homebrew/Cellar/guile/3.0.11/share/guile/3.0/srfi/srfi-1.scm ;;; newer than compiled /opt/homebrew/Cellar/guile/3.0.11/lib/guile/3.0/ccache/srfi/srfi-1.go TPL /Users/linuss/src/blue/build/blue/.real/blue GUILEC /Users/linuss/src/blue/build/blue/utils/strings.go GUILEC /Users/linuss/src/blue/build/blue/utils/tty.go GUILEC /Users/linuss/src/blue/build/blue/utils/version.go GUILEC /Users/linuss/src/blue/build/blue/utils/pkg-config.go MKINFO /Users/linuss/src/blue/build/docs/blue.info GUILEC /Users/linuss/src/blue/build/blue/utils/list.go GUILEC /Users/linuss/src/blue/build/blue/command.go GUILEC /Users/linuss/src/blue/build/blue/utils/logging.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/build.go GUILEC /Users/linuss/src/blue/build/blue/utils/host.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/check.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/clean.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/configure.go GUILEC /Users/linuss/src/blue/build/blue/utils/hash.go GUILEC /Users/linuss/src/blue/build/blue/utils/glob.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/help.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/repl.go GUILEC /Users/linuss/src/blue/build/blue/utils/environ.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/replay.go GUILEC /Users/linuss/src/blue/build/blue/utils/diagnostics.go GUILEC /Users/linuss/src/blue/build/blue/command/gnu.go GUILEC /Users/linuss/src/blue/build/blue/utils/colors.go GUILEC /Users/linuss/src/blue/build/blue/command/builtin/serialize.go GUILEC /Users/linuss/src/blue/build/blue/configuration/find.go GUILEC /Users/linuss/src/blue/build/blue/ui/options.go GUILEC /Users/linuss/src/blue/build/blue/build.go GUILEC /Users/linuss/src/blue/build/blue/configuration/guess.go GUILEC /Users/linuss/src/blue/build/blue/configuration/states.go GUILEC /Users/linuss/src/blue/build/blue/ui/autocomplete.go GUILEC /Users/linuss/src/blue/build/blue/computation.go GUILEC /Users/linuss/src/blue/build/blue/ui/entrypoints/autocomplete.go GUILEC /Users/linuss/src/blue/build/blue/configuration/toolchain/c.go GUILEC /Users/linuss/src/blue/build/blue/types/variable.go GUILEC /Users/linuss/src/blue/build/blue/types/testable.go GUILEC /Users/linuss/src/blue/build/blue/ui.go GUILEC /Users/linuss/src/blue/build/blue/types/file.go GUILEC /Users/linuss/src/blue/build/blue/types/dependency.go GUILEC /Users/linuss/src/blue/build/blue/debugging/advice.go GUILEC /Users/linuss/src/blue/build/blue/debugging/backtrace.go GUILEC /Users/linuss/src/blue/build/blue/debugging/coverage.go GUILEC /Users/linuss/src/blue/build/blue/debugging/trace.go GUILEC /Users/linuss/src/blue/build/blue/types/command.go GUILEC /Users/linuss/src/blue/build/blue/types/cli-option.go GUILEC /Users/linuss/src/blue/build/blue/types/configuration.go GUILEC /Users/linuss/src/blue/build/blue/exceptions.go GUILEC /Users/linuss/src/blue/build/blue/fibers/affinity.go GUILEC /Users/linuss/src/blue/build/blue/fibers.go GUILEC /Users/linuss/src/blue/build/blue/types/blueprint.go GUILEC /Users/linuss/src/blue/build/blue/fibers/conditions.go GUILEC /Users/linuss/src/blue/build/blue/fibers/channels.go GUILEC /Users/linuss/src/blue/build/blue/types/buildable.go GUILEC /Users/linuss/src/blue/build/blue/fibers/counter.go GUILEC /Users/linuss/src/blue/build/blue/fibers/events.go GUILEC /Users/linuss/src/blue/build/blue/types/autocompletable.go GUILEC /Users/linuss/src/blue/build/blue/fibers/deque.go GUILEC /Users/linuss/src/blue/build/blue/fibers/interrupts.go GUILEC /Users/linuss/src/blue/build/blue/syntax.go GUILEC /Users/linuss/src/blue/build/blue/subprocess.go GUILEC /Users/linuss/src/blue/build/blue/fibers/io-wakeup.go GUILEC /Users/linuss/src/blue/build/blue/fibers/nameset.go GUILEC /Users/linuss/src/blue/build/blue/store.go GUILEC /Users/linuss/src/blue/build/blue/stencils/template-file.go GUILEC /Users/linuss/src/blue/build/blue/stencils/texinfo.go GUILEC /Users/linuss/src/blue/build/blue/fibers/posix-clocks.go GUILEC /Users/linuss/src/blue/build/blue/fibers/operations.go GUILEC /Users/linuss/src/blue/build/blue/stencils/tarball.go GUILEC /Users/linuss/src/blue/build/blue/stencils/guile/test-driver.go GUILEC /Users/linuss/src/blue/build/blue/stencils/guile/configuration.go GUILEC /Users/linuss/src/blue/build/blue/stencils/standard/configuration.go GUILEC /Users/linuss/src/blue/build/blue/fibers/repl.go GUILEC /Users/linuss/src/blue/build/blue/fibers/psq.go GUILEC /Users/linuss/src/blue/build/blue/stencils/copy-file.go GUILEC /Users/linuss/src/blue/build/blue/stencils/c/dependency.go GUILEC /Users/linuss/src/blue/build/blue/stencils/guile.go GUILEC /Users/linuss/src/blue/build/blue/stencils/c/configuration.go GUILEC /Users/linuss/src/blue/build/blue/stencils/binutils/configuration.go GUILEC /Users/linuss/src/blue/build/blue/fibers/stack.go GUILEC /Users/linuss/src/blue/build/blue/states.go GUILEC /Users/linuss/src/blue/build/blue/fibers/scheduler.go GUILEC /Users/linuss/src/blue/build/blue/fibers/timers.go GUILEC /Users/linuss/src/blue/build/blue/serialize.go GUILEC /Users/linuss/src/blue/build/blue/preferences.go GUILEC /Users/linuss/src/blue/build/blue/file-system/directory.go GUILEC /Users/linuss/src/blue/build/blue/fibers/timer-wheel.go GUILEC /Users/linuss/src/blue/build/blue/file-system/find.go GUILEC /Users/linuss/src/blue/build/blue/parsers/cli.go GUILEC /Users/linuss/src/blue/build/blue/stencils/c.go GUILEC /Users/linuss/src/blue/build/blue/file-system/temp.go GUILEC /Users/linuss/src/blue/build/blue/file-system/utils.go GUILEC /Users/linuss/src/blue/build/blue/file-system/path.go GUILEC /Users/linuss/src/blue/build/blue/oop.go GUILEC /Users/linuss/src/blue/build/blue/load.go GUILEC /Users/linuss/src/blue/build/blue/io.go GUILEC /Users/linuss/src/blue/build/blue/graph/sort.go GUILEC /Users/linuss/src/blue/build/blue/job.go linuss@DCP96WG1C6 build % ``` I think it's not as straightforward as just vendoring in fibers again, doing so lead to a deadhang. I can have a look again.
Author
Contributor
Copy link

@old

OK, here's where I'm at now:

  • Vendored in the kqueue code, so there's no build dependency on guile-fibers/libevent
  • macOS forces /private/tmp, so tests that used /tmp failed
  • Took the opportunity to fix a typo srfii-19 -> srfi-19
  • Made Darwin use NSGetExecutablePath instead of exe as the latter isn't available by default
  • GCC is aliased to clang on macOS, and clang is pickier with arguments.
  • guile compile output was leaking in to tests, making them fail. Redirected stderr so it doesn't leak in to test checks.
  • file freshness seems to be on the second-level on my system, so tests that checked for freshness failed if I didn't wait at least one second.
@old OK, here's where I'm at now: - Vendored in the kqueue code, so there's no build dependency on guile-fibers/libevent - macOS forces /private/tmp, so tests that used /tmp failed - Took the opportunity to fix a typo srfii-19 -> srfi-19 - Made Darwin use NSGetExecutablePath instead of exe as the latter isn't available by default - GCC is aliased to clang on macOS, and clang is pickier with arguments. - guile compile output was leaking in to tests, making them fail. Redirected stderr so it doesn't leak in to test checks. - file freshness seems to be on the second-level on my system, so tests that checked for freshness failed if I didn't wait at least one second.
Author
Contributor
Copy link

All blue tests pass.

All blue tests pass.
Author
Contributor
Copy link

@old Need to design handling shared c libraries: mac wants .dylib. Should we do like cmake and auto-rewrite .so to .dylib in blueprints?

I just pushed a commit that does just that, but am up for some other approach.

@old Need to design handling shared c libraries: mac wants .dylib. Should we do like cmake and auto-rewrite .so to .dylib in blueprints? I just pushed a commit that does just that, but am up for some other approach.
Owner
Copy link

@lshoravi the relevant issue for C stencil is #158

What I want for the C stencil is to provide two primitives (extended to C++ as well):

  • c-binary
  • c-library

Both should take plain names like foo. But the final output name will be different for libraries:

  • On linux, either libfoo.so or libfoo.a
  • On MacOS, libfoo.dylib or libfoo.a I guess
  • On Windows foo.dll or foo.lib I guess

For binary, we always just follow the name as is

However, we also want the library to be able to compile both statically or dynamically in the same run. This is why we want to avoid having the library extension in the name.

A user should be able to do so:

(c-library
 (inputs 
 '("foo.c" "bar.c"))
 (outputs
 "foo")
 (shared? #t)
 (static? #t))
;; will build on Linux:
libfoo.so
libfoo.a
;; wil lbuild on MacOS
libfoo.dynlib
libfoo.a
;; will build on Windows
foo.dll
foo.lib

because one definition must compile in two different ways, we need to do what libtool is doing, e.g. compiling static .o in one directory and shared .o in another. Not sure how we want to handle that part. But for now, for your port, I think it's fine to just focus on auto-augmenting the suffix ourself, if we don't detect it. We could perhaps even emit a warning saying:

Hey. Your c-library output is libfoo.so. This is not portable on other platforms. You should just name it foo instead.

@lshoravi the relevant issue for C stencil is https://codeberg.org/lapislazuli/blue/issues/158 What I want for the C stencil is to provide two primitives (extended to C++ as well): - `c-binary` - `c-library` Both should take plain names like `foo`. But the final output name will be different for libraries: - On linux, either `libfoo.so` or `libfoo.a` - On MacOS, `libfoo.dylib` or `libfoo.a` I guess - On Windows `foo.dll` or `foo.lib` I guess For binary, we always just follow the name as is However, we also want the library to be able to compile both statically or dynamically in the same run. This is why we want to avoid having the library extension in the name. A user should be able to do so: ```scm (c-library (inputs '("foo.c" "bar.c")) (outputs "foo") (shared? #t) (static? #t)) ;; will build on Linux: libfoo.so libfoo.a ;; wil lbuild on MacOS libfoo.dynlib libfoo.a ;; will build on Windows foo.dll foo.lib ``` because one definition must compile in two different ways, we need to do what libtool is doing, e.g. compiling static `.o` in one directory and shared `.o` in another. Not sure how we want to handle that part. But for now, for your port, I think it's fine to just focus on auto-augmenting the suffix ourself, if we don't detect it. We could perhaps even emit a warning saying: > Hey. Your c-library output is `libfoo.so`. This is not portable on other platforms. You should just name it `foo` instead.
Author
Contributor
Copy link

OK, makes sense.

Pulled the rewriting back:

  • Bare names ((outputs "libfoo")) get the host suffix appended, ready for the c-library shape from #158.
  • Names with .so/.dylib/.dll are honored verbatim, with a one-time log:warning! per path pointing at the plain form.

Still on c-binary since the c-library split and libtool-style dual-output (#158) is maybe better solved separately from macOS. Can move and re-use the helpers here (shared-library-suffix, augment-shared-library-suffix, c-binary-shared-library-id-flags) when doing #158

OK, makes sense. Pulled the rewriting back: - Bare names ((outputs "libfoo")) get the host suffix appended, ready for the c-library shape from #158. - Names with .so/.dylib/.dll are honored verbatim, with a one-time log:warning! per path pointing at the plain form. Still on c-binary since the c-library split and libtool-style dual-output (#158) is maybe better solved separately from macOS. Can move and re-use the helpers here (shared-library-suffix, augment-shared-library-suffix, c-binary-shared-library-id-flags) when doing #158
lshoravi force-pushed linuss/macos-port from a97b3adfbd
Some checks are pending
ci/woodpecker/pr/arch Pipeline is pending approval
ci/woodpecker/pr/debian Pipeline is pending approval
ci/woodpecker/pr/fedora Pipeline is pending approval
ci/woodpecker/pr/ubuntu Pipeline is pending approval
to 0a3fb562cc
Some checks are pending
ci/woodpecker/pr/arch Pipeline is pending approval
ci/woodpecker/pr/debian Pipeline is pending approval
ci/woodpecker/pr/fedora Pipeline is pending approval
ci/woodpecker/pr/ubuntu Pipeline is pending approval
2026年04月26日 11:32:51 +02:00
Compare
lshoravi force-pushed linuss/macos-port from 0a3fb562cc
Some checks are pending
ci/woodpecker/pr/arch Pipeline is pending approval
ci/woodpecker/pr/debian Pipeline is pending approval
ci/woodpecker/pr/fedora Pipeline is pending approval
ci/woodpecker/pr/ubuntu Pipeline is pending approval
to da2bdfb6c1
Some checks are pending
ci/woodpecker/pr/arch Pipeline is pending approval
ci/woodpecker/pr/debian Pipeline is pending approval
ci/woodpecker/pr/fedora Pipeline is pending approval
ci/woodpecker/pr/ubuntu Pipeline is pending approval
2026年04月26日 11:38:30 +02:00
Compare
Owner
Copy link

I haven't look thoroughly the commits here. But for the sake of making bisect easier in the future, did you squash your commits when possible?

I haven't look thoroughly the commits here. But for the sake of making bisect easier in the future, did you squash your commits when possible?
Author
Contributor
Copy link

Hi. I have been using this the last couple of weeks and it seems to work. Would you like me to squash the commits?

Hi. I have been using this the last couple of weeks and it seems to work. Would you like me to squash the commits?
Owner
Copy link

yes please

yes please
lshoravi force-pushed linuss/macos-port from da2bdfb6c1
Some checks are pending
ci/woodpecker/pr/arch Pipeline is pending approval
ci/woodpecker/pr/debian Pipeline is pending approval
ci/woodpecker/pr/fedora Pipeline is pending approval
ci/woodpecker/pr/ubuntu Pipeline is pending approval
to 1813010a4c
Some checks failed
ci/woodpecker/pr/arch Pipeline failed
ci/woodpecker/pr/ubuntu Pipeline failed
ci/woodpecker/pr/debian Pipeline failed
ci/woodpecker/pr/fedora Pipeline failed
2026年05月26日 16:42:39 +02:00
Compare
old changed title from (削除) WIP: Darwin support (削除ここまで) to Darwin support 2026年05月26日 17:33:54 +02:00
old manually merged commit ecc692a093 into main 2026年06月23日 15:17:47 +02:00
Sign in to join this conversation.
No reviewers
Labels
Clear labels
bug
Something is not working
contribution welcome
Contributions are very welcome, get started here
discussion
duplicate
This issue or pull request already exists
enhancement
New feature
good first issue
Interested in contributing? Get started here.
help wanted
Need some help
invalid
Something is wrong
optimization
question
More information is needed
upstream
Related to an upstream repository, already reported there
bug
Something is not working
contribution welcome
Contributions are very welcome, get started here
duplicate
This issue or pull request already exists
enhancement
New feature
good first issue
Interested in contributing? Get started here.
help wanted
Need some help
invalid
Something is wrong
question
More information is needed
upstream
Related to an upstream repository, already reported there
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lapislazuli/blue!274
Reference in a new issue
lapislazuli/blue
No description provided.
Delete branch "lshoravi/blue:linuss/macos-port"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?