1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
|
1.3.0:
======
- Features:
* Introducing the QApt::Changelog class, which provides an interface for retreiving
information from a package's changelog. Individual entries in the changelog can
be retreived along with other data such as version, date and an update description.
* Added Backend::stateChanges() to provide lists of changed packages since a given
CacheState.
* Added QApt::Package::archives() function to return a list of archives that a package
is available from. (E.g. oneiric, oneiric-updates, sid, etc)
- Bugfixes:
* Fixed not being able to unmark a package when it is a dependency of another package
that is also marked.
* Fixed build with PolkitQt-1 0.100+
* Fixed a spelling error in the QApt Deb Installer
* Support Debian changelog servers, fixes changelogs containing HTML on Debian systems
* Fixed a documentation typo in QAptConfig.cmake
* Fix deprecated values and other desktop spec violations in the QApt Deb Installer's
desktop file.
* Fixed the GStreamer Plugin Installer not finding packages for entire GStreamer elements
(as opposed to plugins for specific element capabilities) (LP: #883604)
* Fixed the GStreamer Plugin Installer hanging when plugins can not be found.
* Fixed a crash in the GStreamer Plugin Installer where a QGst::CapsPtr was used without
a null check.
* Make the QApt Worker report the URI for fetch errors instead of the fetch description.
* Fix build issues with APT 0.8.16+
* Fix failure to build on systems without KDE development headers installed.
- Optimizations:
* Added Backend::markPackages() for marking multiple packages at once.
It utilizes event compression, avoiding additional internal dependency checking or
emitting packageChanged() signals until everything is marked. Increases the speed
of marking multiple packages by 300% in Muon.
* Added Backend::setCompressEvents() function so that programs can utilize the event
compression speed benefits in their own custom marking loops if they can't use
Backend::markPackages()
* Normalize all signals/slots for a (micro)optimization.
* Other:
- Dropped legacy support for PolKit-Qt 0.98.x. Polkit-Qt 0.99 or greater is now required.
- Utilize language features of C++11, GCC 4.6+ or similar is now required.
- API documentation updates
1.2.3:
======
- Bugfixes:
* Fixed a bug with the QApt Deb Installer where files with spaces would fail to install.
(BKO: #290510)
* Read the dpkg pty regularly to prevent it from filling.Fixes an issue where long/verbose
commits would hang the QApt Worker, by extension causing QApt frontends to hang.
(BKO: #292423, LP: #840306)
* Restart the QApt Worker's timeout timer and note the end of a commit if commitChanges
fails. Otherwise, the QApt Worker will remain as a zombie indefinitely, hanging
frontends. (BKO: #292549)
* Emit a FetchFailed error if enough packages fail to download to prevent a commit from
happening at all. Fixes a hang on frontends when packages fail to download. (BKO: #287274)
1.2.2:
======
- Bugfixes:
* Fixed a bug in QApt::Debfile where the reported install size was
always one unit too low. (E.g. showing 5 KiB instead of 5 MiB)
Fixes the QApt Deb Installer showing too small installed sizes.
* More fixes for MultiArch. The last round of fixes were made with the assumption that all
installable foreign-arch packages would be marked with a Multi-Arch field in their control
files. This was a bad assumption. Non-native foreign-arch packages need no changes made to
them as long as their dependencies are multi-arch.
As such, we cannot only add foreign-arch packages marked as MultiArch to the cache, or else
we lose foreign-arch binary packages such as Skype. (Which is what people actually want!)
Unfortunately, this means that there will be "duplicate" entries for most packages in the
cache, but these can be differentiated by placing (arch) after the names in your display
model.
Package::isMultiArchEnabled() has been deprecated, and a new Package::isForeignArch()
function has been added. It does the same thing, but includes all foreign-arch packages
that the APT install supports.
* Be a bit less strict about the quality cutoff for the quick search. Fixes very few
results being found for the "linux" search term. (BKO: #283523)
* Fixed an issue with the QApt Deb Installer hanging during long installations.
(LP: #850902)
* Fixed random "this package is incompatible with your computer" errors with the
QApt Deb Installer.
1.2.1:
======
- Bugfixes:
* Added support for MultiArch packages when used with APT 0.8.16+. By default,
APT shows every foreign-arch package available. LibQApt filters these and
only shows foreign-arch packages that are explicitly marked as MultiArch.
To differentiate between the package names, LibQApt consumers can use the
new Package::architecture to get the arch as a QString to help disambiguate.
(BKO: #276389)
* Added Backend::isMultiArchEnabled() to return whether or not dpkg/apt are
set up for multiarch
* Added Package::isMultiArchEnabled() to return whether or not a package is
set up for multiarch
* Fixed a bug where the lack of an apt-xapian cache would not trigger a
cache rebuild. (A.K.A. search doesn't work on new installs of $DISTRO)
(LP: #839411)
* Fixed a bug where the QApt Worker would quit during a xapian cache update,
causing consumer apps to lose update progress notification.
* Fixed a bug where the QApt Worker would quit during long installations of
local .deb files with qapt-deb-installer. (BKO: #280890, LP: #830786)
* Fixed a crash when the qapt-gst-helper is given invalid GStreamer caps.
(LP: #847748)
* Fixed xdg compliance issues with the QApt Deb Thumbnailer's .desktop file.
Fixes warnings from kbuildsycoca4.
1.2.0:
======
- Features:
* Added the ability to pin and unpin packages via writing files to
/etc/apt/preferences.d/
* Added the QApt::DebFile class, an information retreval interface for .deb
package archives.
* Added Backend::saveDownloadList() to create a download list usable by the
downloadArchives() function.
* Added a downloadArchives() function to download a list of archives to an
arbitrary directory. The worker will emit package download signals as usual.
This can be useful, for example, for downloading packages to a USB stick.
* Added Backend::addArchiveToCache(), whichs adds .deb files for the candidate
versions of existing packages to the apt .deb cache. This function can be used
to add .debs from e.g. a USB stick so that computers without internet
connections can update packages.
* Added an installDebFile method to QApt::Backend and the QApt Worker. This
method starts the installation of the given .deb file, complete with a
DebInstallStarted event signal on start, DebInstallFinished when finished,
and a debInstallMessage() signal in between for dpkg output.
A new error, WrongArchError, has been added to QApt::ErrorCode for when a
.deb file cannot be installed due to incompatible CPU architectures for binary
packages. (No multiarch support yet)
* Added a new DependencyInfo class to help describe a package's relational
dependencies. Useful for when working without APT's dependency solving
while using .deb files
* Added functions to QApt::Package for returning lists of DependenyInfo objects
for various relational dependencies.
* Added an upstreamVersion() function to the Package class to return the upstream
version of a package. Also include a static version in case we have a package
version without a Package object and want the upstream version without having
a Package object instantiated.
* Added a static method "compareVersion()" to the Package class to compare the
versions of two packages, returning the standard less than 0, 0 or greater than
zero when appropriate.
- Optimizations:
* Speed up concatenation of the release file URI in
PackagePrivate::getReleaseFileForOrigin() (Helps speed up the
Package::isSupported() function)
* Speed up Package::state() by 66% by caching state info that cannot change
between cache reloads.
* Don't pass const references to QLatin1Strings to PackagePrivate::searchPkgFileIter()
and getReleaseFileForOrigin(). QL1S already has a pointer to a c-string, so we are
pointlessly dereferencing a refernce to a pointer, making things a tad bit slower.
These are private functions, so API/ABI is untouched.
- Bugfixes:
* Fixed a copy/paste error in the documentation for the QApt::Group typedef
* Fixed a constructor being incorrectly called a default constructor in the api docs.
* Send the value of the http_proxy env var to the worker, since it normally runs in
a shell-less environment with no env vars defined. Fixes proxies defined in the
http_proxy environment variable not working. (BKO: 275276)
* Fixed a divide-by-zero crash in the QApt Worker when built against APT 0.8.16 or
higher. (BKO: 279690)
- New Utilities:
* Introducing the Installer Plasma Runner plugin, providing package installation
suggestions using the command-not-found utility and QApt Batch.
* Introducing the QApt Deb Installer, a utility for installing .deb packages.
* Introducing the QApt Deb Thumbnailer, a thumbnailing plugin for KDE that
produces thumbnail previews for Dolphin and friends.
* Introducing the QApt GStreamer Helper, a utility that can be used by Phonon's
GStreamer backend for automatically suggesting and installing GStreamer codecs
for media playback.
1.1.3:
======
- Bugfixes:
* Don't waste time searching if the given file is empty, and return a null pointer.
Fixes Backend::packageForFile() returning unpredictable results when passed an
empty file string.
* Innocuous errors can occur at certain times during the execution of
downloadSize() can cause initialization errors, so discard all errors incurred
in this function. (BKO: #265741)
1.1.2:
======
- This was a translations-only update
1.1.1:
======
- Bugfixes:
* Don't crash in Package::supportedUntil() when packages in Ubuntu's main
archive do not have a "Supported" field.
* Prevent a potential crash in Package::supportedUntil() when a corrupt
/etc/lsb-release file is present.
* Set LC_MESSAGES as the worker's locale rather than LC_ALL. If extra locale
categories are set, LC_ALL will return a rather unuseful composite of all of them.
Thanks to Colin Watson for the patch.
* Don't close stdout inside the QApt Worker. Packages' post-installation scripts
that use stdout will silently fail when it is closed with newer versions of APT.
* Use a pty instead of a pipe for write access to enable apt to produce useful
entries in /var/log/apt/term.log.
Adapted from a patch by Colin Watson.
* Don't hardcode the changelog server used in Package::changelogUrl() to
changelogs.ubuntu.com. Debian would have to patch the source file for
changelogs to work, plus it is configurable at the APT level in the first place.
- Optimizations:
* Don't try to build the entire changelog URL ourselves in Package::changelogUrl(),
as the package's control records has much of the URL we need in the form of
its filename.
1.1:
======
- Features:
* Added a new QApt::Config class. It features a KConfig-like API to the APT system
configuration, as well as provides config writing support without dumping the
entire APT configuration settings to a file like APT does. It currently supports
reading and writing int, bool and string settings. QApt::Backend has a
QApt::Config instance that can be accessed by its config() method after
initialization.
* Added a new QApt::History class. It provides an interface to the APT history
log(s). It provides a list of all entries in the logs, with each entry providing
a start date, a list of packages acted upon as well as any errors that may have
occurred during the transaction.
* Added pretty includes in the form of <LibQApt/Include> (e.g. <LibQApt/Backend>)
* Added a packageDownloadProgress() signal for per-package download progress reporting.
This enables client applications to give more detailed information about
currently-downloading packages, including parallel package downloads.
* Added a markPackagesForAutoRemove() method that acts like apt-get autoremove,
marking packages for removal that APT deems obsolete.
* Added a new setUndoRedoCacheSize() function to QApt::Backend. This allows
applications to customize the undo/redo stack size, allowing them to increase
it if RAM usage is less of an issue, or decrease/eliminate the cache if RAM is tight.
* Added Add a saveInstalledPackagesList() function to QApt::Backend that exports a
list of all installed packages to the given path. This list can be ready by
Backend::readSelections() and is fully compatible with the Synaptic Package Manager.
* Add some new functions: recommendsList(), suggestsList(), enhancesList() and enhancedByList()
to return QStringLists of the names of packages that have the aforementioned relational statuses
with the Package.
* Added an areChangesMarked() function to provide an easier/more efficient way to check if there are
pending changes without checking the emptiness of the QApt::PackageList that
Backend::MarkedPackages() constructs and returns.
* API documentation updates, including making note of which functions are asynchronous
and have signals to report events/data.
* LibQApt now compiles with QT_NO_CAST_TO_ASCII and QT_NO_CAST_FROM_ASCII.
- Optimizations:
* APT system initialization in Backend::init() is no longer blocking, so that you
can paint your UI sooner to give a perception of increased speed.
* General optimizations have been made throughout to significantly speed up
Backend::init()
* Speed up Package::isSupported() by making a cache of package index files to
prevent doing a binary search for the index file from the sources list each time
isSupported() is called.
* Speed Package::isInstalled() up by checking for installation without calling state().
* Added an installedCount() function that is faster than using the packageCount()
overload function that takes a package state flag.
* Add more efficient toInstallCount() and toRemoveCount() functions to Backend.
These both just grab int's already cached in memory by APT, meaning that we
don't have to iterate through every Package and get a full state reading to
determine whether it is being installed/removed.
* Add a more efficient latin1Section() function. to QApt::Package Since
QLatin1String returns an empty string when it encounters null char pointers, we
can use latin1Section() in section() to have equivalent, simpler code that still
retains safety.
* Improve the speed of Backend::loadSelections() by parsing selection files with
QByteArray, as well as some other miscellaneous optimizations.
* Change the Backend's origin/human readable name mapping to use a QHash, giving some
minor optimizations to the originLabel() and origin() functions.
* Add a Backend::package() overload that takes a QLatin1String. If you can use this overload,
it is more efficient since you don't have to go QString -> ascii -> latin1 -> const char.
* Make the regular Backend::package() implementation use the QL1S overload. This is slightly
more efficient since we can convert directly from QString -> latin1 without converting to
ascii in between (since APT package names will always be latin1)
* Use the new Backend::package(QL1S) overload inside Backend::search(). the QL1S overload is
faster in the first place, plus since Xapian gives us an std::string it is also faster to go
to QL1S than to QString.
* Since package names are always latin1-compliant, prevent the unnecessary conversion of const char *
-> std::string -> QString::fromAscii -> QString::fromLatin1 by using QLatin1String to wrap around
the const char *, making the conversion process look more like const char * -> QL1S -> QString::fromLatin1.
- Bugfixes:
* Added a NotFound error for the QApt Batch Installer to use when it encounters
a non-existant package. Before it was not catching this error at all and went
straight to completion as if nothing was wrong.
* QAptBatch: Don't say we were successful if there were errors. That looks a bit
silly, especially when we have error dialogs to contradict ourselves.
* Fixed a bug where installing a package locally did not make the
xapianIndexNeedsUpdate() return true;
* Fixed a bug where the worker would never respond to DBus requests when heavy
load was present on the system. (BKO: #249929)
* Fixed a bug where calling originLabel() with an origin that did not have a
label would insert the origin into the origin map, wasting memory.
* Fixed a blank line being snuck in to the end of lists returned by the
Package::installedFilesList() function
* Fix a potential problem with homepage URLs with UTF8 characters not displaying correctly.
* Fix a small memory leak in PackagePrivate. We had a pointer that we allocate to in the
Package constructor which we weren't deleting in the PackagePrivate destructor
* Compile with -fvisibility=hidden by default so that libqapt doesn't expose
symbols from libraries it links against, making life easier for packagers
everywhere.
- Other
* Documentation for the detail QVariantMaps of ErrorCodes, WarningCodes and
WorkerQuestions is now provided, whereas they were completely undocumented
in previous releases.
1.0.4:
======
- Bugfixes:
* Respect preference files in the /etc/apt/preferences.d/ dir, and not just the
/etc/apt/preferences file itself
* Catch and report initialization errors in places we were missing for
* Report that package state has changed when loading selection files
1.0.3:
======
- Bugfixes:
* Implementing proper locking, fixing the "Doesn't respect APT system locks" bug
1.0.2:
======
- Bugfixes:
* QAptBatch: Set the focus to the appropriate button for each mode
1.0.0:
====
* Initial release
|