From 0028ff43ac0751420bae3d2f1237a2316d0e65fe Mon Sep 17 00:00:00 2001 From: tz Date: Mon, 7 Aug 2017 13:46:50 +0000 Subject: [PATCH] New port: databases/pgloader3 Pgloader loads data into PostgreSQL using the COPY streaming protocol,and doing so with separate threads for reading and writing data.Asynchronous IO,compiled to the metal programming language. pgloader knows how to read data from MySQL,SQLite or dBase databases,and knows how to discover the schema and properly cast data types over.It also knows how to read CSV files in several definitions of CSV,and fixed columns files. WWW: http://pgloader.io PR: 219165 Submitted by: Jov --- databases/Makefile | 1 + databases/pgloader3/Makefile | 45 +++++++++++++++++++ databases/pgloader3/distinfo | 5 +++ databases/pgloader3/files/patch-Makefile | 38 ++++++++++++++++ .../files/patch-pgloader__wrapper.sh | 11 +++++ databases/pgloader3/pkg-descr | 9 ++++ 6 files changed, 109 insertions(+) create mode 100644 databases/pgloader3/Makefile create mode 100644 databases/pgloader3/distinfo create mode 100644 databases/pgloader3/files/patch-Makefile create mode 100644 databases/pgloader3/files/patch-pgloader__wrapper.sh create mode 100644 databases/pgloader3/pkg-descr diff --git a/databases/Makefile b/databases/Makefile index 365075068ef2..0f01bb30fced 100644 --- a/databases/Makefile +++ b/databases/Makefile @@ -586,6 +586,7 @@ SUBDIR += pgFormatter SUBDIR += pgfouine SUBDIR += pgloader + SUBDIR += pgloader3 SUBDIR += pglogical SUBDIR += pgmodeler SUBDIR += pgpool diff --git a/databases/pgloader3/Makefile b/databases/pgloader3/Makefile new file mode 100644 index 000000000000..62bd20192b1b --- /dev/null +++ b/databases/pgloader3/Makefile @@ -0,0 +1,45 @@ +# Created by: Jov +# $FreeBSD$ + +PORTNAME= pgloader +PORTVERSION= 3.4.1 +DISTVERSIONPREFIX= v +CATEGORIES= databases +PKGNAMESUFFIX= 3 + +MAINTAINER= amutu@amutu.com +COMMENT= Data loading tool for PostgreSQL,using the COPY command + +LICENSE= PostgreSQL + +BUILD_DEPENDS= ccl:lang/ccl +LIB_DEPENDS= libsqlite3.so:databases/sqlite3 \ + libtdsodbc.so:databases/freetds + +CONFLICTS= pgloader-2* + +USES= gmake + +USE_GITHUB= yes +GH_ACCOUNT= dimitri +GH_TUPLE= amutu:quicklisp_offline:e9008cc:qlp/build/quicklisp + +PLIST_FILES= bin/pgloader \ + bin/pgloader3 \ + man/man1/pgloader.1.gz + +MAKE_ARGS= CL=ccl +MAKE_ENV= ASDF_OUTPUT_TRANSLATIONS=/: + +# stripping can break lisp binaries +STRIP= + +post-patch: + ${LN} ${WRKSRC}/build/quicklisp/quicklisp.lisp ${WRKSRC}/build + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/build/bin/pgloader ${STAGEDIR}${PREFIX}/bin/pgloader3 + ${INSTALL_SCRIPT} ${WRKSRC}/pgloader_wrapper.sh ${STAGEDIR}${PREFIX}/bin/pgloader + ${INSTALL_MAN} ${WRKSRC}/pgloader.1 ${STAGEDIR}${MANPREFIX}/man/man1 + +.include diff --git a/databases/pgloader3/distinfo b/databases/pgloader3/distinfo new file mode 100644 index 000000000000..0633adcfcc77 --- /dev/null +++ b/databases/pgloader3/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1499825145 +SHA256 (dimitri-pgloader-v3.4.1_GH0.tar.gz) = 3ac4d03706057a35e1d4d0e63571b84be7d0d07ea09e015d90e242200488fe82 +SIZE (dimitri-pgloader-v3.4.1_GH0.tar.gz) = 4218005 +SHA256 (amutu-quicklisp_offline-e9008cc_GH0.tar.gz) = 2085b87b2c62b0eca85784995c86a66a0a202950c242e100273c9cea4cde0453 +SIZE (amutu-quicklisp_offline-e9008cc_GH0.tar.gz) = 4833120 diff --git a/databases/pgloader3/files/patch-Makefile b/databases/pgloader3/files/patch-Makefile new file mode 100644 index 000000000000..bca53923c3b3 --- /dev/null +++ b/databases/pgloader3/files/patch-Makefile @@ -0,0 +1,38 @@ +--- Makefile.orig 2017-07-06 14:53:29 UTC ++++ Makefile +@@ -84,7 +84,7 @@ $(QLDIR)/local-projects/cl-csv: + + $(QLDIR)/setup.lisp: + mkdir -p $(BUILDDIR) +- curl -o $(BUILDDIR)/quicklisp.lisp http://beta.quicklisp.org/quicklisp.lisp ++# curl -o $(BUILDDIR)/quicklisp.lisp http://beta.quicklisp.org/quicklisp.lisp + $(CL) $(CL_OPTS) --load $(BUILDDIR)/quicklisp.lisp \ + --load src/getenv.lisp \ + --eval '(quicklisp-quickstart:install :path "$(BUILDDIR)/quicklisp" :proxy (getenv "http_proxy"))' \ +@@ -97,7 +97,7 @@ clones: $(QLDIR)/local-projects/cl-ixf \ + $(QLDIR)/local-projects/cl-csv \ + $(QLDIR)/local-projects/qmynd ; + +-$(LIBS): $(QLDIR)/setup.lisp clones ++$(LIBS): $(QLDIR)/setup.lisp + $(CL) $(CL_OPTS) --load $(QLDIR)/setup.lisp \ + --eval '(push "$(PWD)/" asdf:*central-registry*)' \ + --eval '(ql:quickload "pgloader")' \ +@@ -113,7 +113,7 @@ $(MANIFEST): $(LIBS) + + manifest: $(MANIFEST) ; + +-$(BUILDAPP_CCL): $(QLDIR)/setup.lisp ++$(BUILDAPP_CCL): $(QLDIR)/setup.lisp $(LIBS) + mkdir -p $(BUILDDIR)/bin + $(CL) $(CL_OPTS) --load $(QLDIR)/setup.lisp \ + --eval '(ql:quickload "buildapp")' \ +@@ -176,7 +176,7 @@ $(BUNDLE): $(BUNDLEDIR) + sed -e s/%VERSION%/$(VERSION)/ < bundle/Makefile > $(BUNDLEDIR)/Makefile + git archive --format=tar --prefix=pgloader-$(VERSION)/ master \ + | tar -C $(BUNDLEDIR)/local-projects/ -xf - +- make QLDIR=$(BUNDLEDIR) clones ++ make QLDIR=$(BUNDLEDIR) + tar -C build/bundle \ + --exclude bin \ + --exclude test/sqlite \ diff --git a/databases/pgloader3/files/patch-pgloader__wrapper.sh b/databases/pgloader3/files/patch-pgloader__wrapper.sh new file mode 100644 index 000000000000..0f6137dd9c78 --- /dev/null +++ b/databases/pgloader3/files/patch-pgloader__wrapper.sh @@ -0,0 +1,11 @@ +--- pgloader_wrapper.sh.orig 2017-07-14 08:47:14 UTC ++++ pgloader_wrapper.sh +@@ -0,0 +1,8 @@ ++#!/bin/sh ++ ++# There is a bug for current ccl on FreeBSD, which is determine_executable_name ++# doesn't do the job for FreeBSD. Now we use this script as a workaround. See: ++# https://github.com/Clozure/ccl/issues/38 ++ ++BIN_DIR="$(cd $(/usr/bin/dirname $0);pwd)" ++exec "${BIN_DIR}"/pgloader3 "${@}" diff --git a/databases/pgloader3/pkg-descr b/databases/pgloader3/pkg-descr new file mode 100644 index 000000000000..d9e93db9ed4e --- /dev/null +++ b/databases/pgloader3/pkg-descr @@ -0,0 +1,9 @@ +Pgloader loads data into PostgreSQL using the COPY streaming protocol,and +doing so with separate threads for reading and writing data.Asynchronous +IO,compiled to the metal programming language. +pgloader knows how to read data from MySQL,SQLite or dBase databases,and +knows how to discover the schema and properly cast data types over.It also +knows how to read CSV files in several definitions of CSV,and fixed columns +files. + +WWW: http://pgloader.io