2nd March 2021
J-Pilot 1.8 still relies on GTK+ 2, which is heading towards planned deprecation. The entire work to migrate to GTK+ 3 is done by volunteers, Judd Montgomery and David Malia. This post is about testing this new experimental branch feature-gtk3 from GitHub.
Installing this branch is straightforward:
autogen.sh, then run
$HOME/tmp/gtk3/.jpilot, otherwise no records will be shown in GUI
Below is a list of warnings, errors and crashes for version d558d56 from 25-Feb-2021.
(jpilot:42580): Gtk-CRITICAL **: 14:22:57.546: gtk_list_store_get_path: assertion 'iter->stamp == priv->stamp' failed (jpilot:42580): Gtk-CRITICAL **: 14:22:57.546: gtk_tree_selection_select_path: assertion 'path != NULL' failed (jpilot:42580): Gtk-CRITICAL **: 14:22:57.546: gtk_list_store_get_path: assertion 'iter->stamp == priv->stamp' failed (jpilot:42580): Gtk-CRITICAL **: 14:22:57.546: gtk_tree_selection_select_path: assertion 'path != NULL' failed
E1. Importing from a hidden directory no longer works, as hidden directory is not shown. In "old" J-Pilot you could specify the hidden directory in edit-field and then press TAB. (No longer the case with ba8354f.)
E2. Searching crashes. (No longer the case with ba8354f.)
segmentation fault (core dumped) JPILOT_HOME=$HOME/tmp/gtk3/ ./jpilot
Running J-Pilot from within gdb and then searching results in:
Thread 1 "jpilot" received signal SIGSEGV, Segmentation fault. 0x00007ffff71facd6 in g_type_check_instance_cast () from /usr/lib/libgobject-2.0.so.0
Executable has debug symbols:
$ file jpilot jpilot: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=745cb795eccaf42d04e2920ca592534a72dbf1f4, for GNU/Linux 4.4.0, with debug_info, not stripped
E3. Address book entries look "awful", i.e., entries are too close together. (No longer the case with ba8354f.)
Also, entering entirely new address record doesn't show separation lines between fields:
U1. To quickly get "mass"-data for a possible buggy J-Pilot software, I prepared a Perl script palmgencsv to generate address- and datebook-CSV files. For example:
$ palmgencsv -dn12000 > d12k.csv
generates 12-thousand records for datebook. Likewise:
$ palmgencsv -an15000 > a15k.csv
generates 15-thousand address records.
C1. One admirable feature, which does work with GTK+ 3, is using the "Broadway backend":
broadwayd & export JPILOT_HOME=$HOME/tmp/gtk3/ GDK_BACKEND=broadway ./jpilot
Alternatively, one could use
broadwayd --address 0.0.0.0. Fire up a web-browser and visit
http://localhost:8080/. This will show J-Pilot running within the web-browser:
How cool is that?
Added 21-Mar-2021: I retested with ba8354f = "Merge pull request #27 from dmalia1/fix-unfocused-color-theme".
Importing from hidden directories: Works. Tested importing 23-thousand address records, 21-thousand date records from hidden directory.
Search does no longer crash immediately. Sounds worse than it really is. As noted in the blog-post I created a Perl-script to generate masses of data. I generated 12-thousand date records (palmgencsv -dn12000). In this case, I created date records Event 1, Event 2, ..., Event 12000. When I search for "Event" (no number), search-window will show me all 12-thousand entries correctly. But when I narrow the search to Event 12000 in the same search-window, then J-Pilot hangs. I tested the same with J-Pilot 1.8.2, which does not exhibit this behaviour. I agree that this is extreme. When I repeat with fewer search matches, e.g., just hundred or just thousand search results and then narrowing, then this hang does not occur. The hang shows no CPU time -- it just hangs, and I lost patience and closed search-window, which also closed the main J-Pilot window.
Entries in address book look better now.
Starting J-Pilot shows:
(jpilot:49290): Gtk-CRITICAL **: 21:05:20.459: gtk_list_store_get_path: assertion 'iter->stamp == priv->stamp' failed (jpilot:49290): Gtk-CRITICAL **: 21:05:20.459: gtk_tree_selection_select_path: assertion 'path != NULL' failed
But otherwise this does not seem to indicate any trouble.