From svn w toxygen.net Sat Jul 4 01:13:33 2009 From: svn w toxygen.net (SVN commit) Date: Sat, 4 Jul 2009 01:13:33 +0200 (CEST) Subject: [ekg2-commit] r4831 - trunk/plugins/jabber: trunk/plugins/jabber/commands.c Message-ID: <20090703231333.27D2617B4D@toxygen.net> Author: darkjames Date: 2009-07-04 01:13:32 +0200 (Sat, 04 Jul 2009) New Revision: 4831 Modified: trunk/plugins/jabber/commands.c Log: Remove meaningless whitespaces. Modified: trunk/plugins/jabber/commands.c =================================================================== --- trunk/plugins/jabber/commands.c 2009-06-25 14:03:59 UTC (rev 4830) +++ trunk/plugins/jabber/commands.c 2009-07-03 23:13:32 UTC (rev 4831) @@ -1927,7 +1927,7 @@ return -1; } - status = (params[0] && params[1]) ? saprintf(" %s ", params[1]) : NULL; + status = (params[0] && params[1]) ? saprintf("%s", params[1]) : NULL; watch_write(j->send_watch, "%s", c->name+5, c->priv_data, status ? status : ""); From svn w toxygen.net Mon Jul 6 16:39:24 2009 From: svn w toxygen.net (SVN commit) Date: Mon, 6 Jul 2009 16:39:24 +0200 (CEST) Subject: [ekg2-commit] r4832 - trunk/plugins/jabber: trunk/plugins/jabber/commands-en.txt trunk/plugins/jabber/commands-pl.txt Message-ID: <20090706143924.6FA3F17B45@toxygen.net> Author: darkjames Date: 2009-07-06 16:39:23 +0200 (Mon, 06 Jul 2009) New Revision: 4832 Modified: trunk/plugins/jabber/commands-en.txt trunk/plugins/jabber/commands-pl.txt Log: >From Paweł Zuzelski: - fix mess after my previous patch (confusion around [] <>, typos in english version) - add description of /xmpp:join & /xmpp:part Modified: trunk/plugins/jabber/commands-en.txt =================================================================== --- trunk/plugins/jabber/commands-en.txt 2009-07-03 23:13:32 UTC (rev 4831) +++ trunk/plugins/jabber/commands-en.txt 2009-07-06 14:39:23 UTC (rev 4832) @@ -50,11 +50,11 @@ Giving ,,%T-%n'' instead of description will clear description. ban - parameters: [channel] - short description: Bans the specified JID from the given channel + parameters: [reason] + short description: Bans the specified JID from the given conference If no JID is specified, command lists all jids banned from given - channel. Otherwise it bans specified JID from the given channel. + conference. Otherwise it bans specified JID from the given conference. change parameters: @@ -90,18 +90,18 @@ short description: removes user from roster deop - parameters: [channel] [nick] + parameters: short description: take all privileges off from the nick - Take voice and moderator privilages off from the gicen nick on the - given channel. + Take voice and moderator privilages off from the given nick on the + given conference. devoice - parameters: [channel] [nick] + parameters: [reason] short description: take all privileges off from the nick - Take voice and moderator privilages off from the gicen nick on the - given channel. + Take voice and moderator privilages off from the given nick on the + given conference. disconnect parameters: [description/-] @@ -131,9 +131,15 @@ If description wasn't given, random description will be looked for. Giving ,,%T-%n'' instead of description will clear description. +join + parameters: [nick] + short description: join conference + + Joins conference as nick. If conference does not exists, creates it. + kick - parameters: - short description: kick nick off the channel + parameters: [reason] + short description: kick nick off the conference lastseen parameters: @@ -156,13 +162,17 @@ -n, --nickname contact nickname op - parameters: + parameters: short description: Gives moderator privileges to the specified nick passwd parameters: short description: changes password +part + parameters: + short descrition: leaves conference + reconnect parameters: short description: disconnects and connects again @@ -186,8 +196,8 @@ short description: set MUC topic unban - parameters: [channel] [JID] - short description: unban given JID from the muc channel + parameters: + short description: unban given JID from the muc conference userinfo parameters: @@ -215,10 +225,10 @@ short description: retrieves information about OS and client of given jid voice - parameters: + parameters: short description: give the voice to the nick - Voice allows to speak on moderated channel. Note that if you give + Voice allows to speak on moderated conference. Note that if you give voice to operator, you will take off moderator privileges from him. xa Modified: trunk/plugins/jabber/commands-pl.txt =================================================================== --- trunk/plugins/jabber/commands-pl.txt 2009-07-03 23:13:32 UTC (rev 4831) +++ trunk/plugins/jabber/commands-pl.txt 2009-07-06 14:39:23 UTC (rev 4832) @@ -50,7 +50,7 @@ Podanie ,,%T-%n'' zamiast powodu spowoduje wyczyszczenie opisu. ban - parametry: [JID] + parametry: [powód] krotki opis: banuje JID z kanału lub wyświetla listę banów Jeżeli nie podano JID wyświetla listę zbanowanych uzytkowników. @@ -167,6 +167,14 @@ Jeżeli nie podano opisu to będzie szukany losowy opis. Podanie ,,%T-%n'' zamiast powodu spowoduje wyczyszczenie opisu. +join + parametry: [nick] + krotki opis: przyłącza do konferencji + + Przyłącza do konferencji. Jeżeli podana konferencja nie istnieje, + zakłada nową konferencję. Opcjonalnie ustawia nick użytkownika w + konferencji. + lastseen parametry: krotki opis: pobiera informację o czasie wylogowania się danego jid @@ -188,9 +196,13 @@ -n, --nickname wpis w liście kontaktów op - parametry: [kanał] [nick] + parametry: krotki opis: nadaje nickowi uprawnienia moderatora +part + parametry: + krotki opis: opuszcza konferencję + passwd parametry: krotki opis: zmienia hasło @@ -261,7 +273,7 @@ krotki opis: ustawia topic MUC unban - parametry: [kanał] [JID] + parametry: krotki opis: zdejmuje ban na dany JID z kanału Jeżeli nie podano JID wyświetla listę zbanowanych uzytkowników. @@ -276,11 +288,11 @@ krotki opis: pobiera informację o sytemie operacyjnym i wersji klienta Jabbera danego jid voice - parametry: [kanał] [nick] + parametry: krotki opis: daje "głos" nickowi - Nadaje użytkownikowi uprawnienia do mówienia na kanale nawet jeśli - kanał jest moderowany. + Nadaje użytkownikowi uprawnienia do wysyłania wiadomości w + konferencji, nawet jeśli konferencja jest moderowana. Uwaga: ustawienie voice na uzytkowniku będącym moderatorem spowoduje odebraniu mu praw administratora. From svn w toxygen.net Mon Jul 6 19:12:09 2009 From: svn w toxygen.net (SVN commit) Date: Mon, 6 Jul 2009 19:12:09 +0200 (CEST) Subject: [ekg2-commit] r4833 - trunk/ekg: trunk/ekg/net.c trunk/ekg/net.h Message-ID: <20090706171209.8A3A017B4D@toxygen.net> Author: darkjames Date: 2009-07-06 19:12:09 +0200 (Mon, 06 Jul 2009) New Revision: 4833 Modified: trunk/ekg/net.c trunk/ekg/net.h Log: Remove ekg_resolver3() code. not putting into _unused.c because it's really obsolete. Modified: trunk/ekg/net.c =================================================================== --- trunk/ekg/net.c 2009-07-06 14:39:23 UTC (rev 4832) +++ trunk/ekg/net.c 2009-07-06 17:12:09 UTC (rev 4833) @@ -115,7 +115,7 @@ return defport; } -/* this is basicaly ekg_resolver3, +/* * with main part changed * * proto_port is used for srv resolver, since e.g. @@ -603,132 +603,3 @@ return watch_add(plugin, fd[0], WATCH_READ, async, data); } -#if 0 -static int irc_resolver2(char ***arr, const char *hostname, const int port, const int proto) { -#ifdef HAVE_GETADDRINFO - struct addrinfo *ai, *aitmp, hint; -#else -# warning "resolver: You don't have getaddrinfo(), resolver may not work! (ipv6 for sure)" - struct hostent *he4; -#endif - -#ifdef HAVE_GETADDRINFO - memset(&hint, 0, sizeof(struct addrinfo)); - hint.ai_socktype = SOCK_STREAM; - - if (!getaddrinfo(hostname, NULL, &hint, &ai)) { - for (aitmp = ai; aitmp; aitmp = aitmp->ai_next) { - char *ip; - - if (aitmp->ai_family != AF_INET6 && aitmp->ai_family != AF_INET) - continue; - - ip = ekg_inet_ntostr(aitmp->ai_family, &((struct sockaddr_in *)aitmp->ai_addr)->sin_addr); - array_add(arr, saprintf("%s %s %d %d\n", hostname, ip, aitmp->ai_family, port)); - xfree(ip); - } - freeaddrinfo(ai); - } -#else - if ((he4 = gethostbyname(hostname))) { - /* copied from http://webcvs.ekg2.org/ekg2/plugins/irc/irc.c.diff?r1=1.79&r2=1.80 OLD RESOLVER VERSION... - * .. huh, it was 8 months ago..*/ - array_add(arr, saprintf("%s %s %d %d\n", hostname, inet_ntoa(*(struct in_addr *) he4->h_addr), AF_INET, port)); - } else array_add(arr, saprintf("%s : no_host_get_addrinfo()\n", hostname)); -#endif - - return 0; -} - -/* - * ekg_resolver3() - * - * Resolver copied from irc plugin, - * it uses getaddrinfo() [or gethostbyname() if you don't have getaddrinfo] - * - * - async - watch handler. - * - data - watch data handler. - * - port - default port (used also to build SRV hostname - * - proto - proto (used with SRV), if 0 then defaults to TCP - * - * in @a async watch you'll recv lines: - * HOSTNAME IPv4 PF_INET port - * HOSTNAME IPv4 PF_INET port - * HOSTNAME IPv6 PF_INET6 port - * .... - * EOR means end of resolving, you should return -1 (temporary watch) and in type == 1 close fd. - * - * port may be 0 if no port specified - * - * NOTE, EKG2-RESOLVER-API IS NOT STABLE. - * IT'S JUST COPY-PASTE OF SOME FUNCTION FROM OTHER PLUGINS, TO AVOID DUPLICATION OF CODE (ALSO CLEANUP CODE A LITTLE) - * AND TO AVOID REGRESSION. - * THX. - */ - -watch_t *ekg_resolver3(plugin_t *plugin, const char *server, watcher_handler_func_t async, void *data, const int port, const int proto) { - int res, fd[2]; - - debug("ekg_resolver3() resolving: %s\n", server); - - if (pipe(fd) == -1) - return NULL; - - debug("ekg_resolver3() resolver pipes = { %d, %d }\n", fd[0], fd[1]); - - if ((res = fork()) == -1) { - int errno2 = errno; - - close(fd[0]); - close(fd[1]); - - errno = errno2; - return NULL; - } - - if (!res) { - char *tmp = xstrdup(server); - const int sport = ekg_resolver_split(tmp, port); - - /* Child */ - close(fd[0]); - - if (tmp) { - char *tmp1 = tmp, *tmp2; - char **arr = NULL; - - /* G->dj: I'm changing order, because - * we should connect first to first specified host from list... - * Yeah I know code look worse ;) - */ - do { - if ((tmp2 = xstrchr(tmp1, ','))) *tmp2 = '\0'; - irc_resolver2(&arr, tmp1, port, proto); - tmp1 = tmp2+1; - } while (tmp2); - - tmp2 = array_join(arr, NULL); - array_free(arr); - - write(fd[1], tmp2, xstrlen(tmp2)); - write(fd[1], "EOR\n", 4); - - sleep(3); - - close(fd[1]); - xfree(tmp2); - } - xfree(tmp); - exit(0); - } - - /* parent */ - close(fd[1]); - - /* XXX dodac dzieciaka do przegladania */ - return watch_add_line(plugin, fd[0], WATCH_READ_LINE, async, data); -} - - - -#endif Modified: trunk/ekg/net.h =================================================================== --- trunk/ekg/net.h 2009-07-06 14:39:23 UTC (rev 4832) +++ trunk/ekg/net.h 2009-07-06 17:12:09 UTC (rev 4833) @@ -34,7 +34,6 @@ #endif watch_t *ekg_resolver2(plugin_t *plugin, const char *server, watcher_handler_func_t async, void *data); -watch_t *ekg_resolver3(plugin_t *plugin, const char *server, watcher_handler_func_t async, void *data, const int port, const int proto); watch_t *ekg_resolver4(plugin_t *plugin, const char *server, watcher_handler_func_t async, void *data, const int proto_port, const int port, const int proto); watch_t *ekg_connect(session_t *session, const char *server, const int proto_port, const int port, watcher_handler_func_t async); From svn w toxygen.net Wed Jul 22 12:29:23 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 12:29:23 +0200 (CEST) Subject: [ekg2-commit] r4834 - trunk/scons.d: trunk/scons.d/oracle Message-ID: <20090722102923.D1D1517B45@toxygen.net> Author: peres Date: 2009-07-22 12:29:23 +0200 (Wed, 22 Jul 2009) New Revision: 4834 Modified: trunk/scons.d/oracle Log: That should be ORACLE_HOME, not ORACLEHOME. Modified: trunk/scons.d/oracle =================================================================== --- trunk/scons.d/oracle 2009-07-06 17:12:09 UTC (rev 4833) +++ trunk/scons.d/oracle 2009-07-22 10:29:23 UTC (rev 4834) @@ -5,8 +5,8 @@ Import('*') -if 'ORACLEHOME' in os.environ: - orhome = os.environ['ORACLEHOME'] +if 'ORACLE_HOME' in os.environ: + orhome = os.environ['ORACLE_HOME'] flags.append('-L%s/lib' % orhome) flags.append('-I%s/rdbms/public' % orhome) @@ -18,7 +18,7 @@ RestoreFlags(env, old) else: - print '[oracle] ${ORACLEHOME} not defined.' + print '[oracle] ${ORACLE_HOME} not defined.' out = False Return('out') From svn w toxygen.net Wed Jul 22 12:49:59 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 12:49:59 +0200 (CEST) Subject: [ekg2-commit] r4835 - trunk/plugins/logsoracle: trunk/plugins/logsoracle/main.c trunk/plugins/logsoracle/oralog.c Message-ID: <20090722104959.A2D0F17B45@toxygen.net> Author: peres Date: 2009-07-22 12:49:59 +0200 (Wed, 22 Jul 2009) New Revision: 4835 Modified: trunk/plugins/logsoracle/main.c trunk/plugins/logsoracle/oralog.c Log: Fix logsoracle compilation. Modified: trunk/plugins/logsoracle/main.c =================================================================== --- trunk/plugins/logsoracle/main.c 2009-07-22 10:29:23 UTC (rev 4834) +++ trunk/plugins/logsoracle/main.c 2009-07-22 10:49:59 UTC (rev 4835) @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -225,7 +226,7 @@ } if(status_n) { - status = xstrdup(ekg_status_string(status, 0)); + status = xstrdup(ekg_status_string(status_n, 0)); } else { status = xstrdup(EMPTY_STATUS); } Modified: trunk/plugins/logsoracle/oralog.c =================================================================== --- trunk/plugins/logsoracle/oralog.c 2009-07-22 10:29:23 UTC (rev 4834) +++ trunk/plugins/logsoracle/oralog.c 2009-07-22 10:49:59 UTC (rev 4835) @@ -42,6 +42,7 @@ #include #include #include +#include #include From svn w toxygen.net Wed Jul 22 12:50:26 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 12:50:26 +0200 (CEST) Subject: [ekg2-commit] r4836 - trunk/scons.d: trunk/scons.d/oracle Message-ID: <20090722105026.83C4017B45@toxygen.net> Author: peres Date: 2009-07-22 12:50:26 +0200 (Wed, 22 Jul 2009) New Revision: 4836 Modified: trunk/scons.d/oracle Log: Fix finding logsoracle. Modified: trunk/scons.d/oracle =================================================================== --- trunk/scons.d/oracle 2009-07-22 10:49:59 UTC (rev 4835) +++ trunk/scons.d/oracle 2009-07-22 10:50:26 UTC (rev 4836) @@ -1,5 +1,5 @@ -# oracle (need testing) +# oracle import os @@ -12,7 +12,7 @@ old = SetFlags(env, flags) - out = conf.CheckLib('clntsh', 'sqlcxt', ['oci.h'], None, 0) + out = conf.CheckLibWithHeader('clntsh', ['oci.h'], 'C', 'sqlcxt();', 0) if out: libs.append('clntsh') From svn w toxygen.net Wed Jul 22 16:13:58 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 16:13:58 +0200 (CEST) Subject: [ekg2-commit] r4837 - in trunk: . scons.d: trunk/SConstruct trunk/scons.d/compat Message-ID: <20090722141358.AF3F417B44@toxygen.net> Author: peres Date: 2009-07-22 16:13:58 +0200 (Wed, 22 Jul 2009) New Revision: 4837 Modified: trunk/SConstruct trunk/scons.d/compat Log: Support SKIPCONF to allow calling separate configure phase. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-22 10:50:26 UTC (rev 4836) +++ trunk/SConstruct 2009-07-22 14:13:58 UTC (rev 4837) @@ -38,7 +38,7 @@ plugin_states = ['all', 'nocompile', 'deprecated', 'unknown', 'experimental', 'def', 'unstable', 'stable', 'none'] plugin_symbols = ['', '!', '!', '?', '*', '', '~', '', ''] -import glob, subprocess, codecs, os, os.path, sys, SCons +import glob, subprocess, codecs, os, os.path, sys, cPickle, SCons def writedef(definefile, var, val): """ Write define to definefile, choosing correct format. """ @@ -216,6 +216,7 @@ opts.Add(BoolOption('IDN', 'Support Internation Domain Names if libidn is found', True)) opts.Add(BoolOption('NLS', 'Enable l10n in core (requires gettext)', True)) opts.Add(BoolOption('STATIC', 'Whether to build static plugins instead of shared', 0)) +opts.Add(BoolOption('SKIPCONF', 'Restore previous environment and skip configure if possible', False)) opts.Add(EnumOption('DEBUG', 'Internal debug level', 'std', ['none', 'std', 'stderr'])) opts.Add('DISTNOTES', 'Additional info to /version for use with distributed packages') @@ -293,206 +294,246 @@ env.MergeFlags(flags) env.Append(LINKFLAGS = linkflags) -conf = env.Configure(custom_tests = { - 'CheckStructMember': CheckStructMember, - 'PkgConfig': PkgConfig, - 'External': StupidPythonExec - }) -ekg_libs = [] -ekg_staticlibs = [] +if env['SKIPCONF']: + try: + conff = open('env.cache', 'r') + try: + confd = cPickle.load(conff) + finally: + conff.close() + except (IOError, EOFError, cPickle.UnpicklingError): + print '! SKIPCONF requested but no saved conf found' + env['SKIPCONF'] = False + else: + # allow defines to be replaced + for k, v in defines.items(): + confd['defines'][k] = v + # and load environment + for k, v in confd.items(): + globals()[k] = v -ExtTest('standard', ['ekg_libs']) -ExtTest('compat', ['ekg_staticlibs']) +if not env['SKIPCONF']: + conf = env.Configure(custom_tests = { + 'CheckStructMember': CheckStructMember, + 'PkgConfig': PkgConfig, + 'External': StupidPythonExec + }) + ekg_libs = [] + ekg_staticlibs = [] + ekg_compat = [] -plugin_def = { - 'type': 'misc', - 'state': 'unknown', - 'depends': [], - 'optdepends': [], - 'extradist': [] - } + ExtTest('standard', ['ekg_libs']) + ExtTest('compat', ['ekg_compat']) -specplugins = env['PLUGINS'] + plugin_def = { + 'type': 'misc', + 'state': 'unknown', + 'depends': [], + 'optdepends': [], + 'extradist': [] + } -plugins_state = plugin_states.index('none') + specplugins = env['PLUGINS'] -for st in reversed(plugin_states): - while '@%s' % st in specplugins: - specplugins.remove('@%s' % st) - plugins_state = plugin_states.index(st) + plugins_state = plugin_states.index('none') -avplugins = {}.fromkeys(avplugins) + for st in reversed(plugin_states): + while '@%s' % st in specplugins: + specplugins.remove('@%s' % st) + plugins_state = plugin_states.index(st) -pl = {} + avplugins = {}.fromkeys(avplugins) -plugins = avplugins -pllist = list(plugins.keys()) -pllist.sort() -for plugin in pllist: - plugpath = 'plugins/%s' % (plugin) - info = SConscript('%s/SConscript' % (plugpath), ['env']) - if not info: - info = plugin_def - else: - for k in plugin_def.keys(): - if not k in info: - info[k] = plugin_def[k] + pl = {} - if plugin_states.index(info['state']) < plugins_state: - if not plugin in specplugins: + plugins = avplugins + pllist = list(plugins.keys()) + pllist.sort() + for plugin in pllist: + plugpath = 'plugins/%s' % (plugin) + info = SConscript('%s/SConscript' % (plugpath), ['env']) + if not info: + info = plugin_def + else: + for k in plugin_def.keys(): + if not k in info: + info[k] = plugin_def[k] + + if plugin_states.index(info['state']) < plugins_state: + if not plugin in specplugins: + del plugins[plugin] + continue + elif '-%s' % plugin in specplugins and not plugin in specplugins: del plugins[plugin] continue - elif '-%s' % plugin in specplugins and not plugin in specplugins: - del plugins[plugin] - continue - if 'nocompile' in info: - del plugins[plugin] - print '[%s] Disabling due to build system incompatibility.' % (plugin) - continue + if 'nocompile' in info: + del plugins[plugin] + print '[%s] Disabling due to build system incompatibility.' % (plugin) + continue - optdeps = [] - xlibs = [] - xflags = [] + optdeps = [] + xlibs = [] + xflags = [] - for dep in info['depends'] + info['optdepends']: - isopt = dep in info['optdepends'] + for dep in info['depends'] + info['optdepends']: + isopt = dep in info['optdepends'] - if not isinstance(dep, list): - dep = [dep] - try: - prefs = env['%s_DEPS' % plugin.upper()] - except KeyError: - prefs = [] + if not isinstance(dep, list): + dep = [dep] + try: + prefs = env['%s_DEPS' % plugin.upper()] + except KeyError: + prefs = [] - for a in prefs: - if a[0] == '-': - pass - elif a[0] == '+': - if '-%s' % a[1:] in prefs: - raise ValueError('More than one variant of depend %s specified (%s and -%s)' % (a[1:],a,a[1:])) - else: - if '-%s' % a in prefs or '+%s' % a in prefs: - raise ValueError('More than one variant of depend %s specified (%s, +%s and/or -%s)' % (a,a,a,a)) + for a in prefs: + if a[0] == '-': + pass + elif a[0] == '+': + if '-%s' % a[1:] in prefs: + raise ValueError('More than one variant of depend %s specified (%s and -%s)' % (a[1:],a,a[1:])) + else: + if '-%s' % a in prefs or '+%s' % a in prefs: + raise ValueError('More than one variant of depend %s specified (%s, +%s and/or -%s)' % (a,a,a,a)) - forced = False - have_it = True # if empty set is given, don't complain - sdep = [] - for xdep in dep: - if '+%s' % xdep in prefs: # if user forces dep, then forget about the rest - for a in dep: - if a != xdep and '+%s' % a in prefs: - raise ValueError('More than one exclusive dependency forced (%s and %s)' % (xdep, a)) - forced = True - sdep = [xdep] - break - elif xdep in prefs: # if he prefers it, place it before others - sdep.append(xdep) - if not forced: + forced = False + have_it = True # if empty set is given, don't complain + sdep = [] for xdep in dep: - if not xdep in sdep and not '-%s' % xdep in prefs: # and rest of possibilities + if '+%s' % xdep in prefs: # if user forces dep, then forget about the rest + for a in dep: + if a != xdep and '+%s' % a in prefs: + raise ValueError('More than one exclusive dependency forced (%s and %s)' % (xdep, a)) + forced = True + sdep = [xdep] + break + elif xdep in prefs: # if he prefers it, place it before others sdep.append(xdep) + if not forced: + for xdep in dep: + if not xdep in sdep and not '-%s' % xdep in prefs: # and rest of possibilities + sdep.append(xdep) - for xdep in sdep: # 'flags' will be nicely split by SCons, but 'libs' are nicer to write - libs = [] - flags = [] + for xdep in sdep: # 'flags' will be nicely split by SCons, but 'libs' are nicer to write + libs = [] + flags = [] - have_it = ExtTest(xdep, ['libs', 'flags']) - if have_it: - if isopt or len(dep) > 1: # pretty-print optional and selected required (if more than one possibility) - optdeps.append('%s' % (xdep)) + have_it = ExtTest(xdep, ['libs', 'flags']) + if have_it: + if isopt or len(dep) > 1: # pretty-print optional and selected required (if more than one possibility) + optdeps.append('%s' % (xdep)) - xflags.extend(flags) - xlibs.extend(libs) - break + xflags.extend(flags) + xlibs.extend(libs) + break - if not have_it: - if isopt: - if forced: - print '[%s] User-forced optional dependency not satisfied: %s' % (plugin, sdep) + if not have_it: + if isopt: + if forced: + print '[%s] User-forced optional dependency not satisfied: %s' % (plugin, sdep) + if env['HARDDEPS']: + print 'HARDDEPS specified, aborting.' + sys.exit(1) + info['fail'] = True + break + else: + print '[%s] Optional dependency not satisfied: %s' % (plugin, sdep) + optdeps.append('-%s' % (' -'.join(dep))) + else: + print '[%s] Dependency not satisfied: %s' % (plugin, sdep) if env['HARDDEPS']: print 'HARDDEPS specified, aborting.' sys.exit(1) info['fail'] = True break - else: - print '[%s] Optional dependency not satisfied: %s' % (plugin, sdep) - optdeps.append('-%s' % (' -'.join(dep))) - else: - print '[%s] Dependency not satisfied: %s' % (plugin, sdep) - if env['HARDDEPS']: - print 'HARDDEPS specified, aborting.' - sys.exit(1) - info['fail'] = True - break - if 'fail' in info: - warnings.append("Plugin '%s' disabled due to unsatisfied dependency: %s" % (plugin, sdep)) - del plugins[plugin] - continue + if 'fail' in info: + warnings.append("Plugin '%s' disabled due to unsatisfied dependency: %s" % (plugin, sdep)) + del plugins[plugin] + continue - SConscript('%s/SConscript' % (plugpath), ['defines', 'optdeps']) - plugins[plugin] = { - 'info': info, - 'libs': xlibs, - 'flags': xflags - } + SConscript('%s/SConscript' % (plugpath), ['defines', 'optdeps']) + plugins[plugin] = { + 'info': info, + 'libs': xlibs, + 'flags': xflags + } - type = info['type'] - if not pl.has_key(type): - pl[type] = [] + type = info['type'] + if not pl.has_key(type): + pl[type] = [] - if optdeps: - optdeps = ' [%s]' % (' '.join(optdeps)) - defines['SCONS_NOTES'] += '; %s%s' % (plugin, optdeps) - else: - optdeps = '' + if optdeps: + optdeps = ' [%s]' % (' '.join(optdeps)) + defines['SCONS_NOTES'] += '; %s%s' % (plugin, optdeps) + else: + optdeps = '' - pl[type].append('%s%s%s' % (plugin_symbols[plugin_states.index(info['state'])], plugin, optdeps)) + pl[type].append('%s%s%s' % (plugin_symbols[plugin_states.index(info['state'])], plugin, optdeps)) -# some fancy output + # some fancy output -print -if pl: - print 'Enabled plugins:' - for type, plugs in pl.items(): - print '- %s: %s' % (type, ', '.join(plugs)) print + if pl: + print 'Enabled plugins:' + for type, plugs in pl.items(): + print '- %s: %s' % (type, ', '.join(plugs)) + print - if not 'ui' in pl: - warnings.append('No UI-plugin selected. EKG2 might be unusable to you.') - if not 'protocol' in pl: - warnings.append("No protocol plugin selected. EKG2 won't be instant messenger anymore.") -else: - warnings.append('You are compiling ekg2 without any plugin. Are you sure this is what you mean to do?') + if not 'ui' in pl: + warnings.append('No UI-plugin selected. EKG2 might be unusable to you.') + if not 'protocol' in pl: + warnings.append("No protocol plugin selected. EKG2 won't be instant messenger anymore.") + else: + warnings.append('You are compiling ekg2 without any plugin. Are you sure this is what you mean to do?') -print 'Options:' -print '- unicode: %s' % (env['UNICODE']) -print '- nls: %s' % (defines['ENABLE_NLS']) -print -print 'Paths:' -for k in dirs: - print '- %s: %s' % (k, env[k]) -print -print 'User-specified build environment:' -for k in ['CC', 'CCFLAGS', 'CPPPATH', 'LIBS', 'LINK', 'LINKFLAGS', 'LIBPATH']: + print 'Options:' + print '- unicode: %s' % (env['UNICODE']) + print '- nls: %s' % (defines['ENABLE_NLS']) + print + print 'Paths:' + for k in dirs: + print '- %s: %s' % (k, env[k]) + print + print 'User-specified build environment:' + for k in ['CC', 'CCFLAGS', 'CPPPATH', 'LIBS', 'LINK', 'LINKFLAGS', 'LIBPATH']: + try: + print '- %s: %s' % (k, env[k]) + except KeyError: + pass + print + + if warnings: + print 'Warnings:' + for w in {}.fromkeys(warnings).keys(): + print '- %s' % w.replace('\n', '\n ') + print + + conf.Finish() + try: - print '- %s: %s' % (k, env[k]) - except KeyError: + conff = open('env.cache', 'w') + try: + cPickle.dump({ + 'ekg_libs': ekg_libs, + 'ekg_staticlibs': ekg_staticlibs, + 'ekg_compat': ekg_compat, + 'plugins': plugins, + 'defines': defines + }, conff, cPickle.HIGHEST_PROTOCOL) + finally: + conff.close() + except IOError: pass -print -if warnings: - print 'Warnings:' - for w in {}.fromkeys(warnings).keys(): - print '- %s' % w.replace('\n', '\n ') - print + env['EKG_DEFINES'] = defines + env.Defines('ekg2-config.h', []) + env.AlwaysBuild('ekg2-config.h', 'ekg2-static.c') -conf.Finish() +if ekg_compat: + ekg_staticlibs.append('compat/%scompat%s' % (env['LIBPREFIX'], env['LIBSUFFIX'])) + env.StaticLibrary('compat/compat', ekg_compat) -env['EKG_DEFINES'] = defines -env.Defines('ekg2-config.h', []) -env.AlwaysBuild('ekg2-config.h', 'ekg2-static.c') env.Append(CPPPATH = ['.']) for k in dirs: @@ -501,6 +542,7 @@ docglobs = ['commands*', 'vars*', 'session*'] +env.Alias('conf', 'ekg2-config.h') env.Alias('install', [env['PREFIX'], env['EPREFIX']]) cenv = env.Clone() Modified: trunk/scons.d/compat =================================================================== --- trunk/scons.d/compat 2009-07-22 10:50:26 UTC (rev 4836) +++ trunk/scons.d/compat 2009-07-22 14:13:58 UTC (rev 4837) @@ -9,25 +9,19 @@ 'getopt_long': ['getopt', 'getopt1'] } -compat = [] - for func in compat_funcs: have_it = conf.CheckFunc(func) defines['HAVE_%s' % (func.upper())] = have_it if not have_it: - compat.append('../compat/%s.c' % (func)) + ekg_compat.append('compat/%s.c' % (func)) for func, files in compat_spec.items(): have_it = conf.CheckFunc(func) defines['HAVE_%s' % (func.upper())] = have_it if not have_it: for file in files: - compat.append('../compat/%s.c' % (file)) + ekg_compat.append('compat/%s.c' % (file)) -if compat: - ekg_staticlibs.append('compat/%scompat%s' % (env['LIBPREFIX'], env['LIBSUFFIX'])) - env.StaticLibrary('../compat/compat', compat) - ret = True Return('ret') From svn w toxygen.net Wed Jul 22 16:20:25 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 16:20:25 +0200 (CEST) Subject: [ekg2-commit] r4838 - trunk: trunk/SConstruct Message-ID: <20090722142025.43CC017B40@toxygen.net> Author: peres Date: 2009-07-22 16:20:24 +0200 (Wed, 22 Jul 2009) New Revision: 4838 Modified: trunk/SConstruct Log: Update Copyright. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-22 14:13:58 UTC (rev 4837) +++ trunk/SConstruct 2009-07-22 14:20:24 UTC (rev 4838) @@ -1,7 +1,7 @@ #!/usr/bin/scons # vim:set fileencoding=utf-8 -# Alternate build system for EKG2, unstable and unfinished yet -# (C) 2008 Michał Górny +# Alternate build system for EKG2 +# (C) 2008/09 Michał Górny EnsureSConsVersion(0,97) EnsurePythonVersion(2,4) From svn w toxygen.net Thu Jul 23 01:44:05 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 01:44:05 +0200 (CEST) Subject: [ekg2-commit] r4844 - trunk/remote: -trunk/remote/SConscript Message-ID: <20090722234405.A179117B4E@toxygen.net> Author: peres Date: 2009-07-23 01:44:05 +0200 (Thu, 23 Jul 2009) New Revision: 4844 Removed: trunk/remote/SConscript Log: Not used anymore. Deleted: trunk/remote/SConscript =================================================================== --- trunk/remote/SConscript 2009-07-22 23:17:37 UTC (rev 4843) +++ trunk/remote/SConscript 2009-07-22 23:44:05 UTC (rev 4844) @@ -1,15 +0,0 @@ - -Import('*') - -import glob - -if ekg_compat: - compatlibs = ['../compat/%scompat%s' % (benv['LIBPREFIX'], benv['LIBSUFFIX'])] -else: - compatlibs = [] - -benv.Append(CPPPATH = ['..']) -benv.Program('ekg2-remote', glob.glob('*.c') + compatlibs) -benv.Install(benv['BINDIR'], '%sekg2-remote%s' % (benv['PROGPREFIX'], benv['PROGSUFFIX'])) - -# vim:ts=4:sts=4:sw=4:syntax=python From svn w toxygen.net Thu Jul 23 01:54:14 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 01:54:14 +0200 (CEST) Subject: [ekg2-commit] r4846 - in trunk: . plugins/httprc_xajax plugins/remote: trunk/SConstruct trunk/plugins/httprc_xajax/SConscript trunk/plugins/remote/SConscript Message-ID: <20090722235414.4728117B54@toxygen.net> Author: peres Date: 2009-07-23 01:54:13 +0200 (Thu, 23 Jul 2009) New Revision: 4846 Modified: trunk/SConstruct trunk/plugins/httprc_xajax/SConscript trunk/plugins/remote/SConscript Log: Basic support of building ekg2-remote. What works: * with REMOTE=only, all non-UI plugins are discarded, * unsupported UI plugins are discarded too, * with STATIC=0, all REMOTE variants seem to work, * with STATIC=1, 'no' and 'only' seem to work. What doesn't work: * with STATIC=1, REMOTE=yes: - we've got some target conflicts, - static loader contains all plugins, not only remote ones. I also need to take a look at the way ekg2-remote loads plugins, to see whether it'd be possible to install them in a different directory (to avoid collisions with ekg2). Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-22 23:44:28 UTC (rev 4845) +++ trunk/SConstruct 2009-07-22 23:54:13 UTC (rev 4846) @@ -360,6 +360,11 @@ if not k in info: info[k] = plugin_def[k] + # if we're building remote only, we use only UI plugins + if env['REMOTE'] == 'only' and (info['type'] != 'ui' or 'noremote' in info): + del plugins[plugin] + continue + if plugin_states.index(info['state']) < plugins_state: if not plugin in specplugins: del plugins[plugin] @@ -550,44 +555,7 @@ env.Alias('conf', 'ekg2-config.h') env.Alias('install', [env['PREFIX'], env['EPREFIX']]) -cenv = env.Clone() - -docfiles = [] -for doc in docglobs: - docfiles.extend(glob.glob('docs/%s.txt' % doc)) - -if defines['ENABLE_NLS']: - cenv.CompileMsg('po/', glob.glob('po/*.po')) - for f in glob.glob('po/*.mo'): - lang = str(f)[str(f).rindex('/') + 1:-3] - cenv.InstallAs(target = '%s/%s/LC_MESSAGES/ekg2.mo' % (env['LOCALEDIR'], lang), source = f) - -cenv.Install(env['BINDIR'], 'ekg/%sekg2%s' % (env['PROGPREFIX'], env['PROGSUFFIX'])) -#cenv.Install(env['INCLUDEDIR'], glob.glob('ekg/*.h', 'ekg2-config.h', 'gettext.h')) -cenv.Install(env['DATADIR'], docfiles) -cenv.Install('%s/themes' % env['DATADIR'], glob.glob('contrib/themes/*.theme')) - -adddocs = [elem for elem in glob.glob('docs/*.txt') if not elem in docfiles] -for a in glob.glob('*') + glob.glob('docs/*'): - i = a.find('.') - if i != -1: - b = a[:i] - else: - b = a - i = b.find('/') - if b != -1: - b = b[i + 1:] - - if b.upper() == b: # all uppercase - if a != 'docs/README': # what ekg1 readme does there? O O - adddocs.append(a) - else: - i = b.rfind('.') - if b[i:] == '.txt' and not b in docfiles: - adddocs.append(a) -cenv.Install(env['DOCDIR'], adddocs) - -def InstallMan(pattern): +def InstallMan(env, pattern): for f in glob.glob(pattern): i = f.rindex('.') cat = f[i+1:] @@ -602,10 +570,8 @@ lng = '%s/' % lng fn = '%s/%sman%s/%s' % (env['MANDIR'], lng, cat, fn) - cenv.InstallAs(target = fn, source = f) + env.InstallAs(target = fn, source = f) -InstallMan('docs/ekg2.*[12345678]') - ekg_libpath = [] for plugin, data in plugins.items(): @@ -639,13 +605,70 @@ penv.Install('%s/plugins/%s' % (env['DATADIR'], plugin), docfiles) -if env['STATIC']: - env.StaticLoader('ekg2-static.c', []) - ekg_staticlibs.insert(0, 'ekg2-static.c') # well, it ain't exactly static lib, but no need to panic +if env['REMOTE'] != 'no': + cenv = env.Clone() -cenv.Append(LIBS = ekg_libs) -cenv.Append(LIBPATH = ekg_libpath) -cenv.Append(LINKFLAGS = ['-Wl,--export-dynamic']) -cenv.Program('ekg/ekg2', glob.glob('ekg/*.c') + ekg_staticlibs) + InstallMan(cenv, 'docs/ekg2-remote.*[12345678]') + if env['STATIC']: + env.StaticLoader('ekg2-remote-static.c', []) + ekg_staticlibs.insert(0, 'ekg2-remote-static.c') # well, it ain't exactly static lib, but no need to panic + else: + cenv.Append(LINKFLAGS = ['-Wl,--export-dynamic']) + + cenv.Append(LIBPATH = ekg_libpath) + cenv.Append(LIBS = ekg_libs) + cenv.Program('remote/ekg2-remote', glob.glob('remote/*.c') + ekg_staticlibs) + cenv.Install(env['BINDIR'], 'remote/%sekg2-remote%s' % (env['PROGPREFIX'], env['PROGSUFFIX'])) + +if env['REMOTE'] != 'only': + cenv = env.Clone() + + docfiles = [] + for doc in docglobs: + docfiles.extend(glob.glob('docs/%s.txt' % doc)) + + if defines['ENABLE_NLS']: + cenv.CompileMsg('po/', glob.glob('po/*.po')) + for f in glob.glob('po/*.mo'): + lang = str(f)[str(f).rindex('/') + 1:-3] + cenv.InstallAs(target = '%s/%s/LC_MESSAGES/ekg2.mo' % (env['LOCALEDIR'], lang), source = f) + + #cenv.Install(env['INCLUDEDIR'], glob.glob('ekg/*.h', 'ekg2-config.h', 'gettext.h')) + cenv.Install(env['DATADIR'], docfiles) + cenv.Install('%s/themes' % env['DATADIR'], glob.glob('contrib/themes/*.theme')) + + adddocs = [elem for elem in glob.glob('docs/*.txt') if not elem in docfiles] + for a in glob.glob('*') + glob.glob('docs/*'): + i = a.find('.') + if i != -1: + b = a[:i] + else: + b = a + i = b.find('/') + if b != -1: + b = b[i + 1:] + + if b.upper() == b: # all uppercase + if a != 'docs/README': # what ekg1 readme does there? O O + adddocs.append(a) + else: + i = b.rfind('.') + if b[i:] == '.txt' and not b in docfiles: + adddocs.append(a) + cenv.Install(env['DOCDIR'], adddocs) + + InstallMan(cenv, 'docs/ekg2.*[12345678]') + + if env['STATIC']: + env.StaticLoader('ekg2-static.c', []) + ekg_staticlibs.insert(0, 'ekg2-static.c') # well, it ain't exactly static lib, but no need to panic + else: + cenv.Append(LINKFLAGS = ['-Wl,--export-dynamic']) + + cenv.Append(LIBS = ekg_libs) + cenv.Append(LIBPATH = ekg_libpath) + cenv.Program('ekg/ekg2', glob.glob('ekg/*.c') + ekg_staticlibs) + cenv.Install(env['BINDIR'], 'ekg/%sekg2%s' % (env['PROGPREFIX'], env['PROGSUFFIX'])) + # vim:ts=4:sts=4:sw=4:syntax=python Modified: trunk/plugins/httprc_xajax/SConscript =================================================================== --- trunk/plugins/httprc_xajax/SConscript 2009-07-22 23:44:28 UTC (rev 4845) +++ trunk/plugins/httprc_xajax/SConscript 2009-07-22 23:54:13 UTC (rev 4846) @@ -6,7 +6,8 @@ 'type': 'ui', 'state': 'unstable', 'depends': [], - 'extradist': ['xajax_0.2.4.js', 'ekg2.js', 'ekg2.css'] + 'extradist': ['xajax_0.2.4.js', 'ekg2.js', 'ekg2.css'], + 'noremote': True } Return('plugin') Modified: trunk/plugins/remote/SConscript =================================================================== --- trunk/plugins/remote/SConscript 2009-07-22 23:44:28 UTC (rev 4845) +++ trunk/plugins/remote/SConscript 2009-07-22 23:54:13 UTC (rev 4846) @@ -6,7 +6,8 @@ 'type': 'ui', 'state': 'experimental', 'depends': [], - 'optdepends': [] + 'optdepends': [], + 'noremote': True } Return('plugin') From svn w toxygen.net Wed Jul 22 18:04:14 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 18:04:14 +0200 (CEST) Subject: [ekg2-commit] r4839 - in trunk: . plugins/ioctld: trunk/SConstruct trunk/plugins/ioctld/SConscript Message-ID: <20090722160414.5717F17B40@toxygen.net> Author: peres Date: 2009-07-22 18:04:13 +0200 (Wed, 22 Jul 2009) New Revision: 4839 Modified: trunk/SConstruct trunk/plugins/ioctld/SConscript Log: Support better option setting within plugins. Move IOCTLD_PATH into plugin's SConscript. Enable building of ioctld binary. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-22 14:20:24 UTC (rev 4838) +++ trunk/SConstruct 2009-07-22 16:04:13 UTC (rev 4839) @@ -27,7 +27,6 @@ ['MANDIR', '$DATAROOTDIR/man', 'EKG2 manfiles'], ['DOCDIR', '$DATAROOTDIR/doc/ekg2', 'EKG2 additional documentation'], ['PLUGINDIR', '$LIBDIR/ekg2/plugins', 'EKG2 plugins'], - ['IOCTLD_PATH', '$LIBEXECDIR/ekg2', 'EKG2 ioctld'] ] envs = { 'CCFLAGS': ['CFLAGS', 'Compiler flags'], @@ -215,13 +214,13 @@ opts.Add(BoolOption('RESOLV', 'Use libresolv-based domain resolver with SRV support', True)) opts.Add(BoolOption('IDN', 'Support Internation Domain Names if libidn is found', True)) opts.Add(BoolOption('NLS', 'Enable l10n in core (requires gettext)', True)) -opts.Add(BoolOption('STATIC', 'Whether to build static plugins instead of shared', 0)) +opts.Add(BoolOption('STATIC', 'Whether to build static plugins instead of shared', False)) opts.Add(BoolOption('SKIPCONF', 'Restore previous environment and skip configure if possible', False)) opts.Add(EnumOption('DEBUG', 'Internal debug level', 'std', ['none', 'std', 'stderr'])) opts.Add('DISTNOTES', 'Additional info to /version for use with distributed packages') for p in avplugins: - info = SConscript('plugins/%s/SConscript' % p, ['env', 'opts']) + info = SConscript('plugins/%s/SConscript' % p, ['env', 'opts', 'indirs']) if not info: continue values = [] @@ -345,6 +344,7 @@ avplugins = {}.fromkeys(avplugins) pl = {} + addopts = [] plugins = avplugins pllist = list(plugins.keys()) @@ -452,7 +452,7 @@ del plugins[plugin] continue - SConscript('%s/SConscript' % (plugpath), ['defines', 'optdeps']) + SConscript('%s/SConscript' % (plugpath), ['defines', 'optdeps', 'addopts']) plugins[plugin] = { 'info': info, 'libs': xlibs, @@ -489,7 +489,10 @@ print 'Options:' print '- unicode: %s' % (env['UNICODE']) - print '- nls: %s' % (defines['ENABLE_NLS']) + print '- nls (gettext): %s' % (defines['ENABLE_NLS']) + for d, k in addopts: + print '- %s: %s' % (d, env[k]) + print print 'Paths:' for k in dirs: Modified: trunk/plugins/ioctld/SConscript =================================================================== --- trunk/plugins/ioctld/SConscript 2009-07-22 14:20:24 UTC (rev 4838) +++ trunk/plugins/ioctld/SConscript 2009-07-22 16:04:13 UTC (rev 4839) @@ -1,17 +1,27 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'stable', 'depends': ['ioctld'] # includes } + if 'indirs' in globals(): + indirs.append(['IOCTLD_PATH', '$LIBEXECDIR/ekg2-ioctld', 'EKG2 ioctld']) + if 'opts' in globals(): + opts.Add(BoolOption('IOCTLD_BIN', 'Whether to build ioctld binary', True)) + Return('plugin') +if 'addopts' in globals(): + addopts.append(['ioctld binary', 'IOCTLD_BIN']) + +if 'penv' in globals() and penv['IOCTLD_BIN']: + benv = penv.Clone() + benv.Append(CPPPATH = ['../..']) + benv.Program('ioctld', 'ioctld.c') + benv.InstallAs(benv['IOCTLD_PATH'], '%sioctld%s' % (benv['PROGPREFIX'], benv['PROGSUFFIX'])) + # vim:ts=4:sts=4:sw=4:syntax=python From svn w toxygen.net Wed Jul 22 18:12:33 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 18:12:33 +0200 (CEST) Subject: [ekg2-commit] r4840 - in trunk/plugins: autoresponder dbus dummy feed gg gpg gsm gtk httprc_xajax icq irc jabber jogger logs logsoracle logsqlite mail ncurses oss pcm perl polchat python rc readline remote rivchat rot13 ruby sim sms sniff xmsg xosd: trunk/plugins/autoresponder/SConscript trunk/plugins/dbus/SConscript trunk/plugins/dummy/SConscript trunk/plugins/feed/SConscript trunk/plugins/gg/SConscript trunk/plugins/gpg/SConscript trunk/plugins/gsm/SConscript trunk/plugins/gtk/SConscript trunk/plugins/httprc_xajax/SConscript trunk/plugins/icq/SConscript trunk/plugins/irc/SConscript trunk/plugins/jabber/SConscript trunk/plugins/jogger/SConscript trunk/plugins/logs/SConscript trunk/plugins/logsoracle/SConscript trunk/plugins/logsqlite/SConscript trunk/plugins/mail/SConscript trunk/plugins/ncurses/SConscript trunk/plugins/oss/SConscript trunk/plugins/pcm/SConscript trunk/plugins/perl/SConscript trunk/plugins/polchat/SConscript trunk/plugins/python/SConscript trunk/pl! ugins/rc/SConscript trunk/plugins/readline/SConscript trunk/plugins/remote/SConscript trunk/plugins/rivchat/SConscript trunk/plugins/rot13/SConscript trunk/plugins/ruby/SConscript trunk/plugins/sim/SConscript trunk/plugins/sms/SConscript trunk/plugins/sniff/SConscript trunk/plugins/xmsg/SConscript trunk/plugins/xosd/SConscript Message-ID: <20090722161233.EA3BB17B45@toxygen.net> Author: peres Date: 2009-07-22 18:12:33 +0200 (Wed, 22 Jul 2009) New Revision: 4840 Modified: trunk/plugins/autoresponder/SConscript trunk/plugins/dbus/SConscript trunk/plugins/dummy/SConscript trunk/plugins/feed/SConscript trunk/plugins/gg/SConscript trunk/plugins/gpg/SConscript trunk/plugins/gsm/SConscript trunk/plugins/gtk/SConscript trunk/plugins/httprc_xajax/SConscript trunk/plugins/icq/SConscript trunk/plugins/irc/SConscript trunk/plugins/jabber/SConscript trunk/plugins/jogger/SConscript trunk/plugins/logs/SConscript trunk/plugins/logsoracle/SConscript trunk/plugins/logsqlite/SConscript trunk/plugins/mail/SConscript trunk/plugins/ncurses/SConscript trunk/plugins/oss/SConscript trunk/plugins/pcm/SConscript trunk/plugins/perl/SConscript trunk/plugins/polchat/SConscript trunk/plugins/python/SConscript trunk/plugins/rc/SConscript trunk/plugins/readline/SConscript trunk/plugins/remote/SConscript trunk/plugins/rivchat/SConscript trunk/plugins/rot13/SConscript trunk/plugins/ruby/SConscript trunk/plugins/sim/SConscript trunk/plugins/sms/SConscript trunk/plugins/sniff/SConscript trunk/plugins/xmsg/SConscript trunk/plugins/xosd/SConscript Log: Replace try/except with 'if * in globals()'. Modified: trunk/plugins/autoresponder/SConscript =================================================================== --- trunk/plugins/autoresponder/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/autoresponder/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'stable', Modified: trunk/plugins/dbus/SConscript =================================================================== --- trunk/plugins/dbus/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/dbus/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'experimental', Modified: trunk/plugins/dummy/SConscript =================================================================== --- trunk/plugins/dummy/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/dummy/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'nocompile', # example Modified: trunk/plugins/feed/SConscript =================================================================== --- trunk/plugins/feed/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/feed/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'unstable', Modified: trunk/plugins/gg/SConscript =================================================================== --- trunk/plugins/gg/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/gg/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'stable', Modified: trunk/plugins/gpg/SConscript =================================================================== --- trunk/plugins/gpg/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/gpg/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'crypt', 'state': 'unstable', Modified: trunk/plugins/gsm/SConscript =================================================================== --- trunk/plugins/gsm/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/gsm/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'codec', 'state': 'stable', Modified: trunk/plugins/gtk/SConscript =================================================================== --- trunk/plugins/gtk/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/gtk/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -3,11 +3,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'ui', 'state': 'unstable', @@ -16,11 +12,7 @@ Return('plugin') -try: - penv -except NameError: - pass -else: +if 'penv' in globals(): def InlinePNGGen(target, source, env, for_signature): src = [] for f in source: Modified: trunk/plugins/httprc_xajax/SConscript =================================================================== --- trunk/plugins/httprc_xajax/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/httprc_xajax/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'ui', 'state': 'unstable', Modified: trunk/plugins/icq/SConscript =================================================================== --- trunk/plugins/icq/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/icq/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'experimental', Modified: trunk/plugins/irc/SConscript =================================================================== --- trunk/plugins/irc/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/irc/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'stable', Modified: trunk/plugins/jabber/SConscript =================================================================== --- trunk/plugins/jabber/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/jabber/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,21 +1,13 @@ Import('*') -try: - defines -except NameError: - pass -else: +if 'defines' in globals(): for o in ['gnutls', 'openssl']: if o in optdeps: defines['JABBER_HAVE_%s' % o.upper()] = True break -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'stable', Modified: trunk/plugins/jogger/SConscript =================================================================== --- trunk/plugins/jogger/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/jogger/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'stable', Modified: trunk/plugins/logs/SConscript =================================================================== --- trunk/plugins/logs/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/logs/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'log', 'state': 'stable', Modified: trunk/plugins/logsoracle/SConscript =================================================================== --- trunk/plugins/logsoracle/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/logsoracle/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'log', 'state': 'experimental', Modified: trunk/plugins/logsqlite/SConscript =================================================================== --- trunk/plugins/logsqlite/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/logsqlite/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'log', 'state': 'stable', Modified: trunk/plugins/mail/SConscript =================================================================== --- trunk/plugins/mail/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/mail/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'stable', Modified: trunk/plugins/ncurses/SConscript =================================================================== --- trunk/plugins/ncurses/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/ncurses/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'ui', 'state': 'stable', Modified: trunk/plugins/oss/SConscript =================================================================== --- trunk/plugins/oss/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/oss/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'codec', 'state': 'experimental', Modified: trunk/plugins/pcm/SConscript =================================================================== --- trunk/plugins/pcm/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/pcm/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'codec', 'state': 'stable', Modified: trunk/plugins/perl/SConscript =================================================================== --- trunk/plugins/perl/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/perl/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -3,11 +3,7 @@ import glob -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'scripting', 'state': 'stable', @@ -16,11 +12,7 @@ Return('plugin') -try: - penv -except NameError: - pass -else: +if 'penv' in globals(): penv.Install('%s/scripts/' % penv['DATADIR'], glob.glob('../../contrib/perl/*.pl')) # vim:ts=4:sts=4:sw=4:syntax=python Modified: trunk/plugins/polchat/SConscript =================================================================== --- trunk/plugins/polchat/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/polchat/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'unstable', Modified: trunk/plugins/python/SConscript =================================================================== --- trunk/plugins/python/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/python/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -3,11 +3,7 @@ import glob -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'scripting', 'state': 'stable', @@ -17,11 +13,7 @@ Return('plugin') -try: - penv -except NameError: - pass -else: +if 'penv' in globals(): penv.Install('%s/scripts/' % penv['DATADIR'], glob.glob('../../contrib/python/*.py')) # vim:ts=4:sts=4:sw=4:syntax=python Modified: trunk/plugins/rc/SConscript =================================================================== --- trunk/plugins/rc/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/rc/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'stable', Modified: trunk/plugins/readline/SConscript =================================================================== --- trunk/plugins/readline/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/readline/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'ui', 'state': 'deprecated', Modified: trunk/plugins/remote/SConscript =================================================================== --- trunk/plugins/remote/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/remote/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'ui', 'state': 'experimental', Modified: trunk/plugins/rivchat/SConscript =================================================================== --- trunk/plugins/rivchat/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/rivchat/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'experimental', Modified: trunk/plugins/rot13/SConscript =================================================================== --- trunk/plugins/rot13/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/rot13/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'crypt', 'state': 'stable', Modified: trunk/plugins/ruby/SConscript =================================================================== --- trunk/plugins/ruby/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/ruby/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'scripting', 'state': 'experimental', Modified: trunk/plugins/sim/SConscript =================================================================== --- trunk/plugins/sim/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/sim/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'crypt', 'state': 'stable', Modified: trunk/plugins/sms/SConscript =================================================================== --- trunk/plugins/sms/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/sms/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'stable', Modified: trunk/plugins/sniff/SConscript =================================================================== --- trunk/plugins/sniff/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/sniff/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'experimental', Modified: trunk/plugins/xmsg/SConscript =================================================================== --- trunk/plugins/xmsg/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/xmsg/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'protocol', 'state': 'unstable', Modified: trunk/plugins/xosd/SConscript =================================================================== --- trunk/plugins/xosd/SConscript 2009-07-22 16:04:13 UTC (rev 4839) +++ trunk/plugins/xosd/SConscript 2009-07-22 16:12:33 UTC (rev 4840) @@ -1,11 +1,7 @@ Import('*') -try: - env -except NameError: - pass -else: +if 'env' in globals(): plugin = { 'type': 'misc', 'state': 'deprecated', From svn w toxygen.net Thu Jul 23 01:44:29 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 01:44:29 +0200 (CEST) Subject: [ekg2-commit] r4845 - trunk/remote: trunk/remote/plugins.c Message-ID: <20090722234429.5D3B317B51@toxygen.net> Author: peres Date: 2009-07-23 01:44:28 +0200 (Thu, 23 Jul 2009) New Revision: 4845 Modified: trunk/remote/plugins.c Log: Support static plugins SCons-way. Modified: trunk/remote/plugins.c =================================================================== --- trunk/remote/plugins.c 2009-07-22 23:44:05 UTC (rev 4844) +++ trunk/remote/plugins.c 2009-07-22 23:44:28 UTC (rev 4845) @@ -130,6 +130,7 @@ #endif #ifdef STATIC_LIBS +#ifndef SCONS /* first let's try to load static plugin... */ // extern int readline_plugin_init(int prio); // extern int ncurses_plugin_init(int prio); @@ -139,7 +140,12 @@ if (!strcmp(name, "gtk")) plugin_init = >k_plugin_init; +#else + debug_function("plugin_load(), trying to find static plugin '%s'\n", name); + void *plugin_load_static(const char *name); /* autogenerated by scons */ + plugin_init = plugin_load_static(name); #endif +#endif #ifdef SHARED_LIBS if (!plugin_init) { From svn w toxygen.net Wed Jul 22 18:45:18 2009 From: svn w toxygen.net (SVN commit) Date: Wed, 22 Jul 2009 18:45:18 +0200 (CEST) Subject: [ekg2-commit] r4841 - in trunk: . plugins/remote remote: +trunk/remote/SConscript trunk/SConstruct trunk/plugins/remote/SConscript Message-ID: <20090722164518.726D617B49@toxygen.net> Author: peres Date: 2009-07-22 18:45:18 +0200 (Wed, 22 Jul 2009) New Revision: 4841 Added: trunk/remote/SConscript Modified: trunk/SConstruct trunk/plugins/remote/SConscript Log: Support for building ekg2-remote using SCons. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-22 16:12:33 UTC (rev 4840) +++ trunk/SConstruct 2009-07-22 16:45:18 UTC (rev 4841) @@ -610,7 +610,7 @@ penv.Append(LIBS = data['libs']) penv.MergeFlags(data['flags']) - SConscript('%s/SConscript' % plugpath, ['penv']) + SConscript('%s/SConscript' % plugpath, ['penv', 'ekg_compat', 'ekg_libs', 'ekg_libpath']) libfile = '%s/%s' % (plugpath, plugin) if env['STATIC']: Modified: trunk/plugins/remote/SConscript =================================================================== --- trunk/plugins/remote/SConscript 2009-07-22 16:12:33 UTC (rev 4840) +++ trunk/plugins/remote/SConscript 2009-07-22 16:45:18 UTC (rev 4841) @@ -1,14 +1,31 @@ Import('*') +# All those TLS/SSL things are for the ekg2-remote binary + +if 'defines' in globals(): + for o in ['gnutls', 'openssl']: + if o in optdeps: + defines['REMOTE_WANT_%s' % o.upper()] = True + break + if 'env' in globals(): plugin = { 'type': 'ui', 'state': 'experimental', 'depends': [], - 'optdepends': [] + 'optdepends': [['gnutls', 'openssl']] } + if 'opts' in globals(): + opts.Add(BoolOption('REMOTE_BIN', 'Whether to build ekg2-remote binary', True)) + Return('plugin') +if 'penv' in globals() and penv['REMOTE_BIN']: + benv = penv.Clone() + benv.Append(LIBS = ekg_libs) + benv.Append(LIBPATH = ekg_libpath) + SConscript('../../remote/SConscript', ['benv', 'ekg_compat']) + # vim:ts=4:sts=4:sw=4:syntax=python Added: trunk/remote/SConscript =================================================================== --- trunk/remote/SConscript (rev 0) +++ trunk/remote/SConscript 2009-07-22 16:45:18 UTC (rev 4841) @@ -0,0 +1,15 @@ + +Import('*') + +import glob + +if ekg_compat: + compatlibs = ['../compat/%scompat%s' % (benv['LIBPREFIX'], benv['LIBSUFFIX'])] +else: + compatlibs = [] + +benv.Append(CPPPATH = ['..']) +benv.Program('ekg2-remote', glob.glob('*.c') + compatlibs) +benv.Install(benv['BINDIR'], '%sekg2-remote%s' % (benv['PROGPREFIX'], benv['PROGSUFFIX'])) + +# vim:ts=4:sts=4:sw=4:syntax=python From svn w toxygen.net Thu Jul 23 01:17:37 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 01:17:37 +0200 (CEST) Subject: [ekg2-commit] r4843 - in trunk: . plugins/remote: trunk/SConstruct trunk/plugins/remote/SConscript Message-ID: <20090722231737.E77EF17B4C@toxygen.net> Author: peres Date: 2009-07-23 01:17:37 +0200 (Thu, 23 Jul 2009) New Revision: 4843 Modified: trunk/SConstruct trunk/plugins/remote/SConscript Log: Remove ekg2-remote building code from plugins/remote. By default, install only ekg2 manfiles. Preparations for new ekg2-remote building code. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-22 23:02:54 UTC (rev 4842) +++ trunk/SConstruct 2009-07-22 23:17:37 UTC (rev 4843) @@ -217,6 +217,7 @@ opts.Add(BoolOption('STATIC', 'Whether to build static plugins instead of shared', False)) opts.Add(BoolOption('SKIPCONF', 'Restore previous environment and skip configure if possible', False)) opts.Add(EnumOption('DEBUG', 'Internal debug level', 'std', ['none', 'std', 'stderr'])) +opts.Add(EnumOption('REMOTE', 'Whether to build ekg2-remote', 'no', ['no', 'yes', 'only'])) opts.Add('DISTNOTES', 'Additional info to /version for use with distributed packages') for p in avplugins: @@ -490,6 +491,7 @@ print 'Options:' print '- unicode: %s' % (env['UNICODE']) print '- nls (gettext): %s' % (defines['ENABLE_NLS']) + print '- build ekg2-remote: %s' % (env['REMOTE']) for d, k in addopts: print '- %s: %s' % (d, env[k]) @@ -585,22 +587,25 @@ adddocs.append(a) cenv.Install(env['DOCDIR'], adddocs) -for f in glob.glob('docs/*.[12345678]'): - i = f.rindex('.') - cat = f[i+1:] - j = f.rindex('.', 0, i) - lng = f[j+1:i] - i = f.rindex('/') - fn = f[i + 1:].replace('%s.' % lng, '') +def InstallMan(pattern): + for f in glob.glob(pattern): + i = f.rindex('.') + cat = f[i+1:] + j = f.rindex('.', 0, i) + lng = f[j+1:i] + i = f.rindex('/') + fn = f[i + 1:].replace('%s.' % lng, '') - if lng == 'en': - lng = '' - else: - lng = '%s/' % lng + if lng == 'en': + lng = '' + else: + lng = '%s/' % lng - fn = '%s/%sman%s/%s' % (env['MANDIR'], lng, cat, fn) - cenv.InstallAs(target = fn, source = f) + fn = '%s/%sman%s/%s' % (env['MANDIR'], lng, cat, fn) + cenv.InstallAs(target = fn, source = f) +InstallMan('docs/ekg2.*[12345678]') + ekg_libpath = [] for plugin, data in plugins.items(): @@ -610,7 +615,7 @@ penv.Append(LIBS = data['libs']) penv.MergeFlags(data['flags']) - SConscript('%s/SConscript' % plugpath, ['penv', 'ekg_compat', 'ekg_libs', 'ekg_libpath']) + SConscript('%s/SConscript' % plugpath, ['penv']) libfile = '%s/%s' % (plugpath, plugin) if env['STATIC']: Modified: trunk/plugins/remote/SConscript =================================================================== --- trunk/plugins/remote/SConscript 2009-07-22 23:02:54 UTC (rev 4842) +++ trunk/plugins/remote/SConscript 2009-07-22 23:17:37 UTC (rev 4843) @@ -1,31 +1,14 @@ Import('*') -# All those TLS/SSL things are for the ekg2-remote binary - -if 'defines' in globals(): - for o in ['gnutls', 'openssl']: - if o in optdeps: - defines['REMOTE_WANT_%s' % o.upper()] = True - break - if 'env' in globals(): plugin = { 'type': 'ui', 'state': 'experimental', 'depends': [], - 'optdepends': [['gnutls', 'openssl']] + 'optdepends': [] } - if 'opts' in globals(): - opts.Add(BoolOption('REMOTE_BIN', 'Whether to build ekg2-remote binary', True)) - Return('plugin') -if 'penv' in globals() and penv['REMOTE_BIN']: - benv = penv.Clone() - benv.Append(LIBS = ekg_libs) - benv.Append(LIBPATH = ekg_libpath) - SConscript('../../remote/SConscript', ['benv', 'ekg_compat']) - # vim:ts=4:sts=4:sw=4:syntax=python From svn w toxygen.net Thu Jul 23 01:02:55 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 01:02:55 +0200 (CEST) Subject: [ekg2-commit] r4842 - trunk/plugins/ioctld: trunk/plugins/ioctld/Makefile.am trunk/plugins/ioctld/SConscript trunk/plugins/ioctld/ioctld.c Message-ID: <20090722230255.2CFC017B4A@toxygen.net> Author: peres Date: 2009-07-23 01:02:54 +0200 (Thu, 23 Jul 2009) New Revision: 4842 Modified: trunk/plugins/ioctld/Makefile.am trunk/plugins/ioctld/SConscript trunk/plugins/ioctld/ioctld.c Log: Adding #ifdef to avoiding miscompiling 'ioctld' daemon code into plugin. Hope you won't mind. Modified: trunk/plugins/ioctld/Makefile.am =================================================================== --- trunk/plugins/ioctld/Makefile.am 2009-07-22 16:45:18 UTC (rev 4841) +++ trunk/plugins/ioctld/Makefile.am 2009-07-22 23:02:54 UTC (rev 4842) @@ -7,6 +7,7 @@ override libdir = $(plugindir) libexec_PROGRAMS = ioctld +ioctld_CPPFLAGS = -DIOCTLD_BUILD=1 ioctld_SOURCES = ioctld.c ioctld.h INCLUDES = -DIOCTLD_PATH=\"$(libexecdir)/ioctld\" Modified: trunk/plugins/ioctld/SConscript =================================================================== --- trunk/plugins/ioctld/SConscript 2009-07-22 16:45:18 UTC (rev 4841) +++ trunk/plugins/ioctld/SConscript 2009-07-22 23:02:54 UTC (rev 4842) @@ -20,7 +20,7 @@ if 'penv' in globals() and penv['IOCTLD_BIN']: benv = penv.Clone() - benv.Append(CPPPATH = ['../..']) + benv.Append(CPPPATH = ['../..'], CPPFLAGS = ['-DIOCTLD_BUILD=1']) benv.Program('ioctld', 'ioctld.c') benv.InstallAs(benv['IOCTLD_PATH'], '%sioctld%s' % (benv['PROGPREFIX'], benv['PROGSUFFIX'])) Modified: trunk/plugins/ioctld/ioctld.c =================================================================== --- trunk/plugins/ioctld/ioctld.c 2009-07-22 16:45:18 UTC (rev 4841) +++ trunk/plugins/ioctld/ioctld.c 2009-07-22 23:02:54 UTC (rev 4842) @@ -19,6 +19,8 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifdef IOCTLD_BUILD /* to avoid miscompiling into plugin */ + #ifndef __FreeBSD__ #define _XOPEN_SOURCE 600 #define __EXTENSIONS__ @@ -214,6 +216,8 @@ exit(0); } +#endif + /* * Local Variables: * mode: c From svn w toxygen.net Thu Jul 23 12:07:56 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 12:07:56 +0200 (CEST) Subject: [ekg2-commit] r4847 - trunk: trunk/SConstruct Message-ID: <20090723100756.9AFE317B34@toxygen.net> Author: peres Date: 2009-07-23 12:07:56 +0200 (Thu, 23 Jul 2009) New Revision: 4847 Modified: trunk/SConstruct Log: Don't install plugin docs with ekg2-remote. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-22 23:54:13 UTC (rev 4846) +++ trunk/SConstruct 2009-07-23 10:07:56 UTC (rev 4847) @@ -597,9 +597,11 @@ penv.Install(env['PLUGINDIR'], libfile + env['SHLIBSUFFIX']) docfiles = [] - for doc in docglobs: - docfiles.extend(glob.glob('%s/%s.txt' % (plugpath, doc))) - + # ekg2-remote doesn't use docs + if env['REMOTE'] != 'only': + for doc in docglobs: + docfiles.extend(glob.glob('%s/%s.txt' % (plugpath, doc))) + for f in data['info']['extradist']: docfiles.extend(glob.glob('%s/%s' % (plugpath, f))) From svn w toxygen.net Thu Jul 23 12:23:17 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 12:23:17 +0200 (CEST) Subject: [ekg2-commit] r4848 - trunk: trunk/SConstruct Message-ID: <20090723102317.7F54017B34@toxygen.net> Author: peres Date: 2009-07-23 12:23:17 +0200 (Thu, 23 Jul 2009) New Revision: 4848 Modified: trunk/SConstruct Log: Fix STATIC=1 REMOTE=only. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-23 10:07:56 UTC (rev 4847) +++ trunk/SConstruct 2009-07-23 10:23:17 UTC (rev 4848) @@ -64,7 +64,7 @@ def WriteStatic(target, source, env): """ Write static plugin loader """ - static_inc = open('ekg2-static.c', 'w') + static_inc = open(str(target[0]), 'w') for p in plugins: static_inc.write('extern int %s_plugin_init(int prio);\n' % p) static_inc.write('\nvoid *plugin_load_static(const char *name) {\n') From svn w toxygen.net Thu Jul 23 12:33:42 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 12:33:42 +0200 (CEST) Subject: [ekg2-commit] r4849 - trunk/plugins/ioctld: trunk/plugins/ioctld/SConscript Message-ID: <20090723103342.8153117B34@toxygen.net> Author: peres Date: 2009-07-23 12:33:42 +0200 (Thu, 23 Jul 2009) New Revision: 4849 Modified: trunk/plugins/ioctld/SConscript Log: Add OBJSUFFIX when building ioctld binary to fix STATIC=1. Modified: trunk/plugins/ioctld/SConscript =================================================================== --- trunk/plugins/ioctld/SConscript 2009-07-23 10:23:17 UTC (rev 4848) +++ trunk/plugins/ioctld/SConscript 2009-07-23 10:33:42 UTC (rev 4849) @@ -20,6 +20,7 @@ if 'penv' in globals() and penv['IOCTLD_BIN']: benv = penv.Clone() + benv['OBJSUFFIX'] += 'b' benv.Append(CPPPATH = ['../..'], CPPFLAGS = ['-DIOCTLD_BUILD=1']) benv.Program('ioctld', 'ioctld.c') benv.InstallAs(benv['IOCTLD_PATH'], '%sioctld%s' % (benv['PROGPREFIX'], benv['PROGSUFFIX'])) From svn w toxygen.net Thu Jul 23 12:39:09 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 12:39:09 +0200 (CEST) Subject: [ekg2-commit] r4850 - trunk: trunk/SConstruct Message-ID: <20090723103909.667CA17B34@toxygen.net> Author: peres Date: 2009-07-23 12:39:08 +0200 (Thu, 23 Jul 2009) New Revision: 4850 Modified: trunk/SConstruct Log: Add 'return NULL' to ekg2*-static.c. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-23 10:33:42 UTC (rev 4849) +++ trunk/SConstruct 2009-07-23 10:39:08 UTC (rev 4850) @@ -70,7 +70,7 @@ static_inc.write('\nvoid *plugin_load_static(const char *name) {\n') for p in plugins: static_inc.write('\tif (!xstrcmp(name, "%s")) return &%s_plugin_init;\n' % (p, p)) - static_inc.write('}\n') + static_inc.write('\treturn NULL;\n}\n') static_inc.close() return None From svn w toxygen.net Thu Jul 23 13:17:30 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 13:17:30 +0200 (CEST) Subject: [ekg2-commit] r4851 - trunk: trunk/SConstruct Message-ID: <20090723111730.EA11217B34@toxygen.net> Author: peres Date: 2009-07-23 13:17:30 +0200 (Thu, 23 Jul 2009) New Revision: 4851 Modified: trunk/SConstruct Log: Fix STATIC=1. With REMOTE=yes too. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-23 10:39:08 UTC (rev 4850) +++ trunk/SConstruct 2009-07-23 11:17:30 UTC (rev 4851) @@ -64,11 +64,18 @@ def WriteStatic(target, source, env): """ Write static plugin loader """ + plug = [] + for p in source: + p = str(p).split('/', 3) + if p[0] == 'plugins': + plug.append(p[1]) + static_inc = open(str(target[0]), 'w') - for p in plugins: + static_inc.write('/* autogenerated, do not modify */\n#include \n\n') + for p in plug: static_inc.write('extern int %s_plugin_init(int prio);\n' % p) static_inc.write('\nvoid *plugin_load_static(const char *name) {\n') - for p in plugins: + for p in plug: static_inc.write('\tif (!xstrcmp(name, "%s")) return &%s_plugin_init;\n' % (p, p)) static_inc.write('\treturn NULL;\n}\n') static_inc.close() @@ -459,16 +466,19 @@ continue SConscript('%s/SConscript' % (plugpath), ['defines', 'optdeps', 'addopts']) + + type = info['type'] + if not pl.has_key(type): + pl[type] = [] + plugins[plugin] = { 'info': info, 'libs': xlibs, 'flags': xflags } + if env['REMOTE'] != 'no' and (type != 'ui' or 'noremote' in info): + plugins[plugin]['noremote'] = True - type = info['type'] - if not pl.has_key(type): - pl[type] = [] - if optdeps: optdeps = ' [%s]' % (' '.join(optdeps)) defines['SCONS_NOTES'] += '; %s%s' % (plugin, optdeps) @@ -574,6 +584,9 @@ ekg_libpath = [] +if env['REMOTE'] == 'yes': + ekg_staticlibs_r = list(ekg_staticlibs) + for plugin, data in plugins.items(): plugpath = 'plugins/%s' % (plugin) @@ -591,7 +604,10 @@ ekg_libpath.extend(penv['LIBPATH']) except KeyError: pass - ekg_staticlibs.append('%s/%s%s' % (plugpath, plugin, env['LIBSUFFIX'])) + sl = '%s/%s%s' % (plugpath, plugin, env['LIBSUFFIX']) + ekg_staticlibs.append(sl) + if env['REMOTE'] == 'yes' and 'noremote' not in data: + ekg_staticlibs_r.append(sl) else: penv.SharedLibrary(libfile, glob.glob('%s/*.c' % (plugpath)), LIBPREFIX = '') penv.Install(env['PLUGINDIR'], libfile + env['SHLIBSUFFIX']) @@ -613,14 +629,16 @@ InstallMan(cenv, 'docs/ekg2-remote.*[12345678]') if env['STATIC']: - env.StaticLoader('ekg2-remote-static.c', []) - ekg_staticlibs.insert(0, 'ekg2-remote-static.c') # well, it ain't exactly static lib, but no need to panic + if env['REMOTE'] == 'only': + ekg_staticlibs_r = ekg_staticlibs + env.StaticLoader('ekg2-remote-static.c', ekg_staticlibs_r) + ekg_staticlibs_r.insert(0, 'ekg2-remote-static.c') # well, it ain't exactly static lib, but no need to panic else: cenv.Append(LINKFLAGS = ['-Wl,--export-dynamic']) cenv.Append(LIBPATH = ekg_libpath) cenv.Append(LIBS = ekg_libs) - cenv.Program('remote/ekg2-remote', glob.glob('remote/*.c') + ekg_staticlibs) + cenv.Program('remote/ekg2-remote', glob.glob('remote/*.c') + ekg_staticlibs_r) cenv.Install(env['BINDIR'], 'remote/%sekg2-remote%s' % (env['PROGPREFIX'], env['PROGSUFFIX'])) if env['REMOTE'] != 'only': @@ -663,7 +681,7 @@ InstallMan(cenv, 'docs/ekg2.*[12345678]') if env['STATIC']: - env.StaticLoader('ekg2-static.c', []) + env.StaticLoader('ekg2-static.c', ekg_staticlibs) ekg_staticlibs.insert(0, 'ekg2-static.c') # well, it ain't exactly static lib, but no need to panic else: cenv.Append(LINKFLAGS = ['-Wl,--export-dynamic']) From svn w toxygen.net Thu Jul 23 13:23:57 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 13:23:57 +0200 (CEST) Subject: [ekg2-commit] r4852 - trunk: trunk/SConstruct Message-ID: <20090723112357.5D8AA17B34@toxygen.net> Author: peres Date: 2009-07-23 13:23:56 +0200 (Thu, 23 Jul 2009) New Revision: 4852 Modified: trunk/SConstruct Log: Fix shared remote compilation. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-23 11:17:30 UTC (rev 4851) +++ trunk/SConstruct 2009-07-23 11:23:56 UTC (rev 4852) @@ -628,9 +628,9 @@ InstallMan(cenv, 'docs/ekg2-remote.*[12345678]') + if env['REMOTE'] == 'only': + ekg_staticlibs_r = ekg_staticlibs if env['STATIC']: - if env['REMOTE'] == 'only': - ekg_staticlibs_r = ekg_staticlibs env.StaticLoader('ekg2-remote-static.c', ekg_staticlibs_r) ekg_staticlibs_r.insert(0, 'ekg2-remote-static.c') # well, it ain't exactly static lib, but no need to panic else: From svn w toxygen.net Thu Jul 23 14:21:25 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 14:21:25 +0200 (CEST) Subject: [ekg2-commit] r4853 - trunk: trunk/SConstruct Message-ID: <20090723122125.B51E117B34@toxygen.net> Author: peres Date: 2009-07-23 14:21:25 +0200 (Thu, 23 Jul 2009) New Revision: 4853 Modified: trunk/SConstruct Log: Support SSL with ekg2-remote. Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-23 11:23:56 UTC (rev 4852) +++ trunk/SConstruct 2009-07-23 12:21:25 UTC (rev 4853) @@ -225,6 +225,7 @@ opts.Add(BoolOption('SKIPCONF', 'Restore previous environment and skip configure if possible', False)) opts.Add(EnumOption('DEBUG', 'Internal debug level', 'std', ['none', 'std', 'stderr'])) opts.Add(EnumOption('REMOTE', 'Whether to build ekg2-remote', 'no', ['no', 'yes', 'only'])) +opts.Add(EnumOption('REMOTE_SSL', 'What SSL/TLS library to use with ekg2-remote', 'auto', ['none', 'openssl', 'gnutls', 'any', 'auto'])) opts.Add('DISTNOTES', 'Additional info to /version for use with distributed packages') for p in avplugins: @@ -328,10 +329,26 @@ ekg_libs = [] ekg_staticlibs = [] ekg_compat = [] + ekg_remote_flags = [] ExtTest('standard', ['ekg_libs']) ExtTest('compat', ['ekg_compat']) + if env['REMOTE'] != 'no' and env['REMOTE_SSL'] != 'none': + reqssl = env['REMOTE_SSL'] + flags = [] + + for dep in ['gnutls', 'openssl']: + if reqssl in ['auto', 'any', dep]: + if ExtTest(dep, ['flags']): + ekg_remote_flags.extend(flags) + defines['REMOTE_WANT_%s' % dep.upper()] = True + break + + if not ekg_remote_flags and reqssl != 'auto' and env['HARDDEPS']: + print 'Unable to find %s SSL/TLS library for ekg2-remote and HARDDEPS specified, aborting.' % reqssl + sys.exit(1) + plugin_def = { 'type': 'misc', 'state': 'unknown', @@ -498,7 +515,7 @@ if not 'ui' in pl: warnings.append('No UI-plugin selected. EKG2 might be unusable to you.') - if not 'protocol' in pl: + if not 'protocol' in pl and env['REMOTE'] != 'only': warnings.append("No protocol plugin selected. EKG2 won't be instant messenger anymore.") else: warnings.append('You are compiling ekg2 without any plugin. Are you sure this is what you mean to do?') @@ -506,7 +523,11 @@ print 'Options:' print '- unicode: %s' % (env['UNICODE']) print '- nls (gettext): %s' % (defines['ENABLE_NLS']) - print '- build ekg2-remote: %s' % (env['REMOTE']) + if env['REMOTE'] != 'no': + remssl = ' (SSL: %s)' % env['REMOTE_SSL'] + else: + remssl = '' + print '- build ekg2-remote: %s%s' % (env['REMOTE'], remssl) for d, k in addopts: print '- %s: %s' % (d, env[k]) @@ -538,6 +559,7 @@ 'ekg_libs': ekg_libs, 'ekg_staticlibs': ekg_staticlibs, 'ekg_compat': ekg_compat, + 'ekg_remote_flags': ekg_remote_flags, 'plugins': plugins, 'defines': defines }, conff, cPickle.HIGHEST_PROTOCOL) @@ -636,6 +658,7 @@ else: cenv.Append(LINKFLAGS = ['-Wl,--export-dynamic']) + cenv.MergeFlags(cenv.ParseFlags(ekg_remote_flags)) cenv.Append(LIBPATH = ekg_libpath) cenv.Append(LIBS = ekg_libs) cenv.Program('remote/ekg2-remote', glob.glob('remote/*.c') + ekg_staticlibs_r) From svn w toxygen.net Thu Jul 23 14:57:58 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 14:57:58 +0200 (CEST) Subject: [ekg2-commit] r4854 - in trunk: . scons.d: trunk/SConstruct trunk/scons.d/standard Message-ID: <20090723125758.EEB0417B34@toxygen.net> Author: peres Date: 2009-07-23 14:57:58 +0200 (Thu, 23 Jul 2009) New Revision: 4854 Modified: trunk/SConstruct trunk/scons.d/standard Log: Disable NLS, IDN and RESOLV if REMOTE=only (ekg2-remote doesn't use them). Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2009-07-23 12:21:25 UTC (rev 4853) +++ trunk/SConstruct 2009-07-23 12:57:58 UTC (rev 4854) @@ -331,6 +331,12 @@ ekg_compat = [] ekg_remote_flags = [] + if env['REMOTE'] == 'only': + # disable unused libs to avoid useless linking + # XXX: we should get separate ekg_libs for ekg2-remote indeed + for k in ['NLS', 'IDN', 'RESOLV']: + env[k] = False + ExtTest('standard', ['ekg_libs']) ExtTest('compat', ['ekg_compat']) Modified: trunk/scons.d/standard =================================================================== --- trunk/scons.d/standard 2009-07-23 12:21:25 UTC (rev 4853) +++ trunk/scons.d/standard 2009-07-23 12:57:58 UTC (rev 4854) @@ -115,7 +115,7 @@ have_resolv = False defines['HAVE_RESOLV_H'] = have_resolv -if not have_resolv: +if not have_resolv and env['REMOTE'] != 'only': warnings.append("""libresolv not found, SRV resolving won't work. If you're going to use GTalk account, you'll have to manually set 'server' to 'talk.google.com'.""") if not 'HAVE_GETADDRINFO' in defines: From svn w toxygen.net Thu Jul 23 15:44:37 2009 From: svn w toxygen.net (SVN commit) Date: Thu, 23 Jul 2009 15:44:37 +0200 (CEST) Subject: [ekg2-commit] r4855 - in trunk: ekg plugins/xmsg: trunk/ekg/srv.c trunk/plugins/xmsg/xmsg.c Message-ID: <20090723134437.4D2C517B34@toxygen.net> Author: peres Date: 2009-07-23 15:44:36 +0200 (Thu, 23 Jul 2009) New Revision: 4855 Modified: trunk/ekg/srv.c trunk/plugins/xmsg/xmsg.c Log: Darwin fixes. Modified: trunk/ekg/srv.c =================================================================== --- trunk/ekg/srv.c 2009-07-23 12:57:58 UTC (rev 4854) +++ trunk/ekg/srv.c 2009-07-23 13:44:36 UTC (rev 4855) @@ -35,6 +35,9 @@ #include #include #include +#ifdef __APPLE__ +#include +#endif #include #ifdef HAVE_RESOLV_H #include /* res_init, res_query */ Modified: trunk/plugins/xmsg/xmsg.c =================================================================== --- trunk/plugins/xmsg/xmsg.c 2009-07-23 12:57:58 UTC (rev 4854) +++ trunk/plugins/xmsg/xmsg.c 2009-07-23 13:44:36 UTC (rev 4855) @@ -5,6 +5,11 @@ #define _GNU_SOURCE +#ifdef __APPLE__ +#define _DARWIN_C_SOURCE +#include +#endif + #ifdef __NetBSD__ # define _NETBSD_SOURCE #else From svn w toxygen.net Sat Jul 25 17:02:54 2009 From: svn w toxygen.net (SVN commit) Date: Sat, 25 Jul 2009 17:02:54 +0200 (CEST) Subject: [ekg2-commit] r4856 - trunk/plugins/logs: trunk/plugins/logs/main.c Message-ID: <20090725150254.8677817B4A@toxygen.net> Author: peres Date: 2009-07-25 17:02:53 +0200 (Sat, 25 Jul 2009) New Revision: 4856 Modified: trunk/plugins/logs/main.c Log: Fix compilation on MacOS. Modified: trunk/plugins/logs/main.c =================================================================== --- trunk/plugins/logs/main.c 2009-07-23 13:44:36 UTC (rev 4855) +++ trunk/plugins/logs/main.c 2009-07-25 15:02:53 UTC (rev 4856) @@ -23,6 +23,11 @@ #include "ekg2-config.h" #include +#ifdef __APPLE__ +#define _DARWIN_C_SOURCE +#include +#endif + #ifndef __FreeBSD__ #define _XOPEN_SOURCE 600 #define __EXTENSIONS__ From svn w toxygen.net Mon Jul 27 10:39:39 2009 From: svn w toxygen.net (SVN commit) Date: Mon, 27 Jul 2009 10:39:39 +0200 (CEST) Subject: [ekg2-commit] r4857 - trunk/plugins/gg: trunk/plugins/gg/commands.c Message-ID: <20090727083939.E44B417B4C@toxygen.net> Author: peres Date: 2009-07-27 10:39:39 +0200 (Mon, 27 Jul 2009) New Revision: 4857 Modified: trunk/plugins/gg/commands.c Log: Fix compilation on MacOS. Modified: trunk/plugins/gg/commands.c =================================================================== --- trunk/plugins/gg/commands.c 2009-07-25 15:02:53 UTC (rev 4856) +++ trunk/plugins/gg/commands.c 2009-07-27 08:39:39 UTC (rev 4857) @@ -29,6 +29,10 @@ # define GIF_OCR #endif +#ifdef __APPLE__ +#include +#endif + #ifndef __FreeBSD__ #define _XOPEN_SOURCE 600 #define __EXTENSIONS__