158 lines
4.9 KiB
Ruby
158 lines
4.9 KiB
Ruby
class Dbus < Formula
|
|
bottle do
|
|
root_url "https://homebrew.hyprnet/bottles"
|
|
sha256 cellar: "/opt/homebrew/Cellar", arm64_sequoia: "5a51451acabb5ae56b5682e88a82dfa43cc6a2b653ca068198546bb72324bd0c"
|
|
sha256 cellar: "/opt/homebrew/Cellar", arm64_tahoe: "708eed3cc7031e486c760cc9debe777b7e8de93faf74320b66d3bc42e27499c3"
|
|
sha256 cellar: "/home/linuxbrew/.linuxbrew/Cellar", x86_64_linux: "42841a5373f596cbccd52b4cf3eae4f3ec6a853309b14e36e869a7030fabd21a"
|
|
end
|
|
# releases: even (1.12.x) = stable, odd (1.13.x) = development
|
|
desc "Message bus system, providing inter-application communication"
|
|
homepage "https://wiki.freedesktop.org/www/Software/dbus"
|
|
url "https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz"
|
|
mirror "https://deb.debian.org/debian/pool/main/d/dbus/dbus_1.16.2.orig.tar.xz"
|
|
sha256 "0ba2a1a4b16afe7bceb2c07e9ce99a8c2c3508e5dec290dbb643384bd6beb7e2"
|
|
license any_of: ["AFL-2.1", "GPL-2.0-or-later"]
|
|
revision 1
|
|
compatibility_version 1
|
|
head "https://gitlab.freedesktop.org/dbus/dbus.git", branch: "main"
|
|
|
|
livecheck do
|
|
url "https://dbus.freedesktop.org/releases/dbus/"
|
|
regex(/href=.*?dbus[._-]v?(\d+\.\d*?[02468](?:\.\d+)*)\.t/i)
|
|
end
|
|
|
|
|
|
|
|
depends_on "docbook" => :build
|
|
depends_on "docbook-xsl" => :build
|
|
depends_on "meson" => :build
|
|
depends_on "ninja" => :build
|
|
depends_on "pkgconf" => :build
|
|
depends_on "xmlto" => :build
|
|
|
|
uses_from_macos "libxslt" => :build # for xsltproc
|
|
uses_from_macos "python" => :build
|
|
uses_from_macos "expat"
|
|
|
|
# Remove deprecated keys from launchd plist.
|
|
# PR ref: https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/179
|
|
patch :DATA
|
|
|
|
def install
|
|
# Fix the TMPDIR to one D-Bus doesn't reject due to odd symbols
|
|
ENV["TMPDIR"] = "/tmp"
|
|
ENV["XML_CATALOG_FILES"] = "#{etc}/xml/catalog"
|
|
|
|
args = %W[
|
|
-Dlocalstatedir=#{var}
|
|
-Dsysconfdir=#{etc}
|
|
-Dxml_docs=enabled
|
|
-Ddoxygen_docs=disabled
|
|
-Dmodular_tests=disabled
|
|
]
|
|
|
|
args << "-Dlaunchd_agent_dir=#{prefix}" << "-Ddbus_user=daemon" if OS.mac?
|
|
inreplace "bus/org.freedesktop.dbus-session.plist.in", "@DBUS_DAEMONDIR@", opt_bin
|
|
|
|
# rpath is not set for meson build
|
|
ENV.append "LDFLAGS", "-Wl,-rpath,#{lib}"
|
|
|
|
system "meson", "setup", "build", *args, *std_meson_args
|
|
system "meson", "compile", "-C", "build", "--verbose"
|
|
system "meson", "install", "-C", "build"
|
|
|
|
# Manually create plist for system bus service
|
|
(prefix/"org.freedesktop.dbus-system.plist").write system_plist if OS.mac?
|
|
mkdir etc/"dbus-1/system.d"
|
|
mkdir etc/"dbus-1/session.d"
|
|
end
|
|
|
|
post_install_steps do
|
|
run "dbus-uuidgen", args: ["--ensure={{var}}/lib/dbus/machine-id"], base: :bin
|
|
end
|
|
|
|
def caveats
|
|
on_macos do
|
|
<<~EOS
|
|
To start the session bus now and at login:
|
|
|
|
brew services start dbus
|
|
|
|
To start the system bus now and on boot, install and activate the included daemon:
|
|
|
|
sudo cp -f $(brew --prefix dbus)/org.freedesktop.dbus-system.plist /Library/LaunchDaemons
|
|
sudo launchctl bootstrap system /Library/LaunchDaemons/org.freedesktop.dbus-system.plist
|
|
|
|
If the daemon is already installed and running, restart it:
|
|
|
|
sudo launchctl kickstart -k system/org.freedesktop.dbus-system
|
|
EOS
|
|
end
|
|
end
|
|
|
|
service do
|
|
name macos: "org.freedesktop.dbus-session"
|
|
end
|
|
|
|
def system_plist
|
|
<<~PLIST
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>Label</key>
|
|
<string>org.freedesktop.dbus-system</string>
|
|
<key>KeepAlive</key>
|
|
<dict>
|
|
<key>SuccessfulExit</key>
|
|
<false/>
|
|
</dict>
|
|
<key>ProgramArguments</key>
|
|
<array>
|
|
<string>#{opt_bin}/dbus-daemon</string>
|
|
<string>--nofork</string>
|
|
<string>--system</string>
|
|
<string>--nopidfile</string>
|
|
</array>
|
|
<key>Sockets</key>
|
|
<dict>
|
|
<key>unix_domain_listener</key>
|
|
<dict>
|
|
<key>SockPathName</key>
|
|
<string>#{var}/run/dbus/system_bus_socket</string>
|
|
<key>SockPathMode</key>
|
|
<integer>511</integer>
|
|
</dict>
|
|
</dict>
|
|
</dict>
|
|
</plist>
|
|
PLIST
|
|
end
|
|
|
|
test do
|
|
assert_match version.to_s, shell_output("#{bin}/dbus-daemon --version")
|
|
end
|
|
end
|
|
|
|
__END__
|
|
diff --git a/bus/org.freedesktop.dbus-session.plist.in b/bus/org.freedesktop.dbus-session.plist.in
|
|
index 40ff370..3c77fa9 100644
|
|
--- a/bus/org.freedesktop.dbus-session.plist.in
|
|
+++ b/bus/org.freedesktop.dbus-session.plist.in
|
|
@@ -5,15 +5,6 @@
|
|
<key>Label</key>
|
|
<string>org.freedesktop.dbus-session</string>
|
|
|
|
- <key>ServiceIPC</key>
|
|
- <true/>
|
|
-
|
|
- <!-- Please uncomment on 10.4; OnDemand doesn't work properly there. -->
|
|
- <!--
|
|
- <key>OnDemand</key>
|
|
- <false />
|
|
- -->
|
|
-
|
|
<key>ProgramArguments</key>
|
|
<array>
|
|
<string>@DBUS_DAEMONDIR@/dbus-daemon</string>
|