×

Discussion Board

Results 1 to 7 of 7
  1. #1
    Registered User
    Join Date
    Feb 2006
    Location
    Moscow, Russia
    Posts
    24

    Bug in epocaifdef.pl

    Recently I've downloaded Carbide.c++ Express Edition and start to evaluate it compiling HelloWorld application from the tutorial. Carbide.c++ Express Edition runs wrapper named epocaifdef.pl which in turn runs epocaif.pl to produce an output .AIF file. That operation was failed due the root folder of my drive C: was used as temporary directory for intermediate files. I run my WindowsXP as ordinary user, not as Administrator, so I have no rights to modify root folder in any way and I got "permission denied" in the Console window.

    Investigating scripts epocaifdef.pl and epocaif.pl I found the command line option `-t' to specify temporary directory but when I specified it in the Project Properties for C/C++ Build, AIF Compiler/General Options branch, I got the same "permission denied". Going further I caught a bug in the epocaifdef.pl code: it completely ignores the value which `-t' says and starts epocaif.pl with no temporary directory specified. There is a patch I have made for epocaifdef.pl that solves the problem. The value for `-t' option is not ignored any more and even if no `-t' option specified at all the value of %TMP% system environment variable is used. Otherwise epocaif.pl would use the root folder as temporary directory and this is not possible for ordinary users having no read/write rights for that folder.


    epocaifdef.pl is located in "\Program Files\Carbide\Plugins\com.symbian.cdt.sdk_1.0.0\scripts\epocaifdef.pl

    Code:
    --- epocaifdef.pl.orig	Fri Feb 17 16:38:06 2006
    +++ epocaifdef.pl	Thu Feb 23 21:03:29 2006
    @@ -44,6 +44,7 @@
     my $opt_v=0;
     my $opt_I="";
     my $opt_p="";
    +my $tmpdir="";
     
     my $errors = 0;
     while (@ARGV)
    @@ -111,6 +112,11 @@
     	exit 1;
     	}
     
    +if ($tmpdir eq "")
    +	{
    +	$tmpdir = $ENV{"TMP"};
    +	}
    +
     if ($opt_o eq "")
         {
         my $rss_base = basename($sourcefile);
    @@ -197,7 +203,7 @@
         }
     $bitmapFiles .= "\"";
     
    -my $aifCommand = "perl -S epocaif.pl -o$opt_o $opt_I $rssSrcFile ";
    +my $aifCommand = "perl -S epocaif.pl -t$tmpdir -o$opt_o $opt_I $rssSrcFile ";
     
     if ($mbmSrcFile ne "")
     	{

  2. #2
    Nokia Developer Expert
    Join Date
    Oct 2004
    Location
    Austin, TX USA
    Posts
    271

    Re: Bug in epocaifdef.pl

    Thank you for letting us know. Another user was also kind enough to post a solution to this problem. Please see this thread:

    http://discussion.forum.nokia.com/fo...ad.php?t=75013

    We'll try to resolve this in our next release.

    Regards,

    Matt P.

  3. #3
    Regular Contributor
    Join Date
    Sep 2006
    Posts
    98

    Re: Bug in epocaifdef.pl

    I also faced the same problem. I am using the Carbide.c++ Pro v1.1.
    When is the problem fixed?

  4. #4
    Regular Contributor
    Join Date
    Sep 2006
    Posts
    98

    Re: Bug in epocaifdef.pl

    Seems my problem is different from the one reported here.
    I don't have the permision denied problem. It seems the temp directory path is passed to the script correctly.

    The problem I have is that if I have more than one systeminclude path, aif compilation fails. If I reduce the systeminclude path to one, it compiles.(of course in this case, it fails in other place ) I also tried this with the example app. The same thing happened.

    Is this new problem or known? At least I coudn't find any other information in this regard. Thanks a lot for your help.

  5. #5
    Nokia Developer Expert
    Join Date
    Oct 2004
    Location
    Austin, TX USA
    Posts
    271

    Re: Bug in epocaifdef.pl

    This was fixed and the fix was verified during the Carbide.c++ v1.1 beta period. The script should now use the TMP environment variable for the temporary directory by default. If the -t parameter is specified in the Additional Options field instead that will override the value of TMP. Have you specified a temporary directory with the -t parameter or set your TMP variable?

    Regards,

    Matt P.

  6. #6
    Regular Contributor
    Join Date
    Sep 2006
    Posts
    98

    Re: Bug in epocaifdef.pl

    Just to add info to explain the problem I have:

    I am using S60 2nd edition SP3 SDK
    For example, I compiled the following project
    \Symbian\8.1a\S60_2nd_FP3\Series60Ex\fetching\

    This project has three system include paths

    SYSTEMINCLUDE . \epoc32\include \epoc32\include\ecom

    Then import the mmp file to Carbide. c++ and compile it.
    I get the following error messages.
    'Building file: Z:/Symbian/8.1a/S60_2nd_FP3/Series60Ex/fetching/aif/fetching.aifdef'
    'Invoking: AIF Compiler'
    perl -S epocaifdef.pl -I- -I"Z:\Symbian\8.1a\S60_2nd_FP3\epoc32\include" -I"Z:\Symbian\8.1a\S60_2nd_FP3\Series60Ex\fetching\group" -I"Z:\Symbian\8.1a\S60_2nd_FP3\epoc32\include\ecom" -o"Z:/Symbian/8.1a/S60_2nd_FP3/EPOC32/RELEASE/WINSCW/UDEB/Z/system/apps/fetching/fetching.aif" Z:/Symbian/8.1a/S60_2nd_FP3/Series60Ex/fetching/aif/fetching.aifdef
    Z:\Symbian\8.1a\S60_2nd_FP3\epoc32\include-IZ:\Symbian\8.1a\S60_2nd_FP3\Series60Ex\fetching\group-IZ:\Symbian\8.1a\S60_2nd_FP3\epoc32\include\ecom\.: Invalid argument
    * cpp failed
    make: *** [Z:/Symbian/8.1a/S60_2nd_FP3/EPOC32/RELEASE/WINSCW/UDEB/Z/system/apps/fetching/fetching.aif] Error 1
    * epocaif.pl failed

    This problem didn't occur when I am compiling a project which has only one systeminclude path and aif is built without any errors. So I don't think this is because of my environment or so.

  7. #7
    Regular Contributor
    Join Date
    Sep 2006
    Posts
    98

    Smile Re: Bug in epocaifdef.pl

    I found the solution for this.

    It seems it is because epocaifdef.pl doesn't handle the -I option correctly(doesn't feed one space between -I options), when there are more than one -I arguments, it becomes "invalid" format and fails.

    my solution is:

    epocaifdef.pl on line 76

    ----old
    $opt_I .= $arg;
    ----new
    $opt_I .= $arg." ";

    That's it. It works fine on my environment.

Similar Threads

  1. Possible bug in the JavaVM on 6630
    By snillfisk in forum Mobile Java General
    Replies: 1
    Last Post: 2005-01-06, 16:51
  2. Serious BUG in Nokia phones!!!
    By bartekn in forum Mobile Java Media (Graphics & Sounds)
    Replies: 10
    Last Post: 2004-03-28, 22:09
  3. A bug: setColor with offscreen graphics - PLEASE, REPLY THIS TIME
    By palmcrust in forum Mobile Java General
    Replies: 11
    Last Post: 2003-12-04, 12:43
  4. Firmware bug or code bug displaying list on 3650
    By blackjack75 in forum Mobile Java General
    Replies: 2
    Last Post: 2003-09-24, 19:52
  5. Replies: 8
    Last Post: 2003-07-11, 12:56

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
×