Skip to content

[R-pkg-devel] Note about portable file names

6 messages · Duncan Murdoch, Konstantin Sorokin, Dirk Eddelbuettel

#
Hello!

When checking one of my packages I have following message:

checking for portable file names ... NOTE
Found the following non-portable file paths:
  tarantoolr/src/third_party/msgpack-1.4.1/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp
  tarantoolr/src/third_party/msgpack-1.4.1/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp

  <skipped>

Tarballs are only required to store paths of up to 100 bytes and cannot
store those of more than 256 bytes, with restrictions including to 100
bytes for the final component.
See section ?Package structure? in the ?Writing R Extensions? manual.

My question is: Is it possible to be accepted on CRAN with these sort of
messages? To say the truth I have no idea how can I fix them and still have
third party components inside source directory.
#
On 11/06/2017 8:18 AM, Konstantin Sorokin wrote:
Your longer one is just 104 characters, so you could easily avoid the 
note by removing or shortening the "third_party" directory name, which 
should be under your control.  If you have others where that is not 
sufficient, you can think about renaming other directories, though I can 
see that wouldn't be desirable.

Duncan Murdoch
#
On 11 June 2017 at 15:18, Konstantin Sorokin wrote:
| Hello!
| 
| When checking one of my packages I have following message:
| 
| checking for portable file names ... NOTE
| Found the following non-portable file paths:
|   tarantoolr/src/third_party/msgpack-1.4.1/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp
|   tarantoolr/src/third_party/msgpack-1.4.1/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp

Do you know about this package

   https://cloud.r-project.org/web/packages/RcppRedis/

using the package RcppMsgPack (currently in the off-CRAN repo ghrr-drat) ?

I could look into getting RcppMsgPack onto CRAN too.  I really like MsgPack.

| My question is: Is it possible to be accepted on CRAN with these sort of
| messages? To say the truth I have no idea how can I fix them and still have
| third party components inside source directory.

As Duncan already said, you need to shorten the path to arrive at 104
characters. That is (no kidding) the main reason the Boost Headers package is
called BH to only use two chars.  There is still one file in there I rename
for each release for this very reason to a shorter name -- 104 chars it is.

Dirk
#
On Sun, Jun 11, 2017 at 4:15 PM, Dirk Eddelbuettel <edd at debian.org> wrote:

            
Am I right in my understanding that then I'll be able to link with it and
use msgpack (1.4) functions in C++ code without the need to include msgpack
sources in my R package?
#
On 11 June 2017 at 16:46, Konstantin Sorokin wrote:
| On Sun, Jun 11, 2017 at 4:15 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
| 
|
| On 11 June 2017 at 15:18, Konstantin Sorokin wrote:
|     | Hello!
|     |
|     | When checking one of my packages I have following message:
|     |
|     | checking for portable file names ... NOTE
|     | Found the following non-portable file paths:
|     |? ?tarantoolr/src/third_party/msgpack-1.4.1/include/msgpack/preprocessor/
|     facilities/is_empty_variadic.hpp
|     |? ?tarantoolr/src/third_party/msgpack-1.4.1/include/msgpack/preprocessor/
|     iteration/detail/bounds/lower1.hpp
| 
|     Do you know about this package
| 
|     ? ?https://cloud.r-project.org/web/packages/RcppRedis/
| 
|     using the package RcppMsgPack (currently in the off-CRAN repo ghrr-drat) ?
| 
| 
| Am I right in my understanding that then I'll be able to link with it and use
| msgpack (1.4) functions in C++ code without the need to include msgpack sources
| in my R package?

Yes! That is exactly what my RcppRedis does (though it does it currently
"conditionally" as RcppMsgPack was so far an optional package).

And I am right now brushing up RcppMsgpack, with an update from msgpack-c
bringing it from version 1.4.0 to 1.4.2.  I will upload this to CRAN, and
should it become accepted you can use 'LinkingTo:' to get its headers just as
you do with BH (for Boost) or other header-supplying packages.

Note that this is technically not 'linking' as we only consume headers. But
that works so well for C++, C++11, C++14, ... that it makes sense to provide
the headers.

At work, we have been writing and reading millions of records to Redis via
RcppRedis and RcppMsgPack so I may as well upload this now.

Dirk
1 day later
#
Konstantin,

RcppMsgPack 0.1.1, containing MsgPack headers from msgpack-c 1.4.2, is now on
CRAN. It should work for your purposes with a simple LinkingTo: RcppMsgPack.

I turned of Windows builds; there is a weird interaction that may just be one
of these include header order things but I haven't had time to chase this on
Windows.

Dirk