Package Details: cemu-git 2.5.r0.gdd0af0a5-1

Git Clone URL: https://aur.archlinux.org/cemu-git.git (read-only, click to copy)
Package Base: cemu-git
Description: Nintendo Wii U emulator
Upstream URL: https://cemu.info/
Keywords: console emulation emulator game nintendo
Licenses: MPL-2.0
Conflicts: cemu
Provides: cemu
Submitter: abouvier
Maintainer: abouvier
Last Packager: abouvier
Votes: 12
Popularity: 0.69
First Submitted: 2022-08-27 04:24 (UTC)
Last Updated: 2024-12-07 18:16 (UTC)

Required by (1)

Sources (2)

Pinned Comments

abouvier commented on 2022-10-12 17:50 (UTC)

Data and config files previously stored in ~/.local/share/cemu are now searched in ~/.config/Cemu, ~/.local/share/Cemu and ~/.cache/Cemu.

Latest Comments

« First ‹ Previous 1 2 3 4 5 6 7 Next › Last »

Neko-san commented on 2023-07-30 20:09 (UTC) (edited on 2023-07-30 20:09 (UTC) by Neko-san)

To clarify, the compile flags aren't being modified;

it checks if those valuea are already defined and decides whether to build with LLVM or not, which upstream only does for clang.

The users themselves wouldn't have to modify the PKBUILD at all.

That aside, if you're sure about a fmt9 package, sure, but it'll only make more work for you.

abouvier commented on 2023-07-30 07:34 (UTC)

Sorry but I will do none of that :p

The added dependencies are only needed when you build the libs manually with vcpkg, which I will not enable.

And it's up to you to tweak the compiler flags in makepkg.conf, not to each PKGBUILD.

The only good solution is to create a compatibility package fmt9, and this PKGBUILD will build again without modification.

Neko-san commented on 2023-07-30 06:21 (UTC) (edited on 2023-07-30 06:51 (UTC) by Neko-san)

(@abouvier we can use these edits to make Cemu build-able again until the libfmt issue gets worked out)

Some the depends/makedepends I included were missing and are actually listed as necessary dependencies upstream:

https://github.com/cemu-project/Cemu/blob/main/BUILD.md#for-arch-and-derivatives

depends=(
    'discord-rpc'
    'freeglut'
    'gcc-libs'
    'glibc'
    'hicolor-icon-theme'
    'libc++abi'
    'libpulse'
    'libx11'
    'pugixml'
    'sdl2'
    'systemd'
    'wxwidgets-gtk3>=3.2'
    'zlib'
)
makedepends=(
    'boost'
    'clang'
    'cmake>=3.21.1'
    'cubeb'
    'curl'
#   'fmt>=9.1'
    'git'
    'glib2'
    'glm'
    'glslang'
    'glu'
    'gtk3'
    'libgcrypt'
    'libgl'
    'libpng'
    'libsecret'
    'libzip'
    'llvm'
    'nasm'
    'openssl'
    'rapidjson'
    'tar'
    'unzip'
    'vulkan-headers>=1:1.3.225'
    'wayland'
    'wayland-protocols'
    'zarchive>=0.1.2'
    'zip'
    'zstd'
)

Need to pull all the submodules or vcpkg will get mad (you might be able to refactor it to include everything besides fmt? Probably not)

prepare() {
    cd $_pkgname
    git config submodule.dependencies/imgui.url ../imgui
    git -c protocol.file.allow=always submodule update --init --recursive
    rm -r bin/shaderCache
    sed -i '/CMAKE_INTERPROCEDURAL_OPTIMIZATION/d' CMakeLists.txt
    sed -i '/discord-rpc/d' CMakeLists.txt
    sed -i '/FMT_HEADER_ONLY/d' src/Common/precompiled.h
    sed -i 's/glm::glm/glm/' src/{Common,input}/CMakeLists.txt
}

The if-check to both start using vcpkg and better account for using clang+LLVM if users have set clang in makepkg.conf

    if [ "${CC} = "gcc" ] || [ "${CC} = "/usr/bin/gcc" ]; then
        cmake -S $_pkgname -B build \
            -DCMAKE_C_COMPILER="${CC}" \
            -DCMAKE_CXX_COMPILER="/usr/bin/g++" \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_C_FLAGS_RELEASE="${CFLAGS} -DNDEBUG" \
            -DCMAKE_CXX_FLAGS_RELEASE="${CXXFLAGS} -DNDEBUG" \
            -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \
            -DCMAKE_MAKE_PROGRAM="make" \
            -DPORTABLE=OFF \
            -Wno-dev
        cmake --build build
    elif [ "${CC} = "clang" ] || [ "${CC} = "/usr/bin/clang" ]; then
        cmake -S $_pkgname -B build \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_C_COMPILER="${CC}" \
            -DCMAKE_CXX_COMPILER="/usr/bin/clang++" \
            -DCMAKE_C_FLAGS_RELEASE="${CFLAGS} -DNDEBUG" \
            -DCMAKE_CXX_FLAGS_RELEASE="${CXXFLAGS} -DNDEBUG" \
            -DCMAKE_EXE_LINKER_FLAGS="-lc++abi ${LDFLAGS}" \
            -DCMAKE_AR="/usr/bin/llvm-ar" \
            -DCMAKE_NM="/usr/bin/llvm-nm" \
            -DCMAKE_AS="/usr/bin/llvm-as" \
            -DCMAKE_RANLIB="/usr/bin/llvm-ranlib" \
            -DCMAKE_OBJCOPY="/usr/bin/llvm-objcopy" \
            -DCMAKE_MAKE_PROGRAM="make" \
            -DPORTABLE=OFF \
            -Wno-dev
        cmake --build build
    fi

queenbiscuit311 commented on 2023-07-29 05:01 (UTC)

The fmt build error might be related to the update to fmt on the arch repos from yesterday. I can't update my packages because this and two other emulators require the previous version, that might be why but I'm not sure.

Neko-san commented on 2023-07-28 20:14 (UTC) (edited on 2023-07-28 21:07 (UTC) by Neko-san)

There appears to be a build error connected to CubebInputAPI.cpp that might be connected to a core.h header error with the fmt package:

[ 24%] Building CXX object src/audio/CMakeFiles/CemuAudio.dir/CubebInputAPI.cpp.o
In file included from <built-in>:508:
In file included from /build/cemu-git/src/build/src/audio/CMakeFiles/CemuAudio.dir/cmake_pch.hxx:5:
In file included from /build/cemu-git/src/cemu/src/Common/precompiled.h:9:
/usr/include/fmt/core.h:2561:10: error: call to deleted constructor of 'formatter<mapped_type, char_type>' (aka 'formatter<IAudioInputAPI::AudioInputAPI, char>')
  return formatter<mapped_type, char_type>().parse(ctx);
         ^
/usr/include/fmt/core.h:2620:23: note: in instantiation of function template specialization 'fmt::detail::parse_format_specs<IAudioInputAPI::AudioInputAPI, fmt::detail::compile_parse_context<char>>' requested here
        parse_funcs_{&parse_format_specs<Args, parse_context_type>...},
                      ^
/usr/include/fmt/core.h:2769:47: note: in instantiation of member function 'fmt::detail::format_string_checker<char, IAudioInputAPI::AudioInputAPI>::format_string_checker' requested here
      detail::parse_format_string<true>(str_, checker(s));
                                              ^
/build/cemu-git/src/cemu/src/audio/IAudioInputAPI.cpp:54:40: note: in instantiation of function template specialization 'fmt::basic_format_string<char, IAudioInputAPI::AudioInputAPI &>::basic_format_string<char[22], 0>' requested here
                throw std::runtime_error(fmt::format("invalid audio api: {}", api));
                                                     ^
/usr/include/fmt/core.h:792:3: note: 'formatter' has been explicitly marked deleted here
  formatter() = delete;
  ^
/usr/include/fmt/core.h:1690:3: error: static assertion failed due to requirement 'formattable': Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
  static_assert(
  ^
/usr/include/fmt/core.h:1711:10: note: in instantiation of function template specialization 'fmt::detail::make_value<fmt::basic_format_context<fmt::appender, char>, IAudioInputAPI::AudioInputAPI &>' requested here
  return make_value<Context>(val);
         ^
/usr/include/fmt/core.h:1825:23: note: in instantiation of function template specialization 'fmt::detail::make_arg<true, fmt::basic_format_context<fmt::appender, char>, fmt::detail::type::custom_type, IAudioInputAPI::AudioInputAPI &, 0>' requested here
        data_{detail::make_arg<
                      ^
/usr/include/fmt/core.h:1844:10: note: in instantiation of function template specialization 'fmt::format_arg_store<fmt::basic_format_context<fmt::appender, char>, IAudioInputAPI::AudioInputAPI>::format_arg_store<IAudioInputAPI::AudioInputAPI &>' requested here
  return {FMT_FORWARD(args)...};
         ^
/usr/include/fmt/core.h:2817:28: note: in instantiation of function template specialization 'fmt::make_format_args<fmt::basic_format_context<fmt::appender, char>, IAudioInputAPI::AudioInputAPI &>' requested here
  return vformat(fmt, fmt::make_format_args(args...));
                           ^
/build/cemu-git/src/cemu/src/audio/IAudioInputAPI.cpp:54:33: note: in instantiation of function template specialization 'fmt::format<IAudioInputAPI::AudioInputAPI &>' requested here
                throw std::runtime_error(fmt::format("invalid audio api: {}", api));
                                              ^
2 errors generated.
make[2]: *** [src/audio/CMakeFiles/CemuAudio.dir/build.make:109: src/audio/CMakeFiles/CemuAudio.dir/IAudioInputAPI.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from <built-in>:508:
In file included from /build/cemu-git/src/build/src/audio/CMakeFiles/CemuAudio.dir/cmake_pch.hxx:5:
In file included from /build/cemu-git/src/cemu/src/audio/../Common/precompiled.h:9:
/usr/include/fmt/core.h:2561:10: error: call to deleted constructor of 'formatter<mapped_type, char_type>' (aka 'formatter<IAudioAPI::AudioAPI, char>')
  return formatter<mapped_type, char_type>().parse(ctx);
         ^
/usr/include/fmt/core.h:2620:23: note: in instantiation of function template specialization 'fmt::detail::parse_format_specs<IAudioAPI::AudioAPI, fmt::detail::compile_parse_context<char>>' requested here
        parse_funcs_{&parse_format_specs<Args, parse_context_type>...},
                      ^
/usr/include/fmt/core.h:2769:47: note: in instantiation of member function 'fmt::detail::format_string_checker<char, IAudioAPI::AudioAPI>::format_string_checker' requested here
      detail::parse_format_string<true>(str_, checker(s));
                                              ^
/build/cemu-git/src/cemu/src/audio/IAudioAPI.cpp:134:40: note: in instantiation of function template specialization 'fmt::basic_format_string<char, IAudioAPI::AudioAPI &>::basic_format_string<char[22], 0>' requested here
                throw std::runtime_error(fmt::format("invalid audio api: {}", api));
                                                     ^
/usr/include/fmt/core.h:792:3: note: 'formatter' has been explicitly marked deleted here
  formatter() = delete;
  ^
/usr/include/fmt/core.h:1690:3: error: static assertion failed due to requirement 'formattable': Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
  static_assert(
  ^
/usr/include/fmt/core.h:1711:10: note: in instantiation of function template specialization 'fmt::detail::make_value<fmt::basic_format_context<fmt::appender, char>, IAudioAPI::AudioAPI &>' requested here
  return make_value<Context>(val);
         ^
/usr/include/fmt/core.h:1825:23: note: in instantiation of function template specialization 'fmt::detail::make_arg<true, fmt::basic_format_context<fmt::appender, char>, fmt::detail::type::custom_type, IAudioAPI::AudioAPI &, 0>' requested here
        data_{detail::make_arg<
                      ^
/usr/include/fmt/core.h:1844:10: note: in instantiation of function template specialization 'fmt::format_arg_store<fmt::basic_format_context<fmt::appender, char>, IAudioAPI::AudioAPI>::format_arg_store<IAudioAPI::AudioAPI &>' requested here
  return {FMT_FORWARD(args)...};
         ^
/usr/include/fmt/core.h:2817:28: note: in instantiation of function template specialization 'fmt::make_format_args<fmt::basic_format_context<fmt::appender, char>, IAudioAPI::AudioAPI &>' requested here
  return vformat(fmt, fmt::make_format_args(args...));
                           ^
/build/cemu-git/src/cemu/src/audio/IAudioAPI.cpp:134:33: note: in instantiation of function template specialization 'fmt::format<IAudioAPI::AudioAPI &>' requested here
                throw std::runtime_error(fmt::format("invalid audio api: {}", api));
                                              ^
2 errors generated.
make[2]: *** [src/audio/CMakeFiles/CemuAudio.dir/build.make:93: src/audio/CMakeFiles/CemuAudio.dir/IAudioAPI.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:593: src/audio/CMakeFiles/CemuAudio.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Also mentioned this upstream: https://github.com/cemu-project/Cemu/issues/919

Martchus commented on 2023-01-23 16:38 (UTC)

@modnoob Just rebuild. This "soname" dependency is automatically determined during the build. There's no change to the PKGBUILD file itself required.

modnoob commented on 2023-01-23 15:31 (UTC)

The build fails with: :: unable to satisfy dependency 'libboost_filesystem.so=1.80.0-64' required by cemu-git :: unable to satisfy dependency 'libboost_program_options.so=1.80.0-64' required by cemu-git Time to change some of the dependencys I would guess.

abouvier commented on 2022-12-16 02:34 (UTC)

Oops, I deleted and recloned the cemu repo and now I get the same result as you. The local config of the old repo was probably messed up.

I added --abbrev for nothing it seems :$

patlefort commented on 2022-12-15 23:52 (UTC)

Sorry but no, I tested on many machines with different distro, same result. None of them have anything special, very vanilla.

git describe --long --tags always result in v2.0-22-0-g058d11b.

In any case, adding --abbrev solve the issue.