Opened 7 years ago

Closed 7 years ago

#30385 closed submission (fixed)

new port: R-framework

Reported by: kjell.konis@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: ryandesign (Ryan Schmidt)
Port: R-framework

Description

The R.framework port uses the llvm-gcc42 compilers, installs itself in ${prefix}/Library/Frameworks and supports all of the OSX/Aqua/Quartz goodness that has been added to R over the last several years. It also creates a link ${prefix}/bin/R so that it can be used a a drop-in replacement for the R port (however, this causes it to conflict with the R port).

I also updated the R port so that it knows about the conflict with R.framework.

I plan to keep the R port around for the *nix/X11 user interface and build it using the most up-to-date gcc (4.4 and eventually 4.6).

Attachments (2)

R-Portfile.diff (1.3 KB) - added by kjell.konis@… 7 years ago.
R portfile revision. The patch is no longer used so the files directory can be removed.
Portfile (7.7 KB) - added by kjell.konis@… 7 years ago.
Updated Portfile to latest version of R

Download all attachments as: .zip

Change History (13)

Changed 7 years ago by kjell.konis@…

Attachment: R-Portfile.diff added

R portfile revision. The patch is no longer used so the files directory can be removed.

comment:1 Changed 7 years ago by ryandesign (Ryan Schmidt)

Port: R.framework added
Type: enhancementsubmission

The new port should use dist_subdir R so the distfile doesn't need to be downloaded a second time for users or our mirror servers.

Do we have any other ports that have a period in their name? Does that even work?

comment:2 Changed 7 years ago by ryandesign (Ryan Schmidt)

Does it really need to depend on port:llvm-gcc42? Would not the llvm-gcc-4.2 compiler built into Xcode on Snow Leopard and later suffice on those operating systems?

Is "license GPL-2 GPL-3" really correct, or would this be the same as saying "license GPL-2+" like we do in countless other ports?

comment:3 in reply to:  2 Changed 7 years ago by kjell.konis@…

Replying to ryandesign@…:

Does it really need to depend on port:llvm-gcc42? Would not the llvm-gcc-4.2 compiler built into Xcode on Snow Leopard and later suffice on those operating systems?

AFAICT, macports-llvm-gcc-4.2 is the only set of compilers that includes fortran, C, C++, and ObjC and can link to the Frameworks in /System/Library. I would prefer to use the Xcode compilers but I don't know what to do for Fortran.

Is "license GPL-2 GPL-3" really correct, or would this be the same as saying "license GPL-2+" like we do in countless other ports?

From the latest R news:

The Licencing change to GPL-2 | GPL-3 may be of interest to some.

I wasn't sure if "GPL-2+" meant the same things as "GPL-2 | GPL-3" so I went with "GPL-2 GPL-3".

comment:4 in reply to:  1 Changed 7 years ago by kjell.konis@…

Replying to ryandesign@…:

The new port should use dist_subdir R so the distfile doesn't need to be downloaded a second time for users or our mirror servers.

Good point. I update the attached Portfile.

Do we have any other ports that have a period in their name? Does that even work?

So far it's worked fine for me. Pretty soon I am going to submit a port for R.app so there would be at least 2 ports with a . in the name :) If you think it's better I can call them R-framework and R-app.

comment:5 Changed 7 years ago by kjell.konis@…

Since the vast majority of ports with framework in the name are named something-framework I renamed this port R-framework. The updated Portfile is attached.

comment:6 Changed 7 years ago by kjell.konis@…

I split the x11 variant into x11, cairo, and tcltk variants. New Portfile attached.

comment:7 Changed 7 years ago by kjell.konis@…

New Portfile attached. Changes:

(1) The port doesn't use architecture dependent subdirectories for the libraries anymore since R.app is not able to link to R.framework when they are present (not a big deal because there is no universal variant).

(2) Portfile now uses ${frameworks_dir} instead of ${prefix}/Library/Frameworks.

(3) The new Portfile has a variant (symlink) controlling the 2 links that conflict with the R port. The changes to the R port in R-Portfile.diff are no longer necessary.

comment:8 Changed 7 years ago by kjell.konis@…

The R-Portfile.diff (and it's comment) no longer apply. These changes are made to the R port in #31513. Also, I decided to keep the aqua variant around for Snow Leopard.

comment:9 Changed 7 years ago by ryandesign (Ryan Schmidt)

Cc: ryandesign@… added
Port: R-framework added; R.framework removed
Summary: new port: R.frameworknew port: R-framework
Version: 2.0.0

Some comments:

  • Is pkgconfig really a library dependency? Usually it's only needed at build time.
  • The reinplace you're doing in a post-extract block should be in a post-patch block instead. You want to be able to "sudo port extract R-framework" and see the pristine extracted files. This change should be made to R as well.
  • MacPorts adds the --prefix argument in configure.pre_args for you. If you want to change it, overwrite configure.pre_args instead of adding --prefix to configure.args.
  • In the cairo variant, the cairo, pango and glib2 dependencies should be written such that cairo-devel, pango-devel and glib2-devel, respectively, could satisfy them as well. Consult other ports that depend on these ports for examples (including even your R port).
  • In the post-destroot block, when you "xinstall ${destroot}${frameworks_dir}/lib/pkgconfig/libR.pc ${destroot}${prefix}/lib/pkgconfig", that will use the default permissions of 755, but pkgconfig .pc files do not need the execute bit, so you should specify -m 644 when you xinstall. Or even easier, why not just move the file, instead of copying it, then deleting it? You also don't need to manually delete empty directories; MacPorts will delete empty directories for you after destroot.
  • The symbolic links you're creating with ln are pointing into the destroot, which you don't want.

Changed 7 years ago by kjell.konis@…

Attachment: Portfile added

Updated Portfile to latest version of R

comment:10 in reply to:  9 Changed 7 years ago by kjell.konis@…

I just attached an updated Portfile that (I hope) addresses all of these points. Thanks.

Replying to ryandesign@…:

Some comments:

  • Is pkgconfig really a library dependency? Usually it's only needed at build time.
  • The reinplace you're doing in a post-extract block should be in a post-patch block instead. You want to be able to "sudo port extract R-framework" and see the pristine extracted files. This change should be made to R as well.
  • MacPorts adds the --prefix argument in configure.pre_args for you. If you want to change it, overwrite configure.pre_args instead of adding --prefix to configure.args.
  • In the cairo variant, the cairo, pango and glib2 dependencies should be written such that cairo-devel, pango-devel and glib2-devel, respectively, could satisfy them as well. Consult other ports that depend on these ports for examples (including even your R port).
  • In the post-destroot block, when you "xinstall ${destroot}${frameworks_dir}/lib/pkgconfig/libR.pc ${destroot}${prefix}/lib/pkgconfig", that will use the default permissions of 755, but pkgconfig .pc files do not need the execute bit, so you should specify -m 644 when you xinstall. Or even easier, why not just move the file, instead of copying it, then deleting it? You also don't need to manually delete empty directories; MacPorts will delete empty directories for you after destroot.
  • The symbolic links you're creating with ln are pointing into the destroot, which you don't want.

comment:11 Changed 7 years ago by ryandesign (Ryan Schmidt)

Resolution: fixed
Status: newclosed

Added in r86855 along with my livecheck fix from #31910.

Note: See TracTickets for help on using tickets.