Files
@ 9a40ab737a73
Branch filter:
Location: EI/VirtualLeaf/src/perl/deployapp.pl
9a40ab737a73
3.4 KiB
text/x-perl
* Added functionality for numerical output (CSV) format. See functions starting with "CSV" in mesh.cpp. External code hull.cpp is responsible for convex hull calculations.
- ToDo: adopt menu item "File->export cell areas" so user can choose a file name or set up periodic output of numerical data.
- ToDo: add parameters re: periodic numeric output to "<settings>" block of LeafML-file, so it becomes possible to set up numeric output interactively, then write the LeafML file and run the program in batch mode to retrieve periodic numeric output.
* Added new functionality to plugin interface. It becomes possible to define a default LeafML init file for a plugin. It is read whenever the model plugin is loaded.
- ToDo: define default LeafML files for all plugins, according to the LeafML files mentioned in the Plant Phys. tutorial.
user: Roeland Merks <merks@cwi.nl>
branch 'default'
added src/hull.cpp
added src/hull.h
changed src/TutorialCode/Tutorial0/tutorial0.pro
changed src/VirtualLeaf.cpp
changed src/VirtualLeaf.pro
changed src/build_models/auxingrowthplugin.cpp
changed src/build_models/auxingrowthplugin.h
changed src/canvas.cpp
changed src/canvas.h
changed src/mainbase.h
changed src/mesh.cpp
changed src/mesh.h
changed src/modelcatalogue.cpp
changed src/simplugin.cpp
changed src/simplugin.h
changed src/xmlwrite.cpp
- ToDo: adopt menu item "File->export cell areas" so user can choose a file name or set up periodic output of numerical data.
- ToDo: add parameters re: periodic numeric output to "<settings>" block of LeafML-file, so it becomes possible to set up numeric output interactively, then write the LeafML file and run the program in batch mode to retrieve periodic numeric output.
* Added new functionality to plugin interface. It becomes possible to define a default LeafML init file for a plugin. It is read whenever the model plugin is loaded.
- ToDo: define default LeafML files for all plugins, according to the LeafML files mentioned in the Plant Phys. tutorial.
user: Roeland Merks <merks@cwi.nl>
branch 'default'
added src/hull.cpp
added src/hull.h
changed src/TutorialCode/Tutorial0/tutorial0.pro
changed src/VirtualLeaf.cpp
changed src/VirtualLeaf.pro
changed src/build_models/auxingrowthplugin.cpp
changed src/build_models/auxingrowthplugin.h
changed src/canvas.cpp
changed src/canvas.h
changed src/mainbase.h
changed src/mesh.cpp
changed src/mesh.h
changed src/modelcatalogue.cpp
changed src/simplugin.cpp
changed src/simplugin.h
changed src/xmlwrite.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | #!/usr/bin/perl
#
# $Id$
#
# This file is part of the Virtual Leaf.
#
# The Virtual Leaf is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# The Virtual Leaf is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with the Virtual Leaf. If not, see <http://www.gnu.org/licenses/>.
#
# Copyright 2010 Roeland Merks.
#
#
# get dependencies for executable
sub get_frameworks {
my $exec = shift;
my @frameworks = ();
my $fw;
# print "get_frameworks says: exec = $exec\n";
open deps, "otool -L $exec |";
# omit first line
<deps>;
while (<deps>) {
# look for lines with ".framework", that do not start with / or @.
if (/\.framework/ && !/^[ \t]*\// && !/^[ \t]*\@/) {
chomp;
@line = split;
$f = $line[0];
# get framework directory name
@line = split(/\//,$f);
for $d (@line) {
if ($d =~ /\.framework/) {
$fw = $d;
# print "get_framework finds framework $d\n";
last;
}
}
if (defined($fw)) {
# print "get_frameworks pushes $fw on stack\n";
push @frameworks, $fw;
}
}
}
@frameworks;
}
$app = $ARGV[0];
$appdir = $app.".app";
if ($appdir =~ /\.app\.app/) {
$appdir = $ARGV[0];
}
$exec = $appdir."/Contents/MacOS/$app";
@frameworks = get_frameworks( $exec );
#for $f (@frameworks) {
# print "$f\n";
#}
# copy all frameworks to appdir/frameworks
system ("mkdir $appdir/Contents/Frameworks");
for $fw (@frameworks) {
system "cp -R /Library/Frameworks/$fw $appdir/Contents/Frameworks/.";
}
# set identification names for the frameworks
for $fw (@frameworks) {
$lib = $fw; $lib =~ s/\.framework//g;
system "install_name_tool -id \@executable_path/../Frameworks/$fw/Versions/4.0/$lib $appdir/Contents/Frameworks/$fw/Versions/4.0/$lib";
# tell dynamic linker where to look for the frameworks
system "install_name_tool -change $fw/Versions/4/$lib \@executable_path/../Frameworks/$fw/Versions/4.0/$lib $appdir/Contents/MacOs/$app";
}
# now, set the frameworks' reciprocal dependencies right
for $fw (@frameworks) {
$lib = $fw; $lib =~ s/\.framework//g;
my @frameworks_of_fw = get_frameworks ( "$appdir/Contents/Frameworks/$fw/Versions/4.0/$lib" );
for $fwfw (@frameworks_of_fw) {
# print "$fwfw\n";
$liblib = $fwfw; $liblib =~ s/\.framework//g;
system "install_name_tool -change $fwfw/Versions/4/$liblib \@executable_path/../Frameworks/$fwfw/Versions/4.0/$liblib $appdir/Contents/Frameworks/$fw/Versions/4.0/$lib";
}
}
# do the same for additional libs not in a framework depending on frameworks (e.g. libqwt...)
@additionallibs = ( "libqwt.dylib" );
for $lib (@additionallibs) {
my @frameworks_of_lib = get_frameworks ( "$appdir/Contents/Frameworks/$lib" );
for $fwfw (@frameworks_of_lib) {
# print "$fwfw\n";
$liblib = $fwfw; $liblib =~ s/\.framework//g;
system "install_name_tool -change $fwfw/Versions/4/$liblib \@executable_path/../Frameworks/$fwfw/Versions/4.0/$liblib $appdir/Contents/Frameworks/$lib";
}
}
# finis
|