www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Problem with rdmd

reply "eles" <eles eles.com> writes:
On Linux 64

$chmod +x htest
$cat ./htest

import std.stdio;

void main() {
	writeln("hello world!");
}

then:

$./htest
Error: cannot read file ./htest.d
Failed: 'dmd' '-v' '-o-' './htest.d' '-I.'

OTOH:

$cp htest htest.d
$./htest.d
hello world!

It seems that rdmd expects the script to bear the .d extension. 
This is not a very good choice, at least when writing git helper 
scripts.

For example, a "$git command" command would eventually try to 
execute the executable (script):

$git-command

The problem is that that line expects git-command, not 
git-command.d.

A workaround for this?

Thanks
Aug 30 2013
next sibling parent reply "anonymous" <anonymous example.com> writes:
On Friday, 30 August 2013 at 07:39:41 UTC, eles wrote:
 On Linux 64

 $chmod +x htest
 $cat ./htest

 import std.stdio;

 void main() {
 	writeln("hello world!");
 }

 then:

 $./htest
 Error: cannot read file ./htest.d
 Failed: 'dmd' '-v' '-o-' './htest.d' '-I.'

 OTOH:

 $cp htest htest.d
 $./htest.d
 hello world!

 It seems that rdmd expects the script to bear the .d extension. 
 This is not a very good choice
yup [...]
 A workaround for this?
ln htest htest.d
Aug 30 2013
parent "eles" <eles eles.com> writes:
On Friday, 30 August 2013 at 07:56:14 UTC, anonymous wrote:
 On Friday, 30 August 2013 at 07:39:41 UTC, eles wrote:
 A workaround for this?
ln htest htest.d
Thanks.
Aug 30 2013
prev sibling next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2013-08-30 09:39, eles wrote:
 On Linux 64

 $chmod +x htest
 $cat ./htest

 import std.stdio;

 void main() {
      writeln("hello world!");
 }

 then:

 $./htest
 Error: cannot read file ./htest.d
 Failed: 'dmd' '-v' '-o-' './htest.d' '-I.'

 OTOH:

 $cp htest htest.d
 $./htest.d
 hello world!

 It seems that rdmd expects the script to bear the .d extension.
I'm pretty sure it's DMD that is the problem. -- /Jacob Carlborg
Aug 30 2013
parent reply "eles" <eles eles.com> writes:
On Friday, 30 August 2013 at 11:34:59 UTC, Jacob Carlborg wrote:
 On 2013-08-30 09:39, eles wrote:

 I'm pretty sure it's DMD that is the problem.
Yes. But that's, the least to say, limiting. This: https://github.com/D-Programming-Language/tools/blob/master/rdmd.d#L160 should be solved in other manner. Maybe creating a temporary copy. Or forcing dmd in some ways. Besides, for what reasons dmd would impose a .d extension?
Aug 30 2013
next sibling parent reply "Dicebot" <public dicebot.lv> writes:
On Friday, 30 August 2013 at 13:32:25 UTC, eles wrote:
 On Friday, 30 August 2013 at 11:34:59 UTC, Jacob Carlborg wrote:
 On 2013-08-30 09:39, eles wrote:

 I'm pretty sure it's DMD that is the problem.
Yes. But that's, the least to say, limiting. This: https://github.com/D-Programming-Language/tools/blob/master/rdmd.d#L160 should be solved in other manner. Maybe creating a temporary copy. Or forcing dmd in some ways. Besides, for what reasons dmd would impose a .d extension?
This is an ancient dmd misfeature - it treats `dmd test` as `dmd test.d`, adding .d silently. No idea if someone actually wants this behavior..
Aug 31 2013
parent "eles" <eles eles.com> writes:
On Saturday, 31 August 2013 at 12:01:48 UTC, Dicebot wrote:
 On Friday, 30 August 2013 at 13:32:25 UTC, eles wrote:
 On Friday, 30 August 2013 at 11:34:59 UTC, Jacob Carlborg 
 wrote:
 On 2013-08-30 09:39, eles wrote:
This is an ancient dmd misfeature - it treats `dmd test` as `dmd test.d`, adding .d silently. No idea if someone actually wants this behavior..
Bump...
Oct 01 2013
prev sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 8/30/13 6:32 AM, eles wrote:
 On Friday, 30 August 2013 at 11:34:59 UTC, Jacob Carlborg wrote:
 On 2013-08-30 09:39, eles wrote:

 I'm pretty sure it's DMD that is the problem.
Yes. But that's, the least to say, limiting. This: https://github.com/D-Programming-Language/tools/blob/master/rdmd.d#L160 should be solved in other manner. Maybe creating a temporary copy. Or forcing dmd in some ways. Besides, for what reasons dmd would impose a .d extension?
One possible solution would be for rdmd to create a link in its temporary directory to the original file. (The link would have a .d extension.) Andrei
Aug 31 2013
parent "eles" <eles eles.com> writes:
On Saturday, 31 August 2013 at 17:42:21 UTC, Andrei Alexandrescu 
wrote:
 On 8/30/13 6:32 AM, eles wrote:
 On Friday, 30 August 2013 at 11:34:59 UTC, Jacob Carlborg 
 wrote:
 On 2013-08-30 09:39, eles wrote:
One possible solution would be for rdmd to create a link in its temporary directory to the original file. (The link would have a .d extension.)
Isn't more reasonable to change dmd's behavior?
Sep 05 2013
prev sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2013-08-30 09:39, eles wrote:
 On Linux 64

 $chmod +x htest
 $cat ./htest

 import std.stdio;

 void main() {
      writeln("hello world!");
 }

 then:

 $./htest
 Error: cannot read file ./htest.d
 Failed: 'dmd' '-v' '-o-' './htest.d' '-I.'

 OTOH:

 $cp htest htest.d
 $./htest.d
 hello world!

 It seems that rdmd expects the script to bear the .d extension. This is
 not a very good choice, at least when writing git helper scripts.

 For example, a "$git command" command would eventually try to execute
 the executable (script):

 $git-command

 The problem is that that line expects git-command, not git-command.d.

 A workaround for this?
Why don't just compile it manually once instead of using like a script? -- /Jacob Carlborg
Aug 31 2013
parent "eles" <eles eles.com> writes:
Bah, what would be the meaning of accepting the shebang syntax 
then? SCripts are made to provide a quick way to hack: you edit 
it for 5 mins, you run it. You change a parameter inside, you run 
it. Otherwise, there would be no need for scripts, everything 
could be compiled, even if you fill everything with system() 
statements.

On Saturday, 31 August 2013 at 11:08:57 UTC, Jacob Carlborg wrote:
 On 2013-08-30 09:39, eles wrote:
 On Linux 64

 $chmod +x htest
 $cat ./htest

 import std.stdio;

 void main() {
     writeln("hello world!");
 }

 then:

 $./htest
 Error: cannot read file ./htest.d
 Failed: 'dmd' '-v' '-o-' './htest.d' '-I.'

 OTOH:

 $cp htest htest.d
 $./htest.d
 hello world!

 It seems that rdmd expects the script to bear the .d 
 extension. This is
 not a very good choice, at least when writing git helper 
 scripts.

 For example, a "$git command" command would eventually try to 
 execute
 the executable (script):

 $git-command

 The problem is that that line expects git-command, not 
 git-command.d.

 A workaround for this?
Why don't just compile it manually once instead of using like a script?
Sep 01 2013