On Jun 23, 2019, at 02:52, Mojca Miklavec wrote:

> I would like to suggest providing simplification for the following four lines:
> 
> name                py-foo
> version             1.2.3
> master_sites        pypi:[string index ${python.rootname} 
> 0]/${python.rootname}
> distname            ${python.rootname}-${version}
> 
> which could read like the following, for example to set all four lines:
> 
> pypi.setup          foo 2.3.1
> 
> but we would need to also provide support for:
> - cases when "py-foo" isn't pointing to pypi package "foo" (different 
> rootname)
> - regular ports outside of python subdir
> - proper support when we want to use subports with different packages
>  (let's say that we would want to put [py-]buildbot,
> [py-]buildbot-console-view, [py-]buildbot-grid-view,
> [py-]buildbot-waterfall-view in the same port and create subports with
> equally trivial syntax and minimal overhead).
> 
> Since Karan is actively working on a tool to create pypi-based ports
> it would be nice to come up with suitable portgroup modifications
> soon, so that the results can be simplified and so that there will be
> less ports to change later.
> 
> Any thoughts?

I agree it would be good to get this repetitive code out of python portfiles.

But at some point we decided that setup procedures were an antipattern, 
especially the fact that they set the port name and version, since that makes 
it more difficult to use more than one portgroup in a single portfile. (Which 
portgroup's setup procedure sets the name and version? Are all portgroups' 
setup procedures engineered to accommodate this situation?) It is also clearer 
for the portfile author if the name and version are set the usual way, by 
setting the name and version options (or setting the name using a subport 
block, since you bring up the topic of subports). The python-1.0 portgroup 
deliberately doesn't have a setup procedure and I don't think we should add 
one. The php-1.0 portgroup did have a setup procedure but the php-1.1 portgroup 
doesn't have one; removing the setup procedure was one of my design goals for 
the php-1.1 portgroup.

The php-1.1 portgroup accommodates the very common situation of a php extension 
hosted at pecl by offering a php.pecl option that can be set to yes to set up 
values for master_sites, livecheck and so forth that are common to that 
situation. The php-1.1 portgroup takes the name of the pecl module from the 
port name, with a php.rootname option the portfile can use to override it if 
necessary. Similarly, the python-1.0 portgroup could offer a python.pypi or 
simply just pypi option which a port could set to yes to set up the common 
values, and it already has a python.rootname option for overriding the module 
name inferred from the port name.

Reply via email to