[R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Dirk Eddelbuettel


For a few years now I had mused about how nice it would be to have other
scripts triggered like `cleanup`.  For Rcpp, it would be nice to run
compileAttributes(). For roxygen2, it would be nice to run roxygenize() 
(especially if that continued to work the way it did, but I digress).
That was mostly a "wouldn't it be nice" question and not that urgent as I
wrote myself littler scripts for most tasks anyway.

But I now have a related problem at work. We are authoring C++ libraries and
R packages 'mono-repo' style. And I need to reference builds of the R
packages back to the repo branches / repo directories used where R CMD build
ran in a branch -- in order to at R CMD INSTALL time access the matching
header files and libraries from that branch.  I do not see an obvious way of
encoding this in the .tar.gz created by the R CMD build step. The best I can
think of is creating binaries via R CMD INSTALL --build instead of creating
source tarballs.

Is there something better I am missing? Any hacks, hints, or ideas?

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Iñaki Ucar
On Fri, 4 Jan 2019 at 16:43, Dirk Eddelbuettel  wrote:
>
>
> For a few years now I had mused about how nice it would be to have other
> scripts triggered like `cleanup`.  For Rcpp, it would be nice to run
> compileAttributes(). For roxygen2, it would be nice to run roxygenize()
> (especially if that continued to work the way it did, but I digress).
> That was mostly a "wouldn't it be nice" question and not that urgent as I
> wrote myself littler scripts for most tasks anyway.
>
> But I now have a related problem at work. We are authoring C++ libraries and
> R packages 'mono-repo' style. And I need to reference builds of the R
> packages back to the repo branches / repo directories used where R CMD build
> ran in a branch -- in order to at R CMD INSTALL time access the matching
> header files and libraries from that branch.  I do not see an obvious way of
> encoding this in the .tar.gz created by the R CMD build step. The best I can
> think of is creating binaries via R CMD INSTALL --build instead of creating
> source tarballs.
>
> Is there something better I am missing? Any hacks, hints, or ideas?

I'm not sure whether I understand correctly what you are trying to
achieve. Isn't generating a custom configure script enough for your
needs?

Iñaki

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Dirk Eddelbuettel


On 4 January 2019 at 19:24, Iñaki Ucar wrote:
| On Fri, 4 Jan 2019 at 16:43, Dirk Eddelbuettel  wrote:
| >
| >
| > For a few years now I had mused about how nice it would be to have other
| > scripts triggered like `cleanup`.  For Rcpp, it would be nice to run
| > compileAttributes(). For roxygen2, it would be nice to run roxygenize()
| > (especially if that continued to work the way it did, but I digress).
| > That was mostly a "wouldn't it be nice" question and not that urgent as I
| > wrote myself littler scripts for most tasks anyway.
| >
| > But I now have a related problem at work. We are authoring C++ libraries and
| > R packages 'mono-repo' style. And I need to reference builds of the R
| > packages back to the repo branches / repo directories used where R CMD build
| > ran in a branch -- in order to at R CMD INSTALL time access the matching
| > header files and libraries from that branch.  I do not see an obvious way of
| > encoding this in the .tar.gz created by the R CMD build step. The best I can
| > think of is creating binaries via R CMD INSTALL --build instead of creating
| > source tarballs.
| >
| > Is there something better I am missing? Any hacks, hints, or ideas?
| 
| I'm not sure whether I understand correctly what you are trying to
| achieve. Isn't generating a custom configure script enough for your
| needs?

That is what I thought yesterday when I wrote / updated and tested those.
They work great when you install from source as they have access to shell's
${PWD} and R's getwd().

But when you run R CMD build, (essentially) just cleanup and a tar are
running. No other code. Hence my Subject: here -- a need for a hook.

Once you have built a .tar.gz and run R CMD INSTALL on it, R goes off to
_another temporary directory_ and while configure may be running ... you are
no longer in the directory you called it from. So I have now lost the
connection to the particular variant of headers and libraries I may have had
in that branch.

Doing R CMD INSTALL --build ... is a workaround.  But it still would be nice
to have an explicit hook.

Hope this explains it better, and thanks for the follow-up.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Iñaki Ucar
On Fri, 4 Jan 2019 at 19:42, Dirk Eddelbuettel  wrote:
>
>
> On 4 January 2019 at 19:24, Iñaki Ucar wrote:
> | On Fri, 4 Jan 2019 at 16:43, Dirk Eddelbuettel  wrote:
> | >
> | >
> | > For a few years now I had mused about how nice it would be to have other
> | > scripts triggered like `cleanup`.  For Rcpp, it would be nice to run
> | > compileAttributes(). For roxygen2, it would be nice to run roxygenize()
> | > (especially if that continued to work the way it did, but I digress).
> | > That was mostly a "wouldn't it be nice" question and not that urgent as I
> | > wrote myself littler scripts for most tasks anyway.
> | >
> | > But I now have a related problem at work. We are authoring C++ libraries 
> and
> | > R packages 'mono-repo' style. And I need to reference builds of the R
> | > packages back to the repo branches / repo directories used where R CMD 
> build
> | > ran in a branch -- in order to at R CMD INSTALL time access the matching
> | > header files and libraries from that branch.  I do not see an obvious way 
> of
> | > encoding this in the .tar.gz created by the R CMD build step. The best I 
> can
> | > think of is creating binaries via R CMD INSTALL --build instead of 
> creating
> | > source tarballs.
> | >
> | > Is there something better I am missing? Any hacks, hints, or ideas?
> |
> | I'm not sure whether I understand correctly what you are trying to
> | achieve. Isn't generating a custom configure script enough for your
> | needs?
>
> That is what I thought yesterday when I wrote / updated and tested those.
> They work great when you install from source as they have access to shell's
> ${PWD} and R's getwd().
>
> But when you run R CMD build, (essentially) just cleanup and a tar are
> running. No other code. Hence my Subject: here -- a need for a hook.
>
> Once you have built a .tar.gz and run R CMD INSTALL on it, R goes off to
> _another temporary directory_ and while configure may be running ... you are
> no longer in the directory you called it from. So I have now lost the
> connection to the particular variant of headers and libraries I may have had
> in that branch.
>
> Doing R CMD INSTALL --build ... is a workaround.  But it still would be nice
> to have an explicit hook.
>
> Hope this explains it better, and thanks for the follow-up.

I see. Then I suggest the following hack (not tested). If the package
has a vignette, put there a hidden chunk that generates a file with
info about the branch and the path. This file will be available for
your configure script, which runs at INSTALL time. There you can,
e.g., retrieve that branch from a remote repo.

Iñaki

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Duncan Murdoch

On 04/01/2019 1:42 p.m., Dirk Eddelbuettel wrote:


On 4 January 2019 at 19:24, Iñaki Ucar wrote:
| On Fri, 4 Jan 2019 at 16:43, Dirk Eddelbuettel  wrote:
| >
| >
| > For a few years now I had mused about how nice it would be to have other
| > scripts triggered like `cleanup`.  For Rcpp, it would be nice to run
| > compileAttributes(). For roxygen2, it would be nice to run roxygenize()
| > (especially if that continued to work the way it did, but I digress).
| > That was mostly a "wouldn't it be nice" question and not that urgent as I
| > wrote myself littler scripts for most tasks anyway.
| >
| > But I now have a related problem at work. We are authoring C++ libraries and
| > R packages 'mono-repo' style. And I need to reference builds of the R
| > packages back to the repo branches / repo directories used where R CMD build
| > ran in a branch -- in order to at R CMD INSTALL time access the matching
| > header files and libraries from that branch.  I do not see an obvious way of
| > encoding this in the .tar.gz created by the R CMD build step. The best I can
| > think of is creating binaries via R CMD INSTALL --build instead of creating
| > source tarballs.
| >
| > Is there something better I am missing? Any hacks, hints, or ideas?
|
| I'm not sure whether I understand correctly what you are trying to
| achieve. Isn't generating a custom configure script enough for your
| needs?

That is what I thought yesterday when I wrote / updated and tested those.
They work great when you install from source as they have access to shell's
${PWD} and R's getwd().

But when you run R CMD build, (essentially) just cleanup and a tar are
running. No other code. Hence my Subject: here -- a need for a hook.

Once you have built a .tar.gz and run R CMD INSTALL on it, R goes off to
_another temporary directory_ and while configure may be running ... you are
no longer in the directory you called it from. So I have now lost the
connection to the particular variant of headers and libraries I may have had
in that branch.

Doing R CMD INSTALL --build ... is a workaround.  But it still would be nice
to have an explicit hook.

Hope this explains it better, and thanks for the follow-up.


If you want a total hack, the help system can run R code during a build, 
e.g. \Sexpr[stage=build]{paste("Built at", Sys.time())}.  Certainly it 
could embed some information in a help page; perhaps it could do more. 
Similarly, vignettes are typically built during R CMD build, so they 
might be able to have useful side effects.


But it seems likely that something less of a kludge would be desirable.

Duncan Murdoch

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Dirk Eddelbuettel


Iñaki, Duncan,

Fabulous -- that is just the type of 'hack' I was hoping for in the short
term.

Longer term, it would indeed be nice to do something about this and create
something better.  I had looked once or twice at packages utils and tools but
didn't quite find the right spot to connect it to. Pointers appreciated.

Best, Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Martin Morgan
Add a tag to the DESCRIPTION file or configure.ac-like indicating the git 
(presumably) revision, perhaps like https://stackoverflow.com/a/11535358/547331 
?

On 1/4/19, 1:42 PM, "R-package-devel on behalf of Dirk Eddelbuettel" 
 wrote:


On 4 January 2019 at 19:24, Iñaki Ucar wrote:
| On Fri, 4 Jan 2019 at 16:43, Dirk Eddelbuettel  wrote:
| >
| >
| > For a few years now I had mused about how nice it would be to have other
| > scripts triggered like `cleanup`.  For Rcpp, it would be nice to run
| > compileAttributes(). For roxygen2, it would be nice to run roxygenize()
| > (especially if that continued to work the way it did, but I digress).
| > That was mostly a "wouldn't it be nice" question and not that urgent as 
I
| > wrote myself littler scripts for most tasks anyway.
| >
| > But I now have a related problem at work. We are authoring C++ 
libraries and
| > R packages 'mono-repo' style. And I need to reference builds of the R
| > packages back to the repo branches / repo directories used where R CMD 
build
| > ran in a branch -- in order to at R CMD INSTALL time access the matching
| > header files and libraries from that branch.  I do not see an obvious 
way of
| > encoding this in the .tar.gz created by the R CMD build step. The best 
I can
| > think of is creating binaries via R CMD INSTALL --build instead of 
creating
| > source tarballs.
| >
| > Is there something better I am missing? Any hacks, hints, or ideas?
| 
| I'm not sure whether I understand correctly what you are trying to
| achieve. Isn't generating a custom configure script enough for your
| needs?

That is what I thought yesterday when I wrote / updated and tested those.
They work great when you install from source as they have access to shell's
${PWD} and R's getwd().

But when you run R CMD build, (essentially) just cleanup and a tar are
running. No other code. Hence my Subject: here -- a need for a hook.

Once you have built a .tar.gz and run R CMD INSTALL on it, R goes off to
_another temporary directory_ and while configure may be running ... you are
no longer in the directory you called it from. So I have now lost the
connection to the particular variant of headers and libraries I may have had
in that branch.

Doing R CMD INSTALL --build ... is a workaround.  But it still would be nice
to have an explicit hook.

Hope this explains it better, and thanks for the follow-up.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Dirk Eddelbuettel


On 4 January 2019 at 19:37, Martin Morgan wrote:
| Add a tag to the DESCRIPTION file or configure.ac-like indicating the git 
(presumably) revision, perhaps like https://stackoverflow.com/a/11535358/547331 
?

I need the path. I need to find the particular build / checkout of headers
and libaries.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Iñaki Ucar
On Fri, 4 Jan 2019 at 20:10, Iñaki Ucar  wrote:
>
> I see. Then I suggest the following hack (not tested). If the package
> has a vignette, put there a hidden chunk that generates a file with
> info about the branch and the path. This file will be available for
> your configure script, which runs at INSTALL time. There you can,
> e.g., retrieve that branch from a remote repo.

Actually, if there is any vignette, the configure script is executed
during the build process, because R needs to install the package to
build the vignettes. There, you can rely on $OLDPWD to retrieve the
path to the package.

Iñaki

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] About a need for hooks from R CMD ... commands, and a question

2019-01-04 Thread Dirk Eddelbuettel


On 5 January 2019 at 00:00, Iñaki Ucar wrote:
| On Fri, 4 Jan 2019 at 20:10, Iñaki Ucar  wrote:
| >
| > I see. Then I suggest the following hack (not tested). If the package
| > has a vignette, put there a hidden chunk that generates a file with
| > info about the branch and the path. This file will be available for
| > your configure script, which runs at INSTALL time. There you can,
| > e.g., retrieve that branch from a remote repo.
| 
| Actually, if there is any vignette, the configure script is executed
| during the build process, because R needs to install the package to
| build the vignettes. There, you can rely on $OLDPWD to retrieve the
| path to the package.

Not really. Consider

  ~/git/repo/proj-brnchA
  ~/git/repo/proj-brnchB
  ~/git/repo/proj-brnchC

where each branch may have a in-repo build with static libraries and
header. And I build Rpkg_0.1.0.tar.gz in each with R CMD build. I need inside
of Rpkg_0.1.0.tar.gz a reference to whether we need headers from A, B or C.

$OLDPWD does not (generally) give me that.  Only if I invoked R CMD INSTALL
in the path.  My preference would be to do some "not unlink configure" which
write down the path in src/Makevars.  I think the vignette trick will let me
do that but I have not had time to try.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel