Author: Andy Green Date: Mon Mar 08 11:50:09 2021 +0000 solaris diff --git a/CMakeLists.txt b/CMakeLists.txt index b856958..72b5663 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) include(CheckCSourceCompiles) include(LwsCheckRequirements) -if (CMAKE_HOST_SYSTEM_NAME MATCHES "NetBSD") +if (CMAKE_HOST_SYSTEM_NAME MATCHES "NetBSD" OR CMAKE_HOST_SYSTEM_NAME MATCHES "SunOS") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) else() set(CMAKE_SKIP_RPATH 1) @@ -148,7 +148,7 @@ if (requirements) if (SAI_BUILDER) add_subdirectory(src/builder) add_subdirectory(src/resource) - if (NOT MSVC AND NOT WIN32) + if (NOT MSVC AND NOT WIN32 AND NOT (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")) add_subdirectory(src/device) add_subdirectory(src/expect) if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") diff --git a/READMEs/README-systemd-nspawn.md b/READMEs/README-systemd-nspawn.md index 45f4e56..86cedbb 100644 --- a/READMEs/README-systemd-nspawn.md +++ b/READMEs/README-systemd-nspawn.md @@ -336,7 +336,8 @@ Container # cd libwebsockets && mkdir build && cd build && \ cmake .. -DLWS_WITH_JOSE=1 -DLWS_UNIX_SOCK=1 -DLWS_WITH_STRUCT_JSON=1 \ -DLWS_WITH_STRUCT_SQLITE3=1 -DLWS_WITH_GENCRYPTO=1 -DLWS_WITH_SPAWN=1 \ -DLWS_WITH_SECURE_STREAMS=1 -DLWS_WITH_THREADPOOL=1 \ - -DLWS_WITH_PLUGINS_BUILTIN=1 -DLWS_WITHOUT_DAEMONIZE=0 + -DLWS_WITH_PLUGINS_BUILTIN=1 -DLWS_WITHOUT_DAEMONIZE=0 \ + -DLWS_WITH_SYS_METRICS=1 Container # make -j && make -j install && ldconfig ``` @@ -354,6 +355,18 @@ cmake .. -DLWS_OPENSSL_INCLUDE_DIRS=/opt/homebrew/Cellar/openssl@1.1/1.1.1h/incl -DLWS_WITH_PLUGINS_BUILTIN=1 ``` +### Solaris loader paths + +Solaris goes its own way to define well-known loader paths, the magic to cover +default builds of lws and libgit2 is + +``` +# crle -c /var/ld/ld.config -l /lib:/usr/lib:/usr/local/lib:/opt/csw/lib +``` + +You also need to build libgit2 similar to as shown below, since it's not +packaged. + ### Windows: build libgit2 For Windows, after following the way to build lws in @@ -461,6 +474,21 @@ That's it, he should be running in the background. To stop him % sudo launchctl stop com.warmcat.sai-builder ``` +### Solaris service + +Solaris uses its own service manager called SMF. Build sai and then do the +following to create and enable the service, which will also start it at +subsequent boots. + +``` +# mkdir -p /usr/local/svc/method +# cp scripts/usr-local-svc-method-sai_builder-Solaris /usr/local/svc/method/sai_builder +# cp scripts/var-svc-manifest-site-sai_builder.xml-Solaris /var/svc/manifest/site/sai_builder.xml +# svccfg import /var/svc/manifest/site/sai_builder.xml +# svcadm restart svc:/system/manifest-import +# svcadm enable sai_builder +``` + ### Make the container start at boot Let's leave the container and go back to the host diff --git a/assets/linux-ubuntu-xenial-amd64.svg b/assets/linux-ubuntu-xenial-amd64.svg deleted file mode 100644 index f4387a7..0000000 --- a/assets/linux-ubuntu-xenial-amd64.svg +++ /dev/null @@ -1 +0,0 @@ -x \ No newline at end of file diff --git a/assets/linux-ubuntu-xenial.svg b/assets/linux-ubuntu-xenial.svg new file mode 100644 index 0000000..f4387a7 --- /dev/null +++ b/assets/linux-ubuntu-xenial.svg @@ -0,0 +1 @@ +x \ No newline at end of file diff --git a/assets/solaris-11.svg b/assets/solaris-11.svg new file mode 100644 index 0000000..1c13b5e --- /dev/null +++ b/assets/solaris-11.svg @@ -0,0 +1,75 @@ + + + + + + + +image/svg+xml + + + + + + + + + + + + diff --git a/scripts/usr-local-svc-method-sai_builder-Solaris b/scripts/usr-local-svc-method-sai_builder-Solaris new file mode 100644 index 0000000..a7f518e --- /dev/null +++ b/scripts/usr-local-svc-method-sai_builder-Solaris @@ -0,0 +1,19 @@ +#!/bin/bash + +case "$1" in +'start') + mkdir -p /var/run/com.warmcat.com.saib.resproxy /var/run/com.warmcat.com.saib.logproxy + chown 883 /var/run/com.warmcat.com.saib.resproxy /var/run/com.warmcat.com.saib.logproxy + /usr/local/bin/sai-builder 2>> /var/log/sai & + ;; + +'stop') + /usr/bin/pkill -x -u 883 sai-builder + ;; + +*) + echo "Usage: $0 { start | stop }" + ;; +esac +exit 0 + diff --git a/scripts/var-svc-manifest-site-sai_builder.xml-Solaris b/scripts/var-svc-manifest-site-sai_builder.xml-Solaris new file mode 100644 index 0000000..a79e538 --- /dev/null +++ b/scripts/var-svc-manifest-site-sai_builder.xml-Solaris @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/builder/b-sai.c b/src/builder/b-sai.c index 9b8a66b..35d51c3 100644 --- a/src/builder/b-sai.c +++ b/src/builder/b-sai.c @@ -479,10 +479,12 @@ int main(int argc, const char **argv) return 1; } -#if defined(__APPLE__) +#if !defined(__linux__) && !defined(WIN32) /* we are still root */ mkdir(UDS_PATHNAME_LOGPROXY, 0700); chown(UDS_PATHNAME_LOGPROXY, sb.st_uid, sb.st_gid); + mkdir(UDS_PATHNAME_RESPROXY, 0700); + chown(UDS_PATHNAME_RESPROXY, sb.st_uid, sb.st_gid); #endif /* if we don't do this, libgit2 looks in /root/.gitconfig */ diff --git a/src/web/CMakeLists.txt b/src/web/CMakeLists.txt index 5e0c4a1..91a9db3 100644 --- a/src/web/CMakeLists.txt +++ b/src/web/CMakeLists.txt @@ -114,7 +114,7 @@ if (requirements) ../../assets/linux-gentoo.svg ../../assets/linux-ubuntu-1804.svg ../../assets/linux-ubuntu-2004.svg - ../../assets/linux-ubuntu-xenial-amd64.svg + ../../assets/linux-ubuntu-xenial.svg ../../assets/netbsd-iOS.svg ../../assets/netbsd-OSX-catalina.svg ../../assets/sai-event.svg