git: 2ed96e28b362 - main - deskutils/spacefm: New port: SpaceFM file manager

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Tue, 21 Feb 2023 09:05:35 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2ed96e28b3629d97e11811ce68b609ec3f2fe629

commit 2ed96e28b3629d97e11811ce68b609ec3f2fe629
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-02-21 07:12:11 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-02-21 09:05:29 +0000

    deskutils/spacefm: New port: SpaceFM file manager
---
 deskutils/Makefile                                 |   1 +
 deskutils/spacefm/Makefile                         |  68 +++++++++++++
 deskutils/spacefm/distinfo                         |   3 +
 deskutils/spacefm/files/patch-src_settings.c       |  10 ++
 .../spacefm/files/patch-src_vfs_vfs-file-info.h    |  11 +++
 .../spacefm/files/patch-src_vfs_vfs-volume-nohal.c | 105 +++++++++++++++++++++
 deskutils/spacefm/pkg-descr                        |   4 +
 deskutils/spacefm/pkg-plist                        |  84 +++++++++++++++++
 8 files changed, 286 insertions(+)

diff --git a/deskutils/Makefile b/deskutils/Makefile
index 2dc79156f89e..8848397fb8f3 100644
--- a/deskutils/Makefile
+++ b/deskutils/Makefile
@@ -246,6 +246,7 @@
     SUBDIR += sliderule
     SUBDIR += solanum
     SUBDIR += sowon
+    SUBDIR += spacefm
     SUBDIR += spice-gtk
     SUBDIR += subsurface
     SUBDIR += synapse
diff --git a/deskutils/spacefm/Makefile b/deskutils/spacefm/Makefile
new file mode 100644
index 000000000000..234c72db8622
--- /dev/null
+++ b/deskutils/spacefm/Makefile
@@ -0,0 +1,68 @@
+PORTNAME=	spacefm
+DISTVERSION=	1.0.6
+CATEGORIES=	deskutils
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	SpaceFM file manager
+WWW=		https://ignorantguru.github.io/spacefm
+
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+BUILD_DEPENDS=	bash:shells/bash # for configure
+LIB_DEPENDS=	libffmpegthumbnailer.so:multimedia/ffmpegthumbnailer \
+		libinotify.so:devel/libinotify \
+		libstartup-notification-1.so:x11/startup-notification \
+		libudev.so:devel/libudev-devd
+RUN_DEPENDS=	bash:shells/bash
+
+USES=		desktop-file-utils gettext gmake gnome localbase:ldflags \
+		pkgconfig shared-mime-info shebangfix xorg
+USE_GNOME=	cairo gdkpixbuf2 glib20 gtk20 intltool pango
+USE_XORG=	x11
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	IgnorantGuru
+
+SHEBANG_FILES=	src/spacefm-auth.bash spacefm-installer
+
+GNU_CONFIGURE=	yes
+CONFIGURE_SHELL=	${PREFIX}/bin/bash
+CONFIGURE_ARGS=	--sysconfdir=${LOCALBASE}/etc \
+		--with-bash-path=${LOCALBASE}/bin/bash
+
+CFLAGS+=	-Dstat64=stat -Dfstat64=fstat -Dlstat64=lstat \
+		-fcommon
+LDFLAGS+=	-lX11 -linotify
+
+OPTIONS_DEFINE=		DOCS
+OPTIONS_GROUP=		OPT_DEPS
+OPTIONS_GROUP_OPT_DEPS=	CURLFTPFS IFUSE JMTPFS LSOF PHOTOFS
+
+PORTDOCS=	*
+
+CURLFTPFS_DESC=		Mount FTP shares
+CURLFTPFS_RUN_DEPENDS=	fusefs-curlftpfs>0:sysutils/fusefs-curlftpfs
+
+IFUSE_DESC=		Mount your iPhone/iPod Touch
+IFUSE_RUN_DEPENDS=	fusefs-ifuse>0:sysutils/fusefs-ifuse
+
+JMTPFS_DESC=		Mount MTP devices
+JMTPFS_RUN_DEPENDS=	fusefs-jmtpfs>0:sysutils/fusefs-jmtpfs
+
+LSOF_DESC=		Device processes
+LSOF_RUN_DEPENDS=	lsof:sysutils/lsof
+
+PHOTOFS_DESC=		Mount cameras
+PHOTOFS_RUN_DEPENDS=	fusefs-gphotofs>0:graphics/fusefs-gphotofs
+
+post-patch:
+	@${REINPLACE_CMD} -e 's|#!/bin/bash|#!${LOCALBASE}/bin/bash|' \
+		${WRKSRC}/src/ptk/ptk-handler.c
+	@${REINPLACE_CMD} -e '\
+		s|^/bin/bash|${LOCALBASE}/bin/bash|; \
+		s|/usr/bin/sha256sum|/sbin/sha256| \
+		' \
+		${WRKSRC}/src/spacefm-auth.bash
+
+.include <bsd.port.mk>
diff --git a/deskutils/spacefm/distinfo b/deskutils/spacefm/distinfo
new file mode 100644
index 000000000000..d512763c508d
--- /dev/null
+++ b/deskutils/spacefm/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1676930139
+SHA256 (IgnorantGuru-spacefm-1.0.6_GH0.tar.gz) = fedea9fcad776e0af4b8d90c5a1c86684a9c96ef1cdd4e959530ce93bdebe7c9
+SIZE (IgnorantGuru-spacefm-1.0.6_GH0.tar.gz) = 3498587
diff --git a/deskutils/spacefm/files/patch-src_settings.c b/deskutils/spacefm/files/patch-src_settings.c
new file mode 100644
index 000000000000..8d9b84e42548
--- /dev/null
+++ b/deskutils/spacefm/files/patch-src_settings.c
@@ -0,0 +1,10 @@
+--- src/settings.c.orig	2023-02-20 22:03:12 UTC
++++ src/settings.c
+@@ -21,6 +21,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
++#include <sys/wait.h>
+ 
+ #include "glib-utils.h" /* for g_mkdir_with_parents() */
+ #include <glib/gi18n.h>
diff --git a/deskutils/spacefm/files/patch-src_vfs_vfs-file-info.h b/deskutils/spacefm/files/patch-src_vfs_vfs-file-info.h
new file mode 100644
index 000000000000..d3bcc842f098
--- /dev/null
+++ b/deskutils/spacefm/files/patch-src_vfs_vfs-file-info.h
@@ -0,0 +1,11 @@
+--- src/vfs/vfs-file-info.h.orig	2023-02-20 22:01:54 UTC
++++ src/vfs/vfs-file-info.h
+@@ -56,7 +56,7 @@ struct _VFSFileInfo
+     time_t mtime;
+     time_t atime;
+     long blksize;  //sfm was long then blksize_t but blksize_t not defined for squeeze gcc
+-    blkcnt64_t blocks;      //sfm was blkcnt_t
++    blkcnt_t blocks;      //sfm was blkcnt_t
+ 
+     char* name; /* real name on file system */
+     char* disp_name;  /* displayed name (in UTF-8) */
diff --git a/deskutils/spacefm/files/patch-src_vfs_vfs-volume-nohal.c b/deskutils/spacefm/files/patch-src_vfs_vfs-volume-nohal.c
new file mode 100644
index 000000000000..1a9e9198f04b
--- /dev/null
+++ b/deskutils/spacefm/files/patch-src_vfs_vfs-volume-nohal.c
@@ -0,0 +1,105 @@
+--- src/vfs/vfs-volume-nohal.c.orig	2023-02-20 22:04:57 UTC
++++ src/vfs/vfs-volume-nohal.c
+@@ -35,8 +35,8 @@
+ #include <sys/wait.h>
+ 
+ #include <signal.h>  // kill
+-#include <linux/kdev_t.h>  // MAJOR MINOR
+-#include <sys/sysmacros.h> // needed for dev_t
++//#include <linux/kdev_t.h>  // MAJOR MINOR
++//#include <sys/sysmacros.h> // needed for dev_t
+ 
+ #ifdef HAVE_STATVFS
+ #include <sys/statvfs.h>
+@@ -1000,6 +1000,7 @@ void info_device_properties( device_t *device )
+ 
+ gchar* info_mount_points( device_t *device )
+ {
++#if 0
+     gchar *contents;
+     gchar **lines;
+     GError *error;
+@@ -1137,6 +1138,10 @@ gchar* info_mount_points( device_t *device )
+     }
+     else
+         return NULL;
++
++#else
++    return NULL;
++#endif
+ }
+ 
+ void info_partition_table( device_t *device )
+@@ -1489,9 +1494,11 @@ char* device_show_info( device_t *device )
+     
+     line[i++] = g_strdup_printf("Showing information for %s\n", device->devnode );
+     line[i++] = g_strdup_printf("  native-path:                 %s\n", device->native_path );
++#if 0
+     line[i++] = g_strdup_printf("  device:                      %u:%u\n",
+                                                 (unsigned int)MAJOR( device->devnum ),
+                                                 (unsigned int)MINOR( device->devnum ) );
++#endif
+     line[i++] = g_strdup_printf("  device-file:                 %s\n", device->devnode );
+     line[i++] = g_strdup_printf("    presentation:              %s\n", device->devnode );
+     if ( device->device_by_id )
+@@ -1945,11 +1952,13 @@ void parse_mounts( gboolean report )
+                 if ( volume = vfs_volume_read_by_mount( devnum,
+                                                 devmount->mount_points ) )
+                 {
++#if 0
+                     printf( "special mount changed: %s (%u:%u) on %s\n",
+                                         volume->device_file,
+                                         (unsigned int)MAJOR( volume->devnum ),
+                                         (unsigned int)MINOR( volume->devnum ),
+                                         devmount->mount_points );
++#endif
+                     vfs_volume_device_added( volume, FALSE ); //frees volume if needed
+                 }
+                 else
+@@ -2465,8 +2474,12 @@ void vfs_volume_set_info( VFSVolume* volume )
+         disp_fstype = g_strdup( volume->fs_type );// g_strdup_printf( "-%s", volume->fs_type );
+     else
+         disp_fstype = g_strdup( "" );
++#if 0
+     disp_devnum = g_strdup_printf( "%u:%u", (unsigned int)MAJOR( volume->devnum ),
+                                             (unsigned int)MINOR( volume->devnum ) );
++#else
++    disp_devnum = g_strdup_printf( "" );
++#endif
+  
+     char* fmt = xset_get_s( "dev_dispname" );
+     if ( !fmt )
+@@ -3652,6 +3665,7 @@ gboolean vfs_volume_is_automount( VFSVolume* vol )
+ 
+ char* vfs_volume_device_info( VFSVolume* vol )
+ {
++#if 0
+     struct udev_device* udevice = udev_device_new_from_devnum( udev, 'b',
+                                                                vol->devnum );
+     if ( udevice == NULL )
+@@ -3671,6 +3685,9 @@ char* vfs_volume_device_info( VFSVolume* vol )
+     device_free( device );
+     udev_device_unref( udevice );
+     return info;
++#else
++    return g_strdup_printf( _("( no udev device )") );
++#endif
+ }
+ 
+ char* vfs_volume_device_mount_cmd( VFSVolume* vol, const char* options,
+@@ -4203,6 +4220,7 @@ static void vfs_volume_device_added( VFSVolume* volume
+ 
+ static gboolean vfs_volume_nonblock_removed( dev_t devnum )
+ {
++#if 0
+     GList* l;
+     VFSVolume* volume;
+     
+@@ -4226,6 +4244,7 @@ static gboolean vfs_volume_nonblock_removed( dev_t dev
+             return TRUE;
+         }
+     }
++#endif
+     return FALSE;
+ }
+ 
diff --git a/deskutils/spacefm/pkg-descr b/deskutils/spacefm/pkg-descr
new file mode 100644
index 000000000000..16f3c2e86ddb
--- /dev/null
+++ b/deskutils/spacefm/pkg-descr
@@ -0,0 +1,4 @@
+SpaceFM is a multi-panel tabbed file and desktop manager for Linux with built-in
+VFS, udev- or HAL-based device manager, customisable menu system, and bash-GTK
+integration. SpaceFM aims to provide a stable, capable file manager with
+significant customisation capabilities.
diff --git a/deskutils/spacefm/pkg-plist b/deskutils/spacefm/pkg-plist
new file mode 100644
index 000000000000..75506f1c21a6
--- /dev/null
+++ b/deskutils/spacefm/pkg-plist
@@ -0,0 +1,84 @@
+bin/spacefm
+bin/spacefm-auth
+bin/spacefm-installer
+%%ETCDIR%%/spacefm.conf
+share/applications/spacefm-find.desktop
+share/applications/spacefm-folder-handler.desktop
+share/applications/spacefm.desktop
+share/icons/Faenza/apps/48/spacefm-find.png
+share/icons/Faenza/apps/48/spacefm-root.png
+share/icons/Faenza/apps/48/spacefm.png
+share/icons/hicolor/128x128/apps/spacefm-128-cube-blue.png
+share/icons/hicolor/128x128/apps/spacefm-128-cube-green.png
+share/icons/hicolor/128x128/apps/spacefm-128-cube-red.png
+share/icons/hicolor/128x128/apps/spacefm-128-pyramid-blue.png
+share/icons/hicolor/128x128/apps/spacefm-128-pyramid-green.png
+share/icons/hicolor/128x128/apps/spacefm-128-pyramid-red.png
+share/icons/hicolor/48x48/apps/spacefm-48-cube-blue.png
+share/icons/hicolor/48x48/apps/spacefm-48-cube-green.png
+share/icons/hicolor/48x48/apps/spacefm-48-cube-red.png
+share/icons/hicolor/48x48/apps/spacefm-48-folder-blue.png
+share/icons/hicolor/48x48/apps/spacefm-48-folder-red.png
+share/icons/hicolor/48x48/apps/spacefm-48-pyramid-blue.png
+share/icons/hicolor/48x48/apps/spacefm-48-pyramid-green.png
+share/icons/hicolor/48x48/apps/spacefm-48-pyramid-red.png
+share/icons/hicolor/48x48/apps/spacefm-find.png
+share/icons/hicolor/48x48/apps/spacefm-root.png
+share/icons/hicolor/48x48/apps/spacefm.png
+share/locale/af/LC_MESSAGES/spacefm.mo
+share/locale/ar/LC_MESSAGES/spacefm.mo
+share/locale/bg/LC_MESSAGES/spacefm.mo
+share/locale/bn_IN/LC_MESSAGES/spacefm.mo
+share/locale/ca/LC_MESSAGES/spacefm.mo
+share/locale/cs/LC_MESSAGES/spacefm.mo
+share/locale/da/LC_MESSAGES/spacefm.mo
+share/locale/de/LC_MESSAGES/spacefm.mo
+share/locale/el/LC_MESSAGES/spacefm.mo
+share/locale/es/LC_MESSAGES/spacefm.mo
+share/locale/et/LC_MESSAGES/spacefm.mo
+share/locale/eu/LC_MESSAGES/spacefm.mo
+share/locale/fa/LC_MESSAGES/spacefm.mo
+share/locale/fi/LC_MESSAGES/spacefm.mo
+share/locale/fr/LC_MESSAGES/spacefm.mo
+share/locale/gl/LC_MESSAGES/spacefm.mo
+share/locale/he/LC_MESSAGES/spacefm.mo
+share/locale/hr/LC_MESSAGES/spacefm.mo
+share/locale/hu/LC_MESSAGES/spacefm.mo
+share/locale/id/LC_MESSAGES/spacefm.mo
+share/locale/it/LC_MESSAGES/spacefm.mo
+share/locale/ja/LC_MESSAGES/spacefm.mo
+share/locale/km/LC_MESSAGES/spacefm.mo
+share/locale/ko/LC_MESSAGES/spacefm.mo
+share/locale/lt/LC_MESSAGES/spacefm.mo
+share/locale/ltg/LC_MESSAGES/spacefm.mo
+share/locale/ml/LC_MESSAGES/spacefm.mo
+share/locale/ms/LC_MESSAGES/spacefm.mo
+share/locale/nb/LC_MESSAGES/spacefm.mo
+share/locale/nl/LC_MESSAGES/spacefm.mo
+share/locale/nn/LC_MESSAGES/spacefm.mo
+share/locale/pl/LC_MESSAGES/spacefm.mo
+share/locale/ps/LC_MESSAGES/spacefm.mo
+share/locale/pt/LC_MESSAGES/spacefm.mo
+share/locale/pt_BR/LC_MESSAGES/spacefm.mo
+share/locale/ru/LC_MESSAGES/spacefm.mo
+share/locale/sk/LC_MESSAGES/spacefm.mo
+share/locale/sl/LC_MESSAGES/spacefm.mo
+share/locale/sr/LC_MESSAGES/spacefm.mo
+share/locale/sr@latin/LC_MESSAGES/spacefm.mo
+share/locale/sv/LC_MESSAGES/spacefm.mo
+share/locale/tr/LC_MESSAGES/spacefm.mo
+share/locale/uk/LC_MESSAGES/spacefm.mo
+share/locale/ur/LC_MESSAGES/spacefm.mo
+share/locale/ur_PK/LC_MESSAGES/spacefm.mo
+share/locale/vi/LC_MESSAGES/spacefm.mo
+share/locale/zh_CN/LC_MESSAGES/spacefm.mo
+share/locale/zh_TW/LC_MESSAGES/spacefm.mo
+share/mime/packages/spacefm-mime.xml
+%%DATADIR%%/ui/about-dlg.ui
+%%DATADIR%%/ui/appchooserdlg.ui
+%%DATADIR%%/ui/file_properties.ui
+%%DATADIR%%/ui/find-files.ui
+%%DATADIR%%/ui/find-files2.ui
+%%DATADIR%%/ui/godlg.ui
+%%DATADIR%%/ui/prefdlg.ui
+%%DATADIR%%/ui/prefdlg2.ui