--- open --- x Sometimes targets fail to be built without recognised error messages. In this case gmake says "gmake ***[target] Error 1" and exit(1)s but maketool does not notice there's a problem and believes the build finished successfully. Need to at least print the exit code of the build, possibly show the *** messages as errors if no errors for the same file were otherwise reported. x Investigate performance of regexec() in IRIX libc vs glibc. x Help->Help On reports "main-window" if clicked on the background of any dialog, and only reports the right dialog if clicked on some other widget in the dialog. x When using autoconf there seems to be a race condition between creation of "configure" and running it, because "configure" creates a file "conftestfile" and tests the order of file modification timestamps between the created file and *itself*. This means that if "configure" is run within 1 sec of its own creation (as maketool does) the files will have identical timestamps and be listed in whatever the secondary sort order is for "ls". If that's alphabetical or the order in which the two files appear on the commandline, then it's ok. If it's directory order, that's *bad*: configure will start failing once there have been enough file deletions, on *some* filesystems, on a fast machine. Experiment on RedHat 7.1: % touch foo bar # files now have identical timestamps % ls -Lt foo bar bar foo % ls -Lt bar foo bar foo % ls -U | egrep '(foo|bar)' foo bar So it's *not* commandline appearance order, nor is it directory order It must be alphabetical order. The question is, does this "ls" behaviour still hold when not using the GNU "ls" ? x With autoconf, handle configure depending on aclocal.m4 acsite.m4 and (automake?) acinclude.m4. x Force the licence window text widget, the preferences/programs pane key label, and (optionally?) the main log window, to be fixed width fonts. x Expand TABs in log correctly; with modern fonts the leading TAB characters that pmake emits are shown as silly empty rectangles. x Handle autoheader. x The Indent Directories option relies on filtering gmake output for 'Entering directory' messages. When running in a non-English locale, these may be translated by gmake's gettext, breaking maketool. Likewise the target extraction relies on magic strings in "gmake -n -p" output, which also may be translated. x In work_ended(), check whether the makefile has been modified since the last time we read the list of targets from make, and if it has schedule a re-read. Need to be careful to avoid a loop as list_targets() schedules a task which will cause work_ended() to be called again. x Expand the MakeSystem/MakeCommand structures to allow per-system commands to specify a callback function or group which allows them to be greyed out when not available, e.g. in autoconf_maint, don't show "Run configure" until configure exists. x Change the structure of the Build menu to move the per-makesystem commands (except the "Makefile" pseudo-target) into some less obtrusive place, such as a sub-menu. x On website, change mailto: references to make them easier to use for people without Netscape or IE. x Build->Makefile should say something pithy in the status bar when it finishes. Also Build->Run configure etc. x Handle the default value of GNOME_COMPILE_WARNINGS, which is "[/no/minimum/yes]" meaning an enum of three values, *not* a path. x In Configure Options window, make NLS, getext, GTK and X stuff "advanced". Also GNOME and libtool. x Move the makesystem-specific commands from the Build menu itself into a new submenu named after the make system, e.g. "automake Commands". Note that the difference between autoconf-dist and autoconf-maint should be hidden at this point. x Move "File->Edit Makefile" to the Edit menu, and make its label change at runtime to reflect the MakeSystem's "source" makefile (with a defaulting mechanism to find GNUmakefiles). x Rajesh Gupta reports: > Let me explain my setting also know. I have a makefile and > srcs.mak file. all sources are listed in srcs.mak file. I > ran the maketool from its installation directory and gave the > full path of makefile. When I did a make all it gave warning > srcs.mak not found. That is quite understandable but then > when I clicked apply in preference menu [dialog] it crashed. x Change maketool_client to be public and its default mode to take make-style args (options targets and variable overrides) and pass them to a discovered maketool for interpretation. automake.mk etc will need to use a new --message opion. x When the user cancels a ./configure run from the GUI, this should show in the log window instead of "*** [config.status] Error 1". x Help: organise smart way to generate index at least semi-automatically. x Help: figure out a way to hook up help to menu items x Help: reimplement the Help On... loop sensibly x Show a different icon on error lines which have been edited. x IN PROGRESS: Implement printing and Print Settings window. x Implement extra stuff in the Help menu. x Provide filters for other compilers than gcc. x Make filters configurable in Preferences GUI. This implies making the changes persistent too! x GNOME integration: drag'n'drop. Dragging in directory changes to that directory. Dragging in file or string makes it if it's a known target. Otherwise, if the MIMEtype indicates its text, open it as a log file. Dragging out a log line is a filename or file+line. x GNOME integration: session management. Save directory & last target and state of errs/warnings/info toggles. Load again when started by session manager. x GNOME integration: dockable menubar, statusbar, and toolbar. Also neato icons in menus. x GNOME integration: save & load config using GNOME standard routines. x GNOME integration: use GNOME About and Preferences dialogs. x GNOME integration: use GNOME URL handling in Help menu. x GNOME integration: provide triggers for sounds etc. x Fix bug whereby `configure --with-included-gettext' leaves a symlink intl/libintl.h -> intl/libgettext.h which is not removed again when re-configured and causes other builds to break with `symbol dcgettext__ not found'. x Remove strict dependancy on POSIX regcomp() for older systems, conditionally replace regcomp with function based on x Automatically recalculate list of targets, and rebuild the Build menu, when makefile changes. x Make the default text editor configurable, figured out in configure. x Should be able to drag & drop {filename, linenumber, message} or text. x For the editing program, should be able to specify a %sequence which contains the quoted error message, for integration with IDEs. x Add ability to delete individual make runs from view window x Add a feature to watch an existing log file as it grows. x Add timestamp to log start line, either current time for normal builds or file modification time for log files. x When a normal build is finished, calculate elapsed time and display it in the log start line. x Fix bug where build start line, updated to reflect number of errors, is displayed at wrong horizontal position (as if it had lost an indent). This seems to be a GTK display bug. x Handle files & line numbers in Java exception report. x Handle column in Java errors. x Handle files & line numbers in Java exception report. x Handle column in Java errors. x ability to recursively delete a node from the log window x Keyboard navigation: ENTER should be same as double-click. x Keyboard navigation: Check for std accelerators to collapse, expand, collapse all, expand all, navigate up & down, select, unselect. x Printing: figure out default printer for combo box, from preferences else named "ps". x Printing: add notebook page to edit paper size, orientation, and margins to Preferences dialog. x Printing: add support for landscape mode. x Printing: page numbers x Printing: colours/icons for errors & warnings x Printing: title line on every page. x Printing: modal dialogs. x Printing: option to print entire log file or just descendants of selected node. x Printing: option to print using collapsed status of log lines or just entire log. x Frederick Bruckman says: To be able to pass in datadir or localedir to configure would be nice. x Implement case-insensitive literals in Find window. x Handle configure.in/config.status being in an ancestor directory x be able to merge multi-line MWOS error messages into 1 summary line?? (this is working for MIPSpro). x generate column info from MWOS & MIPSpro " ^" stuff x possibly generate token span from line before the MWOS " ^" stuff. x apply the prefs option used at start of build to opening log files. x A.T. Hofkamp says about the Find window: I still feel that tasks like this cannot be done faster than by typing something like /91.*blo/ (but I am a strongly keyboard-oriented guy). x Add an editor choice for "gvim +%l %f" x Fix the page name and page orientation combos in the Preferences window to behave correctly and actually be used. x When the make child is generating lots of output very quickly, the GTK library is starved of CPU and does not repaint the window (which is slightly annoying) or allow the user to press Stop (which is very bad). Need a "slow machine" heuristic to detect this case at runtime and mitigate it somehow. x Add the ability for the user to configure his own toolbar icons, including all the existing icons and new icons made up of a sequence of commands e.g. "Clear log; Build `clean'; Build `all'; Build `install'". x Bug where make variable overrides specified on command line are ignored until Preferences dialog OK is pressed. x "make -n dist" fails. x Checks for configure.in and configure used to grey menu items can be fooled as the check is only done at startup and change- directory time (this is really the same problem as with targets). x The --no-create option to configure is not preserved, and probably can't be. x After successfully running autoconf, automatically: * remove config.cache * remove config.status * check for configure script * grey menu items. x Configure option parser should handle "--quiet, --silent" properly. x Deal with configure being missing or corrupted in read_configure_options() x During configure option GUI field validation, if user enters whitespace where it's not allowed, popup an advisory notice with a button to link to the help chapter. x Keyboard navigation in Configure Options dialog is broken; focus never enters the notebook pages. x When ./configure is run from make_makefile(), config.status is also run afterward, redundantly. --- closed --- x In all the info compile line filters, replace regexp portions like (|/[^ \t:#]+/) with (/[^ \t:#]+/)* to avoid regcomp() errors on FreeBSD. x On startup, when preferences or args specify a non-existant makefile, issue a warning alert to the user. x Help: write lots of it!! x Doco. x Use a hashtable of filenames to reduce memory traffic for filenames. x Provide a progress indicator during the open of large log files. x Display in the statusbar, between the message and the progress indicator, running counts of number of warnings and errors found since last build start. x memleak: ==5761== 3074 bytes in 222 blocks are definitely lost in loss record 73 of 82 ==5761== at 0x40044364: malloc (vg_clientfuncs.c:100) ==5761== by 0x403C58BC: g_malloc (in /usr/lib/libglib-1.2.so.0.0.10) ==5761== by 0x403CE421: g_strdup (in /usr/lib/libglib-1.2.so.0.0.10) ==5761== by 0x805FC82: gmake_list_targets_input (gmake.c:200) ==5761== by 0x8061DB7: task_linemode_input (task.c:143) ==5761== by 0x8061F83: task_input_func (task.c:237) ==5761== by 0x40391A66: gdk_io_invoke (in /usr/lib/libgdk-1.2.so.0.9.1) ==5761== by 0x403C2F9E: g_io_unix_dispatch (in /usr/lib/libglib-1.2.so.0.0.10) ==5761== by 0x403C4773: g_main_dispatch (in /usr/lib/libglib-1.2.so.0.0.10) ==5761== by 0x403C4D39: g_main_iterate (in /usr/lib/libglib-1.2.so.0.0.10) ==5761== by 0x403C4EEC: g_main_run (in /usr/lib/libglib-1.2.so.0.0.10) ==5761== by 0x402E12E3: gtk_main (in /usr/lib/libgtk-1.2.so.0.9.1) ==5761== by 0x8053970: main (main.c:2326) ==5761== by 0x42017499: (within /lib/i686/libc-2.2.5.so) ==5761== by 0x804FCB1: gtk_widget_grab_focus (in /home/gnb/proj/maketool/maketool) x There is no way to handle help tags which point to anchors inside an HTML page rather than being the page name. x Rajesh Gupta, running on Solaris 2.5.1, found the following bug. The SIGCHLD signal handler is being lost, so extract_targets works but the first make run is never reaped. So far, typical sysv signal semantics bug. BUT attempting to re-register the signal handler in the signal handler (the solution used in 0.7) causes an immediate recursive signal delivery, and blows the stack. A hack is to re-register the signal handler in g_unix_dispatch_reapers() but there's a race condition where a signal can be lost. The proper solution is to use something like sigaction() where you can specify the delivery semantics with flags. Need to find a Solaris machine to test (sf compile farm?). x Help: make the browser command configuruable in preferences. x Change the preferences so that the actual make executable used is specified in exactly one place instead of three (prog_make, prog_make_version, and inside the shell script extract_targets). Use %M as the name of the executable in those cases. x Correctly handle user's upgrade from 0.3 to 0.4 by saving new prefs items to ~/.maketoolrc. x Implement the FR_PENDING filter result. x Limit the sizes of target names in the Build menu, especially when a pair of them is used as a range for a submenu. x Fix preferences code to handle upgrade from 0.7->0.8 by rewriting the prog_list_targets pref from "extract_targets %m %v" to GMAKE " %m %v %q %t". x DONE: The length of the Build menu is limited by splitting long lists of targets into sub-menus. However the width is not controlled. When the menu is split into sub-menus the sub-menu labels are constructed from a pair of targets separated with a dash, which can get quite long, e.g. with automake you can get "mostlyclean-binPROGRAMS - uninstall-binPROGRAMS". x DONE: Add an abstraction MakeProgram, with the default being gmake but another entry being IRIX smake. Delegate the construction of the following flags in expand_prog(): -f, -j/-l, -k, -n. x DONE: `Variables' tab in Preferences window needs to shrink. x DONE: When user presses `Edit Next' the new selected error should become visible even if its currently in a collapsed build or it has scrolled out of sight. x DONE: Have to be able to resize the window down vertically. x DONE: Implement File->Change Directory command. x DONE: Add icon for non-GNOME w/ms. x DONE: Implement extraction of targets and generating the Build menu. x DONE: well expanded - see below. ?? Implement tighter GNOME integration. x DONE: Implement setting environment from Variables. x DONE: Change the `Type' field in the Variables tab in the Preferences window to a combo box. x DONE: I18N. x DONE: Save & load preferences, window geom etc. x DONE: Override preferences with -f -j -k and -l options from commandline. x DONE: Handle makes over multiple directories - get the filenames right. x DONE: Make a nicer animation for when make is running. x DONE: Add menu item Edit->Copy for filling the clipboard from the selected line(s?) of the log window. Implies adding an Edit menu & moving some of the View menu items into it. x DONE: Improve glib_extra.c so it doesn't require need to care about poll(2) directly and submit to the glib maintainers. x DONE: Add patchlevel.h x DONE: Add autoconf support. x DONE: Install extract_targets.sh x DONE: Accelerators etc for menu items. x DONE: (for colours only) Allow user to configure error & warning colours & icons in Preferences. x DONE: Remove line length limitation in handle_input(). x DONE: Remove line length limitation in filter_apply_one(). x DONE: Add check for buffer overflow in ui_create_tools(). x CLOSED: Use getopt? x DONE: Remove those irritating variable values from the Preferences window. x DONE: Fix bug whereby run load spinbox saves wrong value to preferences. It was a float rounding problem. x DONE: Add filters to summarise compile lines, and a View menu item to choose between full and summarised version in log window. x DONE: Waaaaah! Need a dryrun mode!! x DONE: Fix bug which loses last line of child process' output if the line doesn't end in a '\n' (worse, it prepends that to the output of the next child process). x DONE: Allow setting of make variables using VAR=val syntax on command line. x DONE: Loading a large make log does way too much updating of the scrollbar. x DONE: use a GNU logo in the `Help->About make' dialog. x DONE: When loading log file, should report number of errors & warnings. x DONE: Edit Next Error command should make the newly line visible by scrolling. x DONE: An error message which specifies an absolute pathname /abs/path tries to open file /curr/dir/abs/path instead of /abs/path. Had to also be in a recursive make. x DONE: Add ability to view multi-directory logs as either flat or organised hierarchically by directory. x DONE: Work out some way to handle the huge number of targets available in the Linux kernel toplevel makefile without overflowing the screen. x DONE: Add option to map directory level to tree indent level x DONE: When clicking on errrors from a loaded log file, pathnames should be interpreted relative to the log file's directory. x DONE: Provide a small ctree with 3 rows to preview colour changes in Preferences window. x DONE: Also number of errors & warnings. x DONE: Should be able to edit main.c by clicking on " from main.c" in gcc inclusion trace. x DONE: Provide facility to search the log text. x DONE: Fix bug where sometimes list_targets doesn't finish, or isn't reaped, or something. This was a race condition between spawning the first make process and registering the SIGCHLD signal handler. x DONE: The feature whereby targets are specified on the commandline should be modified to use the new task_*() routines. Check that this behaves correctly with autoconf support. x DONE: Fix bug where unsaved edits in various parts of Pereferences window are not reverted when the window is popped up again. x DONE: tooltip for `again' icon, and possibly menu item, should mention what the actual last target is. x DONE: Printing: Print window's Page Setup button should pop up the Page Setup notebook page of the Preferences dialog. x DONE: Printing: clip text. x DONE: Printing: dialogs come up at sensible locations, e.g. centred over the toplevel shell. Set transient-for flag too. x DONE: are the fds for pipes to child processes leaked? NO. x DONE: Makefile.in needs to define CPPFLAGS with @CPPFLAGS@ at the end for NetBSD to find gettext library. x DONE: Implement backwards search in Find window. x DONE: Populate Find window string from current selection on Edit->Find ? No, better solution is to select the old string instead. x DONE: Use gtk_window_set_transient_for() correctly. x DONE: Add HAV_SYS_FILIO check for FIONREAD x DONE: Bug: clicking Clear Log while build in progress coredumps x DONE: Bug: Stop button no longer ungreys when running! x DONE: Add filters to support MWOS cross-compiler (see sample mwos.errs) x DONE: Handle user clicking E's X button on dialogs. x DONE: A.T. Hofkamp says: make_makefile and extract_targets should live somewhere like $prefix/libexec/maketool/ not $prefix/bin. x DONE: A.T. Hofkamp says about the Find window: > The buttons seem to do something else than they say. > - 'Search forwards' seems to mean 'Search top-to-bottom' > - 'Find' seems to mean 'Find first match in log' > - 'Find again' seems to mean 'Find next match in log relative to current > position' > To explain why this is not what I expected, let me show my intuitive meaning > of the buttons (i.e. before I tried them). > - 'Search forwards' meant to me 'search downwards, relative from current position' > - 'Find' meant to me 'go' (thus, 'search downwards, relative from current position') > - 'Find again' meant to me 'try again, from current position'. x DONE: A.T. Hofkamp says about the Find window: > I hit the enter key, and got > > Gtk-WARNING **: invalid cast from (NULL) pointer to `GtkToggleButton' > > Gtk-CRITICAL **: file gtktogglebutton.c: line 296 > (gtk_toggle_button_get_active): assertion `toggle_button != NULL' failed. > x DONE: Add an option to disable make_makefile x DONE: A.T. Hofkamp says running gvim works but he gets ioctl(FIONREAD): Bad file descriptor This was a side effect of the 0.6.1 anti-hack. Now it checks for task->fd before calling task_input_func. x DONE: A.T. Hofkamp says: add a button to edit the first error in the next file. x DONE: A.T. Hofkamp says: Please make it possibe to edit the Makefile x DONE: Vaclav Slavik says: let maketool remember previous directories in config file, not only during one session. x DONE: Option to always scroll to end on make output x DONE: Fix bug where changing any of the log flags causes the current scroll position in the log to be lost as the log is repopulated. x DONE: Help: organise smart way to have consistent style etc between the many HTML files which comprise the help. Uses DocBook SGML. x DONE: Provide a Preferences setting to control what happens when a make run finishes. Nothing; Sound Bell; Flash Window; Run Program. x DONE: configure-time check for /usr/doc is insufficient. Need to use /usr/doc on Linux only, $(prefix)/share/$(PACKAGE) on NetBSD. Now those files are handled by RPM using a %doc directive. x DONE: Tweak icon to look good when scaled down for taskbar by modern GNOME. x DONE: Bug where maketool crashes if first line of make output is empty, e.g. the XFree86 build. This has been fixed but unreleased for a while. x DONE: In summary mode, need to highlight the `Compiling' lines visually to separate them from the usual make clutter. x DONE: Detect (at configure time) whether BSD or SysV signal semantics are in place. Note that on Linux you get SysV semantics with `gcc -ansi' regardless of whether you also request -D_USE_BSD. x DONE: The directory /usr/src/redhat/SOURCES is RH-specific. Mandrake uses the more vendor-neutral /usr/src/RPM/SOURCES which needs to be accomodated. x DONE: A.T. Hofkamp says: when extract_targets is not found, the failure mode is that the Build menu contains the following entries: /bin/sh: extract_targets: command not found x DONE: When running configure, pop up a dialog which requests arguments for configure (just a text box initially). Default value is the last arguments used (from config.status, then from preferences). x DONE: Add a GUI for setting CONFIGUREFLAGS based on ./configure --help x DONE: Strongly limit the inclusion of gdkx.h. x DONE: Fix Makefile.in to use pkglibexecdir instead of libexecdir x DONE: Add email address to Vendor: in spec file. x DONE: Change spec file to make the RPM depend on make. x DONE: Reduce use of @PACKAGE@ etc in spec file. x DONE: Use config.status if it exists and is not newer than configure or configure.in. x DONE: Create dummy N_() macros to seed the PO files with common autoconf help strings. x DONE: Rationalise use of handle_input() x DONE: Merge line-ifying handle_input() into task.c. x DONE: Add a Build->Makefile menu item to allow the user to manually start the Makefile-build process. x DONE: Change the Build->Run autoconf etc menu items to be dependent on the directory's makesystem. x DONE: Handle dependancies of multiple files on their .in counterparts via autoconf, in particular Makefiles in subdirs. Possible create a temporary `Makefiles' target. x DONE: Need a function to remove config.cache. x DONE: Allow the Makefile to be built on-demand, with an entry in the first part of the Build menu. Turn off automatically building by default.