public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Artur Frenszek-Iwicki <fedora@svgames.pl>
To: git-commits@fedoraproject.org
Subject: [rpms/Maelstrom] rawhide: Update to v4.0.2 (rhbz#2495895)
Date: Sun, 20 Sep 2026 11:32:50 GMT [thread overview]
Message-ID: <178990397002.1.14477292878854895514.rpms-Maelstrom-2c6b69ef5a6c@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/Maelstrom
Branch : rawhide
Commit : 2c6b69ef5a6c15a38c8b8680eeff6e53d1adadfb
Author : Artur Frenszek-Iwicki <fedora@svgames.pl>
Date : 2026-09-20T13:13:13+02:00
Stats : +419/-411 in 14 file(s)
URL : https://src.fedoraproject.org/rpms/Maelstrom/c/2c6b69ef5a6c15a38c8b8680eeff6e53d1adadfb?branch=rawhide
Log:
Update to v4.0.2 (rhbz#2495895)
This commit unceremoniously drops the patches for system-wide shared
hi-scores, as the game switched from storing a simple list of scores
to storing a directory of game replays.
---
diff --git a/.gitignore b/.gitignore
index 6b83513..8e660fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
Maelstrom-3.0.6.tar.gz
/Maelstrom-3.0.7.tar.gz
+/Maelstrom-release-4.0.2.tar.gz
+/physfs-49cfd5fdd46f38b4c2611556b44ee9b0d308e162.tar.gz
diff --git a/64bit.patch b/64bit.patch
deleted file mode 100644
index b3091ef..0000000
--- a/64bit.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/screenlib/SDL_FrameBuf.cpp b/screenlib/SDL_FrameBuf.cpp
-index 2f7b44c..dbcf379 100644
---- a/screenlib/SDL_FrameBuf.cpp
-+++ b/screenlib/SDL_FrameBuf.cpp
-@@ -888,7 +888,7 @@ FrameBuf:: AddDirtyRect(SDL_Rect *rect)
- for ( i=0; i<dirtymaplen; ++i ) {
- if ( dirtymap[i] != NULL ) {
- dirtymap[i] = (SDL_Rect *)(
-- ((intptr_t)dirtymap[i]-(intptr_t)updatelist) + (intptr_t)newlist
-+ ((long)dirtymap[i]-(long)updatelist) + (long)newlist
- );
- }
- }
diff --git a/CC-BY-3.0.txt b/CC-BY-3.0.txt
new file mode 100644
index 0000000..1a16e05
--- /dev/null
+++ b/CC-BY-3.0.txt
@@ -0,0 +1,319 @@
+Creative Commons Legal Code
+
+Attribution 3.0 Unported
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+ DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+ other pre-existing works, such as a translation, adaptation,
+ derivative work, arrangement of music or other alterations of a
+ literary or artistic work, or phonogram or performance and includes
+ cinematographic adaptations or any other form in which the Work may be
+ recast, transformed, or adapted including in any form recognizably
+ derived from the original, except that a work that constitutes a
+ Collection will not be considered an Adaptation for the purpose of
+ this License. For the avoidance of doubt, where the Work is a musical
+ work, performance or phonogram, the synchronization of the Work in
+ timed-relation with a moving image ("synching") will be considered an
+ Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+ encyclopedias and anthologies, or performances, phonograms or
+ broadcasts, or other works or subject matter other than works listed
+ in Section 1(f) below, which, by reason of the selection and
+ arrangement of their contents, constitute intellectual creations, in
+ which the Work is included in its entirety in unmodified form along
+ with one or more other contributions, each constituting separate and
+ independent works in themselves, which together are assembled into a
+ collective whole. A work that constitutes a Collection will not be
+ considered an Adaptation (as defined above) for the purposes of this
+ License.
+ c. "Distribute" means to make available to the public the original and
+ copies of the Work or Adaptation, as appropriate, through sale or
+ other transfer of ownership.
+ d. "Licensor" means the individual, individuals, entity or entities that
+ offer(s) the Work under the terms of this License.
+ e. "Original Author" means, in the case of a literary or artistic work,
+ the individual, individuals, entity or entities who created the Work
+ or if no individual or entity can be identified, the publisher; and in
+ addition (i) in the case of a performance the actors, singers,
+ musicians, dancers, and other persons who act, sing, deliver, declaim,
+ play in, interpret or otherwise perform literary or artistic works or
+ expressions of folklore; (ii) in the case of a phonogram the producer
+ being the person or legal entity who first fixes the sounds of a
+ performance or other sounds; and, (iii) in the case of broadcasts, the
+ organization that transmits the broadcast.
+ f. "Work" means the literary and/or artistic work offered under the terms
+ of this License including without limitation any production in the
+ literary, scientific and artistic domain, whatever may be the mode or
+ form of its expression including digital form, such as a book,
+ pamphlet and other writing; a lecture, address, sermon or other work
+ of the same nature; a dramatic or dramatico-musical work; a
+ choreographic work or entertainment in dumb show; a musical
+ composition with or without words; a cinematographic work to which are
+ assimilated works expressed by a process analogous to cinematography;
+ a work of drawing, painting, architecture, sculpture, engraving or
+ lithography; a photographic work to which are assimilated works
+ expressed by a process analogous to photography; a work of applied
+ art; an illustration, map, plan, sketch or three-dimensional work
+ relative to geography, topography, architecture or science; a
+ performance; a broadcast; a phonogram; a compilation of data to the
+ extent it is protected as a copyrightable work; or a work performed by
+ a variety or circus performer to the extent it is not otherwise
+ considered a literary or artistic work.
+ g. "You" means an individual or entity exercising rights under this
+ License who has not previously violated the terms of this License with
+ respect to the Work, or who has received express permission from the
+ Licensor to exercise rights under this License despite a previous
+ violation.
+ h. "Publicly Perform" means to perform public recitations of the Work and
+ to communicate to the public those public recitations, by any means or
+ process, including by wire or wireless means or public digital
+ performances; to make available to the public Works in such a way that
+ members of the public may access these Works from a place and at a
+ place individually chosen by them; to perform the Work to the public
+ by any means or process and the communication to the public of the
+ performances of the Work, including by public digital performance; to
+ broadcast and rebroadcast the Work by any means including signs,
+ sounds or images.
+ i. "Reproduce" means to make copies of the Work by any means including
+ without limitation by sound or visual recordings and the right of
+ fixation and reproducing fixations of the Work, including storage of a
+ protected performance or phonogram in digital form or other electronic
+ medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+ Collections, and to Reproduce the Work as incorporated in the
+ Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+ including any translation in any medium, takes reasonable steps to
+ clearly label, demarcate or otherwise identify that changes were made
+ to the original Work. For example, a translation could be marked "The
+ original work was translated from English to Spanish," or a
+ modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+ in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme cannot be waived, the Licensor
+ reserves the exclusive right to collect such royalties for any
+ exercise by You of the rights granted under this License;
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme can be waived, the Licensor waives the
+ exclusive right to collect such royalties for any exercise by You
+ of the rights granted under this License; and,
+ iii. Voluntary License Schemes. The Licensor waives the right to
+ collect royalties, whether individually or, in the event that the
+ Licensor is a member of a collecting society that administers
+ voluntary licensing schemes, via that society, from any exercise
+ by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+ of this License. You must include a copy of, or the Uniform Resource
+ Identifier (URI) for, this License with every copy of the Work You
+ Distribute or Publicly Perform. You may not offer or impose any terms
+ on the Work that restrict the terms of this License or the ability of
+ the recipient of the Work to exercise the rights granted to that
+ recipient under the terms of the License. You may not sublicense the
+ Work. You must keep intact all notices that refer to this License and
+ to the disclaimer of warranties with every copy of the Work You
+ Distribute or Publicly Perform. When You Distribute or Publicly
+ Perform the Work, You may not impose any effective technological
+ measures on the Work that restrict the ability of a recipient of the
+ Work from You to exercise the rights granted to that recipient under
+ the terms of the License. This Section 4(a) applies to the Work as
+ incorporated in a Collection, but this does not require the Collection
+ apart from the Work itself to be made subject to the terms of this
+ License. If You create a Collection, upon notice from any Licensor You
+ must, to the extent practicable, remove from the Collection any credit
+ as required by Section 4(b), as requested. If You create an
+ Adaptation, upon notice from any Licensor You must, to the extent
+ practicable, remove from the Adaptation any credit as required by
+ Section 4(b), as requested.
+ b. If You Distribute, or Publicly Perform the Work or any Adaptations or
+ Collections, You must, unless a request has been made pursuant to
+ Section 4(a), keep intact all copyright notices for the Work and
+ provide, reasonable to the medium or means You are utilizing: (i) the
+ name of the Original Author (or pseudonym, if applicable) if supplied,
+ and/or if the Original Author and/or Licensor designate another party
+ or parties (e.g., a sponsor institute, publishing entity, journal) for
+ attribution ("Attribution Parties") in Licensor's copyright notice,
+ terms of service or by other reasonable means, the name of such party
+ or parties; (ii) the title of the Work if supplied; (iii) to the
+ extent reasonably practicable, the URI, if any, that Licensor
+ specifies to be associated with the Work, unless such URI does not
+ refer to the copyright notice or licensing information for the Work;
+ and (iv) , consistent with Section 3(b), in the case of an Adaptation,
+ a credit identifying the use of the Work in the Adaptation (e.g.,
+ "French translation of the Work by Original Author," or "Screenplay
+ based on original Work by Original Author"). The credit required by
+ this Section 4 (b) may be implemented in any reasonable manner;
+ provided, however, that in the case of a Adaptation or Collection, at
+ a minimum such credit will appear, if a credit for all contributing
+ authors of the Adaptation or Collection appears, then as part of these
+ credits and in a manner at least as prominent as the credits for the
+ other contributing authors. For the avoidance of doubt, You may only
+ use the credit required by this Section for the purpose of attribution
+ in the manner set out above and, by exercising Your rights under this
+ License, You may not implicitly or explicitly assert or imply any
+ connection with, sponsorship or endorsement by the Original Author,
+ Licensor and/or Attribution Parties, as appropriate, of You or Your
+ use of the Work, without the separate, express prior written
+ permission of the Original Author, Licensor and/or Attribution
+ Parties.
+ c. Except as otherwise agreed in writing by the Licensor or as may be
+ otherwise permitted by applicable law, if You Reproduce, Distribute or
+ Publicly Perform the Work either by itself or as part of any
+ Adaptations or Collections, You must not distort, mutilate, modify or
+ take other derogatory action in relation to the Work which would be
+ prejudicial to the Original Author's honor or reputation. Licensor
+ agrees that in those jurisdictions (e.g. Japan), in which any exercise
+ of the right granted in Section 3(b) of this License (the right to
+ make Adaptations) would be deemed to be a distortion, mutilation,
+ modification or other derogatory action prejudicial to the Original
+ Author's honor and reputation, the Licensor will waive or not assert,
+ as appropriate, this Section, to the fullest extent permitted by the
+ applicable national law, to enable You to reasonably exercise Your
+ right under Section 3(b) of this License (right to make Adaptations)
+ but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+ automatically upon any breach by You of the terms of this License.
+ Individuals or entities who have received Adaptations or Collections
+ from You under this License, however, will not have their licenses
+ terminated provided such individuals or entities remain in full
+ compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+ survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+ perpetual (for the duration of the applicable copyright in the Work).
+ Notwithstanding the above, Licensor reserves the right to release the
+ Work under different license terms or to stop distributing the Work at
+ any time; provided, however that any such election will not serve to
+ withdraw this License (or any other license that has been, or is
+ required to be, granted under the terms of this License), and this
+ License will continue in full force and effect unless terminated as
+ stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+ the Licensor offers to the recipient a license to the Work on the same
+ terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+ offers to the recipient a license to the original Work on the same
+ terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of
+ the remainder of the terms of this License, and without further action
+ by the parties to this agreement, such provision shall be reformed to
+ the minimum extent necessary to make such provision valid and
+ enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+ breach consented to unless such waiver or consent shall be in writing
+ and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+ respect to the Work licensed here. There are no understandings,
+ agreements or representations with respect to the Work not specified
+ here. Licensor shall not be bound by any additional provisions that
+ may appear in any communication from You. This License may not be
+ modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+ License were drafted utilizing the terminology of the Berne Convention
+ for the Protection of Literary and Artistic Works (as amended on
+ September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+ Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+ and the Universal Copyright Convention (as revised on July 24, 1971).
+ These rights and subject matter take effect in the relevant
+ jurisdiction in which the License terms are sought to be enforced
+ according to the corresponding provisions of the implementation of
+ those treaty provisions in the applicable national law. If the
+ standard suite of rights granted under applicable copyright law
+ includes additional rights not granted under this License, such
+ additional rights are deemed to be included in the License; this
+ License is not intended to restrict the license of any rights under
+ applicable law.
+
+
+Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be
+ liable to You or any party on any legal theory for any damages
+ whatsoever, including without limitation any general, special,
+ incidental or consequential damages arising in connection to this
+ license. Notwithstanding the foregoing two (2) sentences, if Creative
+ Commons has expressly identified itself as the Licensor hereunder, it
+ shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the
+ Work is licensed under the CCPL, Creative Commons does not authorize
+ the use by either party of the trademark "Creative Commons" or any
+ related trademark or logo of Creative Commons without the prior
+ written consent of Creative Commons. Any permitted use will be in
+ compliance with Creative Commons' then-current trademark usage
+ guidelines, as may be published on its website or otherwise made
+ available upon request from time to time. For the avoidance of doubt,
+ this trademark restriction does not form part of this License.
+
+ Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/Maelstrom.desktop b/Maelstrom.desktop
index 2f5619c..6c1bbed 100644
--- a/Maelstrom.desktop
+++ b/Maelstrom.desktop
@@ -2,7 +2,7 @@
Name=Maelstrom
Comment=Space combat game
Exec=Maelstrom
-Icon=maelstrom.png
+Icon=Maelstrom
Terminal=false
Type=Application
Categories=Game;ArcadeGame;
diff --git a/Maelstrom.spec b/Maelstrom.spec
index e602438..9f966f4 100644
--- a/Maelstrom.spec
+++ b/Maelstrom.spec
@@ -1,30 +1,40 @@
Name: Maelstrom
-Version: 3.0.7
+Version: 4.0.2
Release: %autorelease
Summary: A space combat game
-
-# See Maelstrom-Content-License.txt for details on the updated content licensing
-License: GPL-2.0-or-later AND CC-BY-3.0
URL: http://www.libsdl.org/projects/Maelstrom/
-Source0: http://www.libsdl.org/projects/Maelstrom/src/Maelstrom-%{version}.tar.gz
-Source1: maelstrom.png
-Source2: Maelstrom.desktop
-Source3: Maelstrom-Content-License.txt
-Source4: Maelstrom.appdata.xml
-Patch: setgid.patch
-Patch: gcc34.patch
-Patch: 64bit.patch
-Patch: install.patch
-Patch: gcc5.patch
-Patch: netd-c99.patch
-Patch: Makefile.patch
+
+# Maelstrom itself is Zlib.
+# rapidxml is BSL or MIT. Even though we unbundle it, it's still a single-header static library.
+License: Zlib AND (BSL-1.0 OR MIT)
+
+Source0: https://github.com/libsdl-org/Maelstrom/archive/release-%{version}/Maelstrom-release-%{version}.tar.gz
+
+# Even when building against system PhysFS, the vendored PhysFS package
+# is required, as it contains some extra PhysFS<->SDL3 glue code.
+%global physfs_commit 49cfd5fdd46f38b4c2611556b44ee9b0d308e162
+Source1: https://github.com/icculus/physfs/archive/%{physfs_commit}/physfs-%{physfs_commit}.tar.gz
+
+Source10: Maelstrom.desktop
+Source11: Maelstrom.appdata.xml
+
+Source20: Maelstrom-Content-License.txt
+Source21: CC-BY-3.0.txt
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
-BuildRequires: make
+BuildRequires: cmake
+BuildRequires: desktop-file-utils
BuildRequires: gcc-c++
-BuildRequires: SDL2_net-devel, desktop-file-utils, libtool
+BuildRequires: libappstream-glib
+
+BuildRequires: cmake(SDL3)
+BuildRequires: cmake(SDL3_net)
+BuildRequires: cmake(PhysFS)
+BuildRequires: rapidxml-devel
+
+Requires: %{name}-data = %{version}-%{release}
%description
Maelstrom is a space combat game, originally ported from the Macintosh
@@ -32,44 +42,88 @@ platform. Brave pilots get to dodge asteroids and fight off other ships
at the same time.
+%package data
+Summary: Data files for Maelstrom
+License: CC-BY-3.0
+BuildArch: noarch
+
+Requires: hicolor-icon-theme
+
+%description data
+This package contains files (graphics, sounds, et cetera)
+required to play Maelstrom.
+
+
%prep
-%autosetup -p1
-cp %{SOURCE3} .
+%autosetup -p1 -n %{name}-release-%{version}
+cp -t ./ -a %{SOURCE20} %{SOURCE21}
+
+# Extract PhysFS<->SDL3 glue code from the physfs archive
+mkdir -p external/physfs/extras
+pushd external/physfs/extras
+tar --extract --gunzip --file=%{SOURCE1} --strip-components=2 -- physfs-%{physfs_commit}/extras/physfssdl3.{c,h}
+popd
+
+# Unbundle rapidxml
+rm utils/rapidxml.{h,hpp}
+ln -s %{_includedir}/rapidxml.h utils/
+sed '/utils\/rapidxml\.hpp/d' -i CMakeLists.txt
%build
-export CXXFLAGS="$RPM_OPT_FLAGS -Wno-write-strings"
-%configure
-make %{?_smp_mflags}
+%cmake \
+ -DUSE_VENDORED_PHYSFS=FALSE \
+ -DUSE_VENDORED_SDL=FALSE \
+ -DUSE_VENDORED_SDL_NET=FALSE \
+ -DSTEAM=OFF \
+ -DSTANDALONE_INSTALL=OFF
+%cmake_build
%install
-%make_install
+%cmake_install
-mkdir -p %{buildroot}%{_datadir}/applications
-desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE2}
+# Reuse icons from game data
+for SIZE in 16 20 24 32 36 40 48 64 72 96 128 192 256 512 1024; do
+ ICONDIR="%{buildroot}%{_datadir}/icons/hicolor/${SIZE}x${SIZE}/apps/"
+ install -m 755 -d "${ICONDIR}"
+ ln "%{buildroot}/%{_datadir}/%{name}/Data/Icons/icon-${SIZE}.png" "${ICONDIR}/%{name}.png"
+done
-# remove unpackaged files from the buildroot
-rm -f %{buildroot}%{_bindir}/{Maelstrom-netd,macres,playwave,snd2wav}
+# Install a desktop file and metainfo file
+install -m 755 -d %{buildroot}%{_datadir}/applications
+install -m 644 %{SOURCE10} %{buildroot}%{_datadir}/applications/%{name}.desktop
-mkdir -p -m 755 %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
-install -m 644 %{SOURCE1} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
+install -m 755 -d %{buildroot}%{_metainfodir}
+install -m 644 %{SOURCE11} %{buildroot}%{_metainfodir}/%{name}.metainfo.xml
-mkdir -p -m 755 %{buildroot}%{_datadir}/appdata
-install -m 644 %{SOURCE4} %{buildroot}%{_datadir}/appdata
+# Remove pre-installed documentation files and install them on our own.
+# This is done so the docs are in Maelstrom/ dir despite being in Maelstrom-data package.
+rm %{buildroot}%{_pkgdocdir}/COPYING
+install -m 755 -d %{buildroot}%{_pkgdocdir}
+cp -t %{buildroot}%{_pkgdocdir} -a CREDITS README.md Docs
-find %{buildroot} -name "Makefile*" -exec rm -f {} \;
+# Remove Steam-specific files
+rm -rf %{buildroot}%{_datadir}/%{name}/Data/Steam
+
+
+%check
+desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop
+appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.metainfo.xml
%files
-%doc CREDITS.txt README* Changelog Docs
-%license Maelstrom-Content-License.txt COPYING*
-%attr(2755,root,games) %{_bindir}/Maelstrom
-%{_datadir}/Maelstrom
-%{_datadir}/applications/*
-%{_datadir}/icons/hicolor/48x48/apps/*
-%{_datadir}/appdata/Maelstrom.appdata.xml
-%ghost %config(noreplace) %attr(0664,root,games) %{_localstatedir}/lib/games/Maelstrom-Scores
+%license COPYING
+%{_bindir}/Maelstrom
+%{_datadir}/applications/%{name}.desktop
+%{_metainfodir}/Maelstrom.metainfo.xml
+
+
+%files data
+%doc %{_docdir}
+%license Maelstrom-Content-License.txt CC-BY-3.0.txt
+%{_datadir}/%{name}
+%{_datadir}/icons/hicolor/*/apps/%{name}.png
%changelog
diff --git a/Makefile.patch b/Makefile.patch
deleted file mode 100644
index 9d154aa..0000000
--- a/Makefile.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index fae2bd8..f6f7c8f 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -65,9 +65,9 @@ DIST_SUBDIRS = $(SUBDIRS) Images Docs
- # Special install rule for the game
- install:
- sh mkinstalldirs $(DESTDIR)@GAME_INSTALLDIR@
-- install -m 755 Maelstrom $(DESTDIR)@GAME_INSTALLDIR@/Maelstrom
-+ sh mkinstalldirs $(DESTDIR)$(bindir)
-+ install -m 755 Maelstrom $(DESTDIR)$(bindir)/Maelstrom
- make install_gamedata target=$(DESTDIR)@GAME_INSTALLDIR@
-- make install_gamedocs target=$(DESTDIR)@GAME_INSTALLDIR@
-
- install_gamedata:
- sh mkinstalldirs $(target)/
-diff --git a/Makefile.in b/Makefile.in
-index 06c9322..1839c23 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -980,9 +980,9 @@ uninstall-am: uninstall-binPROGRAMS
- # Special install rule for the game
- install:
- sh mkinstalldirs $(DESTDIR)@GAME_INSTALLDIR@
-- install -m 755 Maelstrom $(DESTDIR)@GAME_INSTALLDIR@/Maelstrom
-+ sh mkinstalldirs $(DESTDIR)$(bindir)
-+ install -m 755 Maelstrom $(DESTDIR)$(bindir)/Maelstrom
- make install_gamedata target=$(DESTDIR)@GAME_INSTALLDIR@
-- make install_gamedocs target=$(DESTDIR)@GAME_INSTALLDIR@
-
- install_gamedata:
- sh mkinstalldirs $(target)/
diff --git a/gcc34.patch b/gcc34.patch
deleted file mode 100644
index 270a858..0000000
--- a/gcc34.patch
+++ /dev/null
@@ -1,56 +0,0 @@
---- Maelstrom-3.0.6/buttonlist.h.sopwith 2004-06-18 15:33:49.000000000 -0400
-+++ Maelstrom-3.0.6/buttonlist.h 2004-06-18 15:47:39.000000000 -0400
-@@ -7,6 +7,13 @@
- class ButtonList {
-
- public:
-+ typedef struct _button {
-+ /* Sensitive area */
-+ Uint16 x1, y1;
-+ Uint16 x2, y2;
-+ void (*callback)(void);
-+ struct _button *next;
-+ } button;
- ButtonList() {
- button_list.next = NULL;
- }
-@@ -16,7 +23,7 @@
-
- void Add_Button(Uint16 x, Uint16 y, Uint16 width, Uint16 height,
- void (*callback)(void)) {
-- struct button *belem;
-+ button *belem;
-
- for ( belem=&button_list; belem->next; belem=belem->next );
- belem->next = new button;
-@@ -30,7 +37,7 @@
- }
-
- void Activate_Button(Uint16 x, Uint16 y) {
-- struct button *belem;
-+ button *belem;
-
- for ( belem=button_list.next; belem; belem=belem->next ) {
- if ( (x >= belem->x1) && (x <= belem->x2) &&
-@@ -42,7 +49,7 @@
- }
-
- void Delete_Buttons(void) {
-- struct button *belem, *btemp;
-+ button *belem, *btemp;
-
- for ( belem=button_list.next; belem; ) {
- btemp = belem;
-@@ -53,12 +60,5 @@
- }
-
- private:
-- typedef struct button {
-- /* Sensitive area */
-- Uint16 x1, y1;
-- Uint16 x2, y2;
-- void (*callback)(void);
-- struct button *next;
-- } button;
- button button_list;
- };
diff --git a/gcc5.patch b/gcc5.patch
deleted file mode 100644
index 3f9f8dd..0000000
--- a/gcc5.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up Maelstrom-3.0.6/netlogic/protocol.h~ Maelstrom-3.0.6/netlogic/protocol.h
---- Maelstrom-3.0.6/netlogic/protocol.h~ 2000-09-24 19:55:39.000000000 +0200
-+++ Maelstrom-3.0.6/netlogic/protocol.h 2016-02-02 16:16:29.141844543 +0100
-@@ -11,7 +11,7 @@
- This stuff is shared between netplay.cc and netplayd
- */
- /* The default port for Maelstrom games. What is 0xAEAE?? *shrug* :) */
--#define NETPLAY_PORT 0xAEAE /* port 44718 */
-+#define NETPLAY_PORT (0xAEAE) /* port 44718 */
-
- /* The minimum length of a new packet buffer */
- #define NEW_PACKETLEN (3+3*4)
diff --git a/install.patch b/install.patch
deleted file mode 100644
index 76ce631..0000000
--- a/install.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- Maelstrom-3.0.6/configure.foo 2006-05-09 00:08:43.000000000 -0400
-+++ Maelstrom-3.0.6/configure 2006-05-09 00:09:00.000000000 -0400
-@@ -3232,7 +3232,7 @@
- GAME_INSTALLDIR="\$(prefix)/games/$PACKAGE"
- ;;
- *)
-- GAME_INSTALLDIR="\$(prefix)/games/$PACKAGE"
-+ GAME_INSTALLDIR="\$(datadir)/$PACKAGE"
- ;;
- esac
-
diff --git a/maelstrom.png b/maelstrom.png
deleted file mode 100644
index 040bd7c..0000000
Binary files a/maelstrom.png and /dev/null differ
diff --git a/netd-c99.patch b/netd-c99.patch
deleted file mode 100644
index fd02509..0000000
--- a/netd-c99.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/Maelstrom-netd.c b/Maelstrom-netd.c
-index 3e6e942..4ed40ae 100644
---- a/Maelstrom-netd.c
-+++ b/Maelstrom-netd.c
-@@ -2,6 +2,7 @@
- /* Here we go... */
-
- #include <stdlib.h>
-+#include <time.h>
- #include <stdio.h>
- #include <string.h>
- #include <signal.h>
-@@ -14,6 +15,10 @@
- #include <netdb.h>
- #include <unistd.h>
-
-+#ifdef unix
-+#include <arpa/inet.h>
-+#endif
-+
- /* We wait in a loop for players to connect and tell us how many people
- are playing. Then, once all players have connected, then we broadcast
- the addresses of all players, and then start again.
-@@ -376,4 +381,3 @@ printf(" the remote address is %s:%hu\n",
- }
- /* Never reached */
- }
--
diff --git a/open.patch b/open.patch
deleted file mode 100644
index 312123b..0000000
--- a/open.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up Maelstrom-3.0.6/scores.cpp.foo Maelstrom-3.0.6/scores.cpp
---- Maelstrom-3.0.6/scores.cpp.foo 2007-10-10 16:10:17.000000000 -0400
-+++ Maelstrom-3.0.6/scores.cpp 2007-10-10 16:11:33.000000000 -0400
-@@ -40,7 +40,7 @@ void GetScoreFile(void)
- #ifdef unix
- omask=umask(SCORES_PERMMASK);
- #endif
-- f = open(MAELSTROM_SCORES,O_RDWR|O_CREAT);
-+ f = open(MAELSTROM_SCORES,O_RDWR|O_CREAT,S_IRUSR | S_IWUSR | S_IWGRP | S_IRGRP);
- if (f == -1)
- f = open(MAELSTROM_SCORES,O_RDONLY);
- if (f == -1)
diff --git a/setgid.patch b/setgid.patch
deleted file mode 100644
index 9c0fe07..0000000
--- a/setgid.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-diff --git a/main.cpp b/main.cpp
-index 087a0bf..9beada5 100644
---- a/main.cpp
-+++ b/main.cpp
-@@ -170,12 +170,21 @@ int main(int argc, char *argv[])
- /* Command line flags */
- int doprinthigh = 0;
- int speedtest = 0;
-+ gid_t gid;
-+
- Uint32 video_flags = SDL_WINDOW_FULLSCREEN_DESKTOP;
-
- /* Normal variables */
- SDL_Event event;
- LibPath::SetExePath(argv[0]);
-
-+ GetScoreFile();
-+ gid = getgid();
-+ if (setresgid(-1,gid,gid) != 0) {
-+ error("Could not drop privleges. -- Exiting.\n");
-+ exit(1);
-+ }
-+
- #ifndef __WIN95__
- /* The first thing we do is calculate our checksum */
- (void) checksum();
-@@ -481,7 +490,7 @@ void DrawMainScreen(void)
- if ( title == NULL ) {
- error("Can't load 'title' title! (ID=%d)\n", 129);
- exit(255);
-- }
-+ }
-
- clr = screen->MapRGB(30000>>8, 30000>>8, 0xFF);
- ltClr = screen->MapRGB(40000>>8, 40000>>8, 0xFF);
-@@ -682,4 +691,3 @@ void Message(const char *message)
- }
- screen->Update();
- }
--
-diff --git a/scores.cpp b/scores.cpp
-index 5e023c6..9ec1e76 100644
---- a/scores.cpp
-+++ b/scores.cpp
-@@ -4,6 +4,8 @@
- */
-
- #ifdef unix
-+#include <arpa/inet.h>
-+#include <fcntl.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #endif
-@@ -15,11 +17,11 @@
- #include "load.h"
- #include "dialog.h"
-
--#define MAELSTROM_SCORES "Maelstrom-Scores"
-+#define MAELSTROM_SCORES "/var/lib/games/Maelstrom-Scores"
- #define NUM_SCORES 10 // Do not change this!
-
- /* Everyone can write to scores file if defined to 0 */
--#define SCORES_PERMMASK 022
-+#define SCORES_PERMMASK 002
-
- #define CLR_DIALOG_WIDTH 281
- #define CLR_DIALOG_HEIGHT 111
-@@ -27,10 +29,31 @@
- Bool gNetScores = 0;
- Scores hScores[NUM_SCORES];
-
-+int gScoreFile = -1;
-+
-+void GetScoreFile(void)
-+{
-+#ifdef unix
-+ int omask;
-+#endif
-+ int f;
-+
-+#ifdef unix
-+ omask=umask(SCORES_PERMMASK);
-+#endif
-+ f = open(MAELSTROM_SCORES,O_RDWR|O_CREAT,S_IRUSR | S_IWUSR | S_IWGRP | S_IRGRP);
-+ if (f == -1)
-+ f = open(MAELSTROM_SCORES,O_RDONLY);
-+ if (f == -1)
-+ error("Couldn't open score file %s.\n",MAELSTROM_SCORES);
-+ gScoreFile = f;
-+#ifdef unix
-+ umask(omask);
-+#endif
-+}
-+
- void LoadScores(void)
- {
-- SavePath path;
-- SDL_RWops *scores_src;
- int i;
-
- /* Try to load network scores, if we can */
-@@ -44,50 +67,48 @@ void LoadScores(void)
- }
- memset(&hScores, 0, sizeof(hScores));
-
-- scores_src = SDL_RWFromFile(path.Path(MAELSTROM_SCORES), "rb");
-- if ( scores_src != NULL ) {
-+ if (gScoreFile != -1) {
-+ lseek(gScoreFile,0,SEEK_SET);
- for ( i=0; i<NUM_SCORES; ++i ) {
-- SDL_RWread(scores_src, hScores[i].name,
-- sizeof(hScores[i].name), 1);
-- hScores[i].wave = SDL_ReadBE32(scores_src);
-- hScores[i].score = SDL_ReadBE32(scores_src);
-+ Uint32 tmp;
-+ if (read(gScoreFile,hScores[i].name,sizeof(hScores[i].name)) != sizeof(hScores[i].name))
-+ break;
-+ if (read(gScoreFile,&tmp,sizeof(Uint32)) != sizeof(Uint32))
-+ break;
-+ hScores[i].wave = ntohl(tmp);
-+ if (read(gScoreFile,&tmp,sizeof(Uint32)) != sizeof(Uint32))
-+ break;
-+ hScores[i].score = ntohl(tmp);
- }
-- SDL_RWclose(scores_src);
- }
- }
-
- void SaveScores(void)
- {
-- SavePath path;
-- SDL_RWops *scores_src;
- int i;
--#ifdef unix
-- int omask;
--#endif
-
- /* Don't save network scores */
- if ( gNetScores )
- return;
-
--#ifdef unix
-- omask=umask(SCORES_PERMMASK);
--#endif
-- scores_src = SDL_RWFromFile(path.Path(MAELSTROM_SCORES), "wb");
-- if ( scores_src != NULL ) {
-+ if (gScoreFile != -1) {
-+ lseek(gScoreFile,0,SEEK_SET);
- for ( i=0; i<NUM_SCORES; ++i ) {
-- SDL_RWwrite(scores_src, hScores[i].name,
-- sizeof(hScores[i].name), 1);
-- SDL_WriteBE32(scores_src, hScores[i].wave);
-- SDL_WriteBE32(scores_src, hScores[i].score);
-+ Uint32 tmp;
-+ if (write(gScoreFile, hScores[i].name, sizeof(hScores[i].name)) != sizeof(hScores[i].name))
-+ goto out_err;
-+ tmp = htonl(hScores[i].wave);
-+ if (write(gScoreFile, &tmp,sizeof(Uint32)) != sizeof(Uint32))
-+ goto out_err;
-+ tmp = htonl(hScores[i].score);
-+ if (write(gScoreFile, &tmp,sizeof(Uint32)) != sizeof(Uint32))
-+ goto out_err;
- }
-- SDL_RWclose(scores_src);
-- } else {
-- error("Warning: Couldn't save scores to %s\n",
-- path.Path(MAELSTROM_SCORES));
-+ fsync(gScoreFile);
-+ return;
- }
--#ifdef unix
-- umask(omask);
--#endif
-+out_err:
-+ error("Warning: Couldn't save scores to %s\n", MAELSTROM_SCORES);
- }
-
- /* Just show the high scores */
-@@ -148,7 +169,7 @@ int ZapHighScores(void)
- clear = new Mac_Button(99, 74, BUTTON_WIDTH, BUTTON_HEIGHT,
- "Clear", chicago, fontserv, Clear_callback);
- dialog->Add_Dialog(clear);
-- cancel = new Mac_DefaultButton(99+BUTTON_WIDTH+14, 74,
-+ cancel = new Mac_DefaultButton(99+BUTTON_WIDTH+14, 74,
- BUTTON_WIDTH, BUTTON_HEIGHT,
- "Cancel", chicago, fontserv, Cancel_callback);
- dialog->Add_Dialog(cancel);
-@@ -268,4 +289,3 @@ int GetStartLevel(void)
- }
- return(0);
- }
--
-diff --git a/scores.h b/scores.h
-index 4126260..4716751 100644
---- a/scores.h
-+++ b/scores.h
-@@ -2,6 +2,7 @@
- // Functions from scores.cc
- extern void LoadScores(void);
- extern void SaveScores(void);
-+extern void GetScoreFile(void);
- extern int ZapHighScores(void);
- extern int GetStartLevel(void);
- extern void PrintHighScores(void);
diff --git a/sources b/sources
index 5ad8896..8ca6748 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
-SHA512 (Maelstrom-3.0.7.tar.gz) = 2cc75ee25293310c7f4737583c5f1dc33f2c5dfca28fdfe76f523a94992d1ae20a96b77e79c26aee3b2c7c1a23d213128a040a245d0671339b567646b88004d1
+SHA512 (Maelstrom-release-4.0.2.tar.gz) = ff723b9094e1b11e5451ae408800686c69f6eeba61507bd33dec5fa11812ca0ed6bef62d28cc14b4a483c25a52638acdaf708b6d825a21c5c82faa3fb07b7207
+SHA512 (physfs-49cfd5fdd46f38b4c2611556b44ee9b0d308e162.tar.gz) = 64b9d4b245a0fd6cb4cd099edec598044b0833c21008c41b584e3e62000d29c65d0fb1c854ee8f261b3fee616c000c0bf6f6a5d62d6f63764a253a20ef55ed95
reply other threads:[~2026-09-20 11:32 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178990397002.1.14477292878854895514.rpms-Maelstrom-2c6b69ef5a6c@fedoraproject.org \
--to=fedora@svgames.pl \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox