Package Details: nestopia 1.52.1-1

Git Clone URL: https://aur.archlinux.org/nestopia.git (read-only, click to copy)
Package Base: nestopia
Description: High-accuracy NES/Famicom emulator
Upstream URL: https://github.com/0ldsk00l/nestopia
Licenses: GPL-2.0-only
Submitter: Barthalion
Maintainer: xiota
Last Packager: xiota
Votes: 14
Popularity: 0.056828
First Submitted: 2018-01-07 17:35 (UTC)
Last Updated: 2024-06-09 16:32 (UTC)

Latest Comments

1 2 Next › Last »

xiota commented on 2023-11-21 03:33 (UTC) (edited on 2023-11-21 03:37 (UTC) by xiota)

Regardless of what I am mistaking, those who believe this is an upstream issue should report to them so they can fix it. Once resolved, this package can be adjusted accordingly.

More than one person has framed this as a win-loss proposition. The previous maintainer had ample opportunity to fix this package when someone else notified him it was broken 2.5 years ago. I reminded him more recently, through different routes, over months. Yet, he took no action towards any sort of solution until after an orphan request had already been open for several weeks. Not much effort would have been needed to avoid it. Despite that, he did eventually fix the package. No one forced him to disown. He could have waited for me to close the request. He has demonstrated the patience to wait longer than I would have been willing to leave it open.

Note: I have not yet pushed a new commit because I am still evaluating what to do with this package.

Polizei commented on 2023-11-21 01:07 (UTC) (edited on 2023-11-21 01:07 (UTC) by Polizei)

You are clearly mistaking glu for libgl (libglvnd in current case.)

Having glu installed and building with -lGLU does not affect the produced binary in any way.

libglvnd is a direct dependency of fltk and is installed no matter what.

The sed patch is simply removing the unnecessary dependency glu is.

Anyway, enjoy.

xiota commented on 2023-11-20 18:17 (UTC) (edited on 2023-11-20 18:18 (UTC) by xiota)

I checked packages built with and without glu. ldd does list glu-related dependencies for both.

libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f1df238c000)
libGLX.so.0 => /usr/lib/libGLX.so.0 (0x00007f1df1732000)

Since the binary does have a direct dependency on glu, in accordance with Arch package guidelines, this package should list glu as depends. Even if the previous maintainer did not wish to do so, it could have been added to makedepends. Instead, the package was left in a broken state for years.

Test procedure was to build two packages with CXXFLAGS="-march=x86-64 -pg". One package depends on glu (nestopia-glu). Other package uses the sed-hack to remove it (nestopia-noglu). Remove currently installed nestopia (built with glu) and all related dependencies with pacman -Runcss nestopia. Install, nestopia-noglu. After running, process gmon.out with gprof. Delete gmon.out and install nestopia-glu. Run new binary and process new gmon.out with gprof.

The difference is, without glu dependency, glu, libglvnd, and related packages are not required to be installed, which likely forces software rendering.

:carstene1ns: I imply every package maintainer does their best to keep their stuff in a good state.

There are numerous examples of poor package maintenance. Absentee maintainers are a prominent example. Some maintainers are outright malicious. In this case, you left this package in a broken state for years. Initially, the cause appeared to be negligence. Later, it was demonstrated to be willful.

:carstene1ns: ... enjoy your win ...

When did fixing a package become a losing position? If you had fixed this package, when it was requested years ago, by adding a definite run-time dependency (see ldd output above) or even creating the sed-hack and taking it up with fltk, there would have been no cause to open an orphan request.

Polizei commented on 2023-11-19 10:33 (UTC)

@xiota,

Building with or without GLU makes no difference to the produced binary. Check with ldd yourself.

-lGLU only comes from fltk-config --ldflags and is not actually used anywhere in the source.

Can you share more details on how you produced these benchmarks and how did you build nestopia with GLU?

carstene1ns commented on 2023-11-19 10:22 (UTC)

@xiota: Again, you do not understand what is an issue in fltk and what is an issue in nestopia. However, I am not against including glu now, since it does so much.

When that person refuses to maintain the package, intentionally keeping broken, then intentionally breaking it further, the package should be orphaned. The current maintainer has had ample opportunity to fix this package the last 2.5 years. It is long past time to allow someone else to fix it.

This hurts, and I imply every package maintainer does their best to keep their stuff in a good state. However, it seems you take this way more personal than I am, so I will disown this package and a couple others now, giving you the opportunity to maintain them better than I ever could. Have fun, enjoy your win, you make the community a better place! :)

xiota commented on 2023-11-18 19:59 (UTC) (edited on 2023-11-18 20:01 (UTC) by xiota)

Without glu, graphics and audio has consistent stuttering and and noticeably slow emulation rate. Profiling shows average time used by the rendering function without glu is 6.77ms.

With glu, emulation is at full speed with no graphics or audio stuttering. Profiling shows average time used by rendering function is 5.81ms. This is a 14.2% performance improvement.

What is the point of removing glu when upstream developers clearly intend for it to be used, and removal significantly harms performance?

carstene1ns commented on 2023-11-18 19:22 (UTC)

Sorry for the hassle, looks like my testing was flawed. Thanks @Polizei :)

Polizei commented on 2023-11-17 09:41 (UTC)

Apparently m4 doesn't play nice with when substituting shell pipes. Fix:

diff --git a/PKGBUILD b/PKGBUILD
index 00cf82d..4af17d9 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -14,18 +14,17 @@ source=($pkgname-$pkgver.tar.gz::"https://github.com/0ldsk00l/nestopia/archive/$
 sha256sums=('eae1d2f536ae8585edb8d723caf905f4ae65349edee4ffbee45f9f52b5e3b06c')
 install=$pkgname.install

-prepare() {
-  # remove GLU dependency
-  sed -i "s/fltk-config.*--ldflags/&|sed 's#-lGLU ##g'/g" $pkgname-$pkgver/configure.ac
-}
-
 build() {
   cd $pkgname-$pkgver

+  autoreconf -fi
+
+  # remove GLU dependency
+  sed -i "s/fltk-config.*--ldflags/&|sed 's#-lGLU ##g'/g" configure
+
   # build system normally disables this warning
   export CXXFLAGS="$CXXFLAGS -Wno-narrowing"

-  autoreconf -fi
   ./configure --prefix=/usr
   make
 }

Pillgar commented on 2023-11-17 00:57 (UTC) (edited on 2023-11-17 01:00 (UTC) by Pillgar)

I'm seeing this error when updating:

./configure: line 5715: syntax error near unexpected token `)'

./configure: line 5715: ` FLTK_LIBS="$(fltk-config --use-gl --use-images --ldflags|sed 's#-lGLU ##g')") ;;[]_AS_CASE([linux*], [AC_SUBST(FLTK_LIBS,"-lGL $(fltk-config --use-gl --use-images --ldflags|sed 's#-lGLU ##g')")'

==> ERROR: A failure occurred in build().

Aborting...

xiota commented on 2023-06-18 07:30 (UTC) (edited on 2023-06-18 07:31 (UTC) by xiota)

Clean chroot. Missing glu.

/usr/bin/ld: cannot find -lGLU: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:3097: nestopia] Error 1
==> ERROR: A failure occurred in build().