digitalmars.D - rdmd problem
- Comrad (24/28) Apr 01 2019 #!/usr/bin/env rdmd -version=test
- Seb (5/33) Apr 01 2019 Shebang only supports one argument on your OS.
- Seb (5/11) Apr 01 2019 To extend on this: as this is a well-known limitation, rdmd has
- Andre Pany (11/39) Apr 01 2019 I am not sure wheter compiler arguments works at the shebang
- Andrei Alexandrescu (3/4) Apr 01 2019 Yah, that's the problem. I added the option --shebang
- Comrad (16/23) Apr 05 2019 So...
- Andrei Alexandrescu (2/5) Apr 05 2019 Yes, these are conflicting. Can you please make the documentation change...
- Comrad (8/51) Apr 05 2019 Sorry,
- Andre Pany (18/41) Apr 05 2019 No problem:)
- Seb (3/22) Apr 05 2019 Also, in more recent versions of dub the "name" field got
- Andre Pany (11/39) Apr 01 2019 I am not sure wheter compiler arguments works at the shebang
- Jonathan Marler (19/47) Apr 01 2019 When I rewrote rdmd I read that some OS's don't support more than
I have a strange problem with rdmd:cat test.dimport std.stdio; void main() { writeln("Hello, world with automated script running!"); } -------------------- This hangs, but if I remove compile options it does work. Overall it doesn't work with any compiler options.dmd --versionDMD64 D Compiler v2.085.0 Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Brightlsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trustygcc --versiongcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Apr 01 2019
On Monday, 1 April 2019 at 11:10:06 UTC, Comrad wrote:I have a strange problem with rdmd:Shebang only supports one argument on your OS. See e.g. https://unix.stackexchange.com/questions/63979/shebang-line-with-usr-bin-env-command-argument-fails-on-linux Please use the "Learn" forum the next time.cat test.dimport std.stdio; void main() { writeln("Hello, world with automated script running!"); } -------------------- This hangs, but if I remove compile options it does work. Overall it doesn't work with any compiler options.dmd --versionDMD64 D Compiler v2.085.0 Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Brightlsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trustygcc --versiongcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Apr 01 2019
On Monday, 1 April 2019 at 11:23:23 UTC, Seb wrote:On Monday, 1 April 2019 at 11:10:06 UTC, Comrad wrote:To extend on this: as this is a well-known limitation, rdmd has the --shebang switch that can be used to indicate to rdmd to split the arguments itself.[...]Shebang only supports one argument on your OS. See e.g. https://unix.stackexchange.com/questions/63979/shebang-line-with-usr-bin-env-command-argument-fails-on-linux Please use the "Learn" forum the next time.
Apr 01 2019
On Monday, 1 April 2019 at 11:10:06 UTC, Comrad wrote:I have a strange problem with rdmd:I am not sure wheter compiler arguments works at the shebang line. If it works there might be the issue, that the file is passed first to rdmd and then the compiler argument. Arguments after the file name are handled as application arguments and passed to the application. What definitely works is using dub and single package file https://dub.pm/advanced_usage You can define the versions in the json/sdl section. Kind regards Andrecat test.dimport std.stdio; void main() { writeln("Hello, world with automated script running!"); } -------------------- This hangs, but if I remove compile options it does work. Overall it doesn't work with any compiler options.dmd --versionDMD64 D Compiler v2.085.0 Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Brightlsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trustygcc --versiongcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Apr 01 2019
On 4/1/19 7:23 AM, Andre Pany wrote:I am not sure wheter compiler arguments works at the shebang line.Yah, that's the problem. I added the option --shebang (https://dlang.org/rdmd.html) for that reason, OP can you please try that?
Apr 01 2019
On Monday, 1 April 2019 at 18:27:41 UTC, Andrei Alexandrescu wrote:On 4/1/19 7:23 AM, Andre Pany wrote:So... I was able finally to make it work:I am not sure wheter compiler arguments works at the shebang line.Yah, that's the problem. I added the option --shebang (https://dlang.org/rdmd.html) for that reason, OP can you please try that?cat test.dimport std.stdio; void main() { writeln("Hello, world with automated script running!"); } ------------------------------------ This does work. But!!! The documentation have to be changed, because the recommended way to start the script is through `env` and it doesn't help at all. Maybe I'm stupid, but it took for me some time to understand such an obvious (like it appeared to be later) thing.
Apr 05 2019
On 4/5/19 8:20 AM, Comrad wrote:This does work. But!!! The documentation have to be changed, because the recommended way to start the script is through `env` and it doesn't help at all.Yes, these are conflicting. Can you please make the documentation change?
Apr 05 2019
On Monday, 1 April 2019 at 11:23:43 UTC, Andre Pany wrote:On Monday, 1 April 2019 at 11:10:06 UTC, Comrad wrote:Sorry, the documentation doesn't allow me to understand easily, how to use it without additional pain. The link you gave doesn't describe a clear method for those, who never used dub before. Anyway... I was able to solve my problem in a convenient for me Thank you anyhow!I have a strange problem with rdmd:I am not sure wheter compiler arguments works at the shebang line. If it works there might be the issue, that the file is passed first to rdmd and then the compiler argument. Arguments after the file name are handled as application arguments and passed to the application. What definitely works is using dub and single package file https://dub.pm/advanced_usage You can define the versions in the json/sdl section. Kind regards Andrecat test.dimport std.stdio; void main() { writeln("Hello, world with automated script running!"); } -------------------- This hangs, but if I remove compile options it does work. Overall it doesn't work with any compiler options.dmd --versionDMD64 D Compiler v2.085.0 Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Brightlsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trustygcc --versiongcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Apr 05 2019
On Friday, 5 April 2019 at 12:27:25 UTC, Comrad wrote:On Monday, 1 April 2019 at 11:23:43 UTC, Andre Pany wrote:No problem:) Create a file sample.d with following content /+ dub.sdl: name "sample" versions "test" +/ void main() { import std.stdio : writeln; writeln("Hello, World!"); } You can start it with "dub sample" or if you add the executable flag with "./sample.d". With recent dub version you can name the file even without the .d extension and just start it with "./sample". Kind regards AndreOn Monday, 1 April 2019 at 11:10:06 UTC, Comrad wrote:Sorry, the documentation doesn't allow me to understand easily, how to use it without additional pain. The link you gave doesn't describe a clear method for those, who never used dub before. Anyway... I was able to solve my problem in a convenient for me Thank you anyhow![...]I am not sure wheter compiler arguments works at the shebang line. If it works there might be the issue, that the file is passed first to rdmd and then the compiler argument. Arguments after the file name are handled as application arguments and passed to the application. What definitely works is using dub and single package file https://dub.pm/advanced_usage You can define the versions in the json/sdl section. Kind regards Andre
Apr 05 2019
On Friday, 5 April 2019 at 12:46:18 UTC, Andre Pany wrote:On Friday, 5 April 2019 at 12:27:25 UTC, Comrad wrote:Also, in more recent versions of dub the "name" field got optional as well and will be automatically inferred if not set.[...]No problem:) Create a file sample.d with following content /+ dub.sdl: name "sample" versions "test" +/ void main() { import std.stdio : writeln; writeln("Hello, World!"); } You can start it with "dub sample" or if you add the executable flag with "./sample.d". With recent dub version you can name the file even without the .d extension and just start it with "./sample". Kind regards Andre
Apr 05 2019
On Monday, 1 April 2019 at 11:10:06 UTC, Comrad wrote:I have a strange problem with rdmd:I am not sure wheter compiler arguments works at the shebang line. If it works there might be the issue, that the file is passed first to rdmd and then the compiler argument. Arguments after the file name are handled as application arguments and passed to the application. What definitely works is using dub and single package file https://dub.pm/advanced_usage You can define the versions in the json/sdl section. Kind regards Andrecat test.dimport std.stdio; void main() { writeln("Hello, world with automated script running!"); } -------------------- This hangs, but if I remove compile options it does work. Overall it doesn't work with any compiler options.dmd --versionDMD64 D Compiler v2.085.0 Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Brightlsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trustygcc --versiongcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Apr 01 2019
On Monday, 1 April 2019 at 11:10:06 UTC, Comrad wrote:I have a strange problem with rdmd:When I rewrote rdmd I read that some OS's don't support more than one argument on the shebang line, so I added support for "Source Compiler Directives". //!version test import std.stdio; void main() { writeln("Hello, world with automated script running!"); } If you use rdmd quite a bit, you might want to consider switching to rund: https://github.com/dragon-lang/rund It runs about twice as fast because it only needs to run the compiler once instead of twice like rdmd does. I also fixed a fair number of bugs with rdmd when I rewrote it. And if you find any issues with it, please let me know and I'll quickly make sure to get them fixed.cat test.dimport std.stdio; void main() { writeln("Hello, world with automated script running!"); } -------------------- This hangs, but if I remove compile options it does work. Overall it doesn't work with any compiler options.dmd --versionDMD64 D Compiler v2.085.0 Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Brightlsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trustygcc --versiongcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Apr 01 2019