[MacPorts] #62984: freeciv @2.6.4_0: propose a major restructure to provide all 12 clients and utilities

MacPorts noreply at macports.org
Thu May 27 23:26:59 UTC 2021


#62984: freeciv @2.6.4_0: propose a major restructure to provide all 12 clients and
utilities
--------------------+--------------------
 Reporter:  JDLH    |      Owner:  (none)
     Type:  defect  |     Status:  new
 Priority:  Normal  |  Milestone:
Component:  ports   |    Version:
 Keywords:          |       Port:
--------------------+--------------------
 The present '''freeciv''' port is structured in a way which provides just
 a few of the 12 clients and utilities which the upstream codebase now
 provides. The present port is divided into two mutually incompatible sub-
 ports. I propose a major restructure, making a '''freeciv''' port, with
 variants instead of subports to include clients along with their
 dependencies, e.g. `@gtk3` to provide the '''freeciv-gtk3''' and
 '''freeciv-gtk3.22''' clients along with a dependency on port '''gtk3'''.

 The present '''freeciv''' port delivers the client '''freeciv-sdl2''', a
 GUI app based on '''libsdl2'''* ports, along with command-line utilities
 '''freeciv-mp-cli''', '''freeciv-server''', and '''freeciv-manual'''.

 The present '''freeciv-x11''' port delivers the client '''freeciv-gtk2'''
 and the utility '''freeciv-mp-gtk2''', GUI apps based on the '''gtk2'''
 port, along with command-line utilities '''freeciv-server''', and
 '''freeciv-manual'''. Despite the port name, the GUI apps do not depend
 directly on X11. They depend on gtk2, and seem to work fine whether gtk2
 depends on quartz or on X11.

 The best clients in the current freeciv v 2.6.x codebase are '''freeciv-
 qt''' (dependent on Qt5)  and '''freeciv-gtk3.22''' (dependent on Gtk3).
 The present '''freeciv''' and '''freeciv-x11''' ports do not deliver
 either of these clients.

 I propose a new '''freeciv''' port, with variants based on major
 dependencies. One can install any combination of the variants:

  '''freeciv''' base port:: Delivers command-line utilities '''freeciv-mp-
 cli''', '''freeciv-server''', and '''freeciv-manual'''. Delivers man pages
 and documentation. Probably delivers client example code '''freeciv-
 stub''', though it's not good for much.
  `@gtk3` variant:: Delivers client '''freeciv-gtk3.22''' and '''freeciv-
 gtk3''', and utility '''freeciv-mp-gtk3'''.  Depends on port '''gtk3'''.
 Works with '''gtk3 at quartz''' or '''gtk3 at x11'''.
  `@gtk2` variant:: Delivers client '''freeciv-gtk2''' and utility
 '''freeciv-mp-gtk2'''. Depends on port '''gtk2'''.
  `@qt5` variant:: Delivers client '''freeciv-qt''' and utility '''freeciv-
 mp-qt''', built with Qt5. Depends on port '''qt5'''.
  `@x11` variant:: Delivers client '''freeciv-xaw'''. Depends on ports TBD
 related to X11.
  `@sdl2` variant:: Delivers client '''freeciv-sdl'''. Depends on ports
 '''libsdl2''', '''libsdl2_gfx''', '''libsdl2_image''', '''libsdl2_ttf'''.
  `@qt6` variant [future]:: Delivers client '''freeciv-qt''' and utility
 '''freeciv-mp-qt''', built with Qt6. Depends on future port '''qt6'''.
 N.B. this is a future enhancement. MacPorts appears to have no Qt6 port
 yet. The Qt6 support in upstream Freeciv is still experimental, and seems
 unlikely to be backported to their 2.6.x branch.

 With no variants, the '''freeciv''' base port will not include a client,
 so one can host games, but not play them. I could make one variant a
 default, if the user doesn't specify any. Or, I could use `pre-configure`
 code to require at least one of the variants, so that the port always
 delivers at least one GUI client app for playing games.

 '''Deprecations''': Some of these clients, and thus the variants, may
 disappear over time. The [https://freeciv.fandom.com/wiki/Coding Freeciv
 project roadmap] calls for dropping clients as follows:

  sdl client:: drop in version 3.0.x. But, it looks to me like it was
 dropped prior to version 2.6.4. The present '''freeciv''' portfile selects
 the sdl client over the sdl2 client for `(${os.major} <= 10)`, but
 upstream no longer supplies this client. Macports users on this OS cannot
 use freeciv, I guess.
  xaw client:: drop in version 3.0.x.
  gtk2 apps:: drop in version 3.1.x.

 '''Advantage of new port'''

 This structure lets Macports users get the most usable clients from
 upstream, '''freeciv-qt''' and '''freeciv-gtk3.22'''.

 I hope to make the new port's `long_description` clearer about what is
 installed, thus addressing #62793, ''port info doesn't explain the list of
 executable programs''.

 '''Issues'''

 I'm concerned that this change will surprise present users of the
 '''freeciv[-x11]''' ports. They will need to specify variants which
 weren't necessary before. The port '''freeciv-x11''' goes away. What is
 the right way to announce this proposal, and gather feedback?

 What is a good way of determining the exact list of ports on which each of
 these clients depends? I know they all build on my system, with its 2000+
 ports. But I don't see an easy way to determine the minimal set of ports
 required.

-- 
Ticket URL: <https://trac.macports.org/ticket/62984>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list