git: 370336ba9917 - main - misc/ecflow: New port: Workflow package that enables users to run a large number of programs

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Thu, 25 Aug 2022 19:20:29 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=370336ba99175ed10a0e65b92819e54303c36346

commit 370336ba99175ed10a0e65b92819e54303c36346
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-08-25 19:19:35 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-08-25 19:20:25 +0000

    misc/ecflow: New port: Workflow package that enables users to run a large number of programs
---
 misc/Makefile                                      |  1 +
 misc/ecflow/Makefile                               | 28 ++++++++++++++
 misc/ecflow/distinfo                               |  3 ++
 misc/ecflow/files/patch-tools_ecflow__standalone.c | 11 ++++++
 misc/ecflow/pkg-descr                              | 13 +++++++
 misc/ecflow/pkg-plist                              | 44 ++++++++++++++++++++++
 6 files changed, 100 insertions(+)

diff --git a/misc/Makefile b/misc/Makefile
index ba2ac493049a..0bda9756077f 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -82,6 +82,7 @@
     SUBDIR += dynomite
     SUBDIR += e2fsprogs-libblkid
     SUBDIR += e2fsprogs-libuuid
+    SUBDIR += ecflow
     SUBDIR += edfbrowser
     SUBDIR += edflib
     SUBDIR += elki
diff --git a/misc/ecflow/Makefile b/misc/ecflow/Makefile
new file mode 100644
index 000000000000..a616d8999a16
--- /dev/null
+++ b/misc/ecflow/Makefile
@@ -0,0 +1,28 @@
+PORTNAME=	ecflow
+DISTVERSION=	5.8.4
+CATEGORIES=	misc
+MASTER_SITES=	https://confluence.ecmwf.int/download/attachments/8650755/
+DISTNAME=	ecFlow-${DISTVERSION}-Source
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Workflow package that enables users to run a large number of programs
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+PY_DEPENDS=	${PYTHON_PKGNAMEPREFIX}boost-libs>0:devel/boost-python-libs@${PY_FLAVOR}
+BUILD_DEPENDS=	bash:shells/bash \
+		${PY_DEPENDS}
+LIB_DEPENDS=	libboost_program_options.so:devel/boost-libs
+RUN_DEPENDS=	${PY_DEPENDS}
+
+USES=		cmake compiler:c++17-lang localbase perl5 pkgconfig python:3.6+ qt:5 shebangfix ssl
+USE_QT=		charts core gui network svg widgets buildtools_build qmake_build
+
+SHEBANG_GLOB=	*.sh *.in *.py
+
+CMAKE_OFF=	ENABLE_STATIC_BOOST_LIBS ENABLE_TESTS ENABLE_ALL_TESTS
+
+CONFLICTS_BUILD=	python27 # build attempts to find python-2.7 and use it
+
+.include <bsd.port.mk>
diff --git a/misc/ecflow/distinfo b/misc/ecflow/distinfo
new file mode 100644
index 000000000000..04bc3dcd93df
--- /dev/null
+++ b/misc/ecflow/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1661404490
+SHA256 (ecFlow-5.8.4-Source.tar.gz) = bc628556f8458c269a309e4c3b8d5a807fae7dfd415e27416fe9a3f544f88951
+SIZE (ecFlow-5.8.4-Source.tar.gz) = 3567430
diff --git a/misc/ecflow/files/patch-tools_ecflow__standalone.c b/misc/ecflow/files/patch-tools_ecflow__standalone.c
new file mode 100644
index 000000000000..65046b4361e9
--- /dev/null
+++ b/misc/ecflow/files/patch-tools_ecflow__standalone.c
@@ -0,0 +1,11 @@
+--- tools/ecflow_standalone.c.orig	2022-08-25 05:28:39 UTC
++++ tools/ecflow_standalone.c
+@@ -183,7 +183,7 @@ int main(argc,argv) int argc; char **argv;
+      for (n=3; n<65535 ;n++) fclose(n); */
+ 
+   /* create a new session from the child process */
+-#if defined(linux) || defined(__APPLE__) || defined(__MACH__) || defined(hpux) || defined(solaris) || defined(SGI) || defined(SVR4) || defined(AIX) || defined(SYG) || defined(alpha)
++#if defined(linux) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__MACH__) || defined(hpux) || defined(solaris) || defined(SGI) || defined(SVR4) || defined(AIX) || defined(SYG) || defined(alpha)
+   if( setsid() == -1 )
+ #else
+   if( setsid(0) == -1 )
diff --git a/misc/ecflow/pkg-descr b/misc/ecflow/pkg-descr
new file mode 100644
index 000000000000..31814aebdbff
--- /dev/null
+++ b/misc/ecflow/pkg-descr
@@ -0,0 +1,13 @@
+ecFlow is a client/server workflow package that enables users to run a large
+number of programs (with dependencies on each other and on time) in a controlled
+environment. It provides reasonable tolerance for hardware and software
+failures, combined with restart capabilities. It is used at ECMWF to run all our
+operational suites across a range of platforms.
+
+ecFlow submits tasks (jobs) and receives acknowledgments from the tasks when
+they change status and when they send events, using child commands embedded in
+your scripts. ecFlow stores the relationships between tasks, and is able to
+submit tasks dependant on triggers, such as when a given task changes its
+status, for example when it finishes.
+
+WWW: https://confluence.ecmwf.int/display/ECFLOW/ecflow+home
diff --git a/misc/ecflow/pkg-plist b/misc/ecflow/pkg-plist
new file mode 100644
index 000000000000..e1c57f37d4b0
--- /dev/null
+++ b/misc/ecflow/pkg-plist
@@ -0,0 +1,44 @@
+bin/ecflow_client
+bin/ecflow_fuse.py
+bin/ecflow_logserver.sh
+bin/ecflow_logsvr.pl
+bin/ecflow_server
+bin/ecflow_standalone
+bin/ecflow_start.sh
+bin/ecflow_stop.sh
+bin/ecflow_ui
+bin/ecflow_ui.x
+lib/cmake/ecflow/ecflow-config-version.cmake
+lib/cmake/ecflow/ecflow-config.cmake
+lib/cmake/ecflow/ecflow-targets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/ecflow/ecflow-targets.cmake
+%%PYTHON_SITELIBDIR%%/ecflow/__init__.py
+%%PYTHON_SITELIBDIR%%/ecflow/ecf.py
+%%PYTHON_SITELIBDIR%%/ecflow/ecflow.so
+%%PYTHON_SITELIBDIR%%/ecflow/sms2ecf.py
+%%DATADIR%%/%%ETCDIR%%_test_ui.sh
+%%DATADIR%%/%%ETCDIR%%_ui_create_jira_issue.sh
+%%DATADIR%%/%%ETCDIR%%_ui_node_state_diag.sh
+%%DATADIR%%/%%ETCDIR%%_ui_test.def
+%%DATADIR%%/%%ETCDIR%%_ui_test_server_scripts.tar.gz
+%%DATADIR%%/%%ETCDIR%%_ui_test_session_template.json
+%%DATADIR%%/%%ETCDIR%%_ui_transfer_file.sh
+%%DATADIR%%/%%ETCDIR%%view_attribute_conf.json
+%%DATADIR%%/%%ETCDIR%%view_gui.json
+%%DATADIR%%/%%ETCDIR%%view_gui_server.json
+%%DATADIR%%/%%ETCDIR%%view_highlighter.json
+%%DATADIR%%/%%ETCDIR%%view_icon_conf.json
+%%DATADIR%%/%%ETCDIR%%view_menu_conf.json
+%%DATADIR%%/%%ETCDIR%%view_menus.json
+%%DATADIR%%/%%ETCDIR%%view_notification_conf.json
+%%DATADIR%%/%%ETCDIR%%view_nstate_conf.json
+%%DATADIR%%/%%ETCDIR%%view_palette.json
+%%DATADIR%%/%%ETCDIR%%view_panel_conf.json
+%%DATADIR%%/%%ETCDIR%%view_panels.json
+%%DATADIR%%/%%ETCDIR%%view_query_conf.json
+%%DATADIR%%/%%ETCDIR%%view_server_conf.json
+%%DATADIR%%/%%ETCDIR%%view_sstate_conf.json
+%%DATADIR%%/%%ETCDIR%%view_view_conf.json
+%%DATADIR%%/etc/shortcuts.txt
+%%DATADIR%%/etc/sounds/tone.ogg
+%%DATADIR%%/etc/viewer.qss