This will allow us to test the PugiXML code on AppVeyor.
TODO:
- Add an internal copy of PugiXML.
- Port everything from TinyXML2 to PugiXML.
- Remove TinyXML2.
In many cases, an IRpFilePtr isn't actually needed here, so make the
base function take just IRpFile*.
Add a static inline wrapper that takes IRpFilePtr.
J2MEPrivate::loadIcon(): Get rid of MemFilePtr, since we don't actually
need it here. Use a plain MemFile* instead.
Only two functions are needed from libblkid:
- blkid_get_cache()
- blkid_get_tag_value()
dlopen() the library instead of linking directly to it, and define the
necessary structs and function prototypes here. This removes the need
for the libblkid-dev dependency at build time.
NOTE: libblkid.so.1 is *not* dlclose()'d. This shouldn't be a problem,
since Tracker uses it directly anyway.
Besides the filename and path changes, these changes were needed:
- Tracker 3.3.0-alpha added a function tracker_file_get_content_identifier(),
which is used for the content identifier. I'm only calling this function
if we're using API version 3. (TODO: Only for 3.3.0 or later, maybe.)
- tracker_file_get_content_identifier() is part of libtracker-miners-common,
which is statically linked into every extractor. As such, we can't simply
dlsym() the function from libtracker_extract. (We *could* get it from one
of the existing extractors, since they're exporting all of the symbols,
but that's an implementation detail that could change later.)
- tracker-file-utils.c implements tracker_file_get_content_identifier().
This file requires libblkid and (optionally) BTRFS_IOC_INO_LOOKUP.
CMakeLists.txt now checks for those and links in libblkid.
- Add libblkid to other relevant files, plus FindBlkid.cmake.
- Rename the .rule files to 14- so they take precedence over tracker-3's
own 15-executable.rule and 15-games.rule.
On Gentoo Linux amd64, gcc-13.2.0, glibc-2.39:
New exports:
+T LibRomData::WiiUFst::hasErrors() const
+T LibRomData::WiiUFst::isOpen() const
+T LibRomData::WiiUFst::WiiUFst(unsigned char const*, unsigned int)
+T LibRpBase::Hash::algorithm() const
+T LibRpBase::Hash::getHash32() const
+T LibRpBase::Hash::getHash(unsigned char*, unsigned long)
+T LibRpBase::Hash::~Hash()
+T LibRpBase::Hash::hashLength() const
+T LibRpBase::Hash::Hash(LibRpBase::Hash::Algorithm)
+T LibRpBase::Hash::isUsable() const
+T LibRpBase::Hash::process(void const*, unsigned long)
+T LibRpBase::Hash::reset()
+T LibRpFile::FileSystem::is_directory(char const*)
Removed exports:
-B RP_CPU_Flags
-B RP_CPU_Flags_Init
-T LibRpBase::MD5Hash::calcHash(unsigned char*, unsigned long, void const*, unsigned long)
-T RP_CPU_InitCPUFlags
In particular, the CPU flags functionality is no longer exported from
libromdata. (librpcpuid must be statically linked to each project.)
Also, MD5Hash has been changed to Hash and supports multiple algorithms.
Finally, WiiUFst is now exported in order to allow unit tests. (No
automated tests are implemented right now, but WiiUFstPrint is available
for manual testing.)
This service menu is used for both KF5 and KF6.
[debian] New package rom-properties-kio-servicemenus, which is
now selected by rom-properties-kf5. rom-properties-kf5 no longer
installs the service menu file.
TODO: Verify that the Conflicts: and Replaces: rules work correctly.
MSVC complains now because these classes are dllexport in order to fix
a build issue with RpPngFormatTest on Ubuntu 18.04:
src\librpfile/MemFile.hpp(150,15): warning C4251: 'LibRpFile::MemFile::m_filename':
class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
needs to have dll-interface to be used by clients of class 'LibRpFile::MemFile'
src\librpfile\VectorFile.hpp(136,24): warning C4251: 'LibRpFile::VectorFile::m_vector':
class 'std::vector<uint8_t,std::allocator<uint8_t>>' needs to have dll-interface
to be used by clients of class 'LibRpFile::VectorFile'
For MemFile, use a char* instead of std::string. This has a nice side
effect of reducing memory usage a bit.
For VectorFile, allocate the vector using new. This might have slight
additional overhead, since there's another pointer dereference.
VectorFile is currently only used by gtk/DragImage.cpp, so it isn't
a significant issue.
Note that since these fields are used by inline functions, changing them
*does* break the ABI, even though none of the symbols have changed, so the
libromdata SOVERSION was bumped to 2.
For rom-properties 2.0, only the Ubuntu 18.04 and later builds had the
prior changes to export MemFile, IRpFile, and RefBase, so the Windows
version didn't have that change and thus didn't need this ABI-breaking
change.
GSound depends on libcanberra, but it's an indirect dependency, so
if we use GSound, we don't need to use libcanberra.
GSound is available on Ubuntu 16.04, so we can switch to it on
most systems. The libcanberra backend is still supported for now,
though it might be removed later.
Since GSound doesn't have a GTK+ dependency, we can use it in the
GTK4 backend. (libcanberra doesn't support GTK4.)
MiniZip 2.10.0 uses ZSTD_compressStream2() and ZSTD_EndDirective.
Note that MiniZip is not currently used outside of test suites,
so this won't be installed as part of the package.
- Renamed the gnome package to gtk3.
- gtk3-common is now part of gtk3.
- gtk3 now depends on thumbnailer-dbus.
- gtk3 has gnome in Conflicts/Replaces.
The XFCE (GTK+ 2.x) version is kept as-is.
Note that while the desktop-specific dev packages aren't needed anymore,
we're still listing them as build dependencies in order to ensure that
the extensions directory is correct.
Forgot to do this before merging the feature/combine-gnome3-plugins branch.
[gnome] CMakeLists.txt: Find LibNautilusExtension, LibCajaExtension,
and LibNemoExtension to install symlinks. If any of them aren't found,
a default value will be used.
Needed for rp-download.
NOTE: Not rebuilding the Ubuntu 16.04 "Xenial Xerus" packages right now.
This is a minor issue and can be remedied by installing the
rom-properties-utils package manually.
(cherry picked from commit 8642c59004)
It's more efficient than loading the system MIME database, and it's more
accurate, since we already checked the ROM to determine what it is, and
the file extension might be incorrect and/or not specific enough.
Example: DSi-only ROM with a .nds extension.
[kde4] Removed MimeGlobsParser and config.kde4.h.in.
[debian] Removed the shared-mime-info dependency for the KDE4 UI frontend.
[doc] Removed the shared-mime-info mention for the KDE4 UI frontend.
Related bug report for LibreOffice:
https://bugs.documentfoundation.org/show_bug.cgi?id=125922
NOTE: dll-search.c still checks for "KDE5" for compatibility.
NOTE 2 We did NOT include "KDE5" in the forwarding plugins for
compatibility because they shouldn't be mixed-and-matched with
rom-properties versions.
[rp-download] Cache keys have the file extension, so we shouldn't add
it here. We *are* verifying that the file extension is supported, and
we have to remove it for amiibo.
CurlDownloader: Reduced the timeout to 10 seconds.
Install to the libexec directory.
[debian] Renamed rom-properties-stub to rom-properties-utils.
rp-download is now included as part of this package.
Moved it up from the gnome directory to the gtk3 directory.
NOTE: We can't add a MATE package right now because the earliest version
of Ubuntu I'm still supporting is 16.04, and that has MATE 1.12 (GTK2).
I'll add the MATE (and XFCE GTK3) packaging files in branches for the
appropriate Ubuntu verisons:
- Ubuntu 16.04 LTS: MATE 1.12.7 (GTK2), Thunar 1.6.11 (GTK2)
- Ubuntu 18.04 LTS: MATE 1.20.2 (GTK3), Thunar 1.6.15 (GTK2)
- Ubuntu 18.10: MATE 1.20.2 (GTK3), Thunar 1.8.1 (GTK3)
- Ubuntu 19.04: MATE 1.20.3 (GTK3), Thunar 1.8.4 (GTK3)
Preparations for Thunar 1.8.0, which was released today and uses GTK+ 3.x.
NOTE: The .thumbnailer file is common for both GTK+ 2.x and 3.x,
so it's installed as part of thumbnailer-dbus.
[debian] Added a new package, rom-properties-thumbnailer-dbus.
rom-properties-xfce and rom-properties-all now have dependencies on
this package.
The custom classes were borrowed from GCN MemCard Recover, which doesn't
use KDE libraries at all. Since rom-properties uses KDE, we should make
use of this for, among other things, better animation.
We're now using KMessageWidget::Information instead of Warning in cases
where no keys are loaded, since this means that while the keys file is
valid, it doesn't have any useful keys. (The keys might already be present
in keys.conf, or they might not be used by rom-properties.)
Added the required development packages to debian/control and
COMPILING.md.
The minimum KDE4 version is now 4.7.