dmurdoch / rgl

rgl is a 3D visualization system based on OpenGL. It provides a medium to high level interface for use in R, currently modelled on classic R graphics, with extensions to allow for interaction.
https://dmurdoch.github.io/rgl/
GNU General Public License v2.0
85 stars 20 forks source link

Windows Biarch support (has implications for testing pkgs with GitHub Actions) #19

Closed jeffreyhanson closed 3 years ago

jeffreyhanson commented 3 years ago

Thank you so much for all your work on developing the rgl package (and other packages too!). In case you're not already aware, I wanted to let you know that installing the latest version of the rgl package on CRAN onto a Windows system does not install rgl for both the x86 and i386 versions of R (apologies I am probably using incorrect terminology). To reproduce this, we can see that running install.packages('rgl') on a Windows system throws the following warning message (for full log, please see end of post):

Warning: this package has a non-empty 'configure.win' file, so building only the main architecture

Now, this issue on its own isn't really that big of a deal. In an interactive setting, one could easily address this by manually installing rgl under x86 and i386 separately. However, this causes some problems when using continuous integration services (e.g. GitHub Actions) to test packages that depend on rgl. This is because when (default configuration files for) these services try to install rgl, they will only install rgl for x86 not i386 R versions. Since (default configuration files for) these services run package checks for both x86 and i386 R versions, this -- in turn -- causes the continuous integration checks to fail because rgl is missing for i386 R version.

May I ask if you would consider adding Biarch: true to the rgl package's DESCRIPTION to ensure that rgl is always installed for both x86 and i386? This would make it easier to maintain R packages that depend on rgl package. For reference, I found another package dealing with a similar issue that was resolved with such a change (https://github.com/jonclayden/ore/issues/6). I would be happy to submit a PR if that would be helpful?

If such a change is not possible, I thought it might be useful to mention for the benefit of others that one can update the (current) GitHub Actions default configuration file (from r-lib) to address this issue by replacing this line in the YAML file:

remotes::install_deps(dependencies = TRUE)

with this line instead:

remotes::install_deps(dependencies = TRUE, INSTALL_opts = "--force-biarch")

For a complete example of a GitHub Actions YAML file that addresses this issue, please see this YAML file .


Full log:

> install.packages("rgl")
Installing package into ‘D:/Users/****/Documents/R’
(as ‘lib’ is unspecified)

  There is a binary version available but the source version is later:
      binary   source needs_compilation
rgl 0.100.54 0.105.12              TRUE

installing the source package ‘rgl’

trying URL 'https://cran.rstudio.com/src/contrib/rgl_0.105.12.tar.gz'
Content type 'application/x-gzip' length 2994121 bytes (2.9 MB)
downloaded 2.9 MB

* installing *source* package 'rgl' ...
** package 'rgl' successfully unpacked and MD5 sums checked
** libs
Warning: this package has a non-empty 'configure.win' file,
so building only the main architecture

"C:/PROGRA~1/R/R-35~1.1/bin/x64/Rscript.exe" "../tools/winlibs.R" 2.10.4
sed -e "s^@RGL_NO_OPENGL@^FALSE^" ../R/noOpenGL.R.in > ../R/noOpenGL.R
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c ABCLineSet.cpp -o ABCLineSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c BBoxDeco.cpp -o BBoxDeco.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Background.cpp -o Background.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c ClipPlane.cpp -o ClipPlane.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Color.cpp -o Color.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Disposable.cpp -o Disposable.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Light.cpp -o Light.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c LineSet.cpp -o LineSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c LineStripSet.cpp -o LineStripSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Material.cpp -o Material.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c NULLgui.cpp -o NULLgui.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c PlaneSet.cpp -o PlaneSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c PointSet.cpp -o PointSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c PrimitiveSet.cpp -o PrimitiveSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c RenderContext.cpp -o RenderContext.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Shape.cpp -o Shape.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c SphereMesh.cpp -o SphereMesh.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c SphereSet.cpp -o SphereSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c SpriteSet.cpp -o SpriteSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c String.cpp -o String.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Surface.cpp -o Surface.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c TextSet.cpp -o TextSet.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Texture.cpp -o Texture.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c Viewpoint.cpp -o Viewpoint.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c api.cpp -o api.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c assert.cpp -o assert.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c callbacks.cpp -o callbacks.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c device.cpp -o device.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c devicemanager.cpp -o devicemanager.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c fps.cpp -o fps.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c ftgl.cpp -o ftgl.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c geom.cpp -o geom.o
c:/Rtools/mingw_64/bin/gcc  -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -std=gnu99 -mtune=generic -c gl2ps.c -o gl2ps.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c glErrors.cpp -o glErrors.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c glgui.cpp -o glgui.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c gui.cpp -o gui.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c init.cpp -o init.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c par3d.cpp -o par3d.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c pixmap.cpp -o pixmap.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c platform.cpp -o platform.o
c:/Rtools/mingw_64/bin/gcc  -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -std=gnu99 -mtune=generic -c pretty.c -o pretty.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c render.cpp -o render.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c rglmath.cpp -o rglmath.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c rglview.cpp -o rglview.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c scene.cpp -o scene.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c select.cpp -o select.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c subscene.cpp -o subscene.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c win32gui.cpp -o win32gui.o
win32gui.cpp: In member function 'virtual rgl::GLFont* rgl::Win32WindowImpl::getFont(const char*, int, double, bool)':
win32gui.cpp:448:22: warning: unused variable 'pidlFonts' [-Wunused-variable]
         LPITEMIDLIST pidlFonts;
                      ^
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c win32lib.cpp -o win32lib.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c x11gui.cpp -o x11gui.o
c:/Rtools/mingw_64/bin/g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -DHAVE_PNG_H -DHAVE_FREETYPE -Iext -Iext/ftgl -I../windows/freetype-2.10.4/include -I../windows/freetype-2.10.4/include/freetype2         -O2 -Wall  -mtune=generic -c x11lib.cpp -o x11lib.o
c:/Rtools/mingw_64/bin/g++ -shared -s -static-libgcc -o rgl.dll rgl-win.def ABCLineSet.o BBoxDeco.o Background.o ClipPlane.o Color.o Disposable.o Light.o LineSet.o LineStripSet.o Material.o NULLgui.o PlaneSet.o PointSet.o PrimitiveSet.o RenderContext.o Shape.o SphereMesh.o SphereSet.o SpriteSet.o String.o Surface.o TextSet.o Texture.o Viewpoint.o api.o assert.o callbacks.o device.o devicemanager.o fps.o ftgl.o geom.o gl2ps.o glErrors.o glgui.o gui.o init.o par3d.o pixmap.o platform.o pretty.o render.o rglmath.o rglview.o scene.o select.o subscene.o win32gui.o win32lib.o x11gui.o x11lib.o -L../windows/freetype-2.10.4/lib/x64 -lfreetype -lpng -lz -lgdi32 -lopengl32 -lglu32 -LC:/PROGRA~1/R/R-35~1.1/bin/x64 -lR
installing to D:/Users/****/Documents/R/rgl/libs/x64
** R
** demo
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package 'rgl'
    finding HTML links ... done
    3dobjects                               html  
    GramSchmidt                             html  
    abclines                                html  
    addNormals                              html  
    ageControl                              html  
    ageSetter                               html  
    arc3d                                   html  
    arrow3d                                 html  
    as.mesh3d.ashape3d                      html  
    as.mesh3d.default                       html  
    as.mesh3d.rglId                         html  
    as.triangles3d                          html  
    asRow                                   html  
    aspect3d                                html  
    attributes                              html  
    axes3d                                  html  
    bbox                                    html  
    bg                                      html  
    bgplot3d                                html  
    callbacks                               html  
    check3d                                 html  
    clipMesh3d                              html  
    clipplaneControl                        html  
    contourLines3d                          html  
    cylinder3d                              html  
    elementId2Prefix                        html  
    ellipse3d                               html  
    extrude3d                               html  
    figWidth                                html  
    grid3d                                  html  
    identify3d                              html  
    import                                  html  
    light                                   html  
    makeDependency                          html  
    material                                html  
    matrices                                html  
    merge.mesh3d                            html  
    mergeVertices                           html  
    mesh3d                                  html  
    mfrow3d                                 html  
    observer3d                              html  
    open3d                                  html  
    par3d                                   html  
    par3dinterp                             html  
    par3dinterpControl                      html  
    pch3d                                   html  
    persp3d                                 html  
    persp3d.deldir                          html  
    persp3d.function                        html  
    persp3d.tri                             html  
    planes                                  html  
    play3d                                  html  
    playwidget                              html  
    finding level-2 HTML links ... done

    plot3d                                  html  
    plot3d.formula                          html  
    plot3d.lm                               html  
    plotmath3d                              html  
    polygon3d                               html  
    postscript                              html  
    primitive                               html  
    propertyControl                         html  
    propertySetter                          html  
    r3d                                     html  
    readSTL                                 html  
    rgl-internal                            html  
    rgl-package                             html  
    rgl.Sweave                              html  
    rgl.attrib.info                         html  
    rgl.bringtotop                          html  
    rgl.init                                html  
    rgl.open                                html  
    rgl.pixels                              html  
    rgl.select                              html  
    rgl.useNULL                             html  
    rgl.user2window                         html  
    rglIds                                  html  
    rglMouse                                html  
    rglShared                               html  
    rglToLattice                            html  
    rglwidget                               html  
    scene                                   html  
    scene3d                                 html  
    sceneChange                             html  
    select3d                                html  
    selectpoints3d                          html  
    setGraphicsDelay                        html  
Rd warning: D:/Users/****/AppData/Local/Temp/2/RtmpOq6ivq/R.INSTALL17c01ef6946/rgl/man/setGraphicsDelay.Rd:15: missing link 'quartz'
    setUserShaders                          html  
    setupKnitr                              html  
    shapelist3d                             html  
    shiny                                   html  
    shinyGetPar3d                           html  
    show2d                                  html  
    snapshot                                html  
    spheres                                 html  
    spin3d                                  html  
    sprites                                 html  
    subdivision3d                           html  
    subscene3d                              html  
    subsceneInfo                            html  
    surface                                 html  
    surface3d                               html  
    texts                                   html  
    thigmophobe3d                           html  
    tkpar3dsave                             html  
    tkrgl                                   html  
    tkspin3d                                html  
    tkspinControl                           html  
    toggleWidget                            html  
    triangulate                             html  
    turn3d                                  html  
    vertexControl                           html  
    viewpoint                               html  
    webGLcontrols                           html  
    writeASY                                html  
    writeOBJ                                html  
    writePLY                                html  
    writeWebGL                              html  
*** copying figures
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (rgl)
In R CMD INSTALL

The downloaded source packages are in
        ‘D:\Users\*****\AppData\Local\Temp\2\RtmpCUWYxg\downloaded_packages’
dmurdoch commented 3 years ago

I believe CRAN uses some special-case code to build Windows binaries for rgl, so I'm not sure your suggested change would work. But if you want to put together a PR and it tests okay for you I'll consider it.

Note that currently there are some problems with the builds on Solaris (see https://cloud.r-project.org/web/checks/check_results_rgl.html), so I won't merge changes that affect non-Windows systems yet.

jeffreyhanson commented 3 years ago

Ok - sounds good - thank you. I'll put together the PR and report back later today sometime. I also noticed that the configure.win file doesn't seem to contain any code. So another possible fix might involve simply deleting this file, but this might cause issues with the special-case code on CRAN? What do you think? If it would be helpful, I could test this possible fix too?

dmurdoch commented 3 years ago

If you can simplify things I think CRAN will be happy to remove the special-casing. They'll only be unhappy if your change means rgl still needs special-casing, but different than what it has now. I don't remember if their current method is described online anywhere.

jeffreyhanson commented 3 years ago

Ok - I'll give that potential fix a go too. To verify that these changes won't mess anything up for CRAN, would it be sufficient to test the PRs on WinBuilder (I can temporarily change the email address in the DESCRIPTION when testing so it doesn't spam your inbox)? Or is there a better way to do this?

jeffreyhanson commented 3 years ago

To see if the biarch branch fixes this issue, I reverted the R package installation commands in my GitHub Actions workflow YAML file so that it does not explicitly force installation of rgl on both x64 and i385 (in other words, it now follows the default installation commands from r-lib; see https://github.com/jeffreyhanson/raptr/commit/5a6b0a4f3df4603400ae0073529526f672f3ae3c). I expected the continuous integration GitHub Actions checks to fail as before (i.e. https://github.com/jeffreyhanson/raptr/actions/runs/567168766). However, the continuous integration checks on GitHub Actions passed when installing rgl from CRAN (see https://github.com/jeffreyhanson/raptr/actions/runs/579337468). After looking through the log file (see attached file at end of post), it seems that the Windows binaries for rgl are now available on CRAN --- and this might explain why the checks passed:

> # skipping some lines here #
> Installing 138 packages: digest, utf8, vctrs, pkgconfig, pillar, magrittr, lifecycle, ellipsis, crayon, assertthat, tibble, rlang, rematch2, glue, fansi, diffobj, cli, R6, ps, processx, rappdirs, fs, stringi, BH, Rcpp, jquerylib, sass, callr, cachem, bslib, commonmark, withr, fastmap, promises, later, sourcetools, xtable, mime, httpuv, xfun, stringr, markdown, highr, evaluate, yaml, jsonlite, webshot, base64enc, knitr, htmlwidgets, htmltools, miniUI, shiny, lazyeval, purrr, prettyunits, rstudioapi, rprojroot, pkgbuild, desc, colorspace, viridisLite, RColorBrewer, munsell, labeling, farver, waldo, praise, pkgload, brio, testthat, misc3d, sp, hms, rcdd, plot3D, mvtnorm, multicool, mclust, kernlab, FNN, abind, RcppProgress, linprog, lpSolve, magic, manipulateWidget, crosstalk, iterators, filehash, progress, pixmap, CircStats, adehabitatMA, ade4, gtable, permute, tidyselect, generics, tinytex, xml2, brew, scales, isoband, RcppArmadillo, rgeos, data.table, hitandrun, e1071, fastcluster, pdist, ks, geometry, maps, raster, rgl, foreach, RandomFieldsUtils, png, adehabitatLT, deldir, gridExtra, gurobi, vegan, dplyr, rmarkdown, roxygen2, RcppEigen, ggplot2, hypervolume, rgdal, doParallel, plyr, RandomFields, RgoogleMaps, adehabitatHR, shape, PBSmapping
> # skipping some lines here #
> 2021-02-18T20:24:44.2926311Z trying URL 'https://cloud.r-project.org/bin/windows/contrib/4.1/rgl_0.105.13.zip'
> 2021-02-18T20:24:44.3526835Z Content type 'application/zip' length 4944023 bytes (4.7 MB)
> 2021-02-18T20:24:44.6010908Z ==================================================
> 2021-02-18T20:24:44.6011878Z downloaded 4.7 MB
> # skipping more lines here #
> 2021-02-18T20:25:05.5941002Z package 'rgl' successfully unpacked and MD5 sums checked
> # skipping lines till end log #

Therefore it would seem that one potential fix for this issue is simply for maintainers of R packages that depend on rgl to wait for Windows binaries to appear on CRAN? Does that sound right to you? Or maybe I'm missing something?

Assuming that simply waiting for Windows binaries to become available on CRAN fixes this issue, would you still be interested in a PR that fixes this issue (e.g. for the few days when only the source version is available on CRAN)? I completely understand if you'd rather keep things as they are to avoid any potential issues with the special-case code for rgl on CRAN?


GitHub Actions log file: github-actions-log.txt