Skip to content

Commit

Permalink
make consistent with newest version of common/rvccheck
Browse files Browse the repository at this point in the history
  • Loading branch information
petercorke committed Mar 15, 2020
1 parent d78d927 commit 34bf91f
Showing 1 changed file with 88 additions and 58 deletions.
146 changes: 88 additions & 58 deletions smtbcheck.m
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
% Copyright (C) 1993-2019 Peter I. Corke
%
% This file is part of The Spatial Math Toolbox for MATLAB (SMTB).
%
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
% in the Software without restriction, including without limitation the rights
Expand All @@ -13,7 +13,7 @@
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
% FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
% COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
Expand All @@ -22,72 +22,102 @@
%
% https://github.com/petercorke/spatial-math

% display current versions of MATLAB
year = version('-release');
fprintf('You are using:\n - MATLAB release %s\n', year);

% check how old it is
today = datevec(now);
age = today(1) - str2num(year(1:4));
if age >= 2
fprintf(' ** this is at least %d years old, you may have issues\n', age);
end
function smtbcheck
% display current versions of MATLAB
year = version('-release');
fprintf('You are using:\n - MATLAB release %s\n', year);

% display versions of toolboxes (use unique RTB and MVTB functions)
p = getpath('tr2rpy');
a = ver( p );
rtb = ~isempty(a);
if rtb
if findstr(p, 'Add-Ons')
where = 'mltbx install to Add-Ons';
else
where = 'local (zip,git) install';
% check how old it is
today = datevec(now);
age = today(1) - str2num(year(1:4));
if age >= 2
fprintf(' ** this is at least %d years old, you may have issues\n', age);
end
fprintf(' - %s %s %s [%s]\n', a.Name, a.Version, a.Date, where);

end
p = getpath('idisp');
a = ver( p );
mvtb = ~isempty(a);
if mvtb
if findstr(p, 'Add-Ons')
where = 'mltbx install to Add-Ons';
else
where = 'local (zip,git) install';

%% display versions of toolboxes (use unique RTB and MVTB functions)

%SMTB
smtb = checktoolbox('RTBPose', 'SMTB');


%% check for shadowed files

shadows = {};

shadows = checkshadow(shadows, 'rotx');
shadows = checkshadow(shadows, 'roty');
shadows = checkshadow(shadows, 'rotz');
shadows = checkshadow(shadows, 'angdiff');

if ~isempty(shadows)
fprintf('\n*** Some Toolbox files are "shadowed" and will cause problems with the use of this toolbox ***\n');
for s = shadows'
fprintf(' - toolbox function "%s" is shadowed by the MathWorks file %s\n', s{1}, s{2} );
end
fprintf('Use the pathtool function to:\n 1. move the Toolbox containing the shadowed function to the top of the path\n 2. Delete the problematic MathWorks toolbox (do you really need it?)\n 3. Move the problematic MathWorks toolbox to the end of the path\n')
end
fprintf(' - %s %s %s [%s]\n', a.Name, a.Version, a.Date, where);
end

% check for shadowed files
k = 0;
if rtb
k = k + checkpath('rotx');
k = k + checkpath('roty');
k = k + checkpath('rotz');
k = k + checkpath('angdiff');
end
if mvtb
k = k + checkpath('im2col');
k = k + checkpath('col2im');
k = k + checkpath('angdiff');
function present = checktoolbox(funcname, tbname)

present = true;

p = which(funcname);
if isempty(p)
% toolbox not present
present = false;
return
end

% display versions of toolbox
fprintf('%s (%s)\n', short2long(tbname), p);
v = ver( p );

where = [];
if strcmp(tbname, 'SMTB')
% special case for SMTB, is it standalone or part of RTB or MVTB?
if contains(p, 'vision', 'IgnoreCase', true)
where = 'included with MVTB';
elseif contains(p, 'robot', 'IgnoreCase', true)
where = 'included with RTB';
end
end
if isempty(where)
if findstr(p, 'Add-Ons')
where = 'Add-Ons (installed from mltbx file or Add-On Explorer)';
else
if exist( fullfile(p, '.git'), 'dir' )
where = 'local (git clone)';
else
where = 'local (zip install)';
end
end
end

if ~isempty(v)
fprintf(' - %s%s, %s\n', tbname, v.Version, v.Date);
end
fprintf(' - %s\n', where);
end

if k > 0
fprintf('Some Toolbox files are "shadowed" and will cause problems with the use of this toolbox\n');
fprintf('Use path tool to move this Toolbox to the top of the path\n')
end

function k = checkpath(funcname)

function out = checkshadow(shadows, funcname)
% add to the list if function lives below MATLAB root
funcpath = which(funcname); % find first instance in path
k = 0;
out = shadows;
if startsWith(funcpath, matlabroot) || startsWith(funcpath, 'built-in')
out = [out; {funcname, which(funcname)}];
end
end

good = {'rvc', 'Robotics Toolbox for MATLAB', 'Machine Vision Toolbox for MATLAB'};
if exist(funcname)
if all( cellfun(@(x) isempty(strfind(funcpath, x)), good) )
fprintf('** Toolbox function %s is shadowed by %s\n', funcname, which(funcname) );
k = 1;
end
function fullname = short2long(shortname)
switch shortname
case 'RTB'
fullname = 'Robotics Toolbox for MATLAB';
case 'MVTB'
fullname = 'Machine Vision Toolbox for MATLAB';
case 'SMTB'
fullname = 'Spatial Math Toolbox for MATLAB';
end
end

Expand Down

0 comments on commit 34bf91f

Please sign in to comment.