, 3 min read
Testing J-Pilot feature-gtk3 branch
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:
- Download zip-file and unpack
- Run
autogen.sh
, then runmake
- Create virgin directory
$HOME/tmp/gtk3/
and copyempty/*.pdb
to$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.
W1. Starting
JPILOT_HOME=$HOME/tmp/gtk3/ ./jpilot
shows
(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.)
Address records:
Date records:
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.
Added 27-Aug-2022: Red Hat Enterprise Linux 10 Is Eliminating GTK 2 Support.