Why:
1) users can install .scm scripts to plug-ins dir
2) Crashing scripts do not crash extension-script-fu
Scripts (.scm files) have a shebang and are executable
and in a same-named subdir of plugin dir.
Interpreter/scripts create PDB procs of type PLUGIN unlike extension-script-fu
which creates PDB procs of type TEMPORARY, owned by extension-script-fu.
Unlike other interpreters, the interpreter is-a plugin outright,
not by virtue of the script subclassing GimpPlugin and using GI.
More details in /plug-ins/script-fu/interpreter/README
Create new plugin file script-fu-server-plugin.c
with code extracted from script-fu.c, which is an omnibus plugin
implementing PDB proc extension-script-fu and other PDB procs.
Why:
1. extension-script-fu is smaller and doesn't doesn't link to socket libraries.
(GIMP always starts extension-script-fu and it stays running.)
2. packagers/admins can omit script-fu-server executable from an installation,
if they think letting users serve net ports is not secure.
3. crashing script-fu-server does not crash extension-script-fu,
which requires restart of GIMP
The changes are mostly a simple refactor, extracting code.
No functional change apparent to users.
Low risk of introduced bugs.
Extremely few users use script-fu-server anyway.
Added some logging.
While at it, use G_DECLARE_FINAL_TYPE
Changes are mostly to the dir structures and build system for ScriptFu.
Some changes to the outer plugin source to call the library.
Why: so that other executables (future gimp-scheme-interpreter,
or a future separated script-fu-server) can exist in separate directories,
and share the library in memory (when built shared.)
Whether the library is built shared and installed on its own
(versus static and not installed)
is a compile time option (both automake LibTool and meson abstract it away)
The default is shared and installed, say as libgimp-scriptfu-3.0.so.
Installed alongside other shared libraries (e.g. wherever libgimp is installed)
to simplify packaging.
A preliminary refactoring which helps enable MR gimp!647
I am going to forbid plug-ins from being installed directly in the root
of the plug-ins/ directory. They will have to be installed in a
subdirectory named the same as the entry point binary.
This may seem useless for our core plug-ins which are nearly all
self-contained in single binaries, but this is actually a necessary
restriction to eliminate totally the DLL hell issue on Windows. Moving
core plug-ins in subfolders is only a necessary consequence for it.
Last commit caused -xobjective-c to be passed during linking on
Mac, causing object files to be treated as source files. Add a
-xnone flag to AM_LDFLAGS, canceling the effect of -xobjective-c.
Additinally, add a -xobjective-c++ flag to AM_CXXFLAGS, so that we
can use Objective-C in C++ files on Mac, if we ever need to.
On Mac, pass -xobjective-c to the compiler through AM_CFLAGS, not
AM_CPPFLAGS, so that it's only used for C sources, and not C++
sources. In the latter case, it clashes with the -std=... flag,
spewing an error. Thanks, Partha :)
The tinyscheme static library uses math functions, ensure that libm is
linked where necessary (#659586, original patch by Vincent Untz,
modified)
cherry-picked from commit 7df2cb45b3 in
the gimp-2-6 branch.
Add a "check-for-deprecated-procedures-in-script-fu" make target that
looks for usage of deprecated procedures in *.scm files. We currently
use quite a bit of deprecated procedures. When we don't do that
anymore, we should connect this to make check somehow so our nightly
build fails if someone deprecated a procedures without also porting
all clients.
Run it like this from the source root:
make -C plug-ins/script-fu check-for-deprecated-procedures-in-script-fu
Created a resource file for plug-ins and a rule to link it to them.
The application icon file is smaller than the default one, there's no
point in doubling the size of a plug-in executable just for an icon.
If no problems turn up, this will close the bug.
2008-09-17 Michael Natterer <mitch@gimp.org>
* plug-ins/script-fu/script-fu-types.h: add struct SFArg which
keeps all a script argument's type, label, value and default
value.
(struct SFScript): replace separate arrays of type, label etc. by
one array of SFArg. Remove array of GimpParamDef because they are
only needed while registering the temp proc.
* plug-ins/script-fu/Makefile.am
* plug-ins/script-fu/script-fu-script.[ch]: new files implementing
script_fu_script_new(), script_fu_script_free(),
script_fu_script_register_proc() and
script_fu_script_unregister_proc().
* plug-ins/script-fu/script-fu-scripts.c: remove lots of code now
implemented in script-fu-script.c. Changed stuff according to the
introduction of SFArg. Moved variables to local scopes. Most
changes are in script_fu_add_script(), almost every line changed
and it's hopefully more readable now. Lots of cleanup all over the
place.
* plug-ins/script-fu/script-fu-interface.c: changed stuff
according to the introduction of SFArg
svn path=/trunk/; revision=26978
2008-09-11 Michael Natterer <mitch@gimp.org>
* plug-ins/script-fu/Makefile.am
* plug-ins/script-fu/re/*: removed....
* plug-ins/script-fu/script-fu-regex.[ch]: and replaced with a
few-liner using GRegex. Seems to have some issues that need to be
sorted out.
* plug-ins/script-fu/scheme-wrapper.c: changed accordingly.
svn path=/trunk/; revision=26921
2007-05-25 Kevin Cozens <kcozens@cvs.gnome.org>
* plug-ins/script-fu/Makefile.am: Missed commit of this file.
* plug-ins/script-fu/scheme-wrapper.h:
* plug-ins/script-fu/scheme-wrapper.c (ts_output_string): Updated
to expect a 'const char *' and an int but no file pointer.
* plug-ins/script-fu/tinyscheme/scheme.c:
* plug-ins/script-fu/tinyscheme/scheme.h: Changes due to use of
'const char *' for ts_output_routine.
svn path=/trunk/; revision=22620
2006-11-02 Kevin Cozens <kcozens@cvs.gnome.org>
* plug-ins/script-fu/Makefile.am: Removed USE_STRCASECMP. Use the
setting for USE_STRLWR that is used in TinyScheme.
* plug-ins/script-fu/tinyscheme/Makefile.am: Removed USE_STRCASECMP.
* plug-ins/script-fu/tinyscheme/scheme.c
* plug-ins/script-fu/tinyscheme/scheme.h: Added missing SCHEME_EXPORT
to a couple of function declarations. Eliminated USE_STRCASECMP by
using internal UTF8 string comparison routine.
* plug-ins/script-fu/tinyscheme/scheme-private.h: Stop some compiler
warnings.
2006-10-15 Kevin Cozens <kcozens@cvs.gnome.org>
With this commit we finally say goodbye to SIOD. This large set of
changes updates the Script-Fu plug-in to use the TinyScheme Scheme
interpreter. These changes originated with changes originally made
to Script-Fu which created Tiny-Fu (aka. the gimp-tiny-fu module).
* plug-ins/script-fu/Makefile.am
* plug-ins/script-fu/script-fu-console.c
* plug-ins/script-fu/script-fu-interface.c
* plug-ins/script-fu/script-fu-scripts.c
* plug-ins/script-fu/script-fu-scripts.h
* plug-ins/script-fu/script-fu-server.c
* plug-ins/script-fu/script-fu-text-console.c
* plug-ins/script-fu/script-fu.c: Updated with the changes made to
these files as part of the work on the Tiny-Fu project.
* plug-ins/script-fu/scheme-wrapper.c
* plug-ins/script-fu/scheme-wrapper.h: Renamed from siod-wrapper.[ch]
and updated based on differences to ts-wrapper.[ch] from gimp-tiny-fu.
* plug-ins/script-fu/ftx/*
* plug-ins/script-fu/re/*
* plug-ins/script-fu/tinyscheme/*
* plug-ins/script-fu/scripts/script-fu.init
* plug-ins/script-fu/scripts/script-fu-compat.init
* plug-ins/script-fu/scripts/contactsheet.scm
* plug-ins/script-fu/scripts/script-fu-set-cmap.scm
* plug-ins/script-fu/scripts/script-fu-util-setpt.scm
* plug-ins/script-fu/scripts/ts-helloworld.scm: Added all of these
files and directories from Tiny-Fu. Updated the Makefile.am files
of ftx, re, and tinyscheme now they are in the GIMP source tree.
* plug-ins/script-fu/scripts/*.scm: All scripts have been updated as
needed to ensure they will work with the TinyScheme interpreter. Most
of the files have been reformatted making it easier to see the syntax
of Scheme and making them easier to read.
* plug-ins/script-fu/scripts/Makefile.am: Updated script file lists.
* plug-ins/script-fu/siod-wrapper.c
* plug-ins/script-fu/siod-wrapper.h
* plug-ins/script-fu/siod/*: Removed obsolete files.
* configure.in: Updated list of files in AC_CONFIG_FILES. Changed
--disable-script-fu to --without-script-fu which it should have
been when originally added.
* INSTALL: Updated to show change to --without-script-fu.
2005-05-13 Tor Lillqvist <tml@novell.com>
* configure.in: Don't bother looking for fd_set on Win32, we won't
find it in sys/types.h or (the nonexistent) sys/select.h
anyway. (It's in winsock2.h.)
* plug-ins/common/xpm.c: Include gdkconfig.h for GDK_WINDOWING_WIN32.
* plug-ins/script-fu/script-fu-server.c: Give it a chance to work
on Win32 by covering for the differences between the WinSock and
Unix socket APIs. Use recv() and send() instead of read() and
write() on sockets. On Win32, use closesocket() for sockets
instead of close(). Don't use perror() or look at errno after
socket API errors on Win32. No EINTR failure mode with WinSock 2.
(print_socket_api_error): New function. On Unix, just call
perror(). On Win32, call WSAGetLastError() and produce an
appropriate error message on stderr.
* plug-ins/script-fu/Makefile.am (WINSOCK_LIBS): Link with the
winsock2 library, as we compile with the winsock2 header.
2004-11-17 Manish Singh <yosh@gimp.org>
* plug-ins/dbbrowser/Makefile.am: make libgimpprocbrowser a libtooled
library.
* plug-ins/dbbrowser/gimpprocbrowser.[ch]: add a user_data pointer
for GimpProcBrowserApplyCallback.
* plug-ins/dbbrowser/gimpprocbrowser.c: only convert the name to
scheme style if scheme_names in the proc info pane too.
* plug-ins/dbbrowser/procedure-browser.c
* plug-ins/script-fu/script-fu-console.c: pass NULL as user_data.
* plug-ins/script-fu/Makefile.am: reference libgimpprocbrowser.la.
* plug-ins/pygimp/Makefile.am
* plug-ins/pygimp/procbrowser.c: new module, which wraps
libgimprocbrowser.
* plug-ins/pygimp/gimpmodule.c
* plug-ins/pygimp/pygimp.h
* plug-ins/pygimp/pygimp-pdb.c: export GimpPDBFunction so other
modules can use it.
* plug-ins/pygimp/plug-ins/pdbbrowse.py
* plug-ins/pygimp/plug-ins/gimpcons.py: use gimpprocbrowser.
2004-10-25 Michael Natterer <mitch@gimp.org>
* libgimpbase/gimpbaseenums.[ch]: register some missing enums.
* tools/pdbgen/enumcode.pl: removed code to generate
plug-ins/script-fu/script-fu-constants.c, generate code to
explicitely initialize and query all of libgimp*'s enums
and write it to libgimp/gimpenums.c.tail
* libgimp/gimpenums.h: regenerated.
* libgimp/Makefile.am: append gimpenums.c.tail to gimpenums.c
* libgimp/gimp.c (gimp_main): call g_type_init() and
_gimp_enums_init().
* libgimp/gimp.def: added gimp_enums_get_type_names().
* plug-ins/script-fu/Makefile.am
* plug-ins/script-fu/script-fu-constants.[ch]: removed these files.
* plug-ins/script-fu/siod-wrapper.c: dynamically register all
constants using gimp_enums_get_type_names() and introspection.
Also register the built-in unit types.
* plug-ins/script-fu/script-fu.c: changed accordingly.
2004-10-03 Michael Schumacher <schumaml@gmx.de>
* plug-ins/dbbrowser/Makefile.am
* plug-ins/script-fu/Makefile.am: moved the libgimpprocbrowser to
the beginning of LDADD
2004-09-30 Michael Natterer <mitch@gimp.org>
Cleaned up the DB Browser and Plugin Details code and GUI. It's
not perfect yet but at least they don't look like crap any more.
Fixes bug #131490.
* plug-ins/common/plugin-defs.pl
* plug-ins/common/plugindetails.c: removed this plugin.
* plug-ins/common/.cvsignore
* plug-ins/common/Makefile.am: regenerated.
* plug-ins/dbbrowser/Makefile.am
* plug-ins/dbbrowser/dbbrowser.c
* plug-ins/dbbrowser/dbbrowser_utils.[ch]: removed these files.
* plug-ins/dbbrowser/gimpprocbrowser.[ch]
* plug-ins/dbbrowser/gimpprocview.[ch]: new cleaned up files.
* plug-ins/dbbrowser/plugin-browser.c: the former plugindetails.
* plug-ins/dbbrowser/procedure-browser.c: the former dbbrowser.
* plug-ins/script-fu/Makefile.am: link against the new library
libgimpprocbrowser.a
* plug-ins/script-fu/script-fu-console.c: changed #includes
accordingly. Monir cleanup.
* tools/pdbgen/pdb/plug_in.pdb (plugins_query): fixed menu_path
return value. Was broken since the plug-in menu registering
changes.
* app/pdb/plug_in_cmds.c: regenerated.
2004-09-21 Sven Neumann <sven@gimp.org>
* plug-ins/script-fu/script-fu-server.c: enabled build of the
Script-Fu server for the Win32 platform using the winsock API.
* plug-ins/script-fu/Makefile.am: link with -lwsock32 on Win32.
* plug-ins/script-fu/script-fu-console.c
* plug-ins/script-fu/script-fu.c
* plug-ins/script-fu/siod-wrapper.c: removed Win32 specific code
that isn't needed any longer.
2004-08-31 Michael Natterer <mitch@gimp.org>
* plug-ins/script-fu/script-fu-scripts.[ch]: removed the GUI code...
Also did some minor cleanups.
* plug-ins/script-fu/script-fu-interface.[ch]: ...and added it here.
* plug-ins/script-fu/script-fu-types.h: new file keeping the
various struct defs needed by both the above files.
* plug-ins/script-fu/Makefile.am
* plug-ins/script-fu/siod-wrapper.c: changed accordingly.
2004-07-30 Sven Neumann <sven@gimp.org>
Applied a bunch of small changes contributed by Tim Mooney that fix
stack corruption on Tru64 and Aix (bug #129867).
* app/Makefile.am
* plug-ins/script-fu/Makefile.am: changed the dependency order so
that $(REGEXREPL) is linked earlier.
* regexrepl/regex.[ch]: fixed check for __STDC__, merged upstream
fix for re_max_failures value.
2004-01-21 Manish Singh <yosh@gimp.org>
* configure.in: modernized, made a lot of things m4 macros, and made
versioning a lot more finegrained, in anticipation for post-2.0.
* autogen.sh: bumped up libtool and glib minimum requirements to match
reality.
* gimp-2.0.pc.in
* gimpthumb-2.0.pc.in
* gimpui-2.0.pc.in: adapted to new versioning variables, and bring
in RT_LIBS when needed.
* */*/Makefile.am: adapted to new versioning variables.
2002-06-08 Sven Neumann <sven@gimp.org>
* app/base/Makefile.am
* app/paint-funcs/Makefile.am: automake-1.6 seems to use yet another
variable to pass flags to the assembler (bug #84514). Define
AM_CCASFLAGS like AM_ASFLAGS to satisfy all versions of automake.
* configure.in
* all Makefiles: removed STRIP_BEGIN and STRIP_END since it's a
GNU make extension that we don't really need and newer versions of
automake don't seem to like it.
2002-05-30 Sven Neumann <sven@gimp.org>
* configure.in: check for extra libraries needed for inet_ntoa() and
socket() and define them as SOCKET_LIBS.
* plug-ins/script-fu/Makefile.am (LDADD): added SOCKET_LIBS.
2002-05-11 Sven Neumann <sven@gimp.org>
* libgimp/stdplugins-intl.h
* plug-ins/script-fu/script-fu-intl.h: use the new function
gimp_locale_directory() instead of LOCALEDIR.
* app/Makefile.am
* plug-ins/*/Makefile.am: removed LOCALEDIR definition.
2001-09-27 Sven Neumann <sven@gimp.org>
* HACKING
* Makefile.am
* acconfig.h
* autogen.sh
* configure.in: use AM_GLIB_GNU_GETTEXT. Since glib and GTK+ rely on
gettext being available, we don't need to ship with the option to use
an included implementation. The intl subdirectory will not be created
anymore. Had to put the old sed hacks back in that create Makefiles
from Makefile.in in the extra po directories.
* almost all Makefile.am: removed $(top_srcdir)/intl from INCLUDES.
* app/main.c
* libgimp/stdplugins-intl.h
* plug-ins/perl/Gimp.xs
* plug-ins/script-fu/script-fu-intl.h: changed package names to
gimp14* so the po files don't clash with gimp12.
2001-07-17 Mathieu Lacage <mathieu@gnome.org>
* app/batch.c: new code to call the script_fuc_text_console pdb function.
* app/main.c: (main): remove batch command code.
* plug-ins/script-fu/Makefile.am: add siod-wrapper.h/c
* plug-ins/script-fu/script-fu-console.c:
(script_fu_cc_key_function),
(script_fu_open_siod_console),
(script_fu_close_siod_console):
* plug-ins/script-fu/script-fu-scripts.h:
* plug-ins/script-fu/script-fu-server.c:
(script_fu_server_quit),
(script_fu_server_get_mode),
(execute_command):
Replace all direct calls to the scheme interpreter with calls to the siod-wrapper.
* plug-ins/script-fu/script-fu-console.h: remove run_eval.
* plug-ins/script-fu/script-fu-server.h:
* plug-ins/script-fu/script-fu-text-console.c:
(script_fu_text_console_run),
(read_command),
(script_fu_text_console_interface):
The actual new text console.
* plug-ins/script-fu/script-fu-text-console.h: header.
* plug-ins/script-fu/script-fu.c:
(script_fu_quit),
(script_fu_query),
(script_fu_run): rename to better words.
move most of the code to siod-wrapper.c/h
* plug-ins/script-fu/siod-wrapper.c:
(siod_get_output_file),
(siod_set_output_file),
(siod_get_verbose_level),
(siod_set_verbose_level),
(siod_print_welcome),
(siod_interpret_string),
(siod_get_error_msg),
(siod_get_success_msg),
(siod_init),
(init_procedures),
(init_constants),
(convert_string),
(sputs_fcn),
(lprin1s),
(marshall_proc_db_call),
(script_fu_register_call),
(script_fu_quit_call):
All the funcitons dealing with the internals of the scheme interpreter.
* plug-ins/script-fu/siod-wrapper.h: the header.