Date: Mon, 31 Mar 2014 22:13:29 +0200 From: Tijl Coosemans <tijl@coosemans.org> To: Matthew Pherigo <hybrid120@gmail.com> Cc: "freebsd-questions@freebsd.org" <freebsd-questions@freebsd.org> Subject: Re: lang/nimrod issue: missing forward slash Message-ID: <20140331221329.5e795449@kalimero.tijl.coosemans.org> In-Reply-To: <2C2F5FA3-D5F3-4223-A163-F689DA5056BF@gmail.com> References: <C0A51891-9BF5-44DF-A466-887FB3AAD153@gmail.com> <20140331201111.18f2688b@kalimero.tijl.coosemans.org> <2C2F5FA3-D5F3-4223-A163-F689DA5056BF@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--MP_/ORJnaCt_Ipyp5PRRWcplqy5 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline On Mon, 31 Mar 2014 14:08:55 -0500 Matthew Pherigo wrote: >> On Mar 31, 2014, at 1:11 PM, Tijl Coosemans <tijl@coosemans.org> wrote: >>> On Mon, 31 Mar 2014 12:15:35 -0500 Matthew Pherigo wrote: >>> I'm having a problem with lang/nimrod that's keeping me from doing any >>> development at the moment. I think this is an issue created by the >>> person who created the port (nimrod works fine on my arch linux VM), >>> but I figured I'd check here in case anyone knows a fix. >>> >>> When I try to compile anything from nimrod, the paths calls the compiler >>> with are incorrect. For example, here is the (successful) compilation >>> output of a program that doesn't depend on any external Libs (besides >>> system.nim): >> >> Can you make these example program available somewhere so I can try to >> reproduce this? > > The programs themselves don't make any difference. But, here they are. > The first one is simply > echo("Hello, world!") > > The program that has external dependencies is a very incomplete calculator > program, as follows: > > import strutils > var a, b, c: float > var buf: string > echo("Enter your first number! \n> ") > buf = readLine(stdin) > a = ParseFloat(buf) It seems that nimrod currently requires procfs to be mounted. I've attached a patch to avoid that. You can place it in lang/nimrod/files and then rebuild the port. You should also be able to remove /etc/nimrod.cfg then. --MP_/ORJnaCt_Ipyp5PRRWcplqy5 Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=patch-lib-pure-os.nim --- lib/pure/os.nim.orig +++ lib/pure/os.nim @@ -1389,8 +1389,6 @@ result = getApplAux("/proc/self/exe") elif defined(solaris): result = getApplAux("/proc/" & $getpid() & "/path/a.out") - elif defined(freebsd): - result = getApplAux("/proc/" & $getpid() & "/file") elif defined(macosx): var size: cuint32 getExecPath1(nil, size) @@ -1399,16 +1397,14 @@ result = "" # error! else: # little heuristic that may work on other POSIX-like systems: - result = string(getEnv("_")) - if len(result) == 0: - result = string(ParamStr(0)) - # POSIX guaranties that this contains the executable - # as it has been executed by the calling process - if len(result) > 0 and result[0] != DirSep: # not an absolute path? - # iterate over any path in the $PATH environment variable - for p in split(string(getEnv("PATH")), {PathSep}): - var x = joinPath(p, result) - if ExistsFile(x): return x + result = string(ParamStr(0)) + # POSIX guaranties that this contains the executable + # as it has been executed by the calling process + if len(result) > 0 and result[0] != DirSep: # not an absolute path? + # iterate over any path in the $PATH environment variable + for p in split(string(getEnv("PATH")), {PathSep}): + var x = joinPath(p, result) + if ExistsFile(x): return x proc getApplicationFilename*(): string {.rtl, extern: "nos$1", deprecated.} = ## Returns the filename of the application's executable. --MP_/ORJnaCt_Ipyp5PRRWcplqy5--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140331221329.5e795449>