It's only used by librpbase internally.
This is technically an ABI break, even though these functions weren't
used outside of librpbase, so bump the SOVERSION to 7.
Otherwise, we have to install the specific Tracker library, which is
versioned, so we end up with more problems.
(cherry picked from commit 1356d23d4c)
Otherwise, I might forget to update it when building for various versions
of Ubuntu, which will result in Tracker being installed in the wrong
place for most newer versions.
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.
qoi.h is used for upstream, instead of writing a custom decoder.
I may write a custom decoder later to decode the Qoi data directly
into an rp_image without having an intermediate step.
Move extlib/ before src/.
Remove src/librpbase/uvector.h. This was moved to src/uvector.h in
commit 597d0a088c
(Move uvector.h from src/librpbase/ to src/.)
..and was rewritten to derive from std::vector<> in
commit d2a752a456
(Replace ao::uvector<> with std::vector<> with a custom allocator.)
TODO: Sort the license descriptions?
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.
While the code itself supports all three API versions, we're only
supporting installing into a single version directory. Added
auto-detection to detect what version is installed, plus a manual
override using TRACKER_INSTALL_API_VERSION to explicitly specify
which version to use.
Ubuntu versions and Tracker API versions:
- 16.04: v1
- 18.04: v2
- 20.04: v2
- 22.04: v3
- 24.04: v3
[debian] rules: Explicitly specify the API version so we don't need to
install the Tracker packages when building.
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.)
It's not allowing writes to the user's home directory, which prevents
extracting images.
TODO: Get it working...
The rp-download profile is still enabled, since it's only allowed to
write to the cache directory.
The path was changed to a common KIO directory in 5.85.
rom-properties-kf5.install: Add the ${SERVICES_INSTALL_DIR} entry, and
also remove the KIO install entry, since that was split out into the
rom-properties-kio-servicemenus package.
TODO: Don't install rom-properties-kio-servicemenus if KF5 is earlier
than 5.85, or install it anyway for forward compatibility?
[kf5] On Ubuntu 16.04, ${SERVICES_INSTALL_DIR} is incorrectly set to
the KDE4 directory. Not usre if it's because kdelibs5 for KDE4 is also
installed... As a workaround, if ${SERVICES_INSTALL_DIR} contains kde4,
change it to "share/kservices5".
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.
rom-properties-kf5.so and xattrview-kf5.so are located in
KF5_PRPD_PLUGIN_INSTALL_DIR when using JSON loading, not
KF5_PLUGIN_INSTALL_DIR.
Ubuntu 22.04 has KF5 5.92.0; JSON loading was added in 5.89.0.
rom-properties-kf5.install:
- Update the paths.
- Remove the .desktop files, since they're not needed (or created)
anymore.