gcc 4.8.1 made it to Debian Sid
eles
eles at eles.com
Wed Jul 10 06:39:48 PDT 2013
On Wednesday, 10 July 2013 at 12:58:41 UTC, Iain Buclaw wrote:
> On 10 July 2013 13:14, eles <eles at eles.com> wrote:
>> On Wednesday, 10 July 2013 at 12:03:06 UTC, eles wrote:
>> Quick and unportable (Linux-only) drop-in replacement:
>>
>
> Christ on a bike. What's wrong with:
>
> import std.file;
> import std.process : environment;
>
> auto binpaths = environment.get("PATH");
>
> foreach (path; binpaths.split(<delimiter>)
> {
> auto exe = path ~ <dirsep> ~ "gdc";
> if (exists (exe)) {
> // found
> }
> }
Almost nothing (just a bracket). So, to make Teoh's life easier:
diff --git a/gdmd.d b/gdmd.d
index 6607ce2..12c610f 100644
--- a/gdmd.d
+++ b/gdmd.d
@@ -141,13 +141,19 @@ string findScriptPath(string argv0)
/**
* Finds GDC.
*/
-string findGDC(string argv0)
+string findGDC()
{
- // FIXME: this does not work 100% of the time.
- auto c = match(baseName(argv0),
`^(.*-)?g?dmd(-.*)?$`).captures;
- auto targetPrefix = c[1];
- auto gdcDir = absolutePath(dirName(argv0));
- return buildNormalizedPath(gdcDir, targetPrefix ~ "gdc" ~
c[2]);
+ auto binpaths = environment.get("PATH");
+
+ foreach (path; binpaths.split(pathSeparator))
+ {
+ auto exe = path ~ dirSeparator ~ "gdc";
+ if (exists (exe)) {
+ return exe;
+ }
+ }
+
+ return "";
}
/**
@@ -262,7 +268,7 @@ Config init(string[] args)
{
auto cfg = new Config();
cfg.scriptPath = findScriptPath(args[0]);
- cfg.gdc = findGDC(args[0]);
+ cfg.gdc = findGDC();
cfg.linker = cfg.gdc;
readDmdConf(cfg);
More information about the D.gnu
mailing list