Opened 11 years ago

Last modified 4 years ago

#14540 new enhancement

Document -devel ports

Reported by: ryandesign (Ryan Schmidt) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: guide Version:
Keywords: Cc: nerdling (Jeremy L), cooljeanius (Eric Gallager)
Port:

Description

The guide should document -devel ports. There was a 3-day discussion on macports-dev about this at the beginning of February 2008, and since that topic has been dormant for weeks now, I think that thread can be used as the basis for what to write in the guide.

Note that much of the thread includes suggestions for how -devel ports *should* be handled in the future, with various disagreements about that, but that we should right now already document the way -devel ports *are* handled:

  • -devel ports are unstable and are intended for testing only, not for production use, and can't be guaranteed to work correctly -- not that we guarantee any port to work correctly, but these are even less-guaranteed
  • -devel ports are usually newer versions than the corresponding non-devel port, though sometimes they're older
  • when the development series being followed by the -devel port culminates in a new stable released version, the corresponding non-devel port is updated to that released version, while the -devel port remains at the last development version
  • if you have the -devel version installed, and a newer non-devel version is released, "port" won't tell you about this via e.g. "port outdated"; you have to find out yourself
  • -devel ports install software in the same places as their non-devel counterparts, so that -devel ports can satisfy a dependency via the same files as the equivalent non-devel port, with the side-effect that you cannot have both the -devel and the non-devel port activated at the same time
  • -devel ports and their non-devel counterparts should be kept as similar as possible, ideally by a single maintainer or by two maintainers who work together to apply common changes to both ports. "diff -u foo/Portfile foo-devel/Portfile" should not show any irrelevant differences like whitespace changes or variants that were added to just one port but which would make just as much sense also added to the other port, etc.
  • ports should not depend on a -devel port if that software could just as well use the non-devel port
  • ports that depend on ports where both -devel and non-devel versions exist should depend on them in such a way that either port will satisfy the dependency. For example, instead of depending on "port:mysql5" (mysql5 would satisfy that dependency but mysql5-devel would not), depend on "path:${prefix}/bin/mysql_config5" (both mysql5 and mysql5-devel would satisfy that dependency).
  • possibly more; check the thread -- I didn't read through it all again right now

Documentation of -devel ports was requested again in #14387.

Change History (8)

comment:1 Changed 11 years ago by florian.ebeling@…

This might be a convenient view for this discussion:

http://www.nabble.com/*-devel-ports-to15249079.html#a15249079 on nabble

Would be a good idea to add this to the guide.

comment:2 in reply to:  description Changed 10 years ago by ryandesign (Ryan Schmidt)

Replying to ryandesign@…:

  • ports that depend on ports where both -devel and non-devel versions exist should depend on them in such a way that either port will satisfy the dependency. For example, instead of depending on "port:mysql5" (mysql5 would satisfy that dependency but mysql5-devel would not), depend on "path:${prefix}/bin/mysql_config5" (both mysql5 and mysql5-devel would satisfy that dependency).

There were two bugs in the above: the correct dependency statement would be "path:bin/mysql_config5:mysql5"

comment:3 Changed 10 years ago by (none)

Milestone: Website & Documentation

Milestone Website & Documentation deleted

comment:4 Changed 9 years ago by nerdling (Jeremy L)

Cc: snc@… added

Cc Me!

comment:5 Changed 8 years ago by ryandesign (Ryan Schmidt)

Continued:

  • -devel and non-devel ports should be marked as conflicting with one another, e.g. port foo-devel should contain the line "conflicts foo" and port foo should contain the line "conflicts foo-devel"
  • if it is ever decided that a port foo-devel will no longer be updated, and that only the stable port foo will remain, the port foo-devel should be marked as a stub port using "replaced_by foo" and all the other verbiage that goes along with replacing a port (pre-fetch block preventing new installations); foo-devel should remain in this stub state until all users can reasonably be expected to have noticed (e.g. one year) after which time foo-devel can be deleted from the ports tree

comment:6 Changed 6 years ago by ryandesign (Ryan Schmidt)

Cc: egall@… added

comment:7 Changed 5 years ago by cooljeanius (Eric Gallager)

Added an entry in the FAQ on the wiki about this: version 129

Although that only addresses this point from the OP:

  • -devel ports install software in the same places as their non-devel counterparts, so that -devel ports can satisfy a dependency via the same files as the equivalent non-devel port, with the side-effect that you cannot have both the -devel and the non-devel port activated at the same time

So I suppose it could be updated to address the rest, as well...

comment:8 Changed 4 years ago by mf2k (Frank Schima)

Owner: changed from markd@… to macports-tickets@…
Version: 1.6.0

markd has retired. See #44782.

Note: See TracTickets for help on using tickets.