I hadn’t planned on another release in the 0.7 line, but the 0.7.11/0.7.12 releases had a pretty bad anti-feature with adding directories to the files list. So, after fixing that issue I decided to work on some other features, finding a few more bugs in the process. I would have hoped to get a bugfix release out sooner, but the new changes are worth it.
One new feature is the option to generate complete copyright templates, rather than just reference their filename path. The complete text is imported from the template file.
Template Generation Buttons
Along with the previously listed templates acquired from the standard system directory /usr/share/common-licenses, Debreate now ships with a few common open source license templates that may not be included with the Debian/Ubuntu system common licenses. If any of the shipped templates share the same file name with a system license, the system license will take precedence.
Also, users can place text files in the .local/share/debreate/templates/licenses folder under the home directory. When Debreate starts up, any files found in this directory will be listed under available templates. These templates will take precedence over shipped & system license templates.
Short templates, that merely reference the filename path, can only be generated for system licenses.
Drag-&-drop is now supported for many actions. Some text areas, including on the copyright page, allow dragging text files from the system file manager. The file will be read & the text area will be filled with its contents. A confirmation dialog will pop up if the text area is not already empty.
Drag-&-Drop Overwrite Prompt
Package files can be added by drag-&-drop as well, either from the system file manager or the directory tree provided by the app. Added directories preserve file path names up to the top-level directory name. This was part of the anti-feature in the previous releases.
Drag-&-Drop from Directory Tree to File List
An option to add files individually to the packaged files list has also been added.
Selecting this will not affect the final build. It is only provided for convenience. Adding files individually is slower & can take a long time if a directory contains a lot of files. Previously, this was the only method available. Depending on the number of files being added a progress dialog that can be canceled will be displayed. Leaving the option unchecked will only list the name of the top-level directory.
In addition, multi-selecting items in the directory tree is now supported.
When Debreate is started, it will attempt to scan the system for mounted storage devices & list them in the directory tree on the Files page. The user’s home directory will be the first item listed under System, followed by any storage devices detected.
Attached Storage Devices
If any devices are mounted or unmounted while the app is open, the Refresh context menu option will update the tree.
Directory Tree Context Menu
Support for renaming files & directories, & sending items to the trash, has been added via the context menu as well. The command gvfs-trash must be available on the system for removing/trashing items. It is provided by the gvfs-bin package.
Official package repositories require a correctly formatted changelog. Included in the changelog must be the name of the target distribution for which the package is intended. While this may not be required for binary package building, it is good practice.
Some examples of distribution names (e.g. codenames) are squeeze, stretch, stable, & testing for Debian systems. Some current Ubuntu distributions, as of writing this, are xenial & yakkety. Previously, Debreate did not provide any sort of list of distribution names to select from. In 0.7.13, it scans the system at launch for files containing distribution information & attempt to extract names for selecting. If any names are found, the Distribution text input area will have a drop-down box containing this optional list. If no distribution names could be found, only a text input will be shown.
A more extensive list can be cached from the menu Options ➜ Update dist names cache.
Distribution Names Cache Menu
A dialog will open for options to create/update the cache file.
Distribution Names Cache Update Dialog
Pressing the Update Cache button will attempt to connect to select remote Debian, Ubuntu, & Linux Mint web pages & parse a number of distribution names. If any names are collected, the file .local/share/debreate/cache/distnames will be created & the list will be immediately updated on the Changelog page. Restarting the app may be required if Debreate did not find any distribution names when scanning at launch. Press the Preview Cache button to view the newly cached file’s contents.
Cached Distribution Names Preview
If the cache file exists when Debreate starts up, it will load the list of names from it rather than scanning the system.
The reason that only three Linux OSes are supported is because they are currently the most popular of the Debian/Debian-based systems & parsing instructions are unique for each page.
It is highly recommended, if not expected, that when releasing stable software, to strip any binaries of unnecessary symbols (such as debugging symbols). This makes the files smaller & puts less strain on end-users’ bandwidth when downloading/installing.
Debreate now has the option to perform stripping on detected ELF binary executables & shared objects (.so).
Strip Binaries Option
This step is done during the build process, when all files are gathered into the staged (temp) directory before the final packaging.
Using the system command file on a binary file will tell you whether or not it has been stripped.
Non-stripped ELF Executable
If Strip binaries is selected at build time, Debreate will use the system command strip to remove this extra information & slim down the final package.
Stripped ELF Executable
Any previously stripped or non-ELF files will be unaffected.
While testing these new features a quite large bug had surfaced. When Debreate starts up, it checks for a configuration file in the user’s home directory (.config/debreate/config). If this file does not exist or is corrupted, a First Run message dialog will be displayed. After exiting the dialog the configuration file will be created/overwritten with default values.
The problem that was persisting was that Debreate was not appropriately checking an existing configuration for corruption. This either caused the app to misread some values or fail to launch.
This was more of a mistake than a bug. The issue was that when adding a directory to the Files page file list, it would scan all files contained within the directory & its sub-folders & strip the files’ relative path. So, all files would be installed directly into the target directory.
Now Debreate preserves the relative path. If you add the folder /home/user/bar to target /usr/share/foo, the full directory layout will be preserved. So /home/user/bar/A/B/C will be installed to /usr/share/foo/bar/A/B/C, rather than /usr/share/foo/C.