About ROS_RMPT_SLAM package compiling issue - compatibility

While doing catkin_make ROS_MRPT_SLAM, I got following error
In file included from /usr/include/mrpt/base/include/mrpt/utils/CFileGZInputStream.h:12:0,
from /home/ian/catkin_ws/src/mrpt_slam/mrpt_ekf_slam_2d/include/mrpt_ekf_slam_2d/mrpt_ekf_slam_2d.h:11,
from /home/ian/catkin_ws/src/mrpt_slam/mrpt_ekf_slam_2d/src/mrpt_ekf_slam_2d.cpp:7:
/usr/include/mrpt/base/include/mrpt/utils/CStream.h: In member function ‘void mrpt::utils::CStream::WriteVariant(T)’:
/usr/include/mrpt/base/include/mrpt/utils/CStream.h:313:15: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
t.match([&](auto& o) { this->WriteObject(o); });
^
/usr/include/mrpt/base/include/mrpt/utils/CStream.h: In lambda function:
/usr/include/mrpt/base/include/mrpt/utils/CStream.h:313:45: error: no matching function for call to ‘mrpt::utils::CStream::WriteObject(int&)’
t.match([&](auto& o) { this->WriteObject(o); });
I guess it's compatibility matter or something because there were missing header files and so on.
This is the ROS_PACKAGE wiki: http://wiki.ros.org/mrpt_slam
And I just followed instruction from official MRPT website.
If the developer or anyone who is familiar with mrpt toolkit sees this question, may I get some advice about these errors?
By the way, I installed mrpt toolkit using the following website's instruction: http://www.mrpt.org/MRPT_in_GNU/Linux_repositories.

I'm the main author of MRPT and of part of the ROS packages.
Sorry for the mess, but you found us in the transition between the mrpt series 1.5.* and a new mayor rewrite based on C++14 which currently is published in git as mrpt 1.9.9 and eventually will be released as 2.0.0.
This transition must be propagated to the ros nodes, but so far we have upgraded mrpt_navigation only, mrpt_slam is in the to-do list.
So: a solution is to install an mrpt version of the 1.5.* series, and to build the ros packages from sources, paying attention to checking out the branches named compat-mrpt-1.5.
Hope this helps!

Related

Julia - how to update WinRPM in julia version 0.6.4

I'm new to Julia and I want to use COBRA Package.
For adding COBRA I use command :
Pkg.add("COBRA")
But when running, I get these errors:
INFO: Building WinRPM
WARNING: skipping repodata/repomd.xml, not in cache -- call WinRPM.update() to download
WARNING: skipping repodata/repomd.xml, not in cache -- call WinRPM.update() to download
INFO: Downloading https://cache.julialang.org/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Leap_42.2/repodata/repomd.xml
WARNING: Unknown download failure, error code: 2148270086
WARNING: Retry 1/5 downloading: https://cache.julialang.org/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Leap_42.2/repodata/repomd.xml
until:
WARNING: Unknown download failure, error code: 2148270086
WARNING: Retry 5/5 downloading: https://cache.julialang.org/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Leap_42.2/repodata/repomd.xml
WARNING: received error 0 while downloading
https://cache.julialang.org/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Leap_42.2/repodata/repomd.xml
After these errors, I have checked the link and I've found out the source is not there, anymore.
So then I ran this command as said above:
WinRPM.update()
But it has thrown this error:
ERROR: UndefVarError: WinRPM not defined
Please Help me to add COBRA to Julia. I'm using version 0.6.4 because Cobra does not work on the next versions.(Windows 10)
Any help would be appreciated.
The problem, as you've mentioned, is that the original sources used by the package aren't valid URLs anymore. The proper way to solve this is to open a pull request with the package to change the URLs (which I've now done here ). As a stopgap measure, here's a hacky way to work around this issue for now:
Do a Pkg.add("WinRPM"). This might trigger the same warnings as above, ignore these.
Next, using WinRPM to load the package we added
Now, the source URLs are read from the sources.list file (linked above) into a global WinRPM.sources variable. We're going to edit this variable's contents to point to new working URLs. (This is generally a terrible idea, to directly poke into the internals of a module and change things.)
julia> WinRPM.sources[:] = replace.(WinRPM.sources, "Leap_42.3" => "Leap_15.3")
2-element Vector{String}:
"https://cache.julialang.org/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Leap_15.3"
"https://cache.julialang.org/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_Leap_15.3"
A WinRPM.update() should now work, and download things into a local cache.
I'm using version 0.6.4 because Cobra does not work on the next versions.
I hope you mean Julia 1.6.4 here, or version 0.6.4 of something else in the stack. If you mean Julia version 0.6.4, you might face further problems down the road and find it hard to get support for such an old version.

Upgrading Doctrine Migrations

I am getting this warning on my codebase, here's my composer
Package zendframework/zend-eventmanager is abandoned, you should avoid using it. Use laminas/laminas-eventmanager instead.
So I needed to upgrade Doctrine Migrations bundle, but I can't seem to upgrade it, and I can't find an upgrade log.
First I get errors about Doctrine\DBAL\Migrations\AbstractMigration, so I replaced them all to Doctrine\Migrations\AbstractMigration. Now I'm getting
Compile Error: Declaration of Application\Migrations\Version20170927104049::up(Doctrine\DBAL\Schema\Schema $schema) must be compatible with Doctrine\Migrations\AbstractMigration::up(Doctrine\DB
AL\Schema\Schema $schema): void
I asked for a CHANGELOG https://github.com/doctrine/DoctrineMigrationsBundle/issues/296
But anyhelp would be greatly appreciated
The error tells you your function is not compatible with the abstract function, did you forget to add the return type to your function?
make it:
public function up(Schema $schema) : void
{}
You should start by upgrading your packages through composer upgrade - for example, in your composer.lock, you are using ocramius/proxy-manager in a version of that bundle that is nearly three years old, and this requires the abandoned package. The name change from zendframework/zend-eventmanager to laminas/laminas-eventmanager has happened in 2019.
A next step might be to upgrade the constraints such that you require even newer packages. For example, there are much more recent versions of doctrine/doctrine-migrations-bundle or symfony/swiftmailer-bundle, and updating them from time to time helps to avoid problems. As the gap between the installed version and a more recent version gets larger and larger, the upgrading process gets more complex too.
On the other hand: if your code is still working properly, you can simply ignore that warning. It tells you that the given package will not receive any updates after all, but that does not mean you are in danger immediately

command line compiling generates bigger file than the online version

I am testing google closure compiler on command line.
I took the latest version :
java -jar closure-compiler.jar --version
Closure Compiler (http://github.com/google/closure-compiler)
Version: v20190618
Built on: 2019-06-21 17:24
I am generating a compressed version of my javascript like this :
java -jar closure-compiler.jar my_script.js > out.js
The problem is that the generated code is bigger than the one I get when I use the online service at https://closure-compiler.appspot.com/home
I noticed that the command line version added, at the beginning, the following code :
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,c,b){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(c.call(b,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,c,b){a!=Array.prototype&&a!=Object.prototype&&(a[c]=b.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
$jscomp.polyfill=function(a,c,b,d){if(c){b=$jscomp.global;a=a.split(".");for(d=0;d<a.length-1;d++){var e=a[d];e in b||(b[e]={});b=b[e]}a=a[a.length-1];d=b[a];c=c(d);c!=d&&null!=c&&$jscomp.defineProperty(b,a,{configurable:!0,writable:!0,value:c})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3");
I do not have such a code in my script: Where does it come from ?
how can I produce the same output as the online version ?
To get the compiler command line work as the web service, I just added an option :
--language_out=ECMASCRIPT_2015
This is likely a discrepancy between the settings on the web service and the ones you're using locally.
Have a look at a Closure Compiler: Flags and Options to see what settings you might prefer.
If you'd share your source, it'd be possible to try and help you narrow down the options.
As for the extra code, I believe it is at least partially a polyfill for Array.prototype.find (aka [].find), which I assume is in your code?
If so, that's Closure injecting code to improve your cross browser compatibility.

Found no calls to: 'R_registerRoutines', 'R_useDynamicSymbols' unresolved

I've been strangling with an unresolved 'R_registerRoutines', 'R_useDynamicSymbols' note from R CMD check. I have read the relevant Section in the 'Writing R Extensions' and also checked various other posts online but the problem persists.
Summary of what I have done:
I created the init.c file put in the src/ directory with the following content given in [1] below. This was done using tools::package_native_routine_registration_skeleton(".", "src/init.c", character_only = FALSE) (because with the default character_only = TRUE was not working).
I checked if the same names appear in RcppExports.cpp in src/ and RcppExports.R in R/ given in [2] below.
I have added useDynLib(JMbayes, .registration = TRUE) in the NAMESPACE.
Hence, any pointers would be welcome!
[1] init.c
[2] RcppExports.cpp
Promoting my comment to an answer.
The reason for the error is due to an interaction between RStudio and devtools on a Windows machine. Thus, what you are encountering is a false positive on the Registration of Native Entry points. If you submit your package to be checked on either r-hub.io or winbuilder you should receive the appropriately response.
Furthermore, the Registration of Native Entry points provided by tools:: package_native_routine_registration_skeleton() is now done automatically in Rcpp as of 0.12.12. Thus, there is no need to supply your own src/init.c. However, to engage this autocreation behavior, you must delete the src/init.c file and re-run Rcpp::compileAttributes(). This will lead to RcppExports.cpp being generated with the native registration registered at the end of the file.
In general, this will just work automatically: with (current) Rcpp (versions 0.12.12, or at least 0.12.11) these registrations are being created / added when compileAttributes() runs.
Which RStudio's build feature runs for you. One issue we are aware of is that the switch to symbols with underscores (needed to differentiate from R symbols) leads to one round of double symbols so you may need to run compileAttributes() twice.
See other questions here and on the GitHub issue tickets, it has been discussed quite a bit by now.
Edit: With the code in this JMbayes repo I cannot reproduce the issue. It runs fine for me with no warnings about missing registrations. Did you fix it by now?

Call to undefined method SprintListController::buildApplicationPage()

I want to install phabricator-extensions-Sprint for phabricator. I followed the installation below:
To install the Sprint extension:
update your phabricator and libphutil to HEAD run git clone
https://github.com/wikimedia/phabricator-extensions-Sprint.git
/srv/phab/libext/sprint from the /srv/phab/phabricator/bin directory
run:
./config set load-libraries '{"sprint":"/srv/phab/libext/sprint/src"}'
But when I ran the Sprint in Application, I received the bug:
>>> UNRECOVERABLE FATAL ERROR <<<
Call to undefined method SprintListController::buildApplicationPage()
/opt/phabricator/libext/sprint/src/controller/SprintListController.php:46
┻━┻ ︵ ¯\_(ツ)_/¯ ︵ ┻━┻
I have to tried to do adding_new_classes but not effected.
Please help.
Sprint extension was recently broken by this commit in Phabricator:
https://secure.phabricator.com/rP2201c65eb73fb99b8625bea45c273d262f2c289f#19bb764c
The quick fix is to restore removed buildApplicationPage method by putting it into src/controller/SprintListController.php, it will fix the bug you describe.
However using Sprint extension looks like a questionable choice in the long run, given the problems discussed here:
https://phabricator.wikimedia.org/T90906

Resources