punesemu / puNES

Qt-based Nintendo Entertaiment System emulator and NSF/NSF2/NSFe Music Player (Linux, FreeBSD, OpenBSD and Windows)
GNU General Public License v2.0
657 stars 42 forks source link

Suggestion : Flathub (Flatpak) Installation Support #213

Closed OnRail76 closed 1 year ago

OnRail76 commented 2 years ago

It will be so nice to have this awesome emulator on flathub, any possibility to see puNES as a flatpak?

punesemu commented 2 years ago

I didn't even know the Flatpak packages existed. I would have no problem distributing it in this format as well, but I have no idea how to get it done. If anyone would like to help out, they would be welcome.

JakobDev commented 2 years ago

I have craeted a Flatpak Manifest:

app-id: com.github.punesemu.puNES
runtime: org.kde.Platform
runtime-version: "5.15-21.08"
sdk: org.kde.Sdk
command: punes
finish-args:
  - --socket=fallback-x11
  - --socket=wayland
  - --share=ipc
  - --device=all
  - --share=network
  - --socket=pulseaudio

modules:
  - name: glu
    sources:
      - type: archive
        url: https://archive.mesa3d.org/glu/glu-9.0.2.tar.gz
        sha256: 24effdfb952453cc00e275e1c82ca9787506aba0282145fff054498e60e19a65

  - name: puNES
    sources:
      - type: git
        url: https://github.com/punesemu/puNES.git
        commit: ca98d51f3ad65c2251c9cb520158ebbc17eab395

To use it, save the manifest as com.github.punesemu.puNES.yml. Before building you need to install org.kde.Platform and org.kde.Sdk. Both in version 5.15-21.08.

flatpak install org.kde.Platform
flatpak install org.kde.Sdk

To build the manifest open a Terminal in the directory of com.github.punesemu.puNES and run:

flatpak-builder build-dir com.github.punesemu.puNES.yml --force-clean

The build currently fails with this error message:

[100%] Linking CXX static library lib7zip.a
/usr/bin/ar: invalid option -- 'L'

This doesn't happen on my host system for some reason. You may need to take a look at your build system.

punesemu commented 2 years ago

Many thanks, I will try to understand what the problem is.

JakobDev commented 2 years ago

I have tried building with the latest commit and it works.

# Build and install
flatpak-builder --user --install --force-clean build-dir com.github.punesemu.puNES.yml
# Run
flatpak run com.github.punesemu.puNES

But there are still a few Issues:

INFO: path /home/jakob/.puNES

Please don't do that. Please follow the XDG Base Directory Specification. That means for you: If XDG_DATA_HOME use $XDG_DATA_HOME/puNES else use ~/.local/share/puNES. Flatpak will set XDG_DATA_HOME to a custm dir. This spec should be followed no matter if the App is run with Flatpak or not.

Not exporting share/applications/punes.desktop, non-allowed export filename
Not exporting share/icons/hicolor/32x32/apps/punes.png, non-allowed export filename
Not exporting share/icons/hicolor/256x256/apps/punes.png, non-allowed export filename
Not exporting share/icons/hicolor/48x48/apps/punes.png, non-allowed export filename
Not exporting share/icons/hicolor/16x16/apps/punes.png, non-allowed export filename

The filename must be the App ID. In your case: com.github.punesemu.puNES.desktop and com.github.punesemu.puNES.png. There is some specification that says that reverse DNS should be used for Filenames even outside Flatpak, but I can't find the link currently.

Last but not least, you need a Appstream file if you want to upload to Flathub. It contains all needed informations for the Software Centers and the Flathub website. i suggested that you use jdAppDataEdit to create one. Install as share/metainfo/com.github.punesemu.puNES.metainfo.xml.

Note: I have tested this on a Dev System which don't have Roms, but the Emulation itself should work without problems.

punesemu commented 2 years ago

Thanks for the suggestions, as soon as I finish implementing the mappers I will dedicate myself to it. I'll keep you updated.

punesemu commented 2 years ago

Please don't do that. Please follow the XDG Base Directory Specification. That means for you: If XDG_DATA_HOME use $XDG_DATA_HOME/puNES else use ~/.local/share/puNES. Flatpak will set XDG_DATA_HOME to a custm dir. This spec should be followed no matter if the App is run with Flatpak or not.

Fixed with https://github.com/punesemu/puNES/commit/55c957b6257ef43dafffcf9aba5869518513bf25.

Not exporting share/applications/punes.desktop, non-allowed export filename
Not exporting share/icons/hicolor/32x32/apps/punes.png, non-allowed export filename
Not exporting share/icons/hicolor/256x256/apps/punes.png, non-allowed export filename
Not exporting share/icons/hicolor/48x48/apps/punes.png, non-allowed export filename
Not exporting share/icons/hicolor/16x16/apps/punes.png, non-allowed export filename

Fixed with with a few small changes to your Flatpak Manifest:

Last but not least, you need a Appstream file if you want to upload to Flathub. It contains all needed informations for the Software Centers and the Flathub website. i suggested that you use jdAppDataEdit to create one. Install as share/metainfo/com.github.punesemu.puNES.metainfo.xml.

This is the last thing left for me to do

JakobDev commented 2 years ago

Fixed with https://github.com/punesemu/puNES/commit/55c957b6257ef43dafffcf9aba5869518513bf25.

Nice

Fixed with with a few small changes to your Flatpak Manifest:

Please don't do that. You should really install the icons and desktop file under the app id, even outside Flatpaks. There is a standard that says you should use the app id as filename for both. rename-desktop-file and rename-icon only exists if someone wants to create a Flatpak for a App, which is its' own and installs the files under the wrong name. As you are author of the App, you should use the correct name.

You should also test your App with the 5.15-22.08 runtime, which was released recently.

Another thing to do with the Manifest, is adding x-checker-data. With this, Flathub automagically checks for new releases (glu and puNES in your case) and automagically creates a PR. I can do this, when everything is ready.

Last thing to do for releasing on Flathub is tagging a new Release. Flathub usually only excepts releases (with a few exceptions) and not development versions from a random commit.

punesemu commented 2 years ago

Please don't do that. You should really install the icons and desktop file under the app id, even outside Flatpaks. There is a standard that says you should use the app id as filename for both. rename-desktop-file and rename-icon only exists if someone wants to create a Flatpak for a App, which is its' own and installs the files under the wrong name. As you are author of the App, you should use the correct name.

Are you referring to this standard?

punesemu commented 2 years ago

Please don't do that. You should really install the icons and desktop file under the app id, even outside Flatpaks. There is a standard that says you should use the app id as filename for both. rename-desktop-file and rename-icon only exists if someone wants to create a Flatpak for a App, which is its' own and installs the files under the wrong name. As you are author of the App, you should use the correct name.

https://github.com/punesemu/puNES/commit/12fa794d550282c100f6c0a2f9fd875891f1df43 but even renaming the files I always get the same warning:

Not exporting share/applications/com.github.punesemu.punes.desktop, non-allowed export filename
Not exporting share/icons/hicolor/16x16/apps/com.github.punesemu.punes.png, non-allowed export filename
Not exporting share/icons/hicolor/256x256/apps/com.github.punesemu.punes.png, non-allowed export filename
Not exporting share/icons/hicolor/32x32/apps/com.github.punesemu.punes.png, non-allowed export filename
Not exporting share/icons/hicolor/48x48/apps/com.github.punesemu.punes.png, non-allowed export filename

Update: OK I've fixed the warning.

punesemu commented 2 years ago

Updated the Manifest with the addition of the nvidia-cg-toolkit module. I also tried with the runtime "5.15-22.08" and it works fine.

JakobDev commented 2 years ago

Update: OK I've fixed the warning.

Nice to hear.

Updated the Manifest with the addition of the nvidia-cg-toolkit module:

Is this optional? I ask because Flathub builds for x86_64 and aarch64.aarch64 can be disabled of course, but it is nice to have. And a x86_64 would not work on a ARM system.

punesemu commented 2 years ago

Is this optional? I ask because Flathub builds for x86_64 and aarch64.aarch64 can be disabled of course, but it is nice to have. And a x86_64 would not work on a ARM system.

Yes, it's optional. Is there a way to indicate in the manifest that it should use the module only with x86_64?

punesemu commented 2 years ago

Ok, now the nvidia-cg-toolkit module should only be used with the x86_64 architecture

punesemu commented 2 years ago

Migrated to cmake

punesemu commented 1 year ago

In order to use the joysticks/gamepads it's necessary that the emulator is run with read permissions on the /run/udev directory:

flatpak --user override --filesystem=/run/udev:ro com.github.punesemu.puNES

They are used by libudev to recognize connected gamepads.

punesemu commented 1 year ago

Added support for compress files:

app-id: io.github.punesemu.puNES
runtime: org.kde.Platform
runtime-version: "5.15-22.08"
sdk: org.kde.Sdk
command: punes
finish-args:
  - --socket=fallback-x11
  - --socket=wayland
  - --share=ipc
  - --device=all
  - --share=network
  - --socket=pulseaudio
  - --filesystem=/run/udev:ro
cleanup:
  - '*.a'
  - '*.la'
  - /include
  - /lib/pkgconfig
  - /man

modules:
  - name: glu
    sources:
      - type: archive
        url: https://archive.mesa3d.org/glu/glu-9.0.2.tar.gz
        sha256: 24effdfb952453cc00e275e1c82ca9787506aba0282145fff054498e60e19a65

  - name: p7zip
    no-autogen: true
    make-args:
      - 7z
    sources:
      - type: archive
        url: https://github.com/p7zip-project/p7zip/archive/v17.04/p7zip-v17.04.tar.gz
        sha256: ea029a2e21d2d6ad0a156f6679bd66836204aa78148a4c5e498fe682e77127ef
      - type: shell
        commands:
          - sed -i 's|/usr/local|/app|g' makefile.common
      - type: patch
        path: p7zip-17.04-CVE-2018-11498.patch
      - type: patch
        path: p7zip-17.04-CVE-2021-0184.patch
      - type: patch
        path: p7zip-17.04-CVE-2021-3520.patch
      - type: patch
        path: p7zip-norar.patch

  - name: nvidia-cg-toolkit
    only-arches:
      - x86_64
    buildsystem: simple
    build-commands: 
      - mkdir -p ${FLATPAK_DEST}/lib/pkgconfig
      - install -m 0644 usr/lib64/libCg.so ${FLATPAK_DEST}/lib
      - install -m 0644 usr/lib64/libCgGL.so ${FLATPAK_DEST}/lib
      - install -m 0644 nvidia-cg-toolkit-gl.pc ${FLATPAK_DEST}/lib/pkgconfig
      - mkdir -p ${FLATPAK_DEST}/include/Cg
      - install -m 0644 usr/include/Cg/cgGL.h ${FLATPAK_DEST}/include/Cg
      - install -m 0644 usr/include/Cg/cg.h ${FLATPAK_DEST}/include/Cg
    sources:
      - type: file
        path: nvidia-cg-toolkit-gl.pc
      - type: archive
        url: http://developer.download.nvidia.com/cg/Cg_3.1/Cg-3.1_April2012_x86_64.tgz
        sha256: e8ff01e6cc38d1b3fd56a083f5860737dbd2f319a39037528fb1a74a89ae9878

  - name: puNES
    buildsystem: cmake
    build-options:
      config-opts:
        - "-DENABLE_RELEASE=ON"
        - "-DENABLE_FFMPEG=ON"
        - "-DENABLE_OPENGL=ON"
        - "-DENABLE_OPENGL_CG=OFF"
        - "-DENABLE_FULLSCREEN_RESFREQ=ON"
        - "-DDISABLE_PORTABLE_MODE=ON"
      arch: 
        x86_64:
          config-opts:
            - "-DENABLE_OPENGL_CG=ON"
    sources:
      - type: archive
        url: https://github.com/punesemu/puNES/archive/refs/tags/v0.110.tar.gz
        sha256: f72507daaf8d5a13184829ea2f875db49f5bc93ab8e1c8e48b2ed9a32612fe1d
      - type: shell
        commands:
          - mkdir -p ${FLATPAK_DEST}/share/metainfo
          - install -m 0644 misc/io.github.punesemu.puNES.metainfo.xml ${FLATPAK_DEST}/share/metainfo/.

In summary, 5 files are needed in addition to the manifest: 1) p7zip-17.04-CVE-2018-11498.patch

diff -upr p7zip-17.04.org/C/lizard/lizard_decompress_liz.h p7zip-17.04/C/lizard/lizard_decompress_liz.h
--- p7zip-17.04.org/C/lizard/lizard_decompress_liz.h    2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/C/lizard/lizard_decompress_liz.h    2021-09-19 15:39:08.526133775 +0200
@@ -203,7 +203,7 @@ FORCE_INLINE int Lizard_decompress_LIZv1
     /* last literals */
     length = ctx->literalsEnd - ctx->literalsPtr;
     cpy = op + length;
-    if ((ctx->literalsPtr+length != iend) || (cpy > oend)) { LIZARD_LOG_DECOMPRESS_LIZv1("14"); goto _output_error; }   /* Error : input must be consumed */
+    if ((length < 0) || (ctx->literalsPtr+length != iend) || (cpy > oend)) { LIZARD_LOG_DECOMPRESS_LIZv1("14"); goto _output_error; }   /* Error : input must be consumed */
     memcpy(op, ctx->literalsPtr, length);
     ctx->literalsPtr += length;
     op += length;
diff -upr p7zip-17.04.org/C/lizard/lizard_decompress_lz4.h p7zip-17.04/C/lizard/lizard_decompress_lz4.h
--- p7zip-17.04.org/C/lizard/lizard_decompress_lz4.h    2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/C/lizard/lizard_decompress_lz4.h    2021-09-19 15:39:27.020342882 +0200
@@ -147,7 +147,7 @@ FORCE_INLINE int Lizard_decompress_LZ4(
     /* last literals */
     length = ctx->literalsEnd - ctx->literalsPtr;
     cpy = op + length;
-    if ((ctx->literalsPtr+length != iend) || (cpy > oend)) { LIZARD_LOG_DECOMPRESS_LZ4("9"); goto _output_error; }   /* Error : input must be consumed */
+    if ((length < 0) || (ctx->literalsPtr+length != iend) || (cpy > oend)) { LIZARD_LOG_DECOMPRESS_LZ4("9"); goto _output_error; }   /* Error : input must be consumed */
     memcpy(op, ctx->literalsPtr, length);
     ctx->literalsPtr += length;
     op += length;

2) p7zip-17.04-CVE-2021-0184.patch

From e6c8a5dd40359801bf297dca3be48e38c85ed6c2 Mon Sep 17 00:00:00 2001
From: Sen Huang <senhuang96@fb.com>
Date: Tue, 4 May 2021 09:50:44 -0700
Subject: [PATCH] Fix incorrect usages of repIndex across all strategies

---
 C/zstd/zstd_double_fast.c |  4 ++--
 C/zstd/zstd_fast.c        |  6 +++---
 C/zstd/zstd_lazy.c        | 12 ++++++++----
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/C/zstd/zstd_double_fast.c b/C/zstd/zstd_double_fast.c
index b99172e9d2..d0d3a784dd 100644
--- a/C/zstd/zstd_double_fast.c
+++ b/C/zstd/zstd_double_fast.c
@@ -409,7 +409,7 @@ static size_t ZSTD_compressBlock_doubleFast_extDict_generic(
         hashSmall[hSmall] = hashLong[hLong] = curr;   /* update hash table */

         if ((((U32)((prefixStartIndex-1) - repIndex) >= 3) /* intentional underflow : ensure repIndex doesn't overlap dict + prefix */
-            & (repIndex > dictStartIndex))
+            & (offset_1 < curr+1 - dictStartIndex)) /* note: we are searching at curr+1 */
           && (MEM_read32(repMatch) == MEM_read32(ip+1)) ) {
             const BYTE* repMatchEnd = repIndex < prefixStartIndex ? dictEnd : iend;
             mLength = ZSTD_count_2segments(ip+1+4, repMatch+4, iend, repMatchEnd, prefixStart) + 4;
@@ -477,7 +477,7 @@ static size_t ZSTD_compressBlock_doubleFast_extDict_generic(
                 U32 const repIndex2 = current2 - offset_2;
                 const BYTE* repMatch2 = repIndex2 < prefixStartIndex ? dictBase + repIndex2 : base + repIndex2;
                 if ( (((U32)((prefixStartIndex-1) - repIndex2) >= 3)   /* intentional overflow : ensure repIndex2 doesn't overlap dict + prefix */
-                    & (repIndex2 > dictStartIndex))
+                    & (offset_2 < current2 - dictStartIndex))
                   && (MEM_read32(repMatch2) == MEM_read32(ip)) ) {
                     const BYTE* const repEnd2 = repIndex2 < prefixStartIndex ? dictEnd : iend;
                     size_t const repLength2 = ZSTD_count_2segments(ip+4, repMatch2+4, iend, repEnd2, prefixStart) + 4;
diff --git a/C/zstd/zstd_fast.c b/C/zstd/zstd_fast.c
index 96b7d48e28..4edc04dccd 100644
--- a/C/zstd/zstd_fast.c
+++ b/C/zstd/zstd_fast.c
@@ -416,9 +416,9 @@ static size_t ZSTD_compressBlock_fast_extDict_generic(
         const BYTE* const repMatch = repBase + repIndex;
         hashTable[h] = curr;   /* update hash table */
         DEBUGLOG(7, "offset_1 = %u , curr = %u", offset_1, curr);
-        assert(offset_1 <= curr +1);   /* check repIndex */

-        if ( (((U32)((prefixStartIndex-1) - repIndex) >= 3) /* intentional underflow */ & (repIndex > dictStartIndex))
+        if ( ( ((U32)((prefixStartIndex-1) - repIndex) >= 3) /* intentional underflow */
+             & (offset_1 < curr+1 - dictStartIndex) ) /* note: we are searching at curr+1 */
            && (MEM_read32(repMatch) == MEM_read32(ip+1)) ) {
             const BYTE* const repMatchEnd = repIndex < prefixStartIndex ? dictEnd : iend;
             size_t const rLength = ZSTD_count_2segments(ip+1 +4, repMatch +4, iend, repMatchEnd, prefixStart) + 4;
@@ -453,7 +453,7 @@ static size_t ZSTD_compressBlock_fast_extDict_generic(
                 U32 const current2 = (U32)(ip-base);
                 U32 const repIndex2 = current2 - offset_2;
                 const BYTE* const repMatch2 = repIndex2 < prefixStartIndex ? dictBase + repIndex2 : base + repIndex2;
-                if ( (((U32)((prefixStartIndex-1) - repIndex2) >= 3) & (repIndex2 > dictStartIndex))  /* intentional overflow */
+                if ( (((U32)((prefixStartIndex-1) - repIndex2) >= 3) & (offset_2 < curr - dictStartIndex))  /* intentional overflow */
                    && (MEM_read32(repMatch2) == MEM_read32(ip)) ) {
                     const BYTE* const repEnd2 = repIndex2 < prefixStartIndex ? dictEnd : iend;
                     size_t const repLength2 = ZSTD_count_2segments(ip+4, repMatch2+4, iend, repEnd2, prefixStart) + 4;
diff --git a/C/zstd/zstd_lazy.c b/C/zstd/zstd_lazy.c
index 5d824beed9..3d523e8472 100644
--- a/C/zstd/zstd_lazy.c
+++ b/C/zstd/zstd_lazy.c
@@ -1994,7 +1994,8 @@ size_t ZSTD_compressBlock_lazy_extDict_generic(
             const U32 repIndex = (U32)(curr+1 - offset_1);
             const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
             const BYTE* const repMatch = repBase + repIndex;
-            if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > windowLow))   /* intentional overflow */
+            if ( ((U32)((dictLimit-1) - repIndex) >= 3) /* intentional overflow */
+               & (offset_1 < curr+1 - windowLow) ) /* note: we are searching at curr+1 */
             if (MEM_read32(ip+1) == MEM_read32(repMatch)) {
                 /* repcode detected we should take it */
                 const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
@@ -2025,7 +2026,8 @@ size_t ZSTD_compressBlock_lazy_extDict_generic(
                 const U32 repIndex = (U32)(curr - offset_1);
                 const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
                 const BYTE* const repMatch = repBase + repIndex;
-                if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > windowLow))  /* intentional overflow */
+                if ( ((U32)((dictLimit-1) - repIndex) >= 3) /* intentional overflow : do not test positions overlapping 2 memory segments  */
+                   & (offset_1 < curr - windowLow) ) /* equivalent to `curr > repIndex >= windowLow` */
                 if (MEM_read32(ip) == MEM_read32(repMatch)) {
                     /* repcode detected */
                     const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
@@ -2056,7 +2058,8 @@ size_t ZSTD_compressBlock_lazy_extDict_generic(
                     const U32 repIndex = (U32)(curr - offset_1);
                     const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
                     const BYTE* const repMatch = repBase + repIndex;
-                    if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > windowLow))  /* intentional overflow */
+                    if ( ((U32)((dictLimit-1) - repIndex) >= 3) /* intentional overflow : do not test positions overlapping 2 memory segments  */
+                       & (offset_1 < curr - windowLow) ) /* equivalent to `curr > repIndex >= windowLow` */
                     if (MEM_read32(ip) == MEM_read32(repMatch)) {
                         /* repcode detected */
                         const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
@@ -2102,7 +2105,8 @@ size_t ZSTD_compressBlock_lazy_extDict_generic(
             const U32 repIndex = repCurrent - offset_2;
             const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
             const BYTE* const repMatch = repBase + repIndex;
-            if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > windowLow))  /* intentional overflow */
+            if ( ((U32)((dictLimit-1) - repIndex) >= 3) /* intentional overflow : do not test positions overlapping 2 memory segments  */
+               & (offset_2 < repCurrent - windowLow) ) /* equivalent to `curr > repIndex >= windowLow` */
             if (MEM_read32(ip) == MEM_read32(repMatch)) {
                 /* repcode detected we should take it */
                 const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;

3) p7zip-17.04-CVE-2021-3520.patch

diff -upr p7zip-17.04.org/C/lz4/lz4.c p7zip-17.04/C/lz4/lz4.c
--- p7zip-17.04.org/C/lz4/lz4.c 2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/C/lz4/lz4.c 2021-09-19 15:43:44.358989464 +0200
@@ -1749,7 +1749,7 @@ LZ4_decompress_generic(
                  const size_t dictSize         /* note : = 0 if noDict */
                  )
 {
-    if (src == NULL) { return -1; }
+    if ((src == NULL) || (outputSize < 0)) { return -1; }

     {   const BYTE* ip = (const BYTE*) src;
         const BYTE* const iend = ip + srcSize;

4) p7zip-norar.patch

diff '--color=auto' -ru p7z-orig/CPP/7zip/Bundles/Format7zFree/makefile.list p7zip-17.04/CPP/7zip/Bundles/Format7zFree/makefile.list
--- p7z-orig/CPP/7zip/Bundles/Format7zFree/makefile.list    2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/CPP/7zip/Bundles/Format7zFree/makefile.list 2021-11-26 09:28:06.528954935 +0100
@@ -90,8 +90,6 @@
   ../../../../CPP/7zip/Archive/PeHandler.cpp \
   ../../../../CPP/7zip/Archive/PpmdHandler.cpp \
   ../../../../CPP/7zip/Archive/QcowHandler.cpp \
-  ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp \
-  ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp \
   ../../../../CPP/7zip/Archive/RpmHandler.cpp \
   ../../../../CPP/7zip/Archive/SplitHandler.cpp \
   ../../../../CPP/7zip/Archive/SquashfsHandler.cpp \
@@ -218,9 +216,6 @@
   ../../../../CPP/7zip/Crypto/MyAesReg.cpp \
   ../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp \
   ../../../../CPP/7zip/Crypto/RandGen.cpp \
-  ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp \
-  ../../../../CPP/7zip/Crypto/Rar5Aes.cpp \
-  ../../../../CPP/7zip/Crypto/RarAes.cpp \
   ../../../../CPP/7zip/Crypto/WzAes.cpp \
   ../../../../CPP/7zip/Crypto/ZipCrypto.cpp \
   ../../../../CPP/7zip/Crypto/ZipStrong.cpp \
@@ -817,10 +812,6 @@
    $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/PpmdHandler.cpp
 QcowHandler.o : ../../../../CPP/7zip/Archive/QcowHandler.cpp
    $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/QcowHandler.cpp
-RarHandler.o : ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp
-   $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp
-Rar5Handler.o : ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp
-   $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp
 RpmHandler.o : ../../../../CPP/7zip/Archive/RpmHandler.cpp
    $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/RpmHandler.cpp
 SplitHandler.o : ../../../../CPP/7zip/Archive/SplitHandler.cpp
@@ -1073,12 +1064,6 @@
    $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp
 RandGen.o : ../../../../CPP/7zip/Crypto/RandGen.cpp
    $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/RandGen.cpp
-Rar20Crypto.o : ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp
-   $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp
-Rar5Aes.o : ../../../../CPP/7zip/Crypto/Rar5Aes.cpp
-   $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/Rar5Aes.cpp
-RarAes.o : ../../../../CPP/7zip/Crypto/RarAes.cpp
-   $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/RarAes.cpp
 WzAes.o : ../../../../CPP/7zip/Crypto/WzAes.cpp
    $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/WzAes.cpp
 ZipCrypto.o : ../../../../CPP/7zip/Crypto/ZipCrypto.cpp
@@ -1364,8 +1349,6 @@
  PeHandler.o \
  PpmdHandler.o \
  QcowHandler.o \
- RarHandler.o \
- Rar5Handler.o \
  RpmHandler.o \
  SplitHandler.o \
  SquashfsHandler.o \
@@ -1492,9 +1475,6 @@
  MyAesReg.o \
  Pbkdf2HmacSha1.o \
  RandGen.o \
- Rar20Crypto.o \
- Rar5Aes.o \
- RarAes.o \
  WzAes.o \
  ZipCrypto.o \
  ZipStrong.o \
diff '--color=auto' -ru p7z-orig/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt p7zip-17.04/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt
--- p7z-orig/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt 2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt  2021-11-26 09:28:33.919148657 +0100
@@ -225,8 +225,6 @@
   "../../../../CPP/7zip/Archive/PeHandler.cpp"
   "../../../../CPP/7zip/Archive/PpmdHandler.cpp"
   "../../../../CPP/7zip/Archive/QcowHandler.cpp"
-  "../../../../CPP/7zip/Archive/Rar/RarHandler.cpp"
-  "../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp"
   "../../../../CPP/7zip/Archive/RpmHandler.cpp"
   "../../../../CPP/7zip/Archive/SplitHandler.cpp"
   "../../../../CPP/7zip/Archive/SquashfsHandler.cpp"
@@ -353,9 +351,6 @@
   "../../../../CPP/7zip/Crypto/MyAesReg.cpp"
   "../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp"
   "../../../../CPP/7zip/Crypto/RandGen.cpp"
-  "../../../../CPP/7zip/Crypto/Rar20Crypto.cpp"
-  "../../../../CPP/7zip/Crypto/Rar5Aes.cpp"
-  "../../../../CPP/7zip/Crypto/RarAes.cpp"
   "../../../../CPP/7zip/Crypto/WzAes.cpp"
   "../../../../CPP/7zip/Crypto/ZipCrypto.cpp"
   "../../../../CPP/7zip/Crypto/ZipStrong.cpp"
diff '--color=auto' -ru p7z-orig/CPP/7zip/CMAKE/generate.sh p7zip-17.04/CPP/7zip/CMAKE/generate.sh
--- p7z-orig/CPP/7zip/CMAKE/generate.sh 2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/CPP/7zip/CMAKE/generate.sh  2021-11-26 09:29:04.786057324 +0100
@@ -15,15 +15,15 @@
 cd $CURDIR
 doit "Unix" "Unix Makefiles"

-cd $CURDIR
-doit "codeblocks" "CodeBlocks - Unix Makefiles"
+# cd $CURDIR
+# doit "codeblocks" "CodeBlocks - Unix Makefiles"

 #cd $CURDIR
 #doit "KDevelop3" "KDevelop3"

-cd $CURDIR
-doit "EclipseCDT4" "Eclipse CDT4 - Unix Makefiles"
+# cd $CURDIR
+# doit "EclipseCDT4" "Eclipse CDT4 - Unix Makefiles"

-cd $CURDIR
-doit "ninja" "Ninja"
+# cd $CURDIR
+# doit "ninja" "Ninja"

diff '--color=auto' -ru p7z-orig/DOC/License.txt p7zip-17.04/DOC/License.txt
--- p7z-orig/DOC/License.txt    2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/DOC/License.txt 2021-11-26 09:29:20.982860082 +0100
@@ -1,3 +1,6 @@
+  Fedora package note: non-Free unrar code have been removed from the sources
+  (#190277)
+
   7-Zip source code
   ~~~~~~~~~~~~~~~~~
   License for use and distribution
diff '--color=auto' -ru p7z-orig/makefile p7zip-17.04/makefile
--- p7z-orig/makefile   2021-04-04 05:11:06.000000000 +0200
+++ p7zip-17.04/makefile    2021-11-26 09:29:45.853080173 +0100
@@ -31,7 +31,6 @@
    $(MAKE) -C CPP/7zip/UI/Client7z           depend
    $(MAKE) -C CPP/7zip/UI/Console            depend
    $(MAKE) -C CPP/7zip/Bundles/Format7zFree  depend
-   $(MAKE) -C CPP/7zip/Compress/Rar          depend
    $(MAKE) -C CPP/7zip/UI/GUI                depend
    $(MAKE) -C CPP/7zip/UI/FileManager        depend

@@ -42,7 +41,6 @@
 common7z:common
    $(MKDIR) bin/Codecs
    $(MAKE) -C CPP/7zip/Bundles/Format7zFree all
-   $(MAKE) -C CPP/7zip/Compress/Rar         all

 lzham:common
    $(MKDIR) bin/Codecs
@@ -67,7 +65,6 @@
    $(MAKE) -C CPP/7zip/UI/FileManager       clean
    $(MAKE) -C CPP/7zip/UI/GUI               clean
    $(MAKE) -C CPP/7zip/Bundles/Format7zFree clean
-   $(MAKE) -C CPP/7zip/Compress/Rar         clean
    $(MAKE) -C CPP/7zip/Compress/Lzham       clean
    $(MAKE) -C CPP/7zip/Bundles/LzmaCon      clean2
    $(MAKE) -C CPP/7zip/Bundles/AloneGCOV    clean

5) nvidia-cg-toolkit-gl.pc

prefix=/app
libdir=${prefix}/lib
includedir=${prefix}/include
Name: nvidia-cg-toolkit
Description: NVIDIA's C graphics compiler toolkit
Version: 3.1.0013
URL: https://developer.nvidia.com/cg-toolkit
Libs: -L${libdir} -lCg -lCgGL
Cflags: -I${includedir}

And to have gamepad support it needs to be started with the --filesystem=/run/udev:ro option

JakobDev commented 1 year ago

You should update your manifest to the 5.15-22.08 KDE runtime.

Is there anything blocking uploading this to Flathub?

punesemu commented 1 year ago

You should update your manifest to the 5.15-22.08 KDE runtime.

Done

Is there anything blocking uploading this to Flathub?

Between today and tomorrow I will release version 0.110 so we can update the manifest to use the official release.

JakobDev commented 1 year ago

Nice to hear! Don't forget to add your new release to the metainfo file.

btw: If you want a Qt6 build, use the 6.4 runtime instead of the 5.15-22.08 runtime

JakobDev commented 1 year ago

Totally forgot to tell you, you should add --filesystem=/run/udev:ro com.github.punesemu to the finish-args, then you don't need to run it with the overwrite.

If you ready to publish the new Version on Flathub, here is how

punesemu commented 1 year ago

https://github.com/flathub/flathub/pull/3785

punesemu commented 1 year ago

Another thing to do with the Manifest, is adding x-checker-data. With this, Flathub automagically checks for new releases (glu and puNES in your case) and automagically creates a PR. I can do this, when everything is ready.

JakobDev can you help me out with this too?

JakobDev commented 1 year ago

Sure. I will make a update against the Flathub Repo when I have time

punesemu commented 1 year ago

https://flathub.org/apps/details/io.github.punesemu.puNES

OnRail76 commented 1 year ago

A big thanks for all your efforts and work, Now we have this awesome emulator on flathub, ready for install on any GNU Linux OS. I tested it on my systems and all it´s working without issues. Thanks, really.