www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - optlink: file not found _CDMLINE (tango,wine)

reply Lutger <lutger.blijdestijn gmail.com> writes:
I've setup a windows version of dmd with phobos, tango and dsss on wine
(PcLinuxOS i686). dmd+phobos with dsss works fine, but with tango I get
this optlink error:

OPTLINK : Error 2: File Not Found _CMDLINE
--- errorlevel 1

After some google-fu, I found out that CMDLINE is used to pass long
arguments to the linker. After this however, I got stuck. Can anybody help
me out? Do I need to provide more information in order to make that
possible? 
Jan 29 2008
next sibling parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
Lutger wrote:

 I've setup a windows version of dmd with phobos, tango and dsss on wine
 (PcLinuxOS i686). dmd+phobos with dsss works fine, but with tango I get
 this optlink error:
 
 OPTLINK : Error 2: File Not Found _CMDLINE
 --- errorlevel 1
 
 After some google-fu, I found out that CMDLINE is used to pass long
 arguments to the linker. After this however, I got stuck. Can anybody help
 me out? Do I need to provide more information in order to make that
 possible?

I saw a similar thing when I tested wine, maybe rebuild is doing the wrong thing there? -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Jan 29 2008
next sibling parent Lutger <lutger.blijdestijn gmail.com> writes:
Lars Ivar Igesund wrote:

 Lutger wrote:
 
 I've setup a windows version of dmd with phobos, tango and dsss on wine
 (PcLinuxOS i686). dmd+phobos with dsss works fine, but with tango I get
 this optlink error:
 
 OPTLINK : Error 2: File Not Found _CMDLINE
 --- errorlevel 1
 
 After some google-fu, I found out that CMDLINE is used to pass long
 arguments to the linker. After this however, I got stuck. Can anybody
 help me out? Do I need to provide more information in order to make that
 possible?

I saw a similar thing when I tested wine, maybe rebuild is doing the wrong thing there?

Apparently it is an environment variable passed to link.exe. I found the following snippet in link.c in both the rebuild and dmd source code. I'm still not sure what is going on though: #if _WIN32 int executecmd(char *cmd, char *args, int useenv) { int status; char *buff; size_t len; if (!global.params.quiet || global.params.verbose) { printf("%s %s\n", cmd, args); fflush(stdout); } if ((len = strlen(args)) > 255) { char *q; static char envname[] = " _CMDLINE"; envname[0] = ' '; switch (useenv) { case 0: goto L1; case 2: envname[0] = '%'; break; } q = (char *) alloca(sizeof(envname) + len + 1); sprintf(q,"%s=%s", envname + 1, args); status = putenv(q); if (status == 0) args = envname; else { L1: 0; //error("command line length of %d is too long",len); } } status = executearg0(cmd,args); #if _WIN32 if (status == -1) status = spawnlp(0,cmd,cmd,args,NULL); #endif // if (global.params.verbose) // printf("\n"); if (status) { if (status == -1) printf("Can't run '%s', check PATH\n", cmd); else printf("--- errorlevel %d\n", status); } return status; } #endif
Jan 29 2008
prev sibling parent reply Lutger <lutger.blijdestijn gmail.com> writes:
This _CMDLINE problem isn't related to tango, it also happens with phobos on
wine if the command lines to compile are long enough.

However, I got a hello world tango program to compile and it crashes with an
exception (access violation). This happens at the end of the program. Is it
ok to file this as a ticket for tango?

Someday I hope this stuff will work, when it does I will make a wine-doors
package. 
 
Jan 30 2008
parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
Lutger wrote:

 This _CMDLINE problem isn't related to tango, it also happens with phobos
 on wine if the command lines to compile are long enough.
 
 However, I got a hello world tango program to compile and it crashes with
 an exception (access violation). This happens at the end of the program.
 Is it ok to file this as a ticket for tango?

If it is reproducable under windows, sure. The examples I tried worked fine though, so you may have hit upon a wine bug. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Jan 30 2008
parent Lutger <lutger.blijdestijn gmail.com> writes:
Lars Ivar Igesund wrote:

 Lutger wrote:
 
 This _CMDLINE problem isn't related to tango, it also happens with phobos
 on wine if the command lines to compile are long enough.
 
 However, I got a hello world tango program to compile and it crashes with
 an exception (access violation). This happens at the end of the program.
 Is it ok to file this as a ticket for tango?

If it is reproducable under windows, sure. The examples I tried worked fine though, so you may have hit upon a wine bug.

Yes most probably it is. If I can find out more about it, I'll report it to the wine developers.
Jan 30 2008
prev sibling next sibling parent reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"Lutger" <lutger.blijdestijn gmail.com> wrote in message 
news:fnn879$22ke$1 digitalmars.com...
 I've setup a windows version of dmd with phobos, tango and dsss on wine
 (PcLinuxOS i686). dmd+phobos with dsss works fine, but with tango I get
 this optlink error:

 OPTLINK : Error 2: File Not Found _CMDLINE
 --- errorlevel 1

 After some google-fu, I found out that CMDLINE is used to pass long
 arguments to the linker. After this however, I got stuck. Can anybody help
 me out? Do I need to provide more information in order to make that
 possible?

I suppose another question is why you're using DMDWin on Linux in the first place..
Jan 29 2008
parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
Jarrett Billingsley wrote:

 "Lutger" <lutger.blijdestijn gmail.com> wrote in message
 news:fnn879$22ke$1 digitalmars.com...
 I've setup a windows version of dmd with phobos, tango and dsss on wine
 (PcLinuxOS i686). dmd+phobos with dsss works fine, but with tango I get
 this optlink error:

 OPTLINK : Error 2: File Not Found _CMDLINE
 --- errorlevel 1

 After some google-fu, I found out that CMDLINE is used to pass long
 arguments to the linker. After this however, I got stuck. Can anybody
 help me out? Do I need to provide more information in order to make that
 possible?

I suppose another question is why you're using DMDWin on Linux in the first place..

To be able to test software for Windows without having to stop by that, uhm, OS? -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Jan 29 2008
parent "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"Lars Ivar Igesund" <larsivar igesund.net> wrote in message 
news:fnnbuk$2cho$3 digitalmars.com...
 To be able to test software for Windows without having to stop by that, 
 uhm,
 OS?

Good point :)
Jan 29 2008
prev sibling parent WasserDragoon <danny.trunk gmx.de> writes:
Lutger Wrote:

 I've setup a windows version of dmd with phobos, tango and dsss on wine
 (PcLinuxOS i686). dmd+phobos with dsss works fine, but with tango I get
 this optlink error:
 
 OPTLINK : Error 2: File Not Found _CMDLINE
 --- errorlevel 1
 
 After some google-fu, I found out that CMDLINE is used to pass long
 arguments to the linker. After this however, I got stuck. Can anybody help
 me out? Do I need to provide more information in order to make that
 possible? 

Now Wine 0.9.55 is available, but the bug exists anymore :-( No news here with this topic? I got the same problem...
Feb 19 2008