Commit Graph

212 Commits

Author SHA1 Message Date
David Korth
6577715f73 [librpbase] APNG_dlopen.h: Don't export APNG_ref() and APNG_unref().
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.
2025-06-07 14:38:47 -04:00
David Korth
8650f2b1c2 [debian] control: Add liblz4-1 and liblzo2-2 as explicit dependencies to libromdata6.
These are now dlopen()'d, so ${shlibs:Depends} won't detect them.

NOTE: Newer versions of Debian tools might detect them if we add
dlopen() notes.
2025-06-02 22:43:12 -04:00
David Korth
53b74e0467 [debian] rules: Explicitly specify the Tracker API version, again.
Otherwise, we have to install the specific Tracker library, which is
versioned, so we end up with more problems.

(cherry picked from commit 1356d23d4c)
2025-05-10 21:04:30 -04:00
David Korth
1f246e4ff6 rom-properties 2.5.1 2025-05-10 16:41:45 -04:00
David Korth
ee887913a6 [debian] rules: Set TRACKER_INSTALL_API_VERSION=AUTO.
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.
2025-04-20 16:50:54 -04:00
David Korth
75a44f6f97 rom-properties 2.5 2025-04-19 23:47:38 -04:00
David Korth
55f86d1158 Add an internal copy of PugiXML and remove TinyXML2 completely.
TODO:
- Add the 'd' postfix to the debug DLL.
- Configure PugiXML options and hide them from the user, since these are
  configured by rom-properties.
2025-04-01 19:19:20 -04:00
David Korth
fded19cd7d Add libpugixml-dev to appveyor-dpkg.sh and debian/control.
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.
2025-04-01 19:19:20 -04:00
David Korth
5e4571f209 Renamed extlib/libfmt/ to extlib/fmt/.
It's called just "fmt" upstream (or "fmtlib").
2025-03-20 22:16:59 -04:00
David Korth
1cd09c3039 [librptexture] Qoi: New parser for the Quite OK Image Format.
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.
2025-03-17 18:10:03 -04:00
David Korth
5ed91f8256 [debian] control: Add more info to the short package descriptions. 2025-02-25 23:01:00 -05:00
David Korth
9de5720776 [libpng] Update: v1.6.44 -> v1.6.46
[debian] copyright: Update libpng.
2025-01-27 18:22:34 -05:00
David Korth
91cd78e6d7 [debian] copyright: Remove empty "Comment:" tags. 2025-01-24 00:21:43 -05:00
David Korth
9f6016a382 [debian] copyright: Add libfmt. 2025-01-24 00:21:28 -05:00
David Korth
9d93f89428 [debian] copyright: Add src/libromdata/Other/Wim.[ch]pp . 2025-01-24 00:20:21 -05:00
David Korth
87d8c856c9 [debian] copyright: Update copyright dates for extlib/ and some src/ files. 2025-01-24 00:19:17 -05:00
David Korth
c1e83c232c [debian] copyright: Sort src/ and extlib/.
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?
2025-01-24 00:11:05 -05:00
David Korth
e0abbe20bb [librpbase] RpPng::load(): Take IRpFile* instead of IRpFilePtr. (BREAKING CHANGE; SOVERSION bumped to 6)
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.
2024-11-24 16:57:42 -05:00
David Korth
87eb036468 rom-properties 2.4 2024-11-10 22:39:38 -05:00
David Korth
af15c13b80 [debian] control: Add libkf5crash-dev.
[doc] COMPILING.md: Add KCrash packages.

Missed these in commit e263b35b07.
([kde] stub-export.cpp: Set up KAboutData.)
2024-11-10 21:40:39 -05:00
David Korth
1e8001db64 [debian] rom-properties-gtk3.install: Install the .caja-extension file. 2024-09-26 21:31:09 -04:00
David Korth
9dd52be639 [debian] copyright: Add copyrights for tracker-file-utils.c.
The functions in tracker-file-utils.c were mostly just copied verbatim
from tracker's upstream repository. (libtracker-miners-common)
2024-03-30 11:21:24 -04:00
David Korth
7a1cc1399f [tracker] tracker-file-utils.c: dlopen("libblkid.so.1")
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.
2024-03-30 11:16:45 -04:00
David Korth
0393fab3dd [debian] rom-properties-tracker: Add a Debian package for the Tracker extractor module.
NOTE: The XFCE and GTK3 packages have the Tracker package listed as
Recommends, not Depends.
2024-03-30 11:02:40 -04:00
David Korth
4e5ce09a05 [tracker] Enable the INSTALL rules.
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.
2024-03-30 10:55:41 -04:00
David Korth
de43b12882 [tracker] Add support for tracker-3.0.
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.
2024-03-29 22:53:45 -04:00
David Korth
6b797292c8 [libromdata] SOVERSION bumped to 5 due to various changes.
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.)
2024-03-17 18:48:56 -04:00
David Korth
c453a84c33 [debian] control: Change kio-servicemenus from 'any' to 'all'.
This package doesn't have any architecture-specific files.
2024-03-03 17:22:54 -05:00
David Korth
a5a6d140c1 rom-properties 2.3 2024-03-03 13:25:30 -05:00
David Korth
fcd37b4d19 [debian] control: Use "<< 2.3", not "< 2.3".
Due to historical reasons, "<" is actually "<=".

Reference: https://web.mit.edu/ebj/Desktop/ebj/MacData/afs/sipb/project/debathena/lintian/www/tags/obsolete-relation-form.html
2024-03-03 13:24:43 -05:00
David Korth
ff6c90736d [rpcli] Disable the AppArmor profile for now.
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.
2024-03-01 02:25:04 -05:00
David Korth
baa576f932 [kf5] Install KDE service menus in ${SERVICES_INSTALL_DIR} if older than KF5 5.85.
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".
2024-03-01 01:37:59 -05:00
David Korth
b408e8c5f8 [debian] Install xattrview-(kde4|kf5).desktop. 2024-02-29 23:27:54 -05:00
David Korth
8d76641679 [kde] Move the KIO service menu for KF5/KF6 from kf5/ to kde/.
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.
2024-02-17 21:53:21 -05:00
David Korth
84288565c3 [debian] control: Remove some duplicated "rom-properties-utils" Depends entries. 2024-02-17 21:49:47 -05:00
David Korth
daaf1622a6 NEWS.md: Dark Mode is fully implemented.
Update copyrights for the various components:
- ysc3839 and PolyHook_2_0 are MIT.
- TortoiseGit is GPLv2.
- Notepad++ is GPLv3.
2023-11-19 12:54:16 -05:00
David Korth
2dbeff1ae0 [debian] rules: Explicitly specify -DENABLE_OPENMP=ON. 2023-08-20 10:59:58 -04:00
David Korth
4fb1035c14 [libromdata] SOVERSION bumped to 4 due to the is_timestamp change.
TODO: ABI dumps.
2023-08-05 11:23:43 -04:00
David Korth
56b0b16c76 [debian] rules: Work around $(shell pwd) pointing to the base directory, not the build directory.
Add both $(shell pwd)/build/lib and $(shell pwd)/lib .

Not sure how this worked for v2.2...

(cherry picked from commit a071a985b2)
2023-07-31 21:17:06 -04:00
David Korth
c3d02a599f rom-properties 2.2.1 2023-07-31 19:04:40 -04:00
David Korth
753efb4a6f [debian] rules: Enable verbosity on tests.
We're using --gtest_brief, so only failure and overall success messages
will be printed.

This will make it easier to diagnose PPA test errors.
2023-07-05 18:30:43 -04:00
David Korth
db875e03e4 [debian] Reverted to the Ubuntu 16.04 versions.
Retained the -DENABLE_LTO=OFF change, since gcc-5 doesn't seem to
like doing LTO with the UI frontends anymore.
2023-07-01 21:48:01 -04:00
David Korth
a0f24ae8a7 [debian] rom-properties-kf5.install: Fix this for the previous changes. 2023-07-01 21:32:24 -04:00
David Korth
ed2a9e692b [kf5] CMakeLists.txt: Fix symlinks for KF5 [5.89,5.100).
For versions where JSON plugin loading is used, but ThumbnailCreator
isn't available yet.
2023-07-01 21:20:13 -04:00
David Korth
0e71d1ad37 [kf5] Fix plugin installation paths when using the JSON plugin loader.
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.
2023-07-01 20:07:29 -04:00
David Korth
1727d7c0fa [debian] 2.2: Build for Ubuntu 22.04 "Jammy" Jellyfish. 2023-07-01 19:39:43 -04:00
David Korth
354dcfdd78 [debian] 2.2: Build for Ubuntu 20.04 "Focal" Fossa.
Main changes:
- Disabled GTK+ 2.x builds. (XFCE)
- Disabled KDE 4.x builds.
- Enabled system libzstd.
2023-07-01 18:00:58 -04:00
David Korth
d117f8df70 [debian] 2.2: Build for Ubuntu 18.04 "Bionic" Beaver. 2023-07-01 17:38:59 -04:00
David Korth
7d508cbfe8 [debian] changelog: xenial4, not xenial3 2023-07-01 17:14:04 -04:00
David Korth
0de3ce971e [libromdata/tests] Disable RomHeaderTest entirely for now.
It's still failing on the PPA build servers and I don't know why.
2023-07-01 17:05:06 -04:00