Date: Fri, 5 Mar 2004 01:09:31 +0100 From: Alexander Leidinger <Alexander@Leidinger.net> To: "Dr. Richard E. Hawkins" <hawk@slytherin.ds.psu.edu> Cc: freebsd-ports@freebsd.org Subject: Re: attempting to resucitate Lahey Fortran port Message-ID: <20040305010931.7a0ed8a8@Magellan.Leidinger.net> In-Reply-To: <20040304204910.GA52768@slytherin.ds.psu.edu> References: <20040303195716.GL57588@slytherin.ds.psu.edu> <20040304182123.464f684e@Magellan.Leidinger.net> <20040304204910.GA52768@slytherin.ds.psu.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 4 Mar 2004 15:49:10 -0500 "Dr. Richard E. Hawkins" <hawk@slytherin.ds.psu.edu> wrote: > > > >> MASTER_SITES= # fetch manually > > > > >You don't tell us where to get it from. > > > > Which makes no sense for an installer for a commercial linux project. > > > But you used "fetch manually"... I think it would be better to use > > "comes on CD" or something like this. I haven't reopened the PR, because > > of your problems below. > > OK, I'll switch that. But I think it's what the guide said to do at the time. It's mostly a recommendation, it's up to the porter to choose an appropriate way of doing things. > > > slytherin ttyp6:dpt>lf95 dpt1.f95 > > > Encountered 0 errors, 0 warnings in file dpt1.f95. > > > /usr/bin/ld: unrecognised emulation mode: elf_i386 > > > Supported emulations: elf_i386_fbsd > > > > What does this mean/how do I fix it? > > > If you can't change the emulation in lf95, you may perhaps have to write > > a ld wrapper which replaces the emulation. We have something like this > > in the icc and ifc ports (not for changing the emulation, but for other > > things). > > A vague bell rang in my memory, and I installed the linux_devtools port. > That solved it, although the output of "ld -V" didn't change. My This way you install an linux ld binary into /compat/linux. Programs which run in the linux compatibility environment first see files in /compat/linux, and only if the file can't be found there the linux program will see the files in the real FreeBSD environment. So lf95 sees /compat/linix/usr/bin/ld now and uses it, whereas it has used /usr/bin/ld before you installed the linux_devtools port because the /compat/linux one wasn't there. > makeefile has the lines, > > RUN_DEPENDS= /compat/linux/lib/libc.so.6:${PORTSDIR}/devel/linux_devtools > FETCH_DEPENDS= ${LINUXBASE}/lib/libc.so.6:${PORTSDIR}/devel/linux_devtools This has several drawbacks: - libc.so.6 is a library, so LIB_DEPENDS should be used (but you don't need to, as USE_LINUX=yes already satisfies the libc.so.6 dependency) - libc.so.6 doesn't get installed by linux_devtools, so this is wrong - linux_devel doesn't contain anything which is needed to fetch a component of the port, so FETCH_DEPENDS is wrong > This doesn't cause the devtools to be installed, nor does it cause an > error. I would use RUN_DEPENDS= ${LINUXBASE}/usr/bin/ld:${PORTSDIR}/devel/linux_devtools Note: I haven't verified if the path to ld is the right one. This way you use the linux ld to link a program, so it will be an linux binary, not a FreeBSD binary. I don't know if this is intended. If you didn't have some special fixes like we have in the ifc and icc ports, I assume depending on linux_base is the right way to solve this issue. > Also, the linux and linux_devtools seem to be a moving target. What is > the correct way to make the appropriate dependency? The default linux emulation is based upon the v7 ports (since a long time), so you should use the v7 linux_devtools port. If your port depends upon another linux_base version, it also needs to depend on a similar linux_devtools port. > Hmm, and my digging has lead to a new question. There is now a > linuxthreads port. Will this let multi-threaded linux applications run? > If so, it should be a dependency (lf95 can make multithreaded, but they > can't run with just devtools. The port-descr says: > > >LinuxThreads is an POSIX pthreads implementation using "kernel threads". In > >this FreeBSD port, a kernel thread is started using rfork (whereas in the > >original Linux implementation a kernel thread is started using the Linux clone > >call). This implementaion provides a so-called one-to-one mapping of threads to > >kernel schedulable entities. For more information see about the original linuxthreads is a FreeBSD library. It does threading similar to the way linux does it. So if your port doesn't produce native FreeBSD executables (because you don't do nasty tricks like the ifc and icc ports do), you can't use it. I think you need to lookup a linux pthreads lib somewhere. I can't give a better advise, as I don't know how lf95 fails in this regard. Bye, Alexander. -- I will be available to get hired in April 2004. http://www.Leidinger.net Alexander @ Leidinger.net GPG fingerprint = C518 BC70 E67F 143F BE91 3365 79E2 9C60 B006 3FE7
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040305010931.7a0ed8a8>