José,
Thanks for your help. Now, on to your comments:
José Matos wrote:
Tom may I suggest that you join fedora-r-devel-list@xxxxxxxxxx
Done.
I'm cc:ing this email to the list, too, mainly because of the discussion
on R packaging work-arounds, which probably ought to be archived. For
the same reason, I'm leaving more context in this email than I normally
would.
Tom Moertel wrote:
For my internal use, I have packaged a number of R packages for FC6:
* R-arm-1.0-2
* R-car-1.2-1
* R-lme4-0.9975-1
* R-Matrix-0.9975-1
* R-R2WinBUGS-2.0-1
* R-coda-0.10-1
* R-leaps-2.7-1
* R-mlmRev-0.995-1
Corresponding specs:
http://community.moertel.com/rpms/fedora/6/SPECS/
For more details:
http://blog.moertel.com/articles/2007/04/25/new-fedora-core-rpms-for-cran-packages
Are you aware of cran2rpmspec?
http://www.fc.up.pt/pessoas/jamatos/R/cran2rpmspec
No, I was completely unaware of cran2rpmspec. That would have made my
job a bit easier. ;-)
Thanks for pointing it out (and for writing it).
Do you think there would be sufficient benefit to the Fedora community
to merit adding these packages to Extras? If so, would you mind helping
me get the packages into shape for submission?
Sure on both issues. :-)
Great!
I assume that normally my next steps would be to create review requests
for the packages, get sponsored, get a Fedora Account, check in my
packages, and eventually queue up builds for my packages. Does that
seem right?
Looking ahead to that last step, how does the build system handle weird
build-order requirements? Can the system, for example, infer from
BuildRequires statements that it must build and install the R-Matrix
package before it can try to build R-arm? (I couldn't find out how
Plague deals with dependencies from my search of the wiki.)
In any case, I ran into some difficulties during packaging. Can I ask
for your advice?
First, how do you deal with circular dependencies among R packages? The
lme4 CRAN package, for example, "suggests" mlmRev, but mlmRev "depends"
on lme4. Thus the %check stage's "R CMD check" for each of the packages
tries to require the other package, which prevents either from building.
I worked around this problem by disabling the %check stage of
R-mlmRev, building that package first, installing it, and then building
R-lme4, whose %check I left intact. (Since mlmRev is mainly data files,
I felt its check was more expendable.)
Can you suggest a better way of dealing with circular dependencies?
The real solution would be for rpm to support these concepts. I think that
this will come, but for the moment a bootstrap solution like the one you have
used is necessary.
What's the preferred method to automate the bootstrap solution? Should
I write a script that builds the collection of packages?
Second, R2WinBUGS depends on BRugs, which doesn't build on Linux (yet).
As a result, the "R CMD check" for R-R2WinBUGS fails during the
RPM-building process. Again, I disabled the %check stage to work around
this problem. The result is a partially broken R-R2WinBUGS package, but
the packages that depend upon it tangentially (e.g., R-arm) can still be
built and installed.
If this was a Fedora review I would suggest placing this comment near the
referred section.
I already have the following in
http://community.moertel.com/rpms/fedora/6/SPECS/R-mlmRev.spec:
%check
# disable check to avoid circular dependency w/ R-lme4.
# since this package is just data files, we disable this package's
# check instead of R-lme4's to break the dependency
#
# cd ..;%{_bindir}/R CMD check %{packname}
Is that what you meant? Or should I do something else?
Can you suggest a better way of dealing with missing dependencies like
BRugs?
http://cran.r-project.org/src/contrib/checkSummary.html
says that it works. What problems are you getting?
CheckSummary.html does not claim that the package actually installs.
And, in fact, during the install stage it aborts:
+ R CMD INSTALL BRugs -l \
/var/tmp/R-BRugs-0.3-1-root-thor/usr/lib64/R/library
* Installing *source* package 'BRugs' ...
Package 'BRugs' currently only works under Windows.
It is supposed to work under Linux in future releases.
ERROR: configuration failed for package 'BRugs'
It might be difficult to work around that problem in the RPM spec. ;-)
Thanks again for your help.
P.S. I have also packaged Emacs Speaks Statistics:
http://community.moertel.com/rpms/fedora/5/SPECS/emacs-ess.spec
That would be super. :-)
My wife asked me for this package but I never got the necessary time to do it.
Coincidentally, ESS 5.3.4 was just released today.
Cheers,
Tom