commit 22cb139

grunfink  ·  2024-01-07 21:06:01 +0000 UTC
parents ec7de17, 4d9a19f
Merge pull request 'Added compatibility with NetBSD' (#99) from draga79/snac2:master into master

Reviewed-on: https://codeberg.org/grunfink/snac2/pulls/99
3 files changed,  +102, -1
+59, -0
 1@@ -0,0 +1,59 @@
 2+PREFIX=/usr/pkg
 3+PREFIX_MAN=$(PREFIX)/man
 4+CFLAGS?=-g -Wall -Wextra
 5+
 6+all: snac
 7+
 8+snac: snac.o main.o data.o http.o httpd.o webfinger.o \
 9+    activitypub.o html.o utils.o format.o upgrade.o mastoapi.o
10+	$(CC) $(CFLAGS) -L/usr/pkg/lib *.o -lcurl -lcrypto -pthread $(LDFLAGS) -Wl,-rpath,/usr/lib -Wl,-rpath,/usr/pkg/lib -o $@
11+
12+
13+.c.o:
14+	$(CC) $(CFLAGS) $(CPPFLAGS) -I/usr/pkg/include -c $<
15+
16+clean:
17+	rm -rf *.o *.core snac makefile.depend
18+
19+dep:
20+	$(CC) -I/usr/pkg/include -MM *.c > makefile.depend
21+
22+install:
23+	mkdir -p -m 755 $(PREFIX)/bin
24+	install -m 755 snac $(PREFIX)/bin/snac
25+	mkdir -p -m 755 $(PREFIX_MAN)/man1
26+	install -m 644 doc/snac.1 $(PREFIX_MAN)/man1/snac.1
27+	mkdir -p -m 755 $(PREFIX_MAN)/man5
28+	install -m 644 doc/snac.5 $(PREFIX_MAN)/man5/snac.5
29+	mkdir -p -m 755 $(PREFIX_MAN)/man8
30+	install -m 644 doc/snac.8 $(PREFIX_MAN)/man8/snac.8
31+
32+uninstall:
33+	rm $(PREFIX)/bin/snac
34+	rm $(PREFIX_MAN)/man1/snac.1
35+	rm $(PREFIX_MAN)/man5/snac.5
36+	rm $(PREFIX_MAN)/man8/snac.8
37+
38+activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_mime.h \
39+ xs_openssl.h xs_regex.h xs_time.h xs_set.h xs_match.h snac.h
40+data.o: data.c xs.h xs_hex.h xs_io.h xs_json.h xs_openssl.h xs_glob.h \
41+ xs_set.h xs_time.h snac.h
42+format.o: format.c xs.h xs_regex.h xs_mime.h xs_html.h snac.h
43+html.o: html.c xs.h xs_io.h xs_json.h xs_regex.h xs_set.h xs_openssl.h \
44+ xs_time.h xs_mime.h xs_match.h xs_html.h snac.h
45+http.o: http.c xs.h xs_io.h xs_openssl.h xs_curl.h xs_time.h xs_json.h \
46+ snac.h
47+httpd.o: httpd.c xs.h xs_io.h xs_json.h xs_socket.h xs_httpd.h xs_mime.h \
48+ xs_time.h xs_openssl.h xs_fcgi.h xs_html.h snac.h
49+main.o: main.c xs.h xs_io.h xs_json.h snac.h xs_html.h
50+mastoapi.o: mastoapi.c xs.h xs_hex.h xs_openssl.h xs_json.h xs_io.h \
51+ xs_time.h xs_glob.h xs_set.h xs_random.h xs_url.h xs_mime.h xs_match.h \
52+ snac.h
53+snac.o: snac.c xs.h xs_hex.h xs_io.h xs_unicode.h xs_json.h xs_curl.h \
54+ xs_openssl.h xs_socket.h xs_url.h xs_httpd.h xs_mime.h xs_regex.h \
55+ xs_set.h xs_time.h xs_glob.h xs_random.h xs_match.h xs_fcgi.h xs_html.h \
56+ snac.h
57+upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h
58+utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h \
59+ xs_random.h xs_glob.h snac.h
60+webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h xs_mime.h snac.h
+9, -1
 1@@ -46,9 +46,17 @@ On FreeBSD, to install `curl` just type:
 2 pkg install curl
 3 ```
 4 
 5+On NetBSD, to install `curl` just type:
 6+
 7+```sh
 8+pkgin install curl
 9+```
10+
11 The source code is available [here](https://comam.es/what-is-snac).
12 
13-Run `make` and then `make install` as root.
14+Run `make` and then `make install` as root. 
15+
16+If you're compiling on NetBSD, you should use the specific provided Makefile and run `make -f Makefile.NetBSD` and then `make -f Makefile.NetBSD install` as root.
17 
18 From version 2.27, `snac` includes support for the Mastodon API; if you are not interested on it, you can compile it out by running
19 
+34, -0
 1@@ -0,0 +1,34 @@
 2+#!/bin/sh
 3+#
 4+# PROVIDE: snac
 5+# REQUIRE: DAEMON
 6+# KEYWORD: shutdown
 7+
 8+. /etc/rc.subr
 9+
10+name="snac"
11+rcvar=${name}
12+command="/usr/pkg/bin/snac"
13+command_args="httpd /PATH/TO/SNACDATA"
14+snac_log="/var/log/snac.log"
15+pidfile="/var/run/${name}/${name}.pid"
16+start_precmd="snac_precmd"
17+run_as_user="SNACUSER"
18+
19+snac_precmd() {
20+    # Ensure log file exists and is writable by SNACUSER
21+    touch ${snac_log}
22+    chown ${run_as_user} ${snac_log}
23+    chmod 640 ${snac_log}
24+
25+    # Ensure the run directory exists
26+    if [ ! -d /var/run/${name} ]; then
27+        mkdir -p /var/run/${name}
28+        chown ${run_as_user} /var/run/${name}
29+    fi
30+
31+    command="/bin/sh -c 'cd /var/run/${name}; exec ${command} ${command_args} >${snac_log} 2>&1 & echo \$! >${pidfile}'"
32+}
33+
34+load_rc_config $name
35+run_rc_command "$1"