Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jul 2013 19:27:53 +0000 (UTC)
From:      Greg Larkin <glarkin@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r323184 - in head/devel: . gearmand-devel gearmand-devel/files
Message-ID:  <201307171927.r6HJRrEK003983@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glarkin
Date: Wed Jul 17 19:27:53 2013
New Revision: 323184
URL: http://svnweb.freebsd.org/changeset/ports/323184

Log:
  Gearman provides a generic framework to farm out work to other
  machines or dispatch function calls to machines that are better suited
  to do the work. It allows you to do work in parallel, to load balance
  processing, and to call functions between languages. It can be used in
  a variety of applications, from high-availability web sites to the
  transport for database replication.
  
  WWW:	http://www.gearman.org/

Added:
  head/devel/gearmand-devel/
  head/devel/gearmand-devel/Makefile   (contents, props changed)
  head/devel/gearmand-devel/distinfo   (contents, props changed)
  head/devel/gearmand-devel/files/
  head/devel/gearmand-devel/files/gearmand.in   (contents, props changed)
  head/devel/gearmand-devel/files/patch-configure   (contents, props changed)
  head/devel/gearmand-devel/files/patch-libgearman-server__log.cc   (contents, props changed)
  head/devel/gearmand-devel/files/patch-libtest__lite.h   (contents, props changed)
  head/devel/gearmand-devel/pkg-descr   (contents, props changed)
  head/devel/gearmand-devel/pkg-plist   (contents, props changed)
Modified:
  head/devel/Makefile

Modified: head/devel/Makefile
==============================================================================
--- head/devel/Makefile	Wed Jul 17 19:04:56 2013	(r323183)
+++ head/devel/Makefile	Wed Jul 17 19:27:53 2013	(r323184)
@@ -534,6 +534,7 @@
     SUBDIR += geany-plugins
     SUBDIR += geany-plugins-l10n
     SUBDIR += gearmand
+    SUBDIR += gearmand-devel
     SUBDIR += gecode
     SUBDIR += generate
     SUBDIR += generatorrunner

Added: head/devel/gearmand-devel/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/Makefile	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,289 @@
+# Created by: Gea-Suan Lin <gslin@gslin.org>
+# $FreeBSD$
+
+PORTNAME=	gearmand
+PORTVERSION=	1.1.8
+CATEGORIES=	devel
+MASTER_SITES=	http://launchpad.net/gearmand/1.2/${PORTVERSION}/+download/
+
+MAINTAINER=	glarkin@FreeBSD.org
+COMMENT=	Gearman C Server and Library
+
+BUILD_DEPENDS=	boost-libs>=0:${PORTSDIR}/devel/boost-libs \
+		libexecinfo>=0:${PORTSDIR}/devel/libexecinfo \
+		${PYTHON_PKGNAMEPREFIX}sphinx>=0:${PORTSDIR}/textproc/py-sphinx
+LIB_DEPENDS=	event:${PORTSDIR}/devel/libevent \
+		uuid:${PORTSDIR}/misc/e2fsprogs-libuuid \
+		execinfo:${PORTSDIR}/devel/libexecinfo
+
+CONFLICTS=	p5-Gearman-Server-1.* gearmand-1.0.*
+
+.if defined(MAINTAINER_MODE) && ${MAINTAINER_MODE:Myes}
+UID_FILES=	../../UIDs
+GID_FILES=	../../GIDs
+.if !exists(${UID_FILES}) || !exists(${GID_FILES})
+.error ${UID_FILES} or ${GID_FILES} does not exist - please check
+.endif
+.endif
+
+USERS=		gearmand
+GROUPS=		gearmand
+
+FETCH_ARGS=	-pRr
+USE_PERL5_BUILD=yes
+GNU_CONFIGURE=	yes
+USE_GMAKE=	yes
+USES=	pathfix
+USE_LDCONFIG=	yes
+USE_PYTHON_BUILD=yes
+USE_RC_SUBR=	gearmand
+SUB_LIST+=	USERS=${USERS} GROUPS=${GROUPS}
+
+CONFIGURE_ARGS+=--with-lib-prefix=${LOCALBASE} --with-boost=${LOCALBASE} \
+		--localstatedir=/var/db/${PORTNAME} --enable-static
+CPPFLAGS+=	-I${LOCALBASE}/include
+LDFLAGS+=	-L${LOCALBASE}/lib -lexecinfo
+
+OPTIONS_DEFINE=	DRIZZLE MEMCACHED PGSQL SQLITE MYSQL HIREDIS TOKYOCAB
+OPTIONS_DEFAULT=SQLITE
+
+DRIZZLE_DESC=	Enable Drizzle support for persistent queue
+MEMCACHED_DESC=	Enable memcached support for persistent queue
+MYSQL_DESC=	Enable MySQL support for persistent queue
+PGSQL_DESC=	Enable PostgreSQL support for persistent queue
+SQLITE_DESC=	Enable SQLite support for persistent queue
+HIREDIS_DESC=	Enable Hiredis support for persistent queue
+TOKYOCAB_DESC=	Enable Tokyo Cabinet support for persistent queue
+
+MAN1=	gearadmin.1 \
+	gearman.1
+MAN3=	gearman_actions_t.3 \
+	gearman_allocator_t.3 \
+	gearman_argument_make.3 \
+	gearman_argument_t.3 \
+	gearman_bugreport.3 \
+	gearman_client_add_options.3 \
+	gearman_client_add_server.3 \
+	gearman_client_add_servers.3 \
+	gearman_client_add_task.3 \
+	gearman_client_add_task_background.3 \
+	gearman_client_add_task_high.3 \
+	gearman_client_add_task_high_background.3 \
+	gearman_client_add_task_low.3 \
+	gearman_client_add_task_low_background.3 \
+	gearman_client_add_task_status.3 \
+	gearman_client_clear_fn.3 \
+	gearman_client_clone.3 \
+	gearman_client_context.3 \
+	gearman_client_create.3 \
+	gearman_client_do.3 \
+	gearman_client_do_background.3 \
+	gearman_client_do_high.3 \
+	gearman_client_do_high_background.3 \
+	gearman_client_do_job_handle.3 \
+	gearman_client_do_low.3 \
+	gearman_client_do_low_background.3 \
+	gearman_client_do_status.3 \
+	gearman_client_echo.3 \
+	gearman_client_errno.3 \
+	gearman_client_error.3 \
+	gearman_client_free.3 \
+	gearman_client_has_option.3 \
+	gearman_client_job_status.3 \
+	gearman_client_options.3 \
+	gearman_client_options_t.3 \
+	gearman_client_remove_options.3 \
+	gearman_client_remove_servers.3 \
+	gearman_client_run_tasks.3 \
+	gearman_client_set_complete_fn.3 \
+	gearman_client_set_context.3 \
+	gearman_client_set_created_fn.3 \
+	gearman_client_set_data_fn.3 \
+	gearman_client_set_exception_fn.3 \
+	gearman_client_set_fail_fn.3 \
+	gearman_client_set_log_fn.3 \
+	gearman_client_set_memory_allocators.3 \
+	gearman_client_set_namespace.3 \
+	gearman_client_set_options.3 \
+	gearman_client_set_status_fn.3 \
+	gearman_client_set_task_context_free_fn.3 \
+	gearman_client_set_timeout.3 \
+	gearman_client_set_warning_fn.3 \
+	gearman_client_set_workload_fn.3 \
+	gearman_client_set_workload_free_fn.3 \
+	gearman_client_set_workload_malloc_fn.3 \
+	gearman_client_st.3 \
+	gearman_client_task_free_all.3 \
+	gearman_client_timeout.3 \
+	gearman_client_wait.3 \
+	gearman_continue.3 \
+	gearman_execute.3 \
+	gearman_failed.3 \
+	gearman_job_free.3 \
+	gearman_job_free_all.3 \
+	gearman_job_function_name.3 \
+	gearman_job_handle.3 \
+	gearman_job_handle_t.3 \
+	gearman_job_send_complete.3 \
+	gearman_job_send_data.3 \
+	gearman_job_send_exception.3 \
+	gearman_job_send_fail.3 \
+	gearman_job_send_status.3 \
+	gearman_job_send_warning.3 \
+	gearman_job_st.3 \
+	gearman_job_take_workload.3 \
+	gearman_job_unique.3 \
+	gearman_job_workload.3 \
+	gearman_job_workload_size.3 \
+	gearman_log_fn.3 \
+	gearman_parse_servers.3 \
+	gearman_result_boolean.3 \
+	gearman_result_integer.3 \
+	gearman_result_is_null.3 \
+	gearman_result_size.3 \
+	gearman_result_store_integer.3 \
+	gearman_result_store_string.3 \
+	gearman_result_store_value.3 \
+	gearman_result_string.3 \
+	gearman_return_t.3 \
+	gearman_strerror.3 \
+	gearman_string_t.3 \
+	gearman_success.3 \
+	gearman_task_attr_init.3 \
+	gearman_task_attr_init_background.3 \
+	gearman_task_attr_init_epoch.3 \
+	gearman_task_attr_t.3 \
+	gearman_task_context.3 \
+	gearman_task_data.3 \
+	gearman_task_data_size.3 \
+	gearman_task_denominator.3 \
+	gearman_task_error.3 \
+	gearman_task_free.3 \
+	gearman_task_function_name.3 \
+	gearman_task_give_workload.3 \
+	gearman_task_is_known.3 \
+	gearman_task_is_running.3 \
+	gearman_task_job_handle.3 \
+	gearman_task_numerator.3 \
+	gearman_task_recv_data.3 \
+	gearman_task_return.3 \
+	gearman_task_send_workload.3 \
+	gearman_task_set_context.3 \
+	gearman_task_st.3 \
+	gearman_task_take_data.3 \
+	gearman_task_unique.3 \
+	gearman_verbose_name.3 \
+	gearman_verbose_t.3 \
+	gearman_version.3 \
+	gearman_worker_add_function.3 \
+	gearman_worker_add_options.3 \
+	gearman_worker_add_server.3 \
+	gearman_worker_add_servers.3 \
+	gearman_worker_clone.3 \
+	gearman_worker_context.3 \
+	gearman_worker_create.3 \
+	gearman_worker_define_function.3 \
+	gearman_worker_echo.3 \
+	gearman_worker_errno.3 \
+	gearman_worker_error.3 \
+	gearman_worker_free.3 \
+	gearman_worker_function_exist.3 \
+	gearman_worker_grab_job.3 \
+	gearman_worker_options.3 \
+	gearman_worker_register.3 \
+	gearman_worker_remove_options.3 \
+	gearman_worker_remove_servers.3 \
+	gearman_worker_set_context.3 \
+	gearman_worker_set_identifier.3 \
+	gearman_worker_set_log_fn.3 \
+	gearman_worker_set_memory_allocators.3 \
+	gearman_worker_set_namespace.3 \
+	gearman_worker_set_options.3 \
+	gearman_worker_set_timeout.3 \
+	gearman_worker_set_workload_free_fn.3 \
+	gearman_worker_set_workload_malloc_fn.3 \
+	gearman_worker_st.3 \
+	gearman_worker_timeout.3 \
+	gearman_worker_unregister.3 \
+	gearman_worker_unregister_all.3 \
+	gearman_worker_wait.3 \
+	gearman_worker_work.3 \
+	libgearman.3
+MAN8=	gearmand.8
+
+.include <bsd.port.options.mk>
+
+# Workaround for missing sigignore that wasn't introduced until
+# FreeBSD 8.0
+.if ${OSVERSION} < 800041
+BROKEN=	Does not compile without POSIX spawn() support
+.endif
+
+.if ${PORT_OPTIONS:MDRIZZLE}
+LIB_DEPENDS+=		drizzle:${PORTSDIR}/databases/libdrizzle
+CONFIGURE_ARGS+=	--enable-libdrizzle
+.else
+CONFIGURE_ARGS+=	--disable-libdrizzle
+.endif
+
+.if ${PORT_OPTIONS:MMEMCACHED}
+LIB_DEPENDS+=		memcached:${PORTSDIR}/databases/libmemcached
+BUILD_DEPENDS+=		memcached>=0:${PORTSDIR}/databases/memcached
+CONFIGURE_ARGS+=	--enable-libmemcached
+# This hack is required for the test programs invoked by configure,
+# in the event that libmemcached was compiled with SASL support.
+.if exists(${LOCALBASE}/lib/libsasl.so)
+LDFLAGS+=		-L${LOCALBASE}/lib -lsasl
+CONFIGURE_ARGS+=	--with-memcached-sasl=${LOCALBASE}/bin/memcached
+.elif exists(${LOCALBASE}/lib/libsasl2.a)
+LDFLAGS+=		-L${LOCALBASE}/lib -lsasl2
+CONFIGURE_ARGS+=	--with-memcached-sasl=${LOCALBASE}/bin/memcached
+.else
+LDFLAGS+=		-L${LOCALBASE}/lib
+CONFIGURE_ARGS+=	--with-memcached=${LOCALBASE}/bin/memcached
+.endif
+.else
+CONFIGURE_ARGS+=	--disable-libmemcached
+.endif
+
+.if ${PORT_OPTIONS:MMYSQL}
+USE_MYSQL=		yes
+CONFIGURE_ARGS+=	--with-mysql=yes
+.else
+CONFIGURE_ARGS+=	--with-mysql=no
+.endif
+
+.if ${PORT_OPTIONS:MPGSQL}
+USE_PGSQL=		yes
+CONFIGURE_ARGS+=	--enable-libpq
+.else
+CONFIGURE_ARGS+=	--disable-libpq
+.endif
+
+.if ${PORT_OPTIONS:MSQLITE}
+BUILD_DEPENDS+=		sqlite3>=3.0.0:${PORTSDIR}/databases/sqlite3
+LIB_DEPENDS+=		sqlite3:${PORTSDIR}/databases/sqlite3
+CONFIGURE_ARGS+=	--with-sqlite3=${LOCALBASE}
+.else
+CONFIGURE_ARGS+=	--without-sqlite3
+.endif
+
+.if ${PORT_OPTIONS:MTOKYOCAB}
+LIB_DEPENDS+=		tokyocabinet:${PORTSDIR}/databases/tokyocabinet
+CONFIGURE_ARGS+=	--enable-libtokyocabinet
+CONFIGURE_ENV+=		LIBTOKYOCABINET_CPPFLAGS=-I${LOCALBASE}/include \
+			LIBTOKYOCABINET_LDFLAGS=-L${LOCALBASE}/lib
+.else
+CONFIGURE_ARGS+=	--disable-libtokyocabinet
+.endif
+
+.if ${PORT_OPTIONS:MHIREDIS}
+LIB_DEPENDS+=		hiredis:${PORTSDIR}/databases/hiredis
+CONFIGURE_ARGS+=	--enable-hires
+CONFIGURE_ENV+=		LIBHIREDIS_CPPFLAGS=-I${LOCALBASE}/include/hiredis \
+			LIBHIREDIS_LDFLAGS=-L${LOCALBASE}/lib
+.else
+CONFIGURE_ARGS+=	--disable-hires
+.endif
+
+.include <bsd.port.mk>

Added: head/devel/gearmand-devel/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/distinfo	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,2 @@
+SHA256 (gearmand-1.1.8.tar.gz) = 6967cbf5a2002cfe02bcf19cf28e3da6c297236b9e17a8423b96c1a107c911ef
+SIZE (gearmand-1.1.8.tar.gz) = 966354

Added: head/devel/gearmand-devel/files/gearmand.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/files/gearmand.in	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: gearmand
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# gearmand_enable (bool):	Set to NO by default.
+#				Set it to YES to enable gearmand.
+# gearmand_log_level (value):	Set to WARNING by default. Other options are:
+#				FATAL, ALERT, CRITICAL, ERROR, WARNING,
+#				NOTICE, INFO, and DEBUG
+# gearmand_flags (value):	Include other command-line arguments with
+#				this variable.
+# gearmand_user (value):	Set to %%USERS%% by default.
+# gearmand_group (value):	Set to %%GROUPS%% by default.
+
+. /etc/rc.subr
+
+name=gearmand
+rcvar=gearmand_enable
+
+load_rc_config $name
+
+gearmand_prestart()
+{
+	install -d -o ${gearmand_user} -g ${gearmand_group} -m 755 ${_piddir}
+	install -d -o ${gearmand_user} -g ${gearmand_group} -m 755 ${_logdir}
+	install -d -o ${gearmand_user} -g ${gearmand_group} -m 755 ${_statedir}
+}
+
+: ${gearmand_enable:="NO"}
+: ${gearmand_log_level="WARNING"}
+: ${gearmand_user="%%USERS%%"}
+: ${gearmand_group="%%GROUPS%%"}
+
+command=%%PREFIX%%/sbin/${name}
+_piddir=/var/run/${name}
+pidfile=${_piddir}/${name}.pid
+_logdir=/var/log/${name}
+logfile=${_logdir}/${name}.log
+_statedir=/var/db/${name}
+
+command_args="-d --verbose ${gearmand_log_level} -l ${logfile} -P ${pidfile}"
+
+start_precmd="${name}_prestart"
+
+run_rc_command "$1"

Added: head/devel/gearmand-devel/files/patch-configure
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/files/patch-configure	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,40 @@
+--- ./configure.orig	2013-06-06 19:06:29.000000000 -0400
++++ ./configure	2013-07-17 14:33:54.000000000 -0400
+@@ -17976,7 +17976,7 @@
+ done
+ test -n "$CURL_CONFIG" || CURL_CONFIG="no"
+ 
+-    if test "$CURL_CONFIG" == "no"; then :
++    if test "$CURL_CONFIG" = "no"; then :
+ 
+       :
+ 
+@@ -17986,7 +17986,7 @@
+ 
+ else
+ 
+-            if test x"" == x; then :
++            if test x"" = x; then :
+ 
+ 	CURL_CFLAGS="`$CURL_CONFIG $curl_config_args --cflags`"
+ 
+@@ -17996,7 +17996,7 @@
+ 
+ fi
+ 
+-            if test x"" == x; then :
++            if test x"" = x; then :
+ 
+ 	CURL_LIBS="`$CURL_CONFIG $curl_config_args --libs`"
+ 
+@@ -23954,8 +23954,8 @@
+       LIBS="$PTHREAD_LIBS"
+       ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS -Werror conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS -Werror $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext

Added: head/devel/gearmand-devel/files/patch-libgearman-server__log.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/files/patch-libgearman-server__log.cc	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,11 @@
+--- ./libgearman-server/log.cc.orig	2013-06-05 15:55:41.000000000 -0400
++++ ./libgearman-server/log.cc	2013-07-17 14:33:54.000000000 -0400
+@@ -56,6 +56,8 @@
+ 
+ #ifdef _WIN32
+ # include <malloc.h>
++#elif defined(__FreeBSD__)
++# include <stdlib.h>
+ #else
+ # include <alloca.h>
+ #endif

Added: head/devel/gearmand-devel/files/patch-libtest__lite.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/files/patch-libtest__lite.h	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,11 @@
+--- ./libtest/lite.h.orig	2013-07-17 14:36:43.000000000 -0400
++++ ./libtest/lite.h	2013-07-17 14:37:02.000000000 -0400
+@@ -53,6 +53,8 @@
+ 
+ #if defined(WIN32)
+ # include <malloc.h>
++#elif defined(__FreeBSD__)
++# include <stdlib.h>
+ #else
+ # include <alloca.h>
+ #endif

Added: head/devel/gearmand-devel/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/pkg-descr	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,8 @@
+Gearman provides a generic framework to farm out work to other
+machines or dispatch function calls to machines that are better suited
+to do the work. It allows you to do work in parallel, to load balance
+processing, and to call functions between languages. It can be used in
+a variety of applications, from high-availability web sites to the
+transport for database replication.
+
+WWW:	http://www.gearman.org/

Added: head/devel/gearmand-devel/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/gearmand-devel/pkg-plist	Wed Jul 17 19:27:53 2013	(r323184)
@@ -0,0 +1,50 @@
+bin/gearadmin
+bin/gearman
+include/libgearman-1.0/actions.h
+include/libgearman-1.0/aggregator.h
+include/libgearman-1.0/allocator.h
+include/libgearman-1.0/argument.h
+include/libgearman-1.0/cancel.h
+include/libgearman-1.0/client.h
+include/libgearman-1.0/client_callbacks.h
+include/libgearman-1.0/configure.h
+include/libgearman-1.0/connection.h
+include/libgearman-1.0/constants.h
+include/libgearman-1.0/core.h
+include/libgearman-1.0/execute.h
+include/libgearman-1.0/function.h
+include/libgearman-1.0/gearman.h
+include/libgearman-1.0/interface/client.h
+include/libgearman-1.0/interface/status.h
+include/libgearman-1.0/interface/task.h
+include/libgearman-1.0/interface/worker.h
+include/libgearman-1.0/job.h
+include/libgearman-1.0/job_handle.h
+include/libgearman-1.0/kill.h
+include/libgearman-1.0/limits.h
+include/libgearman-1.0/ostream.hpp
+include/libgearman-1.0/parse.h
+include/libgearman-1.0/priority.h
+include/libgearman-1.0/protocol.h
+include/libgearman-1.0/result.h
+include/libgearman-1.0/return.h
+include/libgearman-1.0/signal.h
+include/libgearman-1.0/status.h
+include/libgearman-1.0/strerror.h
+include/libgearman-1.0/string.h
+include/libgearman-1.0/task.h
+include/libgearman-1.0/task_attr.h
+include/libgearman-1.0/util.h
+include/libgearman-1.0/version.h
+include/libgearman-1.0/visibility.h
+include/libgearman-1.0/worker.h
+include/libgearman/gearman.h
+lib/libgearman.a
+lib/libgearman.la
+lib/libgearman.so
+lib/libgearman.so.8
+libdata/pkgconfig/gearmand.pc
+sbin/gearmand
+@dirrm include/libgearman-1.0/interface
+@dirrm include/libgearman-1.0
+@dirrm include/libgearman



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