Monday, September 05, 2022

Re: update games/fheroes2 to 0.9.18

On Sat, 27 Aug 2022, Paco Esteban wrote:

> Hi ports@,
>
> This is an update of games/fheroes2 to its latest version 0.9.18
> It builds and runs fine for me on amd64, not sure I did the right thing
> with the right thing with the lang Makefile. They seem to have changed
> things a bit in this area.
>
> Maintainer on cc.
>
> Comments ? Ok to commit ?

ping ?

diff here again for convenience


diff /usr/ports
commit - d831ba6400d1500e8b55926b20ca44816aa1d8c7
path + /usr/ports
blob - c45a60fc907c523c9fe249b68025fd7205d12b6c
file + games/fheroes2/Makefile
--- games/fheroes2/Makefile
+++ games/fheroes2/Makefile
@@ -2,11 +2,10 @@ COMMENT = engine recreation for Heroes of Might and Ma

GH_ACCOUNT = ihhub
GH_PROJECT = fheroes2
-GH_TAGNAME = 0.9.14
+GH_TAGNAME = 0.9.18
CATEGORIES = games
HOMEPAGE = https://ihhub.github.io/fheroes2/
MAINTAINER = Thomas Frohwein <thfr@openbsd.org>
-REVISION = 0

# GPLv2.0+, LGPLv2.1+ (src/thirdparty/libsmacker)
PERMIT_PACKAGE = Yes
@@ -30,7 +29,6 @@ do-gen:

do-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/fheroes2/files/data
- ${INSTALL_DATA} ${WRKSRC}/fheroes2.key ${PREFIX}/share/fheroes2/
${INSTALL_DATA} ${WRKSRC}/files/data/resurrection.h2d \
${PREFIX}/share/fheroes2/files/data/
${INSTALL_DATA_DIR} ${PREFIX}/share/fheroes2/files/lang
blob - fe69e1e68011d777d3004c15ca45a0fb6b4e89ea
file + games/fheroes2/distinfo
--- games/fheroes2/distinfo
+++ games/fheroes2/distinfo
@@ -1,2 +1,2 @@
-SHA256 (fheroes2-0.9.14.tar.gz) = VTL6hEO42PVPz8VmKPECBHCtIV4SKF14yEUOSeqZRL4=
-SIZE (fheroes2-0.9.14.tar.gz) = 3628240
+SHA256 (fheroes2-0.9.18.tar.gz) = vNmvznuGljD5fP23E2aPD33M9p/Gsx2xynSsL2NSSo0=
+SIZE (fheroes2-0.9.18.tar.gz) = 5117381
blob - 765221e1f24c22c250ab4e4e79020970626a7d68
file + /dev/null
--- games/fheroes2/patches/patch-files_lang_Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-used UTF-8 so that sed doesn't fail because of different string lengths
-add in missing instructions for languages (hu, lt, nl, sv, pt, tr)
-
-Index: files/lang/Makefile
---- files/lang/Makefile.orig
-+++ files/lang/Makefile
-@@ -31,14 +31,14 @@ merge:
- # Spanish: drop accents transliterated with `"` (which breaks translation file format)
- # and transliterate the rest using the es_ES.UTF-8 locale
- es.mo: es.po
-- sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
-+ LANG=es_ES.UTF-8 LC_CTYPE=es_ES.UTF-8 sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
- LANG=es_ES.UTF-8 LC_ALL=es_ES.UTF-8 LC_CTYPE=es_ES.UTF-8 iconv -f utf-8 -t ascii//TRANSLIT $<.tmp > $<.2.tmp
- msgfmt $<.2.tmp -o $@
-
- # In French, accented characters are mapped to unused ASCII characters
- # Non-mapped characters are replaced by their non-accented equivalents
- fr.mo: fr.po
-- sed -e 'y/àâçéèêîïôùûüÉÊÀ/@*^~`|><#&$$uEEA/' $< > $<.tmp
-+ LANG=fr_FR.UTF-8 LC_CTYPE=fr_FR.UTF-8 sed -e 'y/àâçéèêîïôùûüÉÊÀ/@*^~`|><#&$$uEEA/' $< > $<.tmp
- sed -i~ -e 's/œ/oe/g' $<.tmp
- msgfmt $<.tmp -o $@
-
-@@ -78,6 +78,36 @@ nb.mo: nb.po
- it.mo: it.po
- iconv -f utf-8 -t CP1252 $< > $<.tmp
- LANG=it.CP1252 LC_ALL=it.CP1252 LC_CTYPE=it.CP1252 sed -e 's/UTF-8/CP1252/' $<.tmp > $<.2.tmp
-+ msgfmt $<.2.tmp -o $@
-+
-+hu.mo: hu.po
-+ LANG=hu_HU.UTF-8 LC_ALL=hu_HU.UTF-8 LC_CTYPE=hu_HU.UTF-8 sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
-+ iconv -f utf-8 -t ascii//TRANSLIT $<.tmp > $<.2.tmp
-+ msgfmt $<.2.tmp -o $@
-+
-+lt.mo: lt.po
-+ LANG=lt_LT.UTF-8 LC_ALL=lt_LT.UTF-8 LC_CTYPE=lt_LT.UTF-8 sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
-+ iconv -f utf-8 -t ascii//TRANSLIT $<.tmp > $<.2.tmp
-+ msgfmt $<.2.tmp -o $@
-+
-+nl.mo: nl.po
-+ LANG=nl_NL.UTF-8 LC_ALL=nl_NL.UTF-8 LC_CTYPE=nl_NL.UTF-8 sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
-+ iconv -f utf-8 -t ascii//TRANSLIT $<.tmp > $<.2.tmp
-+ msgfmt $<.2.tmp -o $@
-+
-+sv.mo: sv.po
-+ LANG=sv_SV.UTF-8 LC_ALL=sv_SV.UTF-8 LC_CTYPE=sv_SV.UTF-8 sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
-+ iconv -f utf-8 -t ascii//TRANSLIT $<.tmp > $<.2.tmp
-+ msgfmt $<.2.tmp -o $@
-+
-+pt.mo: pt.po
-+ LANG=pt_PT.UTF-8 LC_ALL=pt_PT.UTF-8 LC_CTYPE=pt_PT.UTF-8 sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
-+ iconv -f utf-8 -t ascii//TRANSLIT $<.tmp > $<.2.tmp
-+ msgfmt $<.2.tmp -o $@
-+
-+tr.mo: tr.po
-+ LANG=tr_TR.UTF-8 LC_ALL=tr_TR.UTF-8 LC_CTYPE=tr_TR.UTF-8 sed -e 'y/äëïöőüűÄËÏŐÖÜŰ/aeioouuAEIOOUU/' $< > $<.tmp
-+ iconv -f utf-8 -t ascii//TRANSLIT $<.tmp > $<.2.tmp
- msgfmt $<.2.tmp -o $@
-
- # All other languages: drop accents transliterated with `"` (which breaks translation file format)
blob - 89a33ef3e05b9aff8fdff3db84fe94b3d6dc5bd5
file + /dev/null
--- games/fheroes2/patches/patch-src_fheroes2_agg_agg_cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-Fix failing music file search
-GH PR 5278
-
-Index: src/fheroes2/agg/agg.cpp
---- src/fheroes2/agg/agg.cpp.orig
-+++ src/fheroes2/agg/agg.cpp
-@@ -22,6 +22,7 @@
- ***************************************************************************/
-
- #include <algorithm>
-+#include <array>
- #include <cassert>
- #include <condition_variable>
- #include <map>
-@@ -33,21 +34,31 @@
- #include "agg_file.h"
- #include "audio.h"
- #include "dir.h"
--#include "embedded_image.h"
- #include "game.h"
- #include "localevent.h"
- #include "logging.h"
- #include "m82.h"
- #include "mus.h"
--#include "screen.h"
- #include "settings.h"
- #include "system.h"
- #include "tools.h"
- #include "xmi.h"
--#include "zzlib.h"
-
- namespace
- {
-+ struct MusicFileType
-+ {
-+ explicit MusicFileType( const MUS::EXTERNAL_MUSIC_TYPE type_ )
-+ : type( type_ )
-+ {
-+ // Do nothing.
-+ }
-+
-+ MUS::EXTERNAL_MUSIC_TYPE type = MUS::EXTERNAL_MUSIC_TYPE::WIN_VERSION;
-+
-+ std::array<std::string, 3> extension{ ".ogg", ".mp3", ".flac" };
-+ };
-+
- const std::string externalMusicDirectory( "music" );
-
- std::vector<std::string> getMusicDirectories()
-@@ -63,46 +74,58 @@ namespace
- return directories;
- }
-
-- std::string getExternalMusicFile( const int musicTrackId, const MUS::EXTERNAL_MUSIC_TYPE musicType, const std::vector<std::string> & directories )
-+ bool findMusicFile( const std::vector<std::string> & directories, const std::string & fileName, std::string & fullPath )
- {
-+ for ( const std::string & dir : directories ) {
-+ ListFiles musicFilePaths;
-+ musicFilePaths.ReadDir( dir, fileName, false );
-+ if ( musicFilePaths.empty() ) {
-+ continue;
-+ }
-+
-+ std::string correctFilePath = System::ConcatePath( dir, fileName );
-+ correctFilePath = StringLower( correctFilePath );
-+
-+ for ( const std::string & path : musicFilePaths ) {
-+ const std::string temp = StringLower( path );
-+ if ( temp == correctFilePath ) {
-+ fullPath = path;
-+ return true;
-+ }
-+ }
-+ }
-+
-+ return false;
-+ }
-+
-+ std::string getExternalMusicFile( const int musicTrackId, const std::vector<std::string> & directories, MusicFileType & musicType )
-+ {
- if ( directories.empty() ) {
- // Nothing to search.
- return {};
- }
-
-- // Instead of relying some generic functions we want to have maximum performance as I/O operations are the slowest.
-- std::vector<std::string> possibleFilenames;
-- possibleFilenames.reserve( directories.size() );
-+ std::string fullPath;
-
-- for ( const std::string & dir : directories ) {
-- possibleFilenames.emplace_back( System::ConcatePath( dir, MUS::getFileName( musicTrackId, musicType, ".flac" ) ) );
-+ std::string fileName = MUS::getFileName( musicTrackId, musicType.type, musicType.extension[0].c_str() );
-+ if ( findMusicFile( directories, fileName, fullPath ) ) {
-+ return fullPath;
- }
-
-- // Search for FLAC files as they have the best audio quality.
-- for ( const std::string & filename : possibleFilenames ) {
-- if ( System::IsFile( filename ) ) {
-- return filename;
-- }
-+ fheroes2::replaceStringEnding( fileName, musicType.extension[0].c_str(), musicType.extension[1].c_str() );
-+ if ( findMusicFile( directories, fileName, fullPath ) ) {
-+ // Swap extensions to improve cache hit.
-+ std::swap( musicType.extension[0], musicType.extension[1] );
-+ return fullPath;
- }
-
-- // None of FLAC files found. Try OGG files.
-- for ( std::string & filename : possibleFilenames ) {
-- fheroes2::replaceStringEnding( filename, ".flac", ".ogg" );
--
-- if ( System::IsFile( filename ) ) {
-- return filename;
-- }
-+ fheroes2::replaceStringEnding( fileName, musicType.extension[1].c_str(), musicType.extension[2].c_str() );
-+ if ( findMusicFile( directories, fileName, fullPath ) ) {
-+ // Swap extensions to improve cache hit.
-+ std::swap( musicType.extension[0], musicType.extension[2] );
-+ return fullPath;
- }
-
-- // No luck with even OGG. Try with MP3.
-- for ( std::string & filename : possibleFilenames ) {
-- fheroes2::replaceStringEnding( filename, ".ogg", ".mp3" );
--
-- if ( System::IsFile( filename ) ) {
-- return filename;
-- }
-- }
--
- // Looks like music file does not exist.
- return {};
- }
-@@ -582,13 +605,21 @@ void AGG::PlayMusicInternally( const int mus, const Mu
- if ( musicType == MUSIC_EXTERNAL ) {
- const std::vector<std::string> & musicDirectories = getMusicDirectories();
-
-- std::string filename = getExternalMusicFile( mus, MUS::EXTERNAL_MUSIC_TYPE::DOS_VERSION, musicDirectories );
-- if ( filename.empty() ) {
-- filename = getExternalMusicFile( mus, MUS::EXTERNAL_MUSIC_TYPE::WIN_VERSION, musicDirectories );
-- }
-+ // To avoid extra I/O calls to data storage it might be useful to remember the last successful type of music and try to search for it next time.
-+ static std::array<MusicFileType, 3> musicFileTypes{ MusicFileType( MUS::EXTERNAL_MUSIC_TYPE::DOS_VERSION ),
-+ MusicFileType( MUS::EXTERNAL_MUSIC_TYPE::WIN_VERSION ), MusicFileType( MUS::EXTERNAL_MUSIC_TYPE::MAPPED ) };
-
-- if ( filename.empty() ) {
-- filename = getExternalMusicFile( mus, MUS::EXTERNAL_MUSIC_TYPE::MAPPED, musicDirectories );
-+ std::string filename;
-+
-+ for ( size_t i = 0; i < musicFileTypes.size(); ++i ) {
-+ filename = getExternalMusicFile( mus, musicDirectories, musicFileTypes[i] );
-+ if ( !filename.empty() ) {
-+ if ( i > 0 ) {
-+ // Swap music types to improve cache hit.
-+ std::swap( musicFileTypes[0], musicFileTypes[i] );
-+ }
-+ break;
-+ }
- }
-
- if ( filename.empty() ) {
blob - 0eb2863ea6dab8e28c9dd4044243011e5ddd434b
file + games/fheroes2/pkg/PLIST
--- games/fheroes2/pkg/PLIST
+++ games/fheroes2/pkg/PLIST
@@ -2,22 +2,20 @@
share/doc/pkg-readmes/${PKGSTEM}
share/fheroes2/
share/fheroes2/download_demo_version.sh
-share/fheroes2/fheroes2.key
share/fheroes2/files/
share/fheroes2/files/data/
share/fheroes2/files/data/resurrection.h2d
share/fheroes2/files/lang/
+share/fheroes2/files/lang/be.mo
+share/fheroes2/files/lang/bg.mo
share/fheroes2/files/lang/cs.mo
share/fheroes2/files/lang/de.mo
share/fheroes2/files/lang/es.mo
-share/fheroes2/files/lang/fr.mo
-share/fheroes2/files/lang/hu.mo
share/fheroes2/files/lang/it.mo
-share/fheroes2/files/lang/lt.mo
share/fheroes2/files/lang/nb.mo
-share/fheroes2/files/lang/nl.mo
share/fheroes2/files/lang/pl.mo
share/fheroes2/files/lang/pt.mo
+share/fheroes2/files/lang/ro.mo
share/fheroes2/files/lang/ru.mo
share/fheroes2/files/lang/sv.mo
-share/fheroes2/files/lang/tr.mo
+share/fheroes2/files/lang/uk.mo
blob - 12be8e617e7e7df6b358c680b5230c7099169f55
file + games/fheroes2/pkg/README
--- games/fheroes2/pkg/README
+++ games/fheroes2/pkg/README
@@ -16,10 +16,8 @@ environment variable FHEROES2_DATA:

$ env FHEROES2_DATA=/path/to/game fheroes2

-Key bindings can be adjusted in the file fheroes2.key. Copy it first to
-~/.fheroes2/ to work with it:
+Key bindings can be adjusted in the file ~/.fheroes2/fheroes2.key.
+It's automatically created on first run.

-$ cp ${PREFIX}/share/fheroes2/fheroes2.key ~/.fheroes2/
-
The port includes a script to download the freeware demo data at
${PREFIX}/share/fheroes2/download_demo_version.sh.

--
Paco Esteban.
0x5818130B8A6DBC03

No comments:

Post a Comment