Giter Site home page Giter Site logo

Errors in mt32emu 2.5.0 about munt HOT 5 CLOSED

munt avatar munt commented on April 28, 2024
Errors in mt32emu 2.5.0

from munt.

Comments (5)

sergm avatar sergm commented on April 28, 2024 1

By design, LIB_INSTALL_DIR should contain Relative installation path to libraries under the installation prefix. The latter can be configured, and most probably already is system-wide, to contain an absolute path, e.g. "/usr", with the CMAKE_INSTALL_PREFIX variable.

from munt.

sergm avatar sergm commented on April 28, 2024

0 Project self-identification. munt or mt32emu?

The project is named munt. As README says, it comprises of several subprojects, mt32emu is one of them. mt32emu implements the emulation core as a library and it is used in almost all the other subprojects of munt. I think this situation is due to historical reasons, but I'm fine with this so far.

But you release both munt 2.4.0 and mt32emu 2.5.0 simultaneously with almost the same content.
What is this and how do I understand it?

We have released mt32emu 2.5.0 (the library) with some important new features. When we add necessary support to the other respective subprojects, we'll roll out them as well. Finally, the entire munt package will be released, which is a convenient form of distribution on other platforms, e.g. Windows.

1 ChangeLog mt32emu-qt

HEAD:
* Fixed the ROM scanner function that didn't filter out partial ROMs which aren't yet supported. Related to (#44).

Is this fixed in mt32emu 2.5.0 or not?

This is fixed in the HEAD version of mt32emu-qt, so that this application is now compatible with the library version mt32emu 2.5.0. Previously, mt32emu-qt implemented the ROM scanner in an assumption that partial ROMs do not exist, despite the relevant library API suggested otherwise. This bug doesn't seem critical, so we are not bumping version mt32emu-qt 1.8.1 to deliver the fix urgently. If this is important to deliver for openSUSE, please let me know, and we'll make a bugfix release of mt32emu-qt.

2 You added the pakageconfig file which is great, but you missed at least 2 gross errors.

Please note, that the pkg-config file is generated by the cmake build script. This means that some configuration variables are transferred from the cmake build system. In particular, the contents of variables LIB_INSTALL_DIR and libmt32emu_PKGCONFIG_INSTALL_PREFIX affect the data populated into the generated mt32emu.pc file and its location.

2.1 The resulting mt32emu.pc file when built in openSUSE Tumbleweed x86_64 is
...
libdir=${exec_prefix}//usr/lib64
...
URL: http://munt.sourceforge.net/
...
2.1.1 Obviously, the 3rd line should be.
libdir=/usr/lib64
But something, most likely in the sed script, went wrong.

The cmake formula is libdir=${exec_prefix}/@LIB_INSTALL_DIR@, so evidently, the variable LIB_INSTALL_DIR needs an adjustment. For openSUSE, I'd recommend to use the same value I'm using for building x86_64 Fedora packages: lib64.

2.1.2 The URL is not needed in this file at all. I haven't seen other open source projects post URLs here.

Would you be so kind and point me to where this is specified? When adding the URL field, I was referring to the pkg-config-guide that suggested to fill it in.

But if you think that it is still needed, then let it link not to http riderect 80, but to the https address of the project on github.

+1 for HTTPS, I'll update the project URL. Note however, the SourceForge remains the primary project host, GitHub is used for easier collaboration.

2.2 After the %cmake_install macro, the mt32emu.pc file is installed in %{_prefix}/lib/pkgconfig/%{name}.pc (/usr/lib/pkgconfig/mt32emu.pc) instead of %{_libdir}/pkgconfig (/usr/lib64/pkgconfig/mt32emu.pc).
There must be an error in the installation script.

Unfortunately, the location of pkg-config files in each system varies, hence we have to resort to make the directory, where to install mt32emu.pc file to, configurable. By adjusting the libmt32emu_PKGCONFIG_INSTALL_PREFIX variable, the location of mt32emu.pc file can be changed to fulfil requirements of any particular distribution.

3 You added a desktop-file for mt32emu-qt which is great, but at least the category is wrong.
https://build.opensuse.org/package/view_file/multimedia:libs/mt32emu/mt32emu.desktop?expand=1
It should be Categories=Qt;AudioVideo;Midi;

Agree, the category needs to be improved. However, filename 'mt32emu.desktop' is wrong, as the mt32emu library has no user interface.

4 You added an icon for the desktop-file that's great too, but there's nothing wrong with it either.
4.1 This is a primitive 256x256 png icon.
Why do you need such a big size, and it's the only size you need, for such a primitive monochrome icon?

Sadly, we haven't obtained a scalable icon, which would be my preference to use as a desktop icon. The icon came with a set of bitmap images of variable resolutions. As a first step, we added the high-resolution icon because it can be downscaled without significant degrade in quality, in contrast to adding a lower resolution icon only. I'm going to add all the available icons for more resolutions to configure GNU desktops better.

from munt.

IlyaIndigo avatar IlyaIndigo commented on April 28, 2024

-Dlibmt32emu_PKGCONFIG_INSTALL_PREFIX="%{_libdir}"
Solved the installation problem, but not the content.

The cmake formula is libdir=${exec_prefix}/@LIB_INSTALL_DIR@, so evidently, the variable LIB_INSTALL_DIR needs an adjustment. For openSUSE, I'd recommend to use the same value I'm using for building x86_64 Fedora packages: lib64.

LIB_INSTALL_DIR=%{_libdir} (/usr/lib64 for x86_64), by default, but instead of libdir=/usr/lib64 I get libdir=${exec_prefix}//usr/lib64.
I have to use sed.

from munt.

IlyaIndigo avatar IlyaIndigo commented on April 28, 2024

Thank you very much, I have figured out cmake. :-)

%cmake -LA \
       -DCMAKE_SHARED_LINKER_FLAGS="-lm" \
       -DLIB_INSTALL_DIR:PATH="%{_lib}" \
       -Dlibmt32emu_PKGCONFIG_INSTALL_PREFIX="%{_libdir}"

from munt.

sergm avatar sergm commented on April 28, 2024

You welcome.
On a side note, I wish there were more similarities among all the GNU distributions, then packaging would be simpler 🙁

from munt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.