[prev in list] [next in list] [prev in thread] [next in thread] 

List:       macports-users
Subject:    Re: Writing a port for a Mono executable (Pash)
From:       Ryan Schmidt <ryandesign () macports ! org>
Date:       2015-11-14 7:04:25
Message-ID: 18745A4D-BD68-4DF1-9A8C-310BAF1410CB () macports ! org
[Download RAW message or body]

This is a question about Portfile development, so it belongs on the macports-dev \
mailing list. I'm Cc'ing that list now. If you're not subscribed to that list yet, \
please subscribe. If you reply, please remove macports-users from the recipient list.


On Nov 13, 2015, at 7:14 PM, Ludwig wrote:
> 
> I'm writing a port for Pash, a Power Shell clone for Mono, and am stuck as
> described here: https://trac.macports.org/ticket/49656#comment:4
> 
> > Pash builds successfully via Mono's xbuild tool, but it doesn't have a "make
> > install" equivalent, it leaves the executable in the project hierarchy at
> > Source/PashConsole/bin/Debug/Pash.exe.
> 
> > Furthermore, it's not a "normal" executable, it's a "PE32 executable
> > (console) Intel 80386 Mono/.Net assembly, for MS Windows," meaning it has to
> > be launched via Mono, e.g. mono path/to/Pash.exe.
> 
> > AFAICT none of the other ports in the mono category use xbuild, so I don't
> > have a model to follow here.

Since xbuild is a program installed by a MacPorts port, you should run it by its \
absolute path, ${prefix}/bin/xbuild, to ensure there are no problems if the user has \
a nonstandard binpath set in macports.conf.


> > I guess the right thing to do would be a
> > post-install script creating a one-line launcher shell script, which is what
> > would be installed in ${prefix}/bin.

Right, except it would be a post-destroot block, not post-install. You would install \
the script into ${destroot}${prefix}/bin, and at install time, MacPorts will place it \
in ${prefix}/bin.


> > But I don't know where to put the
> > project directory, which is full of DLLs and stuff that the executable
> > presumably depends on, and as such should be kept in its entirety.
> > ${workpath} and ${portpath} are subject to being cleaned, right? What is the
> > proper location for persistent files?

Somewhere in ${prefix}. Perhaps ${prefix}/libexec/${subport} would be appropriate.


> > Attached what I've got of the Portfile so far.

There should be no comma between multiple values for an option, for example in the \
license line.


> > The checksums are for the
> > tarball I rolled from the source, do I attach that here or…?

You shouldn't manually roll a tarball. The port should download from the officially \
available stable tarballs. If there are none, ask the developers to create one. If \
they won't, you can download from their source repository or, since this project is \
hosted on github, you should use the github portgroup and download from github's \
automatically-generated tarballs. Documentation is in the github portgroup file.


> > Sorry if these are dopey questions, this is my first real attempt at
> > packaging a port.

These are good questions, please ask on macports-dev if you have other questions \
about Portfile writing.

_______________________________________________
macports-users mailing list
macports-users@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-users


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic