Commit Graph

67 Commits

Author SHA1 Message Date
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
5ed91f8256 [debian] control: Add more info to the short package descriptions. 2025-02-25 23:01:00 -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
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
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
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
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
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
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
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
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
64cc7b7aba [debian] Bump libromdata2 to libromdata3. 2023-02-19 13:03:58 -05:00
David Korth
b7bff34fc5 [debian] control: KDE packages should depend on rom-properties-utils, not rom-properties-stub.
rom-properties-stub was replaced by rom-properties-utils a while ago.
I oopsed when I added the stub dependency. :x
2022-12-24 13:38:00 -05:00
David Korth
7e46a1b660 [debian] control: KDE4/KF5 packages depend on rom-properties-stub for the "Convert to PNG" service menu. 2022-12-23 14:31:03 -05:00
David Korth
78867a4bb6 [librpfile] MemFile, VectorFile: Don't use non-pointer C++ objects in the class definition.
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.
2022-09-24 23:27:07 -04:00
David Korth
3c4345bb3b [debian] Add a libromdata1 package for libromdata.so.1.0.
Added dependencies to the various packages.

rules: Set LD_LIBRARY_PATH so tests will run correctly when libromdata
isn't installed system-wide.
2022-06-21 18:59:40 -04:00
David Korth
86339962df [gtk] Use GSound if it's available.
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.)
2021-07-30 20:55:12 -04:00
Clownacy
4a48e15cc7 Unlist libbsd as a dependency
This doesn't appear to have been a dependency since at least
860288ab05
2021-07-25 11:55:50 +01:00
David Korth
188d3efe53 [debian] rom-properties-data: New package for data files.
This package currently contains the Nintendo amiibo database.

More files may be added if they're split out of the binary and into
separate files.
2021-03-22 00:35:58 -04:00
David Korth
6efa587a54 [debian] control: GUI plugins should depend on rom-properties-xdg.
The MIME data is needed by most GUI frontends to determine which
thumbnailer to use.
2021-03-22 00:35:06 -04:00
David Korth
cb77351d45 MiniZip 2.10.0 requires zstd-1.4.0.
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.
2020-09-20 16:49:58 -04:00
David Korth
64774cc6b2 Dependencies: Added liblz4-dev and liblzo2-dev for PSP CISO.
Forgot to do this before.

.travis.yml: Also added libzst-dev and the canberra dev packages.
2020-09-07 03:45:53 -04:00
David Korth
4a127faec4 [debian] control: Added zstd and canberra development packages. 2020-09-07 03:43:35 -04:00
Cameron Cawley
a600b119ef Remove leftover references to OpenGL 2020-07-13 14:06:44 +01:00
David Korth
a7dea6bdbc [debian] Updated for the GTK3 consolidation.
- 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.
2020-06-23 23:58:13 -04:00
David Korth
7b45d54692 [debian] control: Added "Conflicts:" in addition to "Replaces:".
"Replaces:" by itself didn't work to remove the old package.

TODO: Test this.
2020-05-27 16:45:11 -04:00
David Korth
93151b25d6 [debian] Removed the MATE and Cinnamon packages.
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.
2020-05-17 17:02:32 -04:00
David Korth
37f991c3fb [debian] control: Added rom-properties-utils as a dependency of KDE4, KF5, and XFCE.
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)
2020-03-14 00:17:33 -04:00
David Korth
59aa5e2faa [gtk, kde] Use RomData::mimeType() instead of framework-specific functions.
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.
2020-02-29 12:09:18 -05:00
David Korth
249ce026ff Added shared-mime-info as a runtime dependency for rom-properties-kde4. 2020-02-29 01:02:18 -05:00
David Korth
9e7ae715b4 Added seccomp to the Debian files, travis.sh, and COMPILING.md. 2020-02-14 22:32:06 -05:00
David Korth
71a9b61cd8 Renamed the KDE5 frontend to KF5 to match upstream branding guidelines.
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.
2020-01-19 13:28:17 -05:00
David Korth
08a1170603 [libromdata] CacheManager: Implement fork()/execve() on Linux for rp-download.
[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.
2020-01-15 00:01:07 -05:00
David Korth
7ebde6a998 [debian] control: libnemo-extension-dev is needed for Nemo. 2019-12-15 16:31:06 -05:00
David Korth
527dd6892f [debian] Added Nemo (Cinnamon) rules. 2019-12-15 15:56:51 -05:00
David Korth
d857f8f409 [xdg] Install rom-properties.xml into /usr/share/mime/packages/.
debian/: Added a rom-properties-xdg package. This includes postinst and
postrm files to update the system MIME database.
2019-08-04 15:50:37 -04:00
David Korth
b1cc033eea debian/control: Fix D-Bus thumbnailer package dependency in rom-properties-all.
rom-properties-thumbnail-dbus -> rom-properties-thumbnailer-dbus
2019-08-04 15:50:06 -04:00
David Korth
f75756a9f0 [gtk] Split rom-properties.thumbnailer into a separate package, rom-properties-gtk3-common.
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)
2019-06-08 17:24:27 -04:00
David Korth
78beb4b3a6 [debian] kio-dev was renamed to libkf5kio-dev in Ubuntu 18.04. 2018-12-18 22:37:15 -05:00
David Korth
d8f13a6f68 Added required KFileMetaData development packages. 2018-08-11 11:42:32 -04:00
David Korth
181084b9aa [gtk] Split the D-Bus thumbnailer out from xfce/ and into thumbnailer-dbus/.
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.
2018-06-07 20:20:36 -04:00
David Korth
eff83ddf6f Updated required packages in debian/control and doc/COMPILING.md.
Requires GdkPixbuf for GTK+ 2.x and Cairo for GTK+ 3.x.
2018-06-03 13:47:28 -04:00
David Korth
89cfb541b9 [debian] Package message catalogs as rom-properties-lang.
Message catalogs are architecture-independent, so these are built for
'all' architectures instead of 'any' architecture.
2018-06-02 15:48:38 -04:00
David Korth
3ee44f2bc1 [kde] Use KMessageWidget instead of our own MessageWidget and MessageStack.
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.
2018-05-08 21:42:09 -04:00
David Korth
a9c4d4a518 [debian] control: Added mesa-common-dev for GL/gl.h. 2018-03-30 11:48:41 -04:00