]> git.ipfire.org Git - thirdparty/lldpd.git/blame - osx/lldpd.rb
osx: update Homebrew formula
[thirdparty/lldpd.git] / osx / lldpd.rb
CommitLineData
29e300e5 1class Lldpd < Formula
a254e923 2 desc "Implementation of IEEE 802.1ab (LLDP)"
c65f44ec 3 homepage "https://vincentbernat.github.io/lldpd/"
acbb798a
VB
4 url "https://media.luffy.cx/files/lldpd/lldpd-0.9.9.tar.gz"
5 sha256 "5e9e08f500d21376631cbc9f8e19a4b167cd38eb2d8fd9e660b8e80507f802db"
29e300e5 6
c65f44ec 7 option "with-snmp", "Build SNMP subagent support"
59363019 8
c65f44ec
VB
9 depends_on "pkg-config" => :build
10 depends_on "readline"
11 depends_on "libevent"
12 depends_on "net-snmp" if build.with? "snmp"
29e300e5
VB
13
14 def install
084988d4 15 readline = Formula["readline"]
1eb493a3
VB
16 args = [
17 "--prefix=#{prefix}",
18 "--sysconfdir=#{etc}",
19 "--localstatedir=#{var}",
20 "--with-xml",
21 "--with-readline",
22 "--with-privsep-chroot=/var/empty",
23 "--with-launchddaemonsdir=no",
24 "CPPFLAGS=-I#{readline.include} -DRONLY=1",
25 "LDFLAGS=-L#{readline.lib}",
26 ]
f363bce7 27 args << (build.with?("snmp") ? "--with-snmp" : "--without-snmp")
59363019
VB
28
29 system "./configure", *args
29e300e5 30 system "make"
c65f44ec 31 system "make", "install"
33f787eb 32 end
60c6b6cb 33
61ae8353
VB
34 def post_install
35 (var/"run").mkpath
29e300e5
VB
36 end
37
38 def dscl(*args)
39 result = `dscl . -#{args.join(' ')} 2> /dev/null`
40 if $? != 0
41 raise ErrorDuringExecution, "Failure while executing dscl: #{args.join(' ')}"
42 end
43 return result
44 end
45
46 # Create user and group if needed
47 def caveats
48 u = "_lldpd"
49 unless Kernel.system "/usr/bin/dscl . -read /Users/#{u} &> /dev/null"
50 # Find a free UID/GID
51 uids = dscl("list /Users uid")
52 gids = dscl("list /Groups gid")
53 uid = 200
54 while uids =~ Regexp.new("#{Regexp.escape(uid.to_s)}\n") || gids =~ Regexp.new("#{Regexp.escape(uid.to_s)}\n")
55 uid += 1
56 end
57 s = <<-EOS.undent
58 You need to create a special user to run lldpd.
59 Just type the following commands:
60 sudo dscl . -create /Groups/#{u}
61 sudo dscl . -create /Groups/#{u} PrimaryGroupID #{uid.to_s}
62 sudo dscl . -create /Groups/#{u} Password "*"
63 sudo dscl . -create /Groups/#{u} RealName "lldpd privilege separation group"
64 sudo dscl . -create /Users/#{u}
2d52771d 65 sudo dscl . -create /Users/#{u} UserShell /usr/bin/false
29e300e5
VB
66 sudo dscl . -create /Users/#{u} NFSHomeDirectory /var/empty
67 sudo dscl . -create /Users/#{u} PrimaryGroupID #{uid.to_s}
68 sudo dscl . -create /Users/#{u} UniqueID #{uid.to_s}
69 sudo dscl . -create /Users/#{u} Password "*"
70 sudo dscl . -create /Users/#{u} RealName "lldpd privilege separation user"
71 EOS
72 return s
73 end
74 end
75
76 plist_options :startup => true
35289729 77
59363019
VB
78 def plist
79 additional_args = ""
0414abe1 80 additional_args += "<string>-x</string>" if build.with? "snmp"
c65f44ec 81 <<-EOS.undent
29e300e5
VB
82 <?xml version="1.0" encoding="UTF-8"?>
83 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
84 <plist version="1.0">
85 <dict>
86 <key>Label</key>
87 <string>#{plist_name}</string>
88 <key>ProgramArguments</key>
89 <array>
084988d4 90 <string>#{opt_sbin}/lldpd</string>
59363019 91 #{additional_args}
29e300e5
VB
92 </array>
93 <key>RunAtLoad</key><true/>
94 <key>KeepAlive</key><true/>
95 </dict>
96 </plist>
97 EOS
98 end
29e300e5 99end