Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Feb 2021 17:37:43 +0000 (UTC)
From:      Mikhail Teterin <mi@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r565528 - in head/lang/siod: . files
Message-ID:  <202102171737.11HHbhiJ061527@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mi
Date: Wed Feb 17 17:37:42 2021
New Revision: 565528
URL: https://svnweb.freebsd.org/changeset/ports/565528

Log:
  Fix handling of %%SQL_ORACLE%% on non-i386 platforms -- settings
  OPTIONS_SUB is not enough for arch-specific options (seems like a bug).
  
  Add statfs functionality -- BSD has all the necessary APIs.
  
  Sponsored by:	United Marsupials

Added:
  head/lang/siod/files/patch-statfs   (contents, props changed)
Modified:
  head/lang/siod/Makefile
  head/lang/siod/pkg-plist

Modified: head/lang/siod/Makefile
==============================================================================
--- head/lang/siod/Makefile	Wed Feb 17 17:36:56 2021	(r565527)
+++ head/lang/siod/Makefile	Wed Feb 17 17:37:42 2021	(r565528)
@@ -18,12 +18,14 @@ USES=		uidfix tar:tgz dos2unix
 USE_LDCONFIG=	${PREFIX}/lib ${PREFIX}/lib/siod
 
 DOS2UNIX_FILES=	sql_oracle.c ss.c
-OPTIONS_DEFINE=	SQL_SYBASE GD NDBM REGEX SS DOCS
+OPTIONS_DEFINE=	SQL_SYBASE GD NDBM REGEX SS STATFS DOCS
 OPTIONS_DEFINE_i386=SQL_ORACLE	# oracle-client port only available for i386
 OPTIONS_DEFAULT=NDBM REGEX SS
+SQL_ORACLE_DESC=Build Oracle client-module (i386 only)
 SQL_SYBASE_DESC=Build Sybase (and MS-SQL) client-module (using FreeTDS)
 SS_DESC=	Sockets support - required for any network programs
 NDBM_DESC=	Support for NDBM-databases
+STATFS_DESC=	Module giving access to statfs(2) 
 NO_WRKSUBDIR=	yes
 EXTRACT_AFTER_ARGS=--exclude md5\* --exclude regex.h --exclude reg????*.c
 MAKE_ARGS=	VPATH=${WRKSRC} MODULES=${MODULES:Q}
@@ -33,7 +35,7 @@ MAKE_ENV+=	MAN1PREFIX=${MAN1PREFIX} PREFIX=${PREFIX:Q}
 MAKE_ENV+=	INSTALL_MAN=${INSTALL_MAN:Q} INSTALL_SCRIPT=${INSTALL_SCRIPT:Q}
 MAKE_ENV+=	INSTALL_DATA=${INSTALL_DATA:Q}
 
-MODULES=	tar parser_pratt
+MODULES=	statfs tar parser_pratt
 
 SQL_SYBASE_LIB_DEPENDS=	libct.so:databases/freetds	# Or freetds-devel
 GD_LIB_DEPENDS=		libgd.so:graphics/gd	# Or ukrainian/gd
@@ -54,6 +56,11 @@ post-build:
 
 .include <bsd.port.options.mk>
 MODULES+=	${SELECTED_OPTIONS:NDOCS:tl}
+
+# XXX This should not be necessary:
+.if ${ARCH} != i386
+PLIST_SUB+=	SQL_ORACLE=@comment
+.endif
 
 do-configure:
 	${MKDIR} ${WRKSRC}/lib

Added: head/lang/siod/files/patch-statfs
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/siod/files/patch-statfs	Wed Feb 17 17:37:42 2021	(r565528)
@@ -0,0 +1,97 @@
+--- statfs.c	2014-03-25 04:10:42.000000000 -0400
++++ statfs.c	2021-02-17 12:25:44.681462000 -0500
+@@ -4,9 +4,15 @@
+ 
+ #include <stdio.h>
++#ifdef HAVE_SYS_PARAM_H
++#include <sys/param.h>
++#endif
+ #include <sys/mount.h>
++#ifndef BSD
+ #include <sys/fs_types.h>
++#endif
+ #include <fstab.h>
+ #include "siod.h"
+ 
++#ifndef BSD
+ #define MNT_NUMTYPES	128
+ /*
+@@ -14,16 +20,28 @@
+  */
+ extern char *mnt_names[];
++#endif
+ 
+-LISP lstatfs(LISP path)
++static LISP lstatfs(LISP path)
+ {long iflag;
+  struct statfs s;
+  iflag = no_interrupt(1);
+- if (statfs(get_c_string(path),&s,sizeof(s)))
++ if (statfs(get_c_string(path), &s
++#ifndef BSD
++    ,sizeof(s)
++#endif
++   ))
+    return(err("statfs",llast_c_errmsg(-1)));
++
+  no_interrupt(iflag);
+- return(symalist("type",(((s.f_type >= 0) && (s.f_type < MNT_NUMTYPES) &&
++ return(symalist("type",
++#ifdef BSD
++		 s.f_fstypename[0] != '\0'
++		 	 ? rintern(s.f_fstypename)
++#else
++		 ((s.f_type >= 0) && (s.f_type < MNT_NUMTYPES) &&
+ 			  mnt_names[s.f_type])
+ 			 ? rintern(mnt_names[s.f_type])
+-			 : flocons(s.f_type)),
++#endif
++			 : flocons(s.f_type),
+ 		 "bsize",flocons(s.f_bsize),
+ 		 "blocks",flocons(s.f_blocks),
+@@ -34,8 +52,16 @@
+ 		 "mntonname",strcons(-1,s.f_mntonname),
+ 		 "mntfromname",strcons(-1,s.f_mntfromname),
++#ifdef BSD
++		 "syncwrites", flocons(s.f_syncwrites),
++		 "asyncwrites", flocons(s.f_asyncwrites),
++		 "syncreads", flocons(s.f_syncreads),
++		 "asyncreads", flocons(s.f_asyncreads),
++		 "namemax", flocons(s.f_namemax),
++#endif
++		/* TODO: Add decoding of f_flags */
+ 		 NULL));}
+ 
+ 
+-static LISP decode_fstab(struct fstab *p)
++static LISP decode_fstab(const struct fstab *p)
+ {if (p)
+    return(symalist("spec",strcons(-1,p->fs_spec),
+@@ -50,5 +76,5 @@
+    return(NIL);}
+ 
+-LISP lgetfsent(void)
++static LISP lgetfsent(void)
+ {long iflag;
+  LISP result;
+@@ -58,5 +84,5 @@
+  return(result);}
+ 
+-LISP lsetfsent(void)
++static LISP lsetfsent(void)
+ {long iflag;
+  LISP result;
+@@ -66,5 +92,5 @@
+  return(result);}
+ 
+-LISP lendfsent(void)
++static LISP lendfsent(void)
+ {long iflag;
+  iflag = no_interrupt(1);
+@@ -73,4 +99,6 @@
+  return(NIL);}
+ 
++void init_statfs(void); /* The sole symbol exported from a SIOD-module */
++
+ void init_statfs(void)
+ {init_subr_1("statfs",lstatfs);

Modified: head/lang/siod/pkg-plist
==============================================================================
--- head/lang/siod/pkg-plist	Wed Feb 17 17:36:56 2021	(r565527)
+++ head/lang/siod/pkg-plist	Wed Feb 17 17:37:42 2021	(r565528)
@@ -36,6 +36,7 @@ lib/siod/sql_msql.scm
 %%GD%%lib/siod/gd.so
 %%NDBM%%lib/siod/ndbm.so
 %%SS%%lib/siod/ss.so
+lib/siod/statfs.so
 lib/siod/tar.so
 %%SQL_ORACLE%%lib/siod/sql_oracle.so
 %%SQL_SYBASE%%lib/siod/sql_sybase.so



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202102171737.11HHbhiJ061527>