summaryrefslogtreecommitdiffstats
path: root/devel
diff options
context:
space:
mode:
authormarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2010-05-09 01:04:45 +0800
committermarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2010-05-09 01:04:45 +0800
commit05ccd39c97f808674571f03e6e65da66870d0b45 (patch)
tree25827769cec33203027866159dc88e7881c309a1 /devel
parente09fd884b58d6f5f7418bcdfb0563c9068715856 (diff)
downloadmarcuscom-ports-05ccd39c97f808674571f03e6e65da66870d0b45.tar.gz
marcuscom-ports-05ccd39c97f808674571f03e6e65da66870d0b45.tar.zst
marcuscom-ports-05ccd39c97f808674571f03e6e65da66870d0b45.zip
Do not import installed modules when building seed.
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@14130 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'devel')
-rw-r--r--devel/seed/Makefile14
-rw-r--r--devel/seed/files/Seed.js203
2 files changed, 216 insertions, 1 deletions
diff --git a/devel/seed/Makefile b/devel/seed/Makefile
index 97febf2da..5eb213383 100644
--- a/devel/seed/Makefile
+++ b/devel/seed/Makefile
@@ -3,7 +3,10 @@
# Whom: Alexander Logvinov <avl@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/devel/seed/Makefile,v 1.17 2010/02/24 00:54:09 ahze Exp $
+# $MCom: ports/devel/seed/Makefile,v 1.18 2010/03/29 04:29:13 avl Exp $
+#
+# NOTE: It may be necessary to update ${FILESDIR}/Seed.js on each release.
+# To do that, just replace imports.searchPaths with "." and ".." elements.
#
PORTNAME= seed
@@ -53,4 +56,13 @@ post-patch:
${WRKSRC}/Makefile.in
.endif
+pre-build:
+ cd ${WRKSRC}/extensions && ${SETENV} ${MAKE_ENV} ${GMAKE} \
+ ${MAKE_FLAGS} Makefile ${MAKE_ARGS} all
+ ${CP} ${WRKSRC}/extensions/Seed.js ${WRKSRC}/extensions/Seed.js.sav
+ ${CP} ${FILESDIR}/Seed.js ${WRKSRC}/extensions/Seed.js
+
+post-build:
+ ${CP} ${WRKSRC}/extensions/Seed.js.sav ${WRKSRC}/extensions/Seed.js
+
.include <bsd.port.post.mk>
diff --git a/devel/seed/files/Seed.js b/devel/seed/files/Seed.js
new file mode 100644
index 000000000..9edb12c87
--- /dev/null
+++ b/devel/seed/files/Seed.js
@@ -0,0 +1,203 @@
+GLib = imports.gi.GLib;
+
+Seed.sprintf = function ()
+{
+ if (typeof arguments == "undefined") { return null; }
+ if (arguments.length < 1) { return null; }
+ if (typeof arguments[0] != "string") { return null; }
+ if (typeof RegExp == "undefined") { return null; }
+
+ var string = arguments[0];
+ var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);
+ var matches = new Array();
+ var strings = new Array();
+ var convCount = 0;
+ var stringPosStart = 0;
+ var stringPosEnd = 0;
+ var matchPosEnd = 0;
+ var newString = '';
+ var match = null;
+
+ while (match = exp.exec(string)) {
+ if (match[9]) { convCount += 1; }
+
+ stringPosStart = matchPosEnd;
+ stringPosEnd = exp.lastIndex - match[0].length;
+ strings[strings.length] = string.substring(stringPosStart, stringPosEnd);
+
+ matchPosEnd = exp.lastIndex;
+ matches[matches.length] = {
+ match: match[0],
+ left: match[3] ? true : false,
+ sign: match[4] || '',
+ pad: match[5] || ' ',
+ min: match[6] || 0,
+ precision: match[8],
+ code: match[9] || '%',
+ negative: parseInt(arguments[convCount]) < 0 ? true : false,
+ argument: String(arguments[convCount])
+ };
+ }
+ strings[strings.length] = string.substring(matchPosEnd);
+
+ if (matches.length == 0) { return string; }
+ if ((arguments.length - 1) < convCount) { return null; }
+
+ var code = null;
+ var match = null;
+ var i = null;
+
+ for (i=0; i<matches.length; i++) {
+
+ if (matches[i].code == '%') { substitution = '%' }
+ else if (matches[i].code == 'b') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));
+ substitution = Seed.sprintf.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'c') {
+ matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));
+ substitution = Seed.sprintf.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'd') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 'f') {
+ matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 'o') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 's') {
+ matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)
+ substitution = Seed.sprintf.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'x') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 'X') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+ substitution = Seed.sprintf.convert(matches[i]).toUpperCase();
+ }
+ else {
+ substitution = matches[i].match;
+ }
+
+ newString += strings[i];
+ newString += substitution;
+
+ }
+ newString += strings[i];
+
+ return newString;
+
+};
+
+Seed.sprintf.convert = function(match, nosign)
+{
+ if (nosign) {
+ match.sign = '';
+ } else {
+ match.sign = match.negative ? '-' : match.sign;
+ }
+ var l = match.min - match.argument.length + 1 - match.sign.length;
+ var pad = new Array(l < 0 ? 0 : l).join(match.pad);
+ if (!match.left) {
+ if (match.pad == "0" || nosign) {
+ return match.sign + pad + match.argument;
+ } else {
+ return pad + match.sign + match.argument;
+ }
+ } else {
+ if (match.pad == "0" || nosign) {
+ return match.sign + match.argument + pad.replace(/0/g, ' ');
+ } else {
+ return match.sign + match.argument + pad;
+ }
+ }
+};
+
+
+Seed.repl = function()
+{
+ try
+ {
+ if(readline)
+ {
+ // readline is loaded
+ }
+ }
+ catch (e)
+ {
+ try
+ {
+ readline = imports.readline;
+ }
+ catch (e)
+ {
+ print(e.name + " " + e.message);
+ return true;
+ }
+ }
+
+ try
+ {
+ item = readline.readline("> ");
+ if (item == "continue")
+ return false;
+ print(eval(item));
+ }
+ catch (e)
+ {
+ print(e.name + " " + e.message);
+ }
+ return true;
+}
+
+
+Seed.glib_repl = function()
+{
+ GLib.idle_add(Seed.repl, null);
+}
+
+Seed.thread_repl = function()
+{
+ GLib.thread_create_full(function() { while(Seed.repl()){} },
+ null, 0, true);
+}
+
+Seed.printf = function () { print(Seed.sprintf.apply(this, arguments)) };
+
+if(!imports.searchPath || (imports.searchPath.length == 0))
+{
+ imports.searchPath = [ ".",
+ ".." ];
+
+ if(Seed.argv.length > 1)
+ {
+ __script_path__ = GLib.path_get_dirname(Seed.argv[1]);
+
+ try
+ {
+ if(!GLib.path_is_absolute(__script_path__))
+ {
+ __script_path__ = GLib.build_filenamev([GLib.get_current_dir(),
+ __script_path__]);
+ }
+
+ __script_path__ = imports.os.realpath(__script_path__);
+
+ if(__script_path__ && __script_path__ != "")
+ imports.searchPath.push(__script_path__);
+ }
+ catch(e)
+ {
+ print(imports.JSON.stringify(e));
+ }
+ }
+
+ imports.searchPath.push(".");
+}