markmfredrickson / optmatch

Functions for optimal matching in R
https://markmfredrickson.github.io/optmatch
Other
47 stars 14 forks source link

Optmatch not on CRAN (was: Unable to install optmatch as RItools is no longer available) #215

Closed riazgillani closed 2 years ago

riazgillani commented 2 years ago

Hello - I am receiving the following error when I try to install the optmatch package: “dependency ‘RItools’ is not available”

I notice that RItools has been removed from the CRAN repository: https://cran.r-project.org/web/packages/RItools/index.html

Will RItools be made available again? Is there a workaround to enable the use of optmatch in the mean time?

Thanks, Riaz

RoseString commented 2 years ago

This worked for me

library(devtools)
install_github("markmfredrickson/RItools")
install_github("markmfredrickson/optmatch") 
josherrickson commented 2 years ago

Thanks @RoseString. Installing the developer version is indeed the best workaround. We've submitted updates for both packages and hope they'll be back in shortly. Sorry for the inconvenience.

riazgillani commented 2 years ago

Thank you both!

LliliansCalvo commented 2 years ago

Hi I am trying to install the developer version but I am receiving this error:

install_github("markmfredrickson/optmatch")

ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0' ld: warning: directory not found for option '-L/usr/local/gfortran/lib' ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0' ld: warning: directory not found for option '-L/usr/local/gfortran/lib' ld: library not found for -lgfortran clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [optmatch.so] Error 1 ERROR: compilation failed for package ‘optmatch’

josherrickson commented 2 years ago

Hi @LliliansCalvo , you'll need to install gfortran to use the developer version. You can install it with a package manager (I know homebrew has it, I'd assume macports does as well but I'm not sure) or you can install it manually from e.g. https://cran.r-project.org/bin/macosx/tools/

However, the RItools package has been made re-available on CRAN so I hopefully that optmatch will reappear shortly as well, so you may be better of waiting for that.

ngreifer commented 2 years ago

Do you get the sense that optmatch will be back on CRAN in the next few days? We in the "packages depend on optmatch" community are getting a bit nervous because allowing a dependence on a package not on CRAN can be a real headache. I'm happy to help however I can to get optmatch back on CRAN.

Noah

josherrickson commented 2 years ago

We expected it to appear when its dependencies were restored (which happened last night). We've reached out to CRAN to clarify our next steps. Hopefully it can be restored by tomorrow.

ngreifer commented 2 years ago

Okay, great! Thanks! They may have you resubmit with an increased version number.

josherrickson commented 2 years ago

Yeah I'm kinda expecting that, but figured we'd double check to avoid passing them extra unnecessary work.

ngreifer commented 2 years ago

Sorry to bug, but any news on this?

josherrickson commented 2 years ago

We ended up submitting a version number bump'd version on Tuesday but haven't heard from that or the email to CRAN yet unfortunately.

ngreifer commented 2 years ago

Thank you!

markmfredrickson commented 2 years ago

I got word today that the CRAN team has decided not to host a package with a non-open source license (the R code in for optmatch is all open source, the RELAX Fortran code that solves the network flow problem is a "free for academic use" license). We are looking into our options, but optmatch is going to remain off CRAN for at least the present.

markmfredrickson commented 2 years ago

Changed the title in case anyone comes here looking for why optmatch is missing.

As a temporary work around, you can use the Microsoft CRAN snapshots to install the most recent version of optmatch:

> install.packages("optmatch", repos = "https://cran.microsoft.com/snapshot/2022-02-15/")
ngreifer commented 2 years ago

This is unfortunate! Thank you for keeping us updated. Would you consider making a drat repository for optmatch so CRAN packages that weakly depend on optmatch (like MatchIt) can still use its functionality?

benthestatistician commented 2 years ago

Thanks for raising the possibility of a drat repository, @ngreifer. We're considering it.

benthestatistician commented 2 years ago

Can anyone point me to official CRAN policies about packages that are dependent on packages hosted elsewhere, potentially with non-FOSS licenses? Failing that, CRAN policies about package dependencies on software external to R, potentially with non-FOSS licence?

As I understand it, @ngreifer 's suggestion that we host optmatch in a drat repo would create such a dependency for MatchIt. Another scenario we're considering is to factor enough out of optmatch for what remains of it to have a FOSS license, with a drat repo for the rest.

markmfredrickson commented 2 years ago

From the CRAN policies page:

Packages on which a CRAN package depends should be available from a mainstream repository: if any mentioned in ‘Suggests’ or ‘Enhances’ fields are not from such a repository, where to obtain them at a repository should be specified in an ‘Additional_repositories’ field of the DESCRIPTION file (as a comma-separated list of repository URLs) or for other means of access, described in the ‘Description’ field. A package listed in ‘Suggests’ or ‘Enhances’ should be used conditionally in examples or tests if it cannot straightforwardly be installed on the major R platforms. (‘Writing R Extensions’ recommends that they are always used conditionally.)

This suggests that non-CRAN packages are explicitly allowed, perhaps with the use of Additional_repositories suitably populated.

josherrickson commented 2 years ago

We're back on CRAN. Sorry for the delay. This version has removed the code which was under the non-standard license. End users should see no difference but please let us know otherwise.