[Laszlo-dev] [BULK] Re: [Laszlo-checkins] r9896 - in openlaszlo/trunk: WEB-INF/lps/server/src/org/openlaszlo/sc installer/macosx
Matt Wilde
mwilde at laszlosystems.com
Mon Jun 23 13:37:33 PDT 2008
This change breaks the Linux build. It complains that it can't find a
$FLEX_HOME environment variable. Unfortunately, there doesn't seem to be
a Linux build of the Flex tools. How was this problem avoided before?
Matt Wilde
P T Withington wrote:
> Surely there is some script you will need to change in Unix and
> Windows to set FLEX_HOME?
>
> Is there any way you could us WEB-INF/lps/server/bin/lzenv to do this?
>
> On 2008-06-23, at 15:14 EDT, hqm at openlaszlo.org wrote:
>
>> Author: hqm
>> Date: 2008-06-23 12:14:19 -0700 (Mon, 23 Jun 2008)
>> New Revision: 9896
>>
>> Modified:
>>
>> openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
>>
>> openlaszlo/trunk/installer/macosx/OpenLaszlo Explorer.command.proto
>> openlaszlo/trunk/installer/macosx/Start OpenLaszlo
>> Server.command.proto
>> openlaszlo/trunk/installer/macosx/mkpkg.sh
>> Log:
>> Change 20080623-hqm-b by hqm at badtzmaru.home on 2008-06-23 15:10:39 EDT
>> in /Users/hqm/openlaszlo/trunk4
>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>
>> Summary: go back to 'exec' method of calling flex compiler
>>
>> New Features:
>>
>> Bugs Fixed:
>>
>> Technical Reviewer: ptw
>> QA Reviewer: mamye
>> Doc Reviewer: (pending)
>>
>> Documentation:
>>
>> Release Notes:
>>
>> Details:
>>
>> Back out of the change to use the flex "oem" compiler API, and call by
>> exec'ing flex SDK scripts. This works around the bug where OSX
>> installations with spaces in their pathnames caused swf9 compiles to
>> fail.
>>
>> This code needs to explicitly set the script files executable, due to
>> a bug in ant which doesn't allow frobbing of the permission bits when
>> we copy the files to the staging directory.
>>
>> Tests:
>>
>> Build macOS installer, install it, and successfully compile weather
>> demo as swf9 from the dev console.
>>
>> Testing under windows will need to wait until the builder runs, because
>> none of us are set up to build windows installers.
>>
>>
>>
>> Modified:
>> openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
>>
>> ===================================================================
>> ---
>> openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
>> 2008-06-23 19:03:53 UTC (rev 9895)
>> +++
>> openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
>> 2008-06-23 19:14:19 UTC (rev 9896)
>> @@ -18,19 +18,6 @@
>> import org.openlaszlo.sc.parser.*;
>> import org.openlaszlo.server.LPS;
>>
>> -/** Flex OEM compiler API
>> - * See http://livedocs.adobe.com/flex/3/compilerAPI_flex3.pdf
>> - *
>> - * source code in flex sources at
>> modules/compiler/src/java/flex2/tools/oem/internal/*.java
>> - */
>> -import flex2.tools.oem.Application;
>> -import flex2.tools.oem.Configuration;
>> -import flex2.tools.oem.Library;
>> -import flex2.tools.oem.Builder;
>> -import flex2.tools.oem.Message;
>> -import flex2.tools.oem.Logger;
>> -
>> -
>> /**
>> * The SWF9External manages communication with the
>> * external compiler - generation of source files,
>> @@ -243,26 +230,22 @@
>> private int origlinenum = -1;
>> private int linenum;
>> private int colnum;
>> -
>> - // The error message
>> private String error;
>> -
>> - private String path; // pathname of source file
>> private String code = "";
>> private String cleanedCode = "";
>> -
>> + private String orig = "";
>> private TranslationUnit tunit;
>>
>> ExternalCompilerError() {
>> - this(null, -1, -1, "", "", "");
>> + this(null, -1, -1, "", "");
>> }
>>
>> - ExternalCompilerError(TranslationUnit tunit, int linenum, int
>> colnum, String path, String error, String code) {
>> + ExternalCompilerError(TranslationUnit tunit, int linenum, int
>> colnum, String error, String orig) {
>> this.tunit = tunit;
>> this.linenum = linenum;
>> this.colnum = colnum;
>> this.error = error;
>> - this.code = this.cleanedCode = code;
>> + this.orig = orig;
>> }
>>
>> public String toString() {
>> @@ -281,6 +264,11 @@
>> return error;
>> }
>>
>> + // returns the original untouched compiler error message
>> + public String originalErrorString() {
>> + return orig;
>> + }
>> +
>> // returns the complete the compiler error,
>> // but without the positional 'caret', and
>> // an indication of where the code starts,
>> @@ -296,6 +284,21 @@
>> return result;
>> }
>>
>> + public void addCodeLine(String str) {
>> + if (code.length() > 0) {
>> + code += "\n";
>> + }
>> + code += str;
>> +
>> + // In cleanedCode, don't keep lines with just spaces and caret
>> (^)
>> + if (!str.matches("^[ ^]*$")) {
>> + if (cleanedCode.length() > 0) {
>> + cleanedCode += "\n";
>> + }
>> + cleanedCode += str;
>> + }
>> + }
>> +
>> public String getCode() {
>> return code;
>> }
>> @@ -327,6 +330,74 @@
>> }
>>
>> /**
>> + * Collect the error stream, digesting them into individual
>> + * ExternalCompilerErrors.
>> + */
>> + public class ExternalCompilerErrorCollector extends OutputCollector {
>> +
>> + private String inputFilename;
>> + private Pattern errPattern;
>> + private List errors = new ArrayList();
>> + private ExternalCompilerError lastError = null;
>> + private TranslationUnit[] tunits;
>> +
>> + // we don't expect this to be terribly big, can fit in memory
>> + StringBuffer sb = new StringBuffer();
>> +
>> + public ExternalCompilerErrorCollector(InputStream is, List
>> tunits) {
>> + super(is);
>> + this.inputFilename = inputFilename;
>> + this.tunits = (TranslationUnit[])tunits.toArray(new
>> TranslationUnit[0]);
>> +
>> + // Expect errors to look like File.as(48): col: 1 Error: some
>> message
>> +
>> + String pat = "([^\\/]+)\\.as\\(([0-9]+)\\): *col: *([0-9]*)
>> *(.*)";
>> + errPattern = Pattern.compile(pat);
>> + //System.out.println("Using error pattern: " + pat);
>> + }
>> +
>> + public TranslationUnit locateTranslationUnit(String nm)
>> + {
>> + for (int i=0; i<tunits.length; i++) {
>> + if (nm.equals(tunits[i].getName()))
>> + return tunits[i];
>> + }
>> + return null;
>> + }
>> +
>> + public void collect(String str) {
>> +
>> + // We expect errors from this compiler to start with the file
>> name.
>> + // anything else is just showing us the contents of the line.
>> +
>> + Matcher matcher = errPattern.matcher(str);
>> + if (matcher.find()) {
>> + String classnm = matcher.group(1);
>> + String linenumstr = matcher.group(2);
>> + String colstr = matcher.group(3);
>> + TranslationUnit tunit = locateTranslationUnit(classnm);
>> + lastError = new ExternalCompilerError(tunit,
>> safeInt(linenumstr),
>> + safeInt(colstr),
>> + matcher.group(4),
>> + str);
>> + errors.add(lastError);
>> + }
>> + else {
>> + if (lastError == null) {
>> + System.err.println("Stray error string from external
>> compiler: " + str);
>> + // Capture it in an error message not tied to a particular
>> line
>> + lastError = new ExternalCompilerError();
>> + }
>> + lastError.addCodeLine(str);
>> + }
>> + }
>> +
>> + public List getErrors() {
>> + return errors;
>> + }
>> + }
>> +
>> + /**
>> * True if UNIX quoting rules are in effect.
>> */
>> public static boolean useUnixQuoting() {
>> @@ -360,134 +431,112 @@
>> return cmdstr;
>> }
>>
>> -
>> - static class FlexLogger implements Logger {
>> - private List errors = new ArrayList();
>> - private ExternalCompilerError lastError = null;
>> - private TranslationUnit[] tunits;
>> -
>> -
>> - // Parse out FILENAME from "FILENAME.as", to get classname
>> - static String pat = "([^\\/]+)\\.as";
>> - private Pattern errPattern;
>> -
>> - FlexLogger(List tunits) {
>> - this.tunits = (TranslationUnit[])tunits.toArray(new
>> TranslationUnit[0]);
>> - errPattern = Pattern.compile(pat);
>> - }
>> -
>> - public TranslationUnit locateTranslationUnit(String nm)
>> - {
>> - for (int i=0; i<tunits.length; i++) {
>> - if (nm.equals(tunits[i].getName()))
>> - return tunits[i];
>> - }
>> - return null;
>> - }
>> -
>> - public void log(Message msg, int errorCode, String source) {
>> - // errors.add(...)
>> - String level = msg.getLevel();
>> - String path = msg.getPath();
>> - int line = msg.getLine();
>> - int column = msg.getColumn();
>> -
>> - if (path != null) {
>> - Matcher matcher = errPattern.matcher(path);
>> - if (matcher.find()) {
>> - String classnm = matcher.group(1);
>> - TranslationUnit tunit = locateTranslationUnit(classnm);
>> - lastError = new ExternalCompilerError(tunit, line, column,
>> path, msg.toString(), source);
>> - errors.add(lastError);
>> - }
>> - }
>> -
>> - }
>> -
>> - public List getErrors() {
>> - return errors;
>> - }
>> -
>> -
>> - }
>> -
>> /**
>> - * Run the Flex compiler via the Builder API
>> + * Run the compiler using the command/arguments in cmd.
>> * Collect and report any errors, and check for the existence
>> * of the output file.
>> * @throw CompilerError if there are errors messages from the external
>> * compiler, or if any part of the compilation process has
>> problems
>> */
>> - public void buildAndProcessErrors(Builder builder, List tunits,
>> String outfilename)
>> + public void execCompileCommand(List cmd, String dir, List tunits,
>> + String outfileName)
>> throws IOException // TODO: [2007-11-20 dda] clean up,
>> why catch only some exceptions?
>> {
>> - FlexLogger logger = new FlexLogger(tunits);
>> + String[] cmdstr = (String[])cmd.toArray(new String[0]);
>> + String prettycmd = prettyCommand(cmd);
>> + System.err.println("Executing compiler: (cd " + dir + "; " +
>> prettycmd + ")");
>> + String bigErrorString = "";
>> + int bigErrorCount = 0;
>>
>> - // Receives compiler warnings and errors, via the Logger api
>> - builder.setLogger(logger);
>> + // Generate a small script (unix style) to document how
>> + // to build this batch of files.
>> + String buildsh = "#!/bin/sh\n";
>> + buildsh += "cd " + dir + "\n";
>> + buildsh += prettycmd + "\n";
>> + Compiler.emitFile(workDirectoryName("build.sh"), buildsh);
>>
>> - // TODO [2008-06-04 hqm] This is setting "incremental compile" to
>> - // true, which won't really help but seems like it can't do any
>> - // harm, right? Someday if we use the VirtualLocalFileSystem API
>> - // then we could do incremental compiles.
>> - long exitval = builder.build(true);
>> + Process proc = Runtime.getRuntime().exec(cmdstr, null, null);
>> + try {
>> + OutputStream os = proc.getOutputStream();
>> + OutputCollector outcollect = new
>> OutputCollector(proc.getInputStream());
>> + ExternalCompilerErrorCollector errcollect = new
>> ExternalCompilerErrorCollector(proc.getErrorStream(), tunits);
>> + os.close();
>> + outcollect.start();
>> + errcollect.start();
>> + int exitval = proc.waitFor();
>> + outcollect.join();
>> + errcollect.join();
>>
>> - String bigErrorString = "";
>> - int bigErrorCount = 0;
>> + if (outcollect.getException() != null) {
>> + System.err.println("Error collecting compiler output: " +
>> outcollect.getException());
>> + // TODO: [2007-11-20 dda] log this
>> + }
>> + String compilerOutput = outcollect.getOutput();
>> + if (compilerOutput.length() > 0) {
>> + System.err.println("compiler output:\n" + compilerOutput);
>> + }
>>
>> - List errs = logger.getErrors();
>> - if (errs.size() > 0) {
>> - System.err.println("ERRORS: ");
>> - for (Iterator iter = errs.iterator(); iter.hasNext(); ) {
>> - ExternalCompilerError err = (ExternalCompilerError)iter.next();
>> - TranslationUnit tunit = err.getTranslationUnit();
>> - String srcLineStr;
>> - int srcLine;
>> + if (errcollect.getException() != null) {
>> + System.err.println("Error collecting compiler output: " +
>> errcollect.getException());
>> + // TODO: [2007-11-20 dda] log this
>> + }
>> + List errs = errcollect.getErrors();
>> + if (errs.size() > 0) {
>> + System.err.println("ERRORS: ");
>> + for (Iterator iter = errs.iterator(); iter.hasNext(); ) {
>> + ExternalCompilerError err =
>> (ExternalCompilerError)iter.next();
>> + TranslationUnit tunit = err.getTranslationUnit();
>> + String srcLineStr;
>> + int srcLine;
>>
>> - // actualSrcLine is the name/linenumber of the actual files
>> - // used in compilation, not the original sources.
>> - String actualSrcFile = null;
>> - if (tunit == null) {
>> - actualSrcFile = "(unknown)";
>> - }
>> - else {
>> - actualSrcFile = tunit.getSourceFileName();
>> - if (actualSrcFile == null)
>> - actualSrcFile = "(" + tunit.getName() + ")";
>> - }
>> + // actualSrcLine is the name/linenumber of the actual files
>> + // used in compilation, not the original sources.
>> + String actualSrcFile = null;
>> + if (tunit == null) {
>> + actualSrcFile = "(unknown)";
>> + }
>> + else {
>> + actualSrcFile = tunit.getSourceFileName();
>> + if (actualSrcFile == null)
>> + actualSrcFile = "(" + tunit.getName() + ")";
>> + }
>>
>> - String actualSrcLine = "[" + actualSrcFile + ": " +
>> err.getLineNumber() + "] ";
>> + String actualSrcLine = "[" + actualSrcFile + ": " +
>> err.getLineNumber() + "] ";
>>
>> - if (tunit == null ||
>> - ((srcLine =
>> tunit.originalLineNumber(err.getLineNumber())) <= 0)) {
>> - srcLineStr = "line unknown: ";
>> - }
>> - else {
>> - srcLineStr = "line " + String.valueOf(srcLine) + ": ";
>> - }
>> - System.err.println(actualSrcLine + srcLineStr +
>> err.getErrorString());
>> + if (tunit == null ||
>> + ((srcLine =
>> tunit.originalLineNumber(err.getLineNumber())) <= 0)) {
>> + srcLineStr = "line unknown: ";
>> + }
>> + else {
>> + srcLineStr = "line " + String.valueOf(srcLine) + ": ";
>> + }
>> + System.err.println(actualSrcLine + srcLineStr +
>> err.getErrorString());
>>
>> - // bigErrorString will be passed as an exception.
>> - if (bigErrorString.length() > 0) {
>> - bigErrorString += "\n";
>> + // bigErrorString will be passed as an exception.
>> + if (bigErrorString.length() > 0) {
>> + bigErrorString += "\n";
>> + }
>> + bigErrorCount++;
>> + if (bigErrorCount < MAX_ERRORS_SHOWN) {
>> + bigErrorString += srcLineStr + err.cleanedErrorString();
>> + }
>> + else if (bigErrorCount == 50) {
>> + bigErrorString += ".... more than " + MAX_ERRORS_SHOWN +
>> + " errors, additional errors not shown.";
>> + }
>> }
>> - bigErrorCount++;
>> - if (bigErrorCount < MAX_ERRORS_SHOWN) {
>> - bigErrorString += srcLineStr + err.cleanedErrorString();
>> - }
>> - else if (bigErrorCount == 50) {
>> - bigErrorString += ".... more than " + MAX_ERRORS_SHOWN +
>> - " errors, additional errors not shown.";
>> - }
>> }
>> - }
>>
>> - if (!(exitval > 0)) {
>> - System.err.println("FAIL: compiler returned " + exitval);
>> + if (exitval != 0) {
>> + System.err.println("FAIL: compiler returned " + exitval);
>> + }
>> }
>> + catch (InterruptedException ie) {
>> + throw new CompilerError("Interrupted compiler");
>> + }
>> System.err.println("Done executing compiler");
>> - if (!new File(outfilename).exists()) {
>> - System.err.println("Intermediate file " + outfilename + ":
>> does not exist");
>> + if (!new File(outfileName).exists()) {
>> + System.err.println("Intermediate file " + outfileName + ":
>> does not exist");
>> if (bigErrorString.length() > 0) {
>> throw new CompilerError(bigErrorString);
>> }
>> @@ -540,71 +589,60 @@
>> public byte[] compileTranslationUnits(List tunits, boolean
>> buildSharedLibrary)
>> throws IOException
>> {
>> + List cmd = new ArrayList();
>> String outfilebase;
>> - Builder builder;
>> - ArrayList files = new ArrayList();
>> + String exeSuffix = isWindows() ? ".exe" : "";
>> +
>> + if (buildSharedLibrary) {
>> + outfilebase = "app.swc";
>> + cmd.add(getFlexPathname("bin/compc" + exeSuffix));
>> + }
>> + else {
>> + outfilebase = "app.swf";
>> + cmd.add(getFlexPathname("bin/mxmlc" + exeSuffix));
>> + }
>>
>> - // Collect up the file (or files, for a library) we are compiling
>> + String outfilename = workdir.getPath() + File.separator +
>> outfilebase;
>> + boolean swf9Warnings = getLPSBoolean("compiler.swf9.warnings",
>> true);
>> +
>> + if (!swf9Warnings) {
>> + cmd.add("-compiler.show-actionscript-warnings=false");
>> + }
>> +
>> + cmd.add("-compiler.source-path+=" + workdir.getPath());
>> + if (USE_COMPILER_DEBUG_FLAG) {
>> + cmd.add("-debug=true");
>> + }
>> + cmd.add("-output");
>> + cmd.add(outfilename);
>> +
>> + if (!buildSharedLibrary) {
>> + cmd.add("-default-size");
>> + cmd.add(options.get(Compiler.CANVAS_WIDTH, "800"));
>> + cmd.add(options.get(Compiler.CANVAS_HEIGHT, "600"));
>> + cmd.add("-library-path+=" + getLFCLibrary());
>> + }
>> + else {
>> + // must be last before list of classes to follow.
>> + cmd.add("-include-classes");
>> + }
>> +
>> for (Iterator iter = tunits.iterator(); iter.hasNext(); ) {
>> TranslationUnit tunit = (TranslationUnit)iter.next();
>> +
>> // For the application, we just list the main .as file
>> // For a library, we list all the classes.
>> if (!buildSharedLibrary) {
>> if (tunit.isMainTranslationUnit()) {
>> - files.add(new File(workdir.getPath() + File.separator +
>> tunit.getName()+".as"));
>> + cmd.add(workdir.getPath() + File.separator +
>> tunit.getName()+".as");
>> }
>> - } else {
>> - files.add(new File(tunit.getName()));
>> }
>> - }
>> -
>> - // Set compiler config options
>> - Configuration config;
>> - String outfilename;
>> -
>> - if (buildSharedLibrary) {
>> - // For a library, add all the 'components'
>> - builder = new Library();
>> - config = builder.getDefaultConfiguration();
>> - for (int i = 0; i < files.size(); i++) {
>> -
>> ((Library)builder).addComponent(((File)(files.get(i))).getName());
>> + else {
>> + cmd.add(tunit.getName());
>> }
>> - outfilebase = "app.swc";
>> - outfilename = workdir.getPath() + File.separator + outfilebase;
>> - ((Library)builder).setOutput(new File(outfilename));
>> }
>> - else {
>> - // For an application, compile just one 'main' class
>> - builder = new Application((File) files.get(0));
>> - config = builder.getDefaultConfiguration();
>> - outfilebase = "app.swf";
>> - outfilename = workdir.getPath() + File.separator + outfilebase;
>> - ((Application)builder).setOutput(new File(outfilename));
>> -
>> - }
>> -
>> - boolean swf9Warnings = getLPSBoolean("compiler.swf9.warnings",
>> true);
>> -
>> - // set reporting of warnings
>> - config.showActionScriptWarnings(swf9Warnings);
>> - config.showBindingWarnings(swf9Warnings);
>> - config.showShadowedDeviceFontWarnings(swf9Warnings);
>> - config.showUnusedTypeSelectorWarnings(swf9Warnings);
>> -
>> - // Append path using the 'source-path+=' option
>> - config.addSourcePath(new File[] {workdir});
>> -
>> - config.enableDebugging(USE_COMPILER_DEBUG_FLAG, "");
>>
>> - if (!buildSharedLibrary) {
>> -
>> config.setDefaultSize(safeInt((String)(options.get(Compiler.CANVAS_WIDTH,
>> "800"))),
>> -
>> safeInt((String)(options.get(Compiler.CANVAS_HEIGHT, "600"))));
>> -
>> - config.addLibraryPath(new File[] {new File(getLFCLibrary())});
>> - }
>> -
>> - builder.setConfiguration(config);
>> - buildAndProcessErrors(builder, tunits, outfilename);
>> + execCompileCommand(cmd, workdir.getPath(), tunits, outfilename);
>> return getBytes(outfilename);
>> }
>>
>>
>> Modified: openlaszlo/trunk/installer/macosx/OpenLaszlo
>> Explorer.command.proto
>> ===================================================================
>> --- openlaszlo/trunk/installer/macosx/OpenLaszlo
>> Explorer.command.proto 2008-06-23 19:03:53 UTC (rev 9895)
>> +++ openlaszlo/trunk/installer/macosx/OpenLaszlo
>> Explorer.command.proto 2008-06-23 19:14:19 UTC (rev 9896)
>> @@ -1,10 +1,11 @@
>> #!/bin/bash
>> # * P_LZ_COPYRIGHT_BEGIN
>> ******************************************************
>> -# * Copyright 2001-2004 Laszlo Systems, Inc. All Rights
>> Reserved. *
>> +# * Copyright 2001-2004, 2008 Laszlo Systems, Inc. All Rights
>> Reserved. *
>> # * Use is subject to license
>> terms. *
>> # * P_LZ_COPYRIGHT_END
>> ********************************************************
>> my_home=`dirname "$0"`
>> tomcat_home=$my_home/Server/@TOMCAT@
>> +export FLEX_HOME="$my_home/Server/lps- at VERSIONID@/WEB-INF"
>> url=`echo
>> file://${my_home}/Server/lps-@VERSIONID@/lps/utils/startup-static.html
>> | sed "s/ /%20/g"`
>> open $url
>> env JAVA_OPTS="-Dcom.apple.backgroundOnly=true
>> -Djava.awt.headless=true" JAVA_HOME=/usr
>> "${tomcat_home}/bin/catalina.sh" run
>>
>> Modified: openlaszlo/trunk/installer/macosx/Start OpenLaszlo
>> Server.command.proto
>> ===================================================================
>> --- openlaszlo/trunk/installer/macosx/Start OpenLaszlo
>> Server.command.proto 2008-06-23 19:03:53 UTC (rev 9895)
>> +++ openlaszlo/trunk/installer/macosx/Start OpenLaszlo
>> Server.command.proto 2008-06-23 19:14:19 UTC (rev 9896)
>> @@ -1,9 +1,10 @@
>> #!/bin/bash
>> # * P_LZ_COPYRIGHT_BEGIN
>> ******************************************************
>> -# * Copyright 2001-2004 Laszlo Systems, Inc. All Rights
>> Reserved. *
>> +# * Copyright 2001-2004, 2008 Laszlo Systems, Inc. All Rights
>> Reserved. *
>> # * Use is subject to license
>> terms. *
>> # * P_LZ_COPYRIGHT_END
>> ********************************************************
>> my_home=`dirname "$0"`
>> -tomcat_home=$my_home/Server/@TOMCAT@
>> +tomcat_home="$my_home/Server/@TOMCAT@"
>> +export FLEX_HOME="$my_home/Server/lps- at VERSIONID@/WEB-INF"
>> url=`echo
>> file://${my_home}/lps-@VERSIONID@/lps/utils/startup-static.html | sed
>> "s/ /%20/g"`
>> env JAVA_OPTS="-Dcom.apple.backgroundOnly=true
>> -Djava.awt.headless=true" JAVA_HOME=/usr
>> "${tomcat_home}/bin/catalina.sh" run
>>
>> Modified: openlaszlo/trunk/installer/macosx/mkpkg.sh
>> ===================================================================
>> --- openlaszlo/trunk/installer/macosx/mkpkg.sh 2008-06-23 19:03:53
>> UTC (rev 9895)
>> +++ openlaszlo/trunk/installer/macosx/mkpkg.sh 2008-06-23 19:14:19
>> UTC (rev 9896)
>> @@ -1,6 +1,6 @@
>> #!/bin/sh
>> # * P_LZ_COPYRIGHT_BEGIN
>> ******************************************************
>> -# * Copyright 2001-2004 Laszlo Systems, Inc. All Rights
>> Reserved. *
>> +# * Copyright 2001-2004, 2008 Laszlo Systems, Inc. All Rights
>> Reserved. *
>> # * Use is subject to license
>> terms. *
>> # * P_LZ_COPYRIGHT_END
>> ********************************************************
>>
>> @@ -14,6 +14,11 @@
>> PKG="$BASE.pkg"
>> NAME="OpenLaszlo Server $VERSION"
>>
>> +# Make flex utils and LPS utils executable
>> +# because ant won't do it for us.
>> +/bin/chmod a+x
>> "$LPS_HOME/lps-$VERSION/Server/lps-$VERSION/WEB-INF/bin/"*
>> +/bin/chmod a+x
>> "$LPS_HOME/lps-$VERSION/Server/lps-$VERSION/WEB-INF/lps/server/bin/"*
>> +
>> /bin/rm -rf /tmp/$PKG
>> /bin/mkdir /tmp/$PKG
>> /bin/mkdir /tmp/$PKG/Contents
>>
>>
>> _______________________________________________
>> Laszlo-checkins mailing list
>> Laszlo-checkins at openlaszlo.org
>> http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins
>
More information about the Laszlo-dev
mailing list