aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarino <marino@FreeBSD.org>2016-01-11 05:18:15 +0800
committermarino <marino@FreeBSD.org>2016-01-11 05:18:15 +0800
commitca25509e440fced72ca7114fa48cf2739aaed115 (patch)
treef4f7e1b50daf48ec17bc9e01cc01503d6395efcd
parentfde48dacb7b4ffed4527d521f9ecbb675d05e645 (diff)
downloadfreebsd-ports-gnome-ca25509e440fced72ca7114fa48cf2739aaed115.tar.gz
freebsd-ports-gnome-ca25509e440fced72ca7114fa48cf2739aaed115.tar.zst
freebsd-ports-gnome-ca25509e440fced72ca7114fa48cf2739aaed115.zip
Add new port: ports-mgmt/synth
Synth is a custom packge repository builder for FreeBSD and DragonFly. It is intended to replace Portmaster, portupgrade, and poudriere for the average user. It is simple to learn (the powerful options are limited in number) and user-friendly, but it is extremely fast due to its parallel building capability. It will "drop-in" on any system as it leverages the stock pkg(8) facilities. All ports are built in a clean environment, so it is finally safe to build ports as needed on a live system. The default profile is the system itself, not a new jail, which can be a valuable feature for some environments. (more text on pkg-desc). It's ready for wider testing now.
-rw-r--r--ports-mgmt/Makefile1
-rw-r--r--ports-mgmt/synth/Makefile57
-rw-r--r--ports-mgmt/synth/distinfo4
-rw-r--r--ports-mgmt/synth/pkg-descr23
-rw-r--r--ports-mgmt/synth/pkg-plist6
5 files changed, 91 insertions, 0 deletions
diff --git a/ports-mgmt/Makefile b/ports-mgmt/Makefile
index 3fac558ccdc2..fb288afeca32 100644
--- a/ports-mgmt/Makefile
+++ b/ports-mgmt/Makefile
@@ -64,6 +64,7 @@
SUBDIR += py-pytoport
SUBDIR += py-skog
SUBDIR += symports
+ SUBDIR += synth
SUBDIR += tinderbox
SUBDIR += tinderbox-devel
SUBDIR += wanted-ports
diff --git a/ports-mgmt/synth/Makefile b/ports-mgmt/synth/Makefile
new file mode 100644
index 000000000000..8f7d27d5a39a
--- /dev/null
+++ b/ports-mgmt/synth/Makefile
@@ -0,0 +1,57 @@
+# Created by: John Marino <marino@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= synth
+PORTVERSION= 0.98
+DISTVERSIONPREFIX= v
+CATEGORIES= ports-mgmt
+
+MAINTAINER= marino@FreeBSD.org
+COMMENT= Custom package repository builder for FreeBSD and DragonFly
+
+LICENSE= ISCL
+LICENSE_FILE= ${WRKSRC}/License.txt
+
+#BUILD_DEPENDS= ${LOCALBASE}/lib/gnat/util.gpr:${PORTSDIR}/devel/ada-util \
+# ${LOCALBASE}/lib/gnat/${IFM}.gpr:${PORTSDIR}/misc/${IFM} \
+# ${LOCALBASE}/lib/gnat/${AC}.gpr:${PORTSDIR}/devel/${AC}
+
+USES= ada:6 ncurses:port
+USE_GITHUB= yes
+GH_ACCOUNT= jrmarino
+GH_PROJECT= synth_external:bundle
+GH_TAGNAME= v1.3:bundle
+
+# When framework is moved to Ada6, the ada-util and ini-file-manager
+# libraries can be used as prebuilt (switch default.gpr url)
+# ncurses:port is required for FreeBSD 11 and DragonFly (base ncurses
+# malfunctions in that it won't restore TTY mode correctly)
+
+COBJFILES= ncurses_compat.o c_varargs_to_ada.o c_threaded_variables.o
+
+post-extract:
+ @${MV} ${WRKSRC_bundle}/external ${WRKSRC}
+ @${REINPLACE_CMD} -e "s|/usr/local|${LOCALBASE}|" \
+ ${WRKSRC}/external/lib/gnat/adacurses.gpr \
+ ${WRKSRC}/src/definitions.ads
+
+do-build:
+ # To avoid requiring gprbuild as a dependency, compile C manually
+.for csrc in ${COBJFILES:R}
+ (cd ${WRKSRC}/external/include/adacurses && ${SETENV} ${MAKE_ENV} \
+ gcc -I. -c ${csrc}.c -o ../../build/adacurses/${csrc}.o)
+.endfor
+ (cd ${WRKSRC}/synthexec && ${SETENV} ${MAKE_ENV} \
+ gcc synthexec.c -o ../build/synthexec)
+ (cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} gnatmake -P default)
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/build/synth \
+ ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/build/synthexec \
+ ${STAGEDIR}${PREFIX}/libexec
+ ${INSTALL_MAN} ${WRKSRC}/synth.1 ${STAGEDIR}${MANPREFIX}/man/man1
+ ${MKDIR} ${STAGEDIR}/var/log/synth \
+ ${STAGEDIR}/var/synth/live_packages
+
+.include <bsd.port.mk>
diff --git a/ports-mgmt/synth/distinfo b/ports-mgmt/synth/distinfo
new file mode 100644
index 000000000000..052d9c9f308b
--- /dev/null
+++ b/ports-mgmt/synth/distinfo
@@ -0,0 +1,4 @@
+SHA256 (jrmarino-synth-v0.98_GH0.tar.gz) = 4289e70f56c545f318695a2ee965e48181bd7f16659135640c419ea5e213c442
+SIZE (jrmarino-synth-v0.98_GH0.tar.gz) = 73424
+SHA256 (jrmarino-synth_external-v1.3_GH0.tar.gz) = 2afc03e494d2394446eabdb5244967c202a79b449c7cad7ea67a87807cc25f44
+SIZE (jrmarino-synth_external-v1.3_GH0.tar.gz) = 209283
diff --git a/ports-mgmt/synth/pkg-descr b/ports-mgmt/synth/pkg-descr
new file mode 100644
index 000000000000..9c43e0dd4a93
--- /dev/null
+++ b/ports-mgmt/synth/pkg-descr
@@ -0,0 +1,23 @@
+Synth is a custom packge repository builder for FreeBSD and DragonFly.
+
+It is intended to replace Portmaster, portupgrade, and poudriere for
+the average user. It is simple to learn (the powerful options are
+limited in number) and user-friendly, but it is extremely fast due
+to its parallel building capability. It will "drop-in" on any system
+as it leverages the stock pkg(8) facilities. All ports are built
+in a clean environment, so it is finally safe to build ports as
+needed on a live system. The default profile is the system itself, not
+a new jail, which can be a valuable feature for some environments.
+
+To bring a system up-to-date only requires one command after the ports
+tree is updated:
+
+ > synth upgrade-system
+
+During the building process, a curses-based display will show the status
+of all the builders and the entire bulk run process. Synth is intended
+to be grasped and utilized by novice users within minutes, but offers
+most of the same powerful features as Poudriere for the power users.
+Synth requires no preparation; it works immediately upon installation.
+
+WWW: https://github.com/jrmarino/synth
diff --git a/ports-mgmt/synth/pkg-plist b/ports-mgmt/synth/pkg-plist
new file mode 100644
index 000000000000..06cd9512e0df
--- /dev/null
+++ b/ports-mgmt/synth/pkg-plist
@@ -0,0 +1,6 @@
+bin/synth
+libexec/synthexec
+man/man1/synth.1.gz
+@dir /var/log/synth
+@dir /var/synth
+@dir /var/synth/live_packages