Features/Trigger Bundle Add
There are many scripts that are external to the shell that can install bundles, e.g, sugar-install-bundle, system package installer, and others. When these scripts are run and the sugar shell is running, the expected behavior would be to see these actions reflected in the activity list, but it doesn't always happen. Often the activity list would:
- not show activities even though they are now installed, or;
- show the wrong version number for installed activities.
Restarting Sugar would fix the inconsistency.
After some research, we realized that there is a design flaw in the way the bundle registry detects these bundles. The registry uses GioFileMonitor to detect when new bundle directories are created, but, in many cases, it detects the creation before the contents of the directory are populated, so it can't find the activity.info file and the bundle gets ignored.
This new feature simply adds a way to explicitly tell the registry to add the bundle, by "touching" the bundle directory, e.g, $ touch /path/to/bundle.
- Name: Martin Abente Lahaye
- Email: <firstname.lastname@example.org>
- Targeted release: 0.108
- Last updated: Oct 21, 2015
- Percentage of completion: 100%
Benefit to Sugar
It fixes a design flaw in a very simple and inexpensive way, so now external scripts can explicitly tell the registry when to load the bundle, after the scripts has completely populated the directory.
This requires a very small change in the bundle registry, plus other external scripts like sugar-install-bundle. Those two changes are already implemented here: https://github.com/sugarlabs/sugar/pull/584
No UI involved.
How To Test
To simulate the fail condition simply create a empty directory in ~/Activities/, e.g, $mkdir ~/Activities/Test.activity. Enable the DEBUG logging and you will see that the registry will ignore that directory. It is kind of obvious but that is exactly what happens when external scripts populate the bundle directory incrementally.
Now, populate that empty directory with some real bundle contents, and then touch it, e.g, $touch ~/Activities/Test.activity. The registry should successfully load the bundle.
Add a note to the developers about this step.