Dear colleagues,
I have two issues with the Windows BUILD BIN of our 'msa' package. (to
my horror, I figured out that the first problem has existed for quite a
while; I am deeply sorry for that!)
The main problem can be seen on
http://bioconductor.org/checkResults/3.10/bioc-LATEST/msa/tokay1-buildbin.html
It seems that something is wrong with the file
src/ClustalOmega/src/exceptions4c/e4c_lite.o. Since it does not seem to
me that e4c_lite.c is freshly compiled (I may be wrong in this point)
and based on a StackOverflow post
(https://stackoverflow.com/questions/54797615/trouble-downloading-r-package-o-file-format-not-recognized),
I have the impression that the build system might still have an on old
version of some .o files. I can hardly imagine this, but it would
explain the problem. To be frank, I am quite lost and have no idea what
else could be the problem. Any hint is gratefully appreciated!
The second issue: the 'msa' package integrates multiple other open
source packages in one shared library. In order to to so, it uses the
'ar' tool to compile static libraries of the individual packages and
then combines them to a shared library. This has always worked fine, and
on the Bioconductor build servers, too. Now it seems I can no longer run
the binary build on my Windows system. My Windows makefiles refer to the
'$(AR)' variable, but it seems this variable is not correctly expanded
to the actual location of the 'ar' tool (in Rtools 35, it is not in
Rtools\bin, but in Rtools\mingw_(32|64)\bin) . Any thoughts on this?
Thank you very much in advance and best regards,
Ulrich
[Bioc-devel] Troubles with Windows build
3 messages · Hervé Pagès, Ulrich Bodenhofer
Hi Ulrich,
On 9/11/19 07:38, Ulrich Bodenhofer wrote:
Dear colleagues,
I have two issues with the Windows BUILD BIN of our 'msa' package. (to
my horror, I figured out that the first problem has existed for quite a
while; I am deeply sorry for that!)
The main problem can be seen on
https://urldefense.proofpoint.com/v2/url?u=http-3A__bioconductor.org_checkResults_3.10_bioc-2DLATEST_msa_tokay1-2Dbuildbin.html&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=Bbc5FnQ1tPzoXMRA0p9nTFzEteGG4DDk4xWg6Ovo96s&s=aQA86FP5YPxBCHegE31FVVctmIAN1B4A43LLRj-UvKk&e=
It seems that something is wrong with the file
src/ClustalOmega/src/exceptions4c/e4c_lite.o. Since it does not seem to
me that e4c_lite.c is freshly compiled (I may be wrong in this point)
and based on a StackOverflow post
(https://urldefense.proofpoint.com/v2/url?u=https-3A__stackoverflow.com_questions_54797615_trouble-2Ddownloading-2Dr-2Dpackage-2Do-2Dfile-2Dformat-2Dnot-2Drecognized&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=Bbc5FnQ1tPzoXMRA0p9nTFzEteGG4DDk4xWg6Ovo96s&s=xQ9kThPXTO4xy8JqGDzmoDzcEULvnqEHpjjW0CbKa9g&e=
), I have the impression that the build system might still have an on
old version of some .o files. I can hardly imagine this, but it would
explain the problem. To be frank, I am quite lost and have no idea what
else could be the problem. Any hint is gratefully appreciated!
On our Windows servers the BUILD BIN stage uses the following compound command to produce the binary package: rm -rf msa.buildbin-libdir && mkdir msa.buildbin-libdir && C:\Users\biocbuild\bbs-3.10-bioc\R\bin\R.exe CMD INSTALL --merge-multiarch --build --library=msa.buildbin-libdir msa_1.17.0.tar.gz (Note that you can see this command at the top of the details page for this stage). As you can see, we use --library=msa.buildbin-libdir to install to a freshly created folder created at the beginning of the command. Command components are chained with && to make sure that it will not proceed further if one component fails so the 'R CMD INSTALL' component won't run if for example 'rm -rf msa.buildbin-libdir' fails which guarantees that we start with a fresh folder. I think this looks indeed like a leftover/stale .o file but I think the file is in the source tarball produced by the BUILD stage (msa_1.17.0.tar.gz). If you look at your cleanup.win script, it doesn't remove the stuff in src/ClustalOmega/src/exceptions4c/ so I think what happens is that at the end of compilation the folder contains all the *.o files for the 64-bit arch and these files get included in the source tarball. Then the BUILD BIN stage choke on these files during the 'install for i386' step. 'diff cleanup cleanup.win' actually shows many differences between the 2 scripts. You might want to review them closely as it looks like some of them are not intended.
The second issue: the 'msa' package integrates multiple other open source packages in one shared library. In order to to so, it uses the 'ar' tool to compile static libraries of the individual packages and then combines them to a shared library.
AFAIK, 'ar' stands for "archive". It doesn't compile anything, it only bundles things in one single *static* (not shared) library (.a file).
This has always worked fine, and on the Bioconductor build servers, too. Now it seems I can no longer run the binary build on my Windows system. My Windows makefiles refer to the '$(AR)' variable, but it seems this variable is not correctly expanded to the actual location of the 'ar' tool (in Rtools 35, it is not in Rtools\bin, but in Rtools\mingw_(32|64)\bin) . Any thoughts on this?
Don't know. You might want to try SO or R-devel for this one. Cheers, H.
Thank you very much in advance and best regards, Ulrich
_______________________________________________ Bioc-devel at r-project.org mailing list https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_bioc-2Ddevel&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=Bbc5FnQ1tPzoXMRA0p9nTFzEteGG4DDk4xWg6Ovo96s&s=Rio_ObsWJj-17QELDDBmNSEiJ8lxupnodfbXhHgXc5Q&e=
Herv? Pag?s Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 P.O. Box 19024 Seattle, WA 98109-1024 E-mail: hpages at fredhutch.org Phone: (206) 667-5791 Fax: (206) 667-1319
Hi Herv?, Thanks a lot for your very helpful and insightful reply!
[...] I think this looks indeed like a leftover/stale .o file but I think the file is in the source tarball produced by the BUILD stage (msa_1.17.0.tar.gz). If you look at your cleanup.win script, it doesn't remove the stuff in src/ClustalOmega/src/exceptions4c/ so I think what happens is that at the end of compilation the folder contains all the *.o files for the 64-bit arch and these files get included in the source tarball. Then the BUILD BIN stage choke on these files during the 'install for i386' step. 'diff cleanup cleanup.win' actually shows many differences between the 2 scripts. You might want to review them closely as it looks like some of them are not intended.
The hint to cleanup.win was great! I have no idea why the exceptions4c/ directory was missing in cleanup.win, but it seems that, according to my tests, that was actually the source of the problem. The other differences between cleanup and cleanup.win are either intended or benign (to be frank, I'd rather not touch this sensitive area as long as everything seems to work fine).
AFAIK, 'ar' stands for "archive". It doesn't compile anything, it only bundles things in one single *static* (not shared) library (.a file).
Sure! I meant 'compile' in the sense of 'putting together', not in the sense of 'translating source code into machine code'.
This has always worked fine, and on the Bioconductor build servers, too. Now it seems I can no longer run the binary build on my Windows system. My Windows makefiles refer to the '$(AR)' variable, but it seems this variable is not correctly expanded to the actual location of the 'ar' tool (in Rtools 35, it is not in Rtools\bin, but in Rtools\mingw_(32|64)\bin) . Any thoughts on this?
Don't know. You might want to try SO or R-devel for this one.
In the meantime, I have found a very slight and implicit hint to this in Section "1.2.1.3 Compiling in sub-directories" of "Writing R Extensions". The example at the bottom of this section explicitly forwards the 'AR' environment variable when running 'make' in a sub-directory. I have now included this in my Makevars.win and it seems that the second issue is now solved, too. However, I still have no idea why this has worked for so long and it still worked without this on the BioC build server. My only explanation is that the way 'R CMD SHLIB' handles environment variables has changed with a recent R version. I have not heard of this, but, to be frank, I do not have the time to follow all changes in detail. Anyway, it seems everything is fine now. Thanks again! Best regards, Ulrich