diff --git a/graphics/Makefile b/graphics/Makefile --- a/graphics/Makefile +++ b/graphics/Makefile @@ -43,6 +43,7 @@ SUBDIR += acidwarp SUBDIR += acidwarp-sdl SUBDIR += agg + SUBDIR += airsaned SUBDIR += akira SUBDIR += alembic SUBDIR += aloadimage diff --git a/graphics/airsaned/Makefile b/graphics/airsaned/Makefile new file mode 100644 --- /dev/null +++ b/graphics/airsaned/Makefile @@ -0,0 +1,29 @@ +PORTNAME= airsaned +DISTVERSIONPREFIX= v +DISTVERSION= 0.3.2-50 +DISTVERSIONSUFFIX= -gdeab313 +CATEGORIES= graphics + +MAINTAINER= fbsd@opal.com +COMMENT= Apple AirScan compatible SANE web frontend + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +LIB_DEPENDS= libavahi-client.so:net/avahi-app \ + libpng.so:graphics/png \ + libsane.so:graphics/sane-backends + +USES= cmake jpeg compiler:c++11-lib localbase:ldflags +USE_GITHUB= yes +USE_RC_SUBR= ${PORTNAME} + +GH_ACCOUNT= SimulPiscator +GH_PROJECT= AirSane + +PLIST_FILES= sbin/airsaned \ + etc/airsane/ignore.conf \ + etc/airsane/options.conf \ + etc/airsane/Gnome-scanner.png + +.include diff --git a/graphics/airsaned/distinfo b/graphics/airsaned/distinfo new file mode 100644 --- /dev/null +++ b/graphics/airsaned/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1633432825 +SHA256 (SimulPiscator-AirSane-v0.3.2-50-gdeab313_GH0.tar.gz) = a9df4ed9de8f59f07fe9d491bf9eb96c8168001ba0025b96bf97c39ac49e35e9 +SIZE (SimulPiscator-AirSane-v0.3.2-50-gdeab313_GH0.tar.gz) = 115706 diff --git a/graphics/airsaned/files/airsaned.in b/graphics/airsaned/files/airsaned.in new file mode 100644 --- /dev/null +++ b/graphics/airsaned/files/airsaned.in @@ -0,0 +1,24 @@ +#!/bin/sh + +# PROVIDE: airsaned +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf[.local] to enable airsaned: +# airsaned_enable="YES" + +. /etc/rc.subr + +name=airsaned +rcvar=airsaned_enable + +load_rc_config airsane + +: ${airsaned_enable:="NO"} +: ${airsaned_args:=""} + +command="%%PREFIX%%/sbin/${name}" +command_args="${airsaned_args} &" +sig_stop="KILL" + +run_rc_command "$1" diff --git a/graphics/airsaned/files/patch-CMakeLists.txt b/graphics/airsaned/files/patch-CMakeLists.txt new file mode 100644 --- /dev/null +++ b/graphics/airsaned/files/patch-CMakeLists.txt @@ -0,0 +1,59 @@ +--- CMakeLists.txt.orig 2021-09-18 16:22:32 UTC ++++ CMakeLists.txt +@@ -66,6 +66,7 @@ add_executable(${PROJECT_NAME} + zeroconf/hotplugnotifier.cpp + ${ZEROCONF_FILES} + ) ++if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) + target_link_libraries( + ${PROJECT_NAME} + Threads::Threads +@@ -73,8 +74,19 @@ target_link_libraries( + jpeg + png + ${ZEROCONF_LIBS} ++ usb ++) ++else() ++target_link_libraries( ++ ${PROJECT_NAME} ++ Threads::Threads ++ sane ++ jpeg ++ png ++ ${ZEROCONF_LIBS} + usb-1.0 + ) ++endif() + + if(APPLE) + +@@ -101,6 +113,28 @@ install(CODE " + endif() + ") + ++ ++elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) ++ ++install(TARGETS ${PROJECT_NAME} ++ RUNTIME DESTINATION sbin ++) ++ ++install(CODE " ++ if(NOT EXISTS /usr/local/etc/airsane/ignore.conf) ++ file(INSTALL ${CMAKE_SOURCE_DIR}/etc/ignore.conf DESTINATION /usr/local/etc/airsane) ++ endif() ++") ++install(CODE " ++ if(NOT EXISTS /usr/local/etc/airsane/options.conf) ++ file(INSTALL ${CMAKE_SOURCE_DIR}/etc/options.conf DESTINATION /usr/local/etc/airsane) ++ endif() ++") ++install(CODE " ++ if(NOT EXISTS /usr/local/etc/airsane/Gnome-scanner.png) ++ file(INSTALL ${CMAKE_SOURCE_DIR}/etc/Gnome-scanner.png DESTINATION /usr/local/etc/airsane) ++ endif() ++") + + else() + diff --git a/graphics/airsaned/files/patch-imageformats-pngencoder.cpp b/graphics/airsaned/files/patch-imageformats-pngencoder.cpp new file mode 100644 --- /dev/null +++ b/graphics/airsaned/files/patch-imageformats-pngencoder.cpp @@ -0,0 +1,18 @@ +--- imageformats/pngencoder.cpp.orig 2021-09-18 16:22:32 UTC ++++ imageformats/pngencoder.cpp +@@ -17,13 +17,13 @@ along with this program. If not, see ++#include + #include + #include + #if __APPLE__ + #include + #else +-#include ++#include + #endif + #include + diff --git a/graphics/airsaned/files/patch-server-server.cpp b/graphics/airsaned/files/patch-server-server.cpp new file mode 100644 --- /dev/null +++ b/graphics/airsaned/files/patch-server-server.cpp @@ -0,0 +1,16 @@ +--- server/server.cpp.orig 2021-09-18 16:22:32 UTC ++++ server/server.cpp +@@ -103,11 +103,11 @@ Server::Server(int argc, char** argv) + "ignore SANE network scanners", + localonly }, + { "options-file", +- "/etc/airsane/options.conf", ++ "/usr/local/etc/airsane/options.conf", + "location of device options file", + optionsfile }, + { "ignore-list", +- "/etc/airsane/ignore.conf", ++ "/usr/local/etc/airsane/ignore.conf", + "location of device ignore list", + ignorelist }, + { "debug", "false", "log debug information to stderr", debug }, diff --git a/graphics/airsaned/files/patch-web-httpserver.cpp b/graphics/airsaned/files/patch-web-httpserver.cpp new file mode 100644 --- /dev/null +++ b/graphics/airsaned/files/patch-web-httpserver.cpp @@ -0,0 +1,10 @@ +--- web/httpserver.cpp.orig 2021-09-18 16:22:32 UTC ++++ web/httpserver.cpp +@@ -25,6 +25,7 @@ along with this program. If not, see + + #include ++#include + #include + #include + #include diff --git a/graphics/airsaned/files/patch-zeroconf-hotplugnotifier.cpp b/graphics/airsaned/files/patch-zeroconf-hotplugnotifier.cpp new file mode 100644 --- /dev/null +++ b/graphics/airsaned/files/patch-zeroconf-hotplugnotifier.cpp @@ -0,0 +1,11 @@ +--- zeroconf/hotplugnotifier.cpp.orig 2021-09-18 16:22:32 UTC ++++ zeroconf/hotplugnotifier.cpp +@@ -20,7 +20,7 @@ along with this program. If not, see + #include +-#include ++#include + #include + #include + diff --git a/graphics/airsaned/pkg-descr b/graphics/airsaned/pkg-descr new file mode 100644 --- /dev/null +++ b/graphics/airsaned/pkg-descr @@ -0,0 +1,21 @@ +A SANE WebScan frontend that supports Apple's AirScan protocol. +Scanners are detected automatically, and published through mDNS. +Though images may be acquired and transferred in JPEG, PNG, and +PDF/raster format through a simple web interface, AirSane's intended +purpose is to be used with AirScan/eSCL clients such as Apple's +Image Capture. + +Images are encoded on-the-fly during acquisition, keeping memory/storage +demands low. Thus, AirSane will run fine on a Raspberry Pi or similar +device. + +AirSane has been developed by reverse-engineering the communication +protocol implemented in Apple's AirScanScanner client (macos 10.12.6, +/System/Library/Image Capture/Devices/AirScanScanner.app). + +Authentication and secure communication are not supported. + +If you are looking for a powerful SANE web frontend, AirSane may +not be for you. You may be interested in phpSANE instead. + +WWW: https://github.com/SimulPiscator/AirSane