add cups from unstable-packages

This commit is contained in:
Leonid Pliushch 2021-07-29 16:26:04 +03:00
parent 6ae16019fd
commit 91f43c03e2
No known key found for this signature in database
GPG Key ID: 45F2964132545795
8 changed files with 323 additions and 0 deletions

28
packages/cups/build.sh Normal file
View File

@ -0,0 +1,28 @@
TERMUX_PKG_HOMEPAGE="https://www.cups.org/"
TERMUX_PKG_DESCRIPTION="Common UNIX Printing System"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_VERSION="2.3.3"
TERMUX_PKG_REVISION=7
TERMUX_PKG_SRCURL="https://github.com/apple/cups/releases/download/v${TERMUX_PKG_VERSION}/cups-${TERMUX_PKG_VERSION}-source.tar.gz"
TERMUX_PKG_SHA256="261fd948bce8647b6d5cb2a1784f0c24cc52b5c4e827b71d726020bcc502f3ee"
TERMUX_PKG_DEPENDS="libiconv, libcrypt"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_CONFFILES="
etc/cups/cups-files.conf
etc/cups/cupsd.conf
etc/cups/snmp.conf
"
TERMUX_PKG_SERVICE_SCRIPT=("cupsd" "mkdir -p $TERMUX_PREFIX/var/run/cups && exec cupsd -f")
termux_step_make() {
make LIBS="-pthread $LDFLAGS -Wl,--hash-style=both -lm -lcrypt -liconv -lz" -j${TERMUX_MAKE_PROCESSES}
}
termux_step_create_debscripts() {
cat <<- EOF > ./postinst
#!${TERMUX_PREFIX}/bin/sh
mkdir -p $TERMUX_PREFIX/var/run/cups
EOF
}

View File

@ -0,0 +1,26 @@
--- src/desktop/Makefile 2020-04-27 18:04:29.000000000 +0000
+++ src-mod/desktop/Makefile 2020-07-05 14:29:13.280000000 +0000
@@ -62,23 +62,6 @@
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(DBUSDIR)/system.d; \
$(INSTALL_DATA) cups.conf $(BUILDROOT)$(DBUSDIR)/system.d/cups.conf; \
fi
- if test "x$(MENUDIR)" != x; then \
- echo Installing desktop menu...; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(MENUDIR); \
- $(INSTALL_DATA) cups.desktop $(BUILDROOT)$(MENUDIR); \
- fi
- if test "x$(ICONDIR)" != x; then \
- echo Installing desktop icons...; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/16x16/apps; \
- $(INSTALL_DATA) cups-16.png $(BUILDROOT)$(ICONDIR)/hicolor/16x16/apps/cups.png; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/32x32/apps; \
- $(INSTALL_DATA) cups-32.png $(BUILDROOT)$(ICONDIR)/hicolor/32x32/apps/cups.png; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/64x64/apps; \
- $(INSTALL_DATA) cups-64.png $(BUILDROOT)$(ICONDIR)/hicolor/64x64/apps/cups.png; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/128x128/apps; \
- $(INSTALL_DATA) cups-128.png $(BUILDROOT)$(ICONDIR)/hicolor/128x128/apps/cups.png; \
- fi
-
#
# Install programs...

View File

@ -0,0 +1,52 @@
--- src/scheduler/Makefile 2020-04-27 18:04:29.000000000 +0000
+++ src-mod/scheduler/Makefile 2020-07-05 14:20:05.730000000 +0000
@@ -163,48 +163,11 @@
$(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp
echo Creating $(CACHEDIR)...
$(INSTALL_DIR) -m 770 -g $(CUPS_GROUP) $(CACHEDIR)
- if test "x$(INITDIR)" != x; then \
- echo Installing init scripts...; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \
- $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDIR)/init.d/cups; \
- for level in $(RCLEVELS); do \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \
- $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/S$(RCSTART)cups; \
- $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/K$(RCSTOP)cups; \
- done; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc0.d; \
- $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc0.d/K$(RCSTOP)cups; \
- fi
- if test "x$(INITDDIR)" != x; then \
- echo Installing init script...; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDDIR); \
- $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDDIR); \
- fi
- if test "x$(LAUNCHD_DIR)" != x; then \
- echo Installing launchd configuration files...; \
- $(INSTALL_DIR) $(BUILDROOT)$(LAUNCHD_DIR); \
- $(INSTALL_DATA) org.cups.cupsd.plist $(BUILDROOT)$(LAUNCHD_DIR); \
- $(INSTALL_DATA) org.cups.cups-lpd.plist $(BUILDROOT)$(LAUNCHD_DIR); \
- fi
if test "x$(SMFMANIFESTDIR)" != x; then \
echo Installing SMF manifest in $(SMFMANIFESTDIR)...;\
$(INSTALL_DIR) $(BUILDROOT)/$(SMFMANIFESTDIR); \
$(INSTALL_SCRIPT) cups.xml $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \
- fi
- if test "x$(SYSTEMD_DIR)" != x; then \
- echo Installing systemd configuration files...; \
- $(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cups-lpd@.service; \
- $(INSTALL_DATA) org.cups.cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
- elif test "x$(XINETD)" != x; then \
- echo Installing xinetd configuration file for cups-lpd...; \
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
- $(INSTALL_DATA) cups-lpd.xinetd $(BUILDROOT)$(XINETD)/cups-lpd; \
- fi
-
+ fi
#
# Install programs...

View File

@ -0,0 +1,18 @@
--- src/cups/thread-private.h 2020-04-27 18:04:29.000000000 +0000
+++ src-mod/cups/thread-private.h 2020-07-05 13:04:31.500000000 +0000
@@ -34,6 +34,15 @@
typedef pthread_mutex_t _cups_mutex_t;
typedef pthread_rwlock_t _cups_rwlock_t;
typedef pthread_key_t _cups_threadkey_t;
+
+/* Android hacks */
+struct _cups_wrapped_thread_func {
+ _cups_thread_func_t func;
+ void *arg;
+};
+
+typedef struct _cups_wrapped_thread_func _cups_wrapped_thread_func_t;
+
# define _CUPS_COND_INITIALIZER PTHREAD_COND_INITIALIZER
# define _CUPS_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
# define _CUPS_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER

View File

@ -0,0 +1,65 @@
--- src/cups/thread.c 2020-07-05 13:16:28.060000000 +0000
+++ src-mod/cups/thread.c 2020-07-05 13:18:17.010000000 +0000
@@ -145,6 +145,40 @@
pthread_rwlock_unlock(rwlock);
}
+/*
+ * '_cupsThreadAndroidSignalHandler()' - Wrapper around pthread_exit(0) to be called from a signal handler
+ */
+
+void
+_cupsThreadAndroidSignalHandler(int sig)
+{
+ pthread_exit(0);
+}
+
+/*
+ * '_cupsThreadAndroidWrapper()' - Function for wrapping a thread start with a signal handler for cancellation
+ */
+
+void *
+_cupsThreadAndroidWrapper(void *arg)
+{
+ _cups_wrapped_thread_func_t *wrapped = (_cups_wrapped_thread_func_t*) arg;
+
+ struct sigaction actions;
+ memset(&actions, 0, sizeof(actions));
+ sigemptyset(&actions.sa_mask);
+ actions.sa_flags = 0;
+ actions.sa_handler = _cupsThreadAndroidSignalHandler;
+ sigaction(SIGUSR2, &actions, NULL);
+
+ _cups_thread_func_t func = wrapped->func;
+ void *func_arg = wrapped->arg;
+
+ free(wrapped);
+
+ return (*func)(func_arg);
+}
+
/*
* '_cupsThreadCancel()' - Cancel (kill) a thread.
@@ -153,7 +187,7 @@
void
_cupsThreadCancel(_cups_thread_t thread)/* I - Thread ID */
{
- pthread_cancel(thread);
+ pthread_kill(thread, SIGUSR2);
}
@@ -168,7 +202,11 @@
{
pthread_t thread;
- if (pthread_create(&thread, NULL, (void *(*)(void *))func, arg))
+ _cups_wrapped_thread_func_t *wrapped = malloc(sizeof(_cups_wrapped_thread_func_t));
+ wrapped->func = func;
+ wrapped->arg = arg;
+
+ if (pthread_create(&thread, NULL, _cupsThreadAndroidWrapper, wrapped))
return (0);
else
return (thread);

View File

@ -0,0 +1,39 @@
diff -uNr cups-2.3.3/conf/cupsd.conf.in cups-2.3.3.mod/conf/cupsd.conf.in
--- cups-2.3.3/conf/cupsd.conf.in 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/conf/cupsd.conf.in 2020-07-24 17:33:05.367781721 +0300
@@ -9,7 +9,7 @@
@CUPS_PAGE_LOG_FORMAT@
# Only listen for connections from the local machine.
-Listen localhost:@DEFAULT_IPP_PORT@
+Listen localhost:8631
@CUPS_LISTEN_DOMAINSOCKET@
# Show shared printers on the local network.
@@ -17,7 +17,7 @@
BrowseLocalProtocols @CUPS_BROWSE_LOCAL_PROTOCOLS@
# Default authentication type, when authentication is required...
-DefaultAuthType Basic
+DefaultAuthType None
# Web interface setting...
WebInterface @CUPS_WEBIF@
diff -uNr cups-2.3.3/conf/cups-files.conf.in cups-2.3.3.mod/conf/cups-files.conf.in
--- cups-2.3.3/conf/cups-files.conf.in 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/conf/cups-files.conf.in 2020-07-24 17:32:33.167618971 +0300
@@ -9,14 +9,6 @@
# Do we call fsync() after writing configuration or status files?
#SyncOnClose No
-# Default user and group for filters/backends/helper programs; this cannot be
-# any user or group that resolves to ID 0 for security reasons...
-#User @CUPS_USER@
-#Group @CUPS_GROUP@
-
-# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
-# This cannot contain the Group value for security reasons...
-SystemGroup @CUPS_SYSTEM_GROUPS@
@CUPS_SYSTEM_AUTHKEY@
# User that is substituted for unauthenticated (remote) root accesses...

View File

@ -0,0 +1,80 @@
diff -uNr cups-2.3.3/config-scripts/cups-directories.m4 cups-2.3.3.mod/config-scripts/cups-directories.m4
--- cups-2.3.3/config-scripts/cups-directories.m4 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/config-scripts/cups-directories.m4 2020-07-24 16:44:23.353948751 +0300
@@ -31,9 +31,7 @@
AC_DEFINE_UNQUOTED(CUPS_BINDIR, "$bindir")
dnl Fix "sbindir" variable...
-if test "$sbindir" = "\${exec_prefix}/sbin"; then
- sbindir="$exec_prefix/sbin"
-fi
+sbindir="$exec_prefix/bin"
AC_DEFINE_UNQUOTED(CUPS_SBINDIR, "$sbindir")
diff -uNr cups-2.3.3/Makedefs.in cups-2.3.3.mod/Makedefs.in
--- cups-2.3.3/Makedefs.in 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/Makedefs.in 2020-07-24 16:43:17.017576910 +0300
@@ -214,7 +214,7 @@
oldincludedir = @oldincludedir@
prefix = @prefix@
privateinclude = @privateinclude@
-sbindir = @sbindir@
+sbindir = @bindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
@@ -240,7 +240,7 @@
RCSTOP = @RCSTOP@
REQUESTS = $(BUILDROOT)@CUPS_REQUESTS@
RESOURCEDIR = @CUPS_RESOURCEDIR@
-SBINDIR = $(BUILDROOT)@sbindir@
+SBINDIR = $(BUILDROOT)@bindir@
SERVERBIN = $(BUILDROOT)@CUPS_SERVERBIN@
SERVERROOT = $(BUILDROOT)@CUPS_SERVERROOT@
STATEDIR = $(BUILDROOT)@CUPS_STATEDIR@
diff -uNr cups-2.3.3/packaging/cups.list.in cups-2.3.3.mod/packaging/cups.list.in
--- cups-2.3.3/packaging/cups.list.in 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/packaging/cups.list.in 2020-07-24 16:44:35.554017021 +0300
@@ -187,7 +187,7 @@
$localstatedir=@localstatedir@
$mandir=@mandir@
$oldincludedir=@oldincludedir@
-$sbindir=@sbindir@
+$sbindir=@bindir@
$sharedstatedir=@sharedstatedir@
$srcdir=@srcdir@
$sysconfdir=@sysconfdir@
@@ -212,7 +212,7 @@
$PAMDIR=@PAMDIR@
$PMANDIR=@PMANDIR@
$REQUESTS=@CUPS_REQUESTS@
-$SBINDIR=@sbindir@
+$SBINDIR=@bindir@
$SERVERBIN=@CUPS_SERVERBIN@
$SERVERROOT=@CUPS_SERVERROOT@
$STATEDIR=@CUPS_STATEDIR@
diff -uNr cups-2.3.3/scheduler/cups.sh.in cups-2.3.3.mod/scheduler/cups.sh.in
--- cups-2.3.3/scheduler/cups.sh.in 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/scheduler/cups.sh.in 2020-07-24 16:43:34.525675148 +0300
@@ -153,7 +153,7 @@
else
prefix=@prefix@
exec_prefix=@exec_prefix@
- @sbindir@/cupsd
+ @bindir@/cupsd
if test $? != 0; then
$ECHO_FAIL
$ECHO "cups: unable to $1 scheduler."
diff -uNr cups-2.3.3/scheduler/cups.xml.in cups-2.3.3.mod/scheduler/cups.xml.in
--- cups-2.3.3/scheduler/cups.xml.in 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/scheduler/cups.xml.in 2020-07-24 16:43:26.021627443 +0300
@@ -77,7 +77,7 @@
<exec_method
type='method'
name='start'
- exec='@sbindir@/cupsd'
+ exec='@bindir@/cupsd'
timeout_seconds='60' >
<method_context>
<method_credential user='root' group='@CUPS_GROUP@' />

View File

@ -0,0 +1,15 @@
diff -uNr cups-2.3.3/scheduler/conf.c cups-2.3.3.mod/scheduler/conf.c
--- cups-2.3.3/scheduler/conf.c 2020-04-27 21:04:29.000000000 +0300
+++ cups-2.3.3.mod/scheduler/conf.c 2020-07-24 17:10:21.669188122 +0300
@@ -1180,11 +1180,6 @@
else if (!S_ISDIR(tmpinfo.st_mode))
cupsdLogMessage(CUPSD_LOG_ERROR, "TMPDIR (%s) is not a directory.",
tmpdir);
- else if ((tmpinfo.st_uid != User || !(tmpinfo.st_mode & S_IWUSR)) &&
- (tmpinfo.st_gid != Group || !(tmpinfo.st_mode & S_IWGRP)) &&
- !(tmpinfo.st_mode & S_IWOTH))
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "TMPDIR (%s) has the wrong permissions.", tmpdir);
else
cupsdSetString(&TempDir, tmpdir);
}