New DDE User - Thoughts & Feedback
Alan Robertson (52) 420 posts |
Just signed up for the DDE Toolkit and downloaded the ROOL Source Archive. Thought I’d share my feedback. DDE Thoughts Overall: Good clean process, that was simple to follow ROOL Sources Overall: The SharedUnixLibrary omission was annoying, but I’m unsure if this is just my own issue or happens with other users. But apart from that, I thought it was relatively easy, but thought it odd that the documentation focused more on the user using the command prompty for UnTarBZ2 than than GUI. Maybe hardcore coders should not use a GUI. Anyway, these are just my thoughts on the overall process. |
Colin (478) 2433 posts |
2) Yes, apparently the bunzip2 tool inside UntarBz2 uses sharedunixlib. I must decompress the sources soon after downloading from Netsurf – which loads sharedunixlibrary – as I’ve not come across this issue before.
No they just don’t read instructions :-) |
Jon Abbott (1421) 2651 posts |
SharedUnixLib is available via PackMan, which is pre-installed on all Pi HD images. There’s so many pieces of software that are dependent on it though, I wonder if it should come as part of the OS, as SharedCLib does. |
Chris Hall (132) 3554 posts |
It does come as standard with the RC14 image for the Pi. |
Gavin (560) 32 posts |
I know this is an old thread, but I too have just purchased and installed the ROOL DDE.
I get that too. Is there a fix for this? I find it odd that the documentation hasn’t been changed after all this time, or in fact that the problem hasn’t been fixed! |
David Pitt (102) 743 posts |
The full error is :- Can't open perl script "Build:InstViaRG": System variable 'PERLTEST' not found The missing file is to be found in ROOL’s Build environment Once that is set up just select any build environment using !Builder and try again, or purloin the missing bit(s) and install them within DDE26.
I would guess that the real issue holding up DDE progress is RPi3 compatibility. UnixLib that is. HTH. |
Chris Mahoney (1684) 2165 posts |
For what it’s worth, I have never seen the “PERLTEST” error with DDE 25. Do both of you have 26? And I’m possibly asking the obvious here, but have you run SetPaths? It certainly shouldn’t be necessary to mess around with the actual OS build environment! |
David Pitt (102) 743 posts |
The “PERLTEST” error is with DDE26 only, DE25 is good.
It is only a bug but it does require working around. |
Gavin (560) 32 posts |
Thanks David. I wasn’t actually planning on building any RISC OS components from CVS/ROOL’s build environment, so wasn’t expecting to need the full ROOL Build environment. I was following the install instructions that has a test to check the installation had worked correctly – but the test fails. But it doesn’t really matter, I’ve since compiled another program’s source I had and now got it running on my ARMX6. |
Gavin (560) 32 posts |
Yes, this is with DDE 26. SetPaths had been run, but there are obviously other requirements in !Builder, that that are required for the Sources.DDE-Examples.Skeletons.examplemod.MkRam to run successfully. Which makes it a bad example to suggest as a demonstration that DDE26 is installed and working correctly.
I agree, and as a relative newbie to working with the DDE/AcornC/C++ environment it doesn’t fill you with much faith when you can’t even make it through the ReadMe Installation instructions without an error and a complete failure of the very first attempt at building one of the examples. |
Chris Hall (132) 3554 posts |
If you already have a directory $.AcornC/C++.^.Programming.perl-5_001.!Perl (which is the case from earlier versions of DDE) then you don’t get the error. When I installed DDE on a different machine I had to remember to install that directory as well. |
David Feugey (2125) 2709 posts |
It will. |
Gavin (560) 32 posts |
Interestingly DDE26 comes supplied with Programming.perl-5_001.!Perl. It seems that the problem is Sources.DDE-Examples.Skeletons.examplemod.MkRam requires the perl script “Build:InstViaRG” which isn’t supplied anywhere with DDE26. |
David Pitt (102) 743 posts |
Using DDE26. After running *show build* Build$Path : ADFS::Titan4.$.Progm.AcornC/C++.AcornC/C++.!SetPaths.Lib32.Build. * Place a copy of InstViaGR liberated from a ROOL download build environment in that location and ‘examplemod’ builds. DDE25 is OK. The issue in DDE26 is within the global CModule makefile o.${RES_OBJ}: resources-${CMDHELP} ${DIRS} ${INSTVIARG} ${MERGEDRDIR} ${RES_PATH} o._ResGen_ ${RESGEN} ${RES_AREA} $@ -via o._ResGen_ This is InstViaRG from the ROOL build environment. #!/usr/bin/perl -w # Copyright (c) 2015, RISC OS Open Ltd # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of RISC OS Open Ltd nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Script to produce a 'resgen' compatible via file of the resources that # would be exported by a C modules during the 'resources' phase, useful to # allow the module to have a RAM loading 'standalone' variant too. use strict; my $posix = -e '.'; my $verbose = 0; my $localdir; my $resfsdir; my $viafile; sub usage { die(<<EOF); Usage: $0 [-h] [-v] <local dir> <ResourceFS dir> <viafile> -h Print this help. -v Verbose. <local dir> Directory where the files reside. This must use the system's native filesystem syntax. <ResourceFS dir> Target directory in ResourceFS. This should be in RISC OS format - directory separator is '.' <viafile> Where to write the result. This must use the system's native filesystem syntax. EOF } sub scandir { my $src = $_[0]; my $dst = $_[1]; my $srcpath; my $dstpath; my $sep = $posix ? '/' : '.'; my $leafname; my $baselen = length($_[2]); my $via = $_[3]; local (*DIR); # Catalogue the candidate directory opendir(DIR, $src) or die $!; while ($leafname = readdir(DIR)) { # Hide '.' names on Posix next if ($leafname =~ m/^\./); $srcpath = $src . $sep . $leafname; $dstpath = $dst . substr($srcpath, $baselen); if (-f $srcpath) { # It's a file, append to the via file open(VIA, ">>$via") or die $!; print VIA "$srcpath $dstpath\n"; close(VIA); } else { # The wobbly Perl 5.001 (distributed by ROOL) seems to explode # all to easily when recursing even if just moving args about scandir($srcpath, $_[1], $_[2], $_[3]); } } closedir(DIR); } # Parse the command line usage() unless (@ARGV); while (1) { $_ = $ARGV[0]; last if /^[^-]/; shift; # -h or --help usage() if (/^-h$/ || /^--help$/); # -v $verbose += /^-v$/; } usage() unless (@ARGV); $localdir = shift; usage() unless (@ARGV); $resfsdir = shift; usage() unless (@ARGV); $viafile = shift; # Output a via file relating candidate leafnames to ResourceFS paths print "Scan $localdir for files to put in $resfsdir\n" if $verbose; unlink($viafile); scandir($localdir, $resfsdir, $localdir, $viafile); exit(0); |
David Pitt (102) 743 posts |
I have just noticed a subtlety, from * Open "Sources.DDE-Examples" * Open one of the example folders (e.g. "Skeletons.examplemod") * Run the MkRam (or Mk) script to build a RAM-loadable version of that component OTOH the “Support” section of that ReadMe does say what to do on not finding the HTH. |