math/atlas-devel build times (was Re: math/py-numpy vs. math/atlas-devel)

2009-11-09 Thread Scott Bennett
 On Tue, 10 Nov 2009 15:41:05 +0900 (JST) Maho NAKATA 
wrote:
>I'm willing to apply patches to atlas ports if available.

 Thanks, Maho.  It appears that the most critical change is to make
sure the tools can know that math/atlas and math/atlas-devel conflict
with each other, so that if one is already installed, the tools won't
try to install the other.

>I talked with Goto Kazushige (author of GotoBLAS), he told me
>that L2 cache handling on FreeBSD is very bad. It may be a reason

 I would be very interested in knowing in detail why he thinks that.
 The ATLAS build procedure, however, does use a very crude algorithm
for detecting the sizes of L1 and L2 caches that "detects" cache sizes
much smaller than they actually are.  I think there are some ways of
correcting the "detected" sizes, but they involve editing source files
and making decisions that go way beyond anything that the FreeBSD ports
system is equipped to handle.  Assuming cache sizes that are typically
1/2 or 1/4 of the actual sizes will quite naturally give less than optimal
results.  It is worth noting, though, that this same algorithm for cache
size detection is used for building ATLAS on any operating system on i386
or amd64 architectures.

>why ATLAS build is so fragile. On Linux machines, it takes only 20 min or so.
>
 As I wrote before, the sensitivity is based upon the variance of a
run times.  The sample size is quite small, so any sizable differences in
even one or two run times can put the variance over the build procedure's
tolerance threshhold.  On my machine, I always had to edit a source file
to increase the number of iterations of each test from 10 to either 100 or
1000 in order to get the sensitivity down to where occasional other activity
in the system wouldn't kill the ATLAS build.  However, math/atlas-devel in
FreeBSD 7.2 surprised me by building cleanly with no such intervention
required, which pleased me greatly, of course.  I don't know what the authors
changed to make this happen.  In any case, the variance sensitivity problem
ought to be the same, regardless of operating system.
 The ATLAS build procedure builds an unthreaded version of the library
on any system.  If more than one logical/physical CPU is detected, it also
builds a threaded version.  You didn't mention the system configuration that
can allegedly build ATLAS in only 20 minutes.  I'm building it on a Dell
Inspiron XPS, which has a 3.4 GHz P4 Prescott CPU.  The L1 caches are 64 KB
each, IIRC, and the L2 cache is 1 MB, but ATLAS's build procedure typically
decides that the L1 size is 16 KB or less and the L2 size is 256 KB.  I have
hyperthreading enabled, so the build procedure sees two (logical) CPUs, but
the gains from the hyperthreading are very small in this situation.  Building
ATLAS on a truly dual-cored system ought to give much shorter build times,
and building it on a Core i7 system ought to be tremendously faster with or
without enabling the i7's reputedly better implemented HT.  The P4 Prescott
is now a very old chip model.  (I bought this machine new five years ago.)
 The last time I checked, the LINUX kernel still didn't know the
difference between logical CPUs and physical CPUs, so it's difficult to
see how its cache management in a HT environment could be any better than
FreeBSD's.  Maybe LINUX has been updated to understand five-year-old
technology since I last checked, but that still should only make it closer
to FreeBSD's performance, not radically faster than FreeBSD.


  Scott Bennett, Comm. ASMELG, CFIAG
**
* Internet:   bennett at cs.niu.edu  *
**
* "A well regulated and disciplined militia, is at all times a good  *
* objection to the introduction of that bane of all free governments *
* -- a standing army."   *
*-- Gov. John Hancock, New York Journal, 28 January 1790 *
**
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"


Re: math/py-numpy vs. math/atlas-devel

2009-11-09 Thread Maho NAKATA
Hi all,

I'm willing to apply patches to atlas ports if available.
I talked with Goto Kazushige (author of GotoBLAS), he told me
that L2 cache handling on FreeBSD is very bad. It may be a reason
why ATLAS build is so fragile. On Linux machines, it takes only 20 min or so.

Thanks for good discussions!

Best,
 Nakata Maho

From: Scott Bennett 
Subject: Re: math/py-numpy vs. math/atlas-devel
Date: Mon, 09 Nov 2009 15:07:55 -0600 (CST)

>  On Mon, 9 Nov 2009 20:26:15 + "b. f." 
> wrote:
>>On 11/9/09, Scott Bennett  wrote:
>>>  On Sun, 08 Nov 2009 23:59:29 -0800 Doug Barton 
>>> wrote:
>>
>>...
>>
>>>  Anyway, the math/py-numpy port now proceeds to build without bothering
>>> with math/atlas.  It quickly goes astray when it doesn't recognize that any
>>> of gfortran4[345] has been installed--I guess there no longer is a FORTRAN
>>> compiler included in the base system--and instead tries to use lang/g95,
>>> which has also been installed.  Of course, this won't work because the ATLAS
>>> library needs to have been compiled with the same compiler as the programs
>>> that use it.
>>>
>>> ===>  Configuring for py26-numpy-1.3.0_2,1
>>> Running from numpy source directory.
>>>  [39mF2PY Version 2 [0m
>>>  [39mblas_opt_info: [0m
>>>  [39mblas_mkl_info: [0m
>>>  [39m  libraries mkl,vml,guide not found in /usr/lib [0m
>>>  [39m  libraries mkl,vml,guide not found in /usr/local/lib [0m
>>>  [39m  libraries mkl,vml,guide not found in
>>> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/../../../ [0m
>>>  [39m  NOT AVAILABLE [0m
>>>  [39m [0m
>>>  [39matlas_blas_threads_info: [0m
>>>  [39mSetting PTATLAS=ATLAS [0m
>>>  [39mSetting PTATLAS=ATLAS [0m
>>>  [39mSetting PTATLAS=ATLAS [0m
>>>  [39m  FOUND: [0m
>>>  [39mlibraries = ['alapack_r', 'f77blas_r', 'cblas_r', 'atlas_r'] [0m
>>>  [39mlibrary_dirs = ['/usr/local/lib'] [0m
>>>  [39mlanguage = c [0m
>>>  [39minclude_dirs = ['/usr/local/include'] [0m
>>>  [39m [0m
>>> /usr/ports/math/py-numpy/work/numpy-1.3.0/numpy/distutils/command/config.py:361:
>>> DeprecationWarning:
>>> +
>>> Usage of get_output is deprecated: please do not
>>> use it anymore, and avoid configuration checks
>>> involving running executable on the target machine.
>>> +
>>>
>>>   DeprecationWarning)
>>>  [39mcustomize GnuFCompiler [0m
>>>  [32mFound executable /usr/local/bin/gfortran44 [0m
>>>  [31mgnu: no Fortran 90 compiler found [0m
>>>  [31mgnu: no Fortran 90 compiler found [0m
>>>  [39mcustomize Gnu95FCompiler [0m
>>>  [39mcustomize Gnu95FCompiler [0m
>>>  [39mcustomize Gnu95FCompiler using config [0m
>>> compiling '_configtest.c':
>>>
>>> /* This file is generated from numpy/distutils/system_info.py */
>>> void ATL_buildinfo(void);
>>> int main(void) {
>>>   ATL_buildinfo();
>>>   return 0;
>>> }
>>>  [39mC compiler: gcc44 -DNDEBUG -O2 -fno-strict-aliasing -pipe
>>> -march=prescott -D__wchar_t=wchar_t -DTHREAD_STACK_SIZE=0x10 -O2
>>> -fno-strict-aliasing -pipe -march=prescott -Wl,-rpath=/usr/local/lib/gcc44
>>> -fPIC
>>>  [0m
>>>  [39mcompile options: '-c' [0m
>>>  [39mgcc44: _configtest.c [0m
>>>  [39mgcc44 _configtest.o -L/usr/local/lib -lalapack_r -lf77blas_r -lcblas_r
>>> -latlas_r -o _configtest [0m
>>> /usr/bin/ld: _configtest: hidden symbol `__powisf2' in
>>> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/libgcc.a(_powisf2.o)
>>> is referenced by DSO
>>> collect2: ld returned 1 exit status
>>> /usr/bin/ld: _configtest: hidden symbol `__powisf2' in
>>> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/libgcc.a(_powisf2.o)
>>> is referenced by DSO
>>> collect2: ld returned 1 exit status
>>>  [39mfailure. [0m
>>>  [39mremoving: _configtest.c _configtest.o [0m
>>>  [39mStatus: 255 [0m
>>>  [39mOutput:  [0m
>>>  [39m  FOUND: [0m
>>>  [39mlibraries = ['alapack_r', 'f77blas_r', 'cblas_r', 'atlas_r'] [0m
>>>  [39mlibrary_dirs = ['/usr/local/lib'] [0m
>>>  [39mlanguage = c [0m
>>>  [39mdefine_macros = [('NO_ATLAS_INFO&#

Re: math/py-numpy vs. math/atlas-devel

2009-11-09 Thread Scott Bennett
 On Mon, 9 Nov 2009 20:26:15 + "b. f." 
wrote:
>On 11/9/09, Scott Bennett  wrote:
>>  On Sun, 08 Nov 2009 23:59:29 -0800 Doug Barton 
>> wrote:
>
>...
>
>>  Anyway, the math/py-numpy port now proceeds to build without bothering
>> with math/atlas.  It quickly goes astray when it doesn't recognize that any
>> of gfortran4[345] has been installed--I guess there no longer is a FORTRAN
>> compiler included in the base system--and instead tries to use lang/g95,
>> which has also been installed.  Of course, this won't work because the ATLAS
>> library needs to have been compiled with the same compiler as the programs
>> that use it.
>>
>> ===>  Configuring for py26-numpy-1.3.0_2,1
>> Running from numpy source directory.
>>  [39mF2PY Version 2 [0m
>>  [39mblas_opt_info: [0m
>>  [39mblas_mkl_info: [0m
>>  [39m  libraries mkl,vml,guide not found in /usr/lib [0m
>>  [39m  libraries mkl,vml,guide not found in /usr/local/lib [0m
>>  [39m  libraries mkl,vml,guide not found in
>> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/../../../ [0m
>>  [39m  NOT AVAILABLE [0m
>>  [39m [0m
>>  [39matlas_blas_threads_info: [0m
>>  [39mSetting PTATLAS=ATLAS [0m
>>  [39mSetting PTATLAS=ATLAS [0m
>>  [39mSetting PTATLAS=ATLAS [0m
>>  [39m  FOUND: [0m
>>  [39mlibraries = ['alapack_r', 'f77blas_r', 'cblas_r', 'atlas_r'] [0m
>>  [39mlibrary_dirs = ['/usr/local/lib'] [0m
>>  [39mlanguage = c [0m
>>  [39minclude_dirs = ['/usr/local/include'] [0m
>>  [39m [0m
>> /usr/ports/math/py-numpy/work/numpy-1.3.0/numpy/distutils/command/config.py:361:
>> DeprecationWarning:
>> +
>> Usage of get_output is deprecated: please do not
>> use it anymore, and avoid configuration checks
>> involving running executable on the target machine.
>> +
>>
>>   DeprecationWarning)
>>  [39mcustomize GnuFCompiler [0m
>>  [32mFound executable /usr/local/bin/gfortran44 [0m
>>  [31mgnu: no Fortran 90 compiler found [0m
>>  [31mgnu: no Fortran 90 compiler found [0m
>>  [39mcustomize Gnu95FCompiler [0m
>>  [39mcustomize Gnu95FCompiler [0m
>>  [39mcustomize Gnu95FCompiler using config [0m
>> compiling '_configtest.c':
>>
>> /* This file is generated from numpy/distutils/system_info.py */
>> void ATL_buildinfo(void);
>> int main(void) {
>>   ATL_buildinfo();
>>   return 0;
>> }
>>  [39mC compiler: gcc44 -DNDEBUG -O2 -fno-strict-aliasing -pipe
>> -march=prescott -D__wchar_t=wchar_t -DTHREAD_STACK_SIZE=0x10 -O2
>> -fno-strict-aliasing -pipe -march=prescott -Wl,-rpath=/usr/local/lib/gcc44
>> -fPIC
>>  [0m
>>  [39mcompile options: '-c' [0m
>>  [39mgcc44: _configtest.c [0m
>>  [39mgcc44 _configtest.o -L/usr/local/lib -lalapack_r -lf77blas_r -lcblas_r
>> -latlas_r -o _configtest [0m
>> /usr/bin/ld: _configtest: hidden symbol `__powisf2' in
>> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/libgcc.a(_powisf2.o)
>> is referenced by DSO
>> collect2: ld returned 1 exit status
>> /usr/bin/ld: _configtest: hidden symbol `__powisf2' in
>> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/libgcc.a(_powisf2.o)
>> is referenced by DSO
>> collect2: ld returned 1 exit status
>>  [39mfailure. [0m
>>  [39mremoving: _configtest.c _configtest.o [0m
>>  [39mStatus: 255 [0m
>>  [39mOutput:  [0m
>>  [39m  FOUND: [0m
>>  [39mlibraries = ['alapack_r', 'f77blas_r', 'cblas_r', 'atlas_r'] [0m
>>  [39mlibrary_dirs = ['/usr/local/lib'] [0m
>>  [39mlanguage = c [0m
>>  [39mdefine_macros = [('NO_ATLAS_INFO', 2)] [0m
>>  [39minclude_dirs = ['/usr/local/include'] [0m
>>  [39m [0m
>>  [39mlapack_opt_info: [0m
>>  [39mlapack_mkl_info: [0m
>>  [39mmkl_info: [0m
>>  [39m  libraries mkl,vml,guide not found in /usr/lib [0m
>>  [39m  libraries mkl,vml,guide not found in /usr/local/lib [0m
>>  [39m  libraries mkl,vml,guide not found in
>> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/../../../ [0m
>>  [39m  NOT AVAILABLE [0m
>>  [39m [0m
>>  [39m  NOT AVAILABLE [0m
>>  [39m [0m
>>  [39matlas_threads_info: [0m
>>  [39mSetting PTATLAS=ATLAS [0m
>>  [39m  libraries lapack_atlas not found in /usr/local/lib [0m
>>  [39mnumpy.distutils.system_info.atlas_threads_info [0m
>>  [39mSetting PTATLAS=ATLAS [0m
>> /usr/ports/math/py-numpy/work/numpy-1.3.0/numpy/distutils/system_info.py:999:
>> UserWarning:
>> *
>> Lapack library (from ATLAS) is probably incomplete:
>>   size of /usr/local/lib/libalapack_r.so is 3832k (expected >4000k)
>>
>> Follow the instructions in the KNOWN PROBLEMS section of the file
>> numpy/INSTALL.txt.
>> *
>>
>>   warnings.warn(message)
>>
>>
>> The above sequence gets more or less repeated several more times, and
>> after much compiling, running of python26, and other activities, the
>> process runs aground as follows.
>>
>>
>>  [39mcreating build/temp.freebsd-7.2-STABLE-i386-2

Re: math/py-numpy vs. math/atlas-devel

2009-11-09 Thread b. f.
On 11/9/09, Scott Bennett  wrote:
>  On Sun, 08 Nov 2009 23:59:29 -0800 Doug Barton 
> wrote:

...

>  Anyway, the math/py-numpy port now proceeds to build without bothering
> with math/atlas.  It quickly goes astray when it doesn't recognize that any
> of gfortran4[345] has been installed--I guess there no longer is a FORTRAN
> compiler included in the base system--and instead tries to use lang/g95,
> which has also been installed.  Of course, this won't work because the ATLAS
> library needs to have been compiled with the same compiler as the programs
> that use it.
>
> ===>  Configuring for py26-numpy-1.3.0_2,1
> Running from numpy source directory.
>  [39mF2PY Version 2 [0m
>  [39mblas_opt_info: [0m
>  [39mblas_mkl_info: [0m
>  [39m  libraries mkl,vml,guide not found in /usr/lib [0m
>  [39m  libraries mkl,vml,guide not found in /usr/local/lib [0m
>  [39m  libraries mkl,vml,guide not found in
> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/../../../ [0m
>  [39m  NOT AVAILABLE [0m
>  [39m [0m
>  [39matlas_blas_threads_info: [0m
>  [39mSetting PTATLAS=ATLAS [0m
>  [39mSetting PTATLAS=ATLAS [0m
>  [39mSetting PTATLAS=ATLAS [0m
>  [39m  FOUND: [0m
>  [39mlibraries = ['alapack_r', 'f77blas_r', 'cblas_r', 'atlas_r'] [0m
>  [39mlibrary_dirs = ['/usr/local/lib'] [0m
>  [39mlanguage = c [0m
>  [39minclude_dirs = ['/usr/local/include'] [0m
>  [39m [0m
> /usr/ports/math/py-numpy/work/numpy-1.3.0/numpy/distutils/command/config.py:361:
> DeprecationWarning:
> +
> Usage of get_output is deprecated: please do not
> use it anymore, and avoid configuration checks
> involving running executable on the target machine.
> +
>
>   DeprecationWarning)
>  [39mcustomize GnuFCompiler [0m
>  [32mFound executable /usr/local/bin/gfortran44 [0m
>  [31mgnu: no Fortran 90 compiler found [0m
>  [31mgnu: no Fortran 90 compiler found [0m
>  [39mcustomize Gnu95FCompiler [0m
>  [39mcustomize Gnu95FCompiler [0m
>  [39mcustomize Gnu95FCompiler using config [0m
> compiling '_configtest.c':
>
> /* This file is generated from numpy/distutils/system_info.py */
> void ATL_buildinfo(void);
> int main(void) {
>   ATL_buildinfo();
>   return 0;
> }
>  [39mC compiler: gcc44 -DNDEBUG -O2 -fno-strict-aliasing -pipe
> -march=prescott -D__wchar_t=wchar_t -DTHREAD_STACK_SIZE=0x10 -O2
> -fno-strict-aliasing -pipe -march=prescott -Wl,-rpath=/usr/local/lib/gcc44
> -fPIC
>  [0m
>  [39mcompile options: '-c' [0m
>  [39mgcc44: _configtest.c [0m
>  [39mgcc44 _configtest.o -L/usr/local/lib -lalapack_r -lf77blas_r -lcblas_r
> -latlas_r -o _configtest [0m
> /usr/bin/ld: _configtest: hidden symbol `__powisf2' in
> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/libgcc.a(_powisf2.o)
> is referenced by DSO
> collect2: ld returned 1 exit status
> /usr/bin/ld: _configtest: hidden symbol `__powisf2' in
> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/libgcc.a(_powisf2.o)
> is referenced by DSO
> collect2: ld returned 1 exit status
>  [39mfailure. [0m
>  [39mremoving: _configtest.c _configtest.o [0m
>  [39mStatus: 255 [0m
>  [39mOutput:  [0m
>  [39m  FOUND: [0m
>  [39mlibraries = ['alapack_r', 'f77blas_r', 'cblas_r', 'atlas_r'] [0m
>  [39mlibrary_dirs = ['/usr/local/lib'] [0m
>  [39mlanguage = c [0m
>  [39mdefine_macros = [('NO_ATLAS_INFO', 2)] [0m
>  [39minclude_dirs = ['/usr/local/include'] [0m
>  [39m [0m
>  [39mlapack_opt_info: [0m
>  [39mlapack_mkl_info: [0m
>  [39mmkl_info: [0m
>  [39m  libraries mkl,vml,guide not found in /usr/lib [0m
>  [39m  libraries mkl,vml,guide not found in /usr/local/lib [0m
>  [39m  libraries mkl,vml,guide not found in
> /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.3/../../../ [0m
>  [39m  NOT AVAILABLE [0m
>  [39m [0m
>  [39m  NOT AVAILABLE [0m
>  [39m [0m
>  [39matlas_threads_info: [0m
>  [39mSetting PTATLAS=ATLAS [0m
>  [39m  libraries lapack_atlas not found in /usr/local/lib [0m
>  [39mnumpy.distutils.system_info.atlas_threads_info [0m
>  [39mSetting PTATLAS=ATLAS [0m
> /usr/ports/math/py-numpy/work/numpy-1.3.0/numpy/distutils/system_info.py:999:
> UserWarning:
> *
> Lapack library (from ATLAS) is probably incomplete:
>   size of /usr/local/lib/libalapack_r.so is 3832k (expected >4000k)
>
> Follow the instructions in the KNOWN PROBLEMS section of the file
> numpy/INSTALL.txt.
> *
>
>   warnings.warn(message)
>
>
> The above sequence gets more or less repeated several more times, and
> after much compiling, running of python26, and other activities, the
> process runs aground as follows.
>
>
>  [39mcreating build/temp.freebsd-7.2-STABLE-i386-2.6/numpy/fft [0m
>  [39mcompile options: '-Inumpy/core/include
> -Ibuild/src.freebsd-7.2-STABLE-i386-2.6/numpy/core/include/numpy
> -Inumpy/core/src -Inumpy/core/include -I/usr/

Re: math/py-numpy vs. math/atlas-devel

2009-11-09 Thread Doug Barton
b. f. wrote:
> 1) +IGNOREME files only work with installed ports (just because the
> package database is naturally associated with installed ports doesn't
> mean that someone won't create an +IGNOREME for one that isn't
> installed), and
> 2) when trying to prevent the build or installation of a port that is
> not currently installed, the exclusion glob will be compared with the
> port directory, rather than the PKGNAME, as is done for installed
> packages. 

I've updated my working copy of the man page with these suggestions,
thanks!

> And with regard to the selection of exclusion
> globs, we should note that a glob that matches too many ports may be
> as problematic as one that matches too few.

But, of course. :)  Regexp creation is both one of the rites of
passage for all system administrators and a never-ending journey. If
the -x or other glob option is not suitable there are always other
options.


Doug

-- 

Improve the effectiveness of your Internet presence with
a domain name makeover!http://SupersetSolutions.com/

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"


Re: math/py-numpy vs. math/atlas-devel

2009-11-09 Thread Scott Bennett
 On Sun, 08 Nov 2009 23:59:29 -0800 Doug Barton 
wrote:
>First, sorry I missed the original problem report, I'm not subscribed
>to -questions. Usually ports questions (including those about tools)
>are handled on freebsd-po...@freebsd.org, but OTOH if you're not sure
>where to send a question it's always better to start on the -questions
>list. :)

 The responses I got the last time I posted something to -ports
convinced me not to post there anymore.  I'm still subscribed, however,
so I still see what transpires there.
>
>Second, thanks to b.f. for the very thorough analysis of the problem.

 Yes, indeed, thanks.  It was fascinating.

>I will respond and trim a bit as I go.
>
>Third, I've cc'ed maho@ since the genesis of the problem is that
>math/atlas and math/atlas-devel aren't setting CONFLICTS when
>apparently they should be. maho, if you need any help with this let me
>know.

 I've left the Cc in as well because IIRC, Maho was heavily involved
in the upgrade of immense numbers of ports to gfortran42.  The next obstacle
in math/py-numpy outlined further below may well be a missed relic of that
effort.
>
>b. f. wrote:
>> Scott Bennett wrote:
>>> I would like to install science/gnudatalanguage but have been running
>>> into various obstacles.  Lars Engels very kindly just fixed one of them
>>> (devel/lasi) (Thanks, Lars!), so now I'm on to the next one, which may not
>>> be a showstopper, but it's at least a nuisance.  One of the gnudatalanguage
>>> dependencies is math/py-numpy, which, in turn, depends upon math/atlas.
>>> However, I have math/atlas-devel installed and do not wish to revert to an
>>> older, slower version of the ATLAS library.  Adding a "-x atlas-\*" onto
>>> the portmaster command to build math/py-numpy fails to prevent portmaster
>>>from trying to build math/atlas. 
>
>As was pointed out, that definitely won't work. With the glob patterns
>for exclusions, or specifying ports on the command line you want to be
>as conservative as possible. Also, it's not necessary to include a *
>at the end, portmaster will handle that for you.
>
>>> Creating a
>>> /var/db/pkg/atlas-3.8.3_1,1/+IGNOREME file in addition doesn't help.
>
>+IGNOREME files are only relevant to installed ports.
>
>>> How
>>> can I force math/py-numpy to accept the already installed math/atlas-devel
>>> libraries?
>>> Thanks in advance for any help!
>
>The easiest way for you to accomplish this would have been to use '-x
>atlas', the second-easiest would have been to use the -i command line
>option. See the man page for more information on that.

 Yes, thanks much to both of you.  Cutting the option back to just
"-x atlas" did the trick, allowing math/atlas to be skipped.  Here's
what it looks like giving the desired action:

===>>> Port directory: /usr/ports/math/py-numpy

===>>> Gathering distinfo list for installed ports

===>>> Launching 'make checksum' for math/py-numpy in background
===>>> Gathering dependency list for math/py-numpy from ports
===>>> Starting recursive 'make config' check
===>>> Checking dependency: devel/py-nose
===>>> Launching child to update devel/py-nose
math/py-numpy >> devel/py-nose

===>>> Port directory: /usr/ports/devel/py-nose
===>>> Launching 'make checksum' for devel/py-nose in background
===>>> Gathering dependency list for devel/py-nose from ports
===>>> Starting recursive 'make config' check
===>>> Checking dependency: devel/py-setuptools
===>>> Checking dependency: lang/python26
===>>> Recursive 'make config' check complete for devel/py-nose
math/py-numpy >> devel/py-nose

===>>> Continuing 'make config' dependency check for math/py-numpy
===>>> Checking dependency: lang/gcc44
===>>> Checking dependency: lang/python26
===>>> Checking dependency: math/atlas
===>>> Skipping math/atlas
   because it matches the pattern: *atlas*

===>>> Checking dependency: math/suitesparse
===>>> Recursive 'make config' check complete for math/py-numpy

===>>> Starting build for math/py-numpy <<<===

===>>> Starting check for build dependencies
===>>> Gathering dependency list for math/py-numpy from ports
===>>> Starting dependency check
===>>> Checking dependency: lang/gcc44
===>>> Checking dependency: lang/python26
===>>> Checking dependency: math/atlas
===>>> Skipping math/atlas
   because it matches the pattern: *atlas*

===>>> Checking dependency: math/suitesparse
===>>> Dependency check complete for math/py-numpy

===>  Cleaning for py26-numpy-1.3.0_2,1

===>  Found saved configuration for py26-numpy-1.3.0_2,1
===>  Extracting for py26-numpy-1.3.0_2,1
>
>> Congratulations, you've managed to defeat three sets of safeguards in
>> portmaster.

 Sigh.  It has *always* been that way for me.  By age 15 I was already
stumbling over compiler bugs, library bugs, operating system bugs, and even
the occasional, very peculiar sort of hardware bug.  It's enough to make
one believe in gremlins developing interests in areas other than aviation. :-}
In the great majori

Re: math/py-numpy vs. math/atlas-devel

2009-11-09 Thread b. f.
On 11/9/09, Doug Barton  wrote:
> First, sorry I missed the original problem report, I'm not subscribed
> to -questions. Usually ports questions (including those about tools)
> are handled on freebsd-po...@freebsd.org, but OTOH if you're not sure
> where to send a question it's always better to start on the -questions
> list. :)
>
> Second, thanks to b.f. for the very thorough analysis of the problem.
> I will respond and trim a bit as I go.
>
> Third, I've cc'ed maho@ since the genesis of the problem is that
> math/atlas and math/atlas-devel aren't setting CONFLICTS when
> apparently they should be. maho, if you need any help with this let me
> know.
>
> b. f. wrote:
>> Scott Bennett wrote:
>>> I would like to install science/gnudatalanguage but have been running
>>> into various obstacles.  Lars Engels very kindly just fixed one of them
>>> (devel/lasi) (Thanks, Lars!), so now I'm on to the next one, which may
>>> not
>>> be a showstopper, but it's at least a nuisance.  One of the
>>> gnudatalanguage
>>> dependencies is math/py-numpy, which, in turn, depends upon math/atlas.
>>> However, I have math/atlas-devel installed and do not wish to revert to
>>> an
>>> older, slower version of the ATLAS library.  Adding a "-x atlas-\*" onto
>>> the portmaster command to build math/py-numpy fails to prevent portmaster
>>>from trying to build math/atlas.
>
> As was pointed out, that definitely won't work. With the glob patterns
> for exclusions, or specifying ports on the command line you want to be
> as conservative as possible. Also, it's not necessary to include a *
> at the end, portmaster will handle that for you.
>
>>> Creating a
>>> /var/db/pkg/atlas-3.8.3_1,1/+IGNOREME file in addition doesn't help.
>
> +IGNOREME files are only relevant to installed ports.
>
>>> How
>>> can I force math/py-numpy to accept the already installed
>>> math/atlas-devel
>>> libraries?
>>> Thanks in advance for any help!
>
> The easiest way for you to accomplish this would have been to use '-x
> atlas', the second-easiest would have been to use the -i command line
> option. See the man page for more information on that.
>
>> Congratulations, you've managed to defeat three sets of safeguards in
>> portmaster.
>>
>> Problem #1
>>
>> math/atlas and math/atlas-devel don't have proper CONFLICTS entries in
>> their Makefiles (this should be fixed),
>
> Yes, this analysis was essentially correct.
>
>>  Problem #2:
>>
>> You're using the -x flag incorrectly.  Or portmaster isn't
>> implementing it properly when the port to be excluded is not actually
>> installed, take your pick.
>
> The way that -x is implemented currently really depends on the user's
> definition of the exclude pattern, and is designed to exclude things
> as early as possible so as to avoid what would ultimately become
> wasted effort. It's hard to justify modifying the code to guess that
> something we've already started working on might match what we think
> the user MEANT instead of what they SAID.
>
>> Problem #3:
>>
>> The +IGNOREME checks in portmaster aren't properly implemented for
>> this case, so they fail to prevent math/atlas from being built.
>
> s/properly implemented for/designed to handle/
>
> If you think about this for a second, the entries in /var/db/pkg are
> exclusively related to installed ports, so trying to use an +IGNOREME
> file for this purpose doesn't make sense, although I can sympathize
> with the OPs sense of desperation here. :)
>
>> So what can you do while these problems are being fixed?
>
> Just to be clear, I didn't see anything that needs to be fixed in your
> message, and I hope my explanation makes it clear why. If you think
> that there are actual bugs that need to be fixed please feel free to
> create a thread on -ports to discuss them.
>

The CONFLICTS for math/atlas* should be fixed, as you remarked.  As
for portmaster, I'll allow that your choices were reasonable, but it
would be wise to note in the manpage that:

1) +IGNOREME files only work with installed ports (just because the
package database is naturally associated with installed ports doesn't
mean that someone won't create an +IGNOREME for one that isn't
installed), and
2) when trying to prevent the build or installation of a port that is
not currently installed, the exclusion glob will be compared with the
port directory, rather than the PKGNAME, as is done for installed
packages.  Using something like:

#!/bin/sh

for _dir in `make -C /usr/ports -V SUBDIR` ; do
 for _dir2 in `make -C /usr/ports/${_dir} -V SUBDIR` ; do
  _pkgname=`make -C /usr/ports/${_dir}/${_dir2} -V PKGNAME`
  case  "${_dir}/${_dir2}" in
  *${_pkgname%%-[0-9]*}*) ;;
  *) echo "${_dir}/${_dir2} ${_pkgname}" ;;
  esac ;
 done ;
done

one can find a number of ports that might surprise a user that was not
aware of this fact.  And with regard to the selection of exclusion
globs, we should note that a glob that matches too many ports may be
as pr

Re: math/py-numpy vs. math/atlas-devel

2009-11-08 Thread Doug Barton
First, sorry I missed the original problem report, I'm not subscribed
to -questions. Usually ports questions (including those about tools)
are handled on freebsd-po...@freebsd.org, but OTOH if you're not sure
where to send a question it's always better to start on the -questions
list. :)

Second, thanks to b.f. for the very thorough analysis of the problem.
I will respond and trim a bit as I go.

Third, I've cc'ed maho@ since the genesis of the problem is that
math/atlas and math/atlas-devel aren't setting CONFLICTS when
apparently they should be. maho, if you need any help with this let me
know.

b. f. wrote:
> Scott Bennett wrote:
>> I would like to install science/gnudatalanguage but have been running
>> into various obstacles.  Lars Engels very kindly just fixed one of them
>> (devel/lasi) (Thanks, Lars!), so now I'm on to the next one, which may not
>> be a showstopper, but it's at least a nuisance.  One of the gnudatalanguage
>> dependencies is math/py-numpy, which, in turn, depends upon math/atlas.
>> However, I have math/atlas-devel installed and do not wish to revert to an
>> older, slower version of the ATLAS library.  Adding a "-x atlas-\*" onto
>> the portmaster command to build math/py-numpy fails to prevent portmaster
>>from trying to build math/atlas. 

As was pointed out, that definitely won't work. With the glob patterns
for exclusions, or specifying ports on the command line you want to be
as conservative as possible. Also, it's not necessary to include a *
at the end, portmaster will handle that for you.

>> Creating a
>> /var/db/pkg/atlas-3.8.3_1,1/+IGNOREME file in addition doesn't help.

+IGNOREME files are only relevant to installed ports.

>> How
>> can I force math/py-numpy to accept the already installed math/atlas-devel
>> libraries?
>> Thanks in advance for any help!

The easiest way for you to accomplish this would have been to use '-x
atlas', the second-easiest would have been to use the -i command line
option. See the man page for more information on that.

> Congratulations, you've managed to defeat three sets of safeguards in
> portmaster.
> 
> Problem #1
> 
> math/atlas and math/atlas-devel don't have proper CONFLICTS entries in
> their Makefiles (this should be fixed),

Yes, this analysis was essentially correct.

>  Problem #2:
> 
> You're using the -x flag incorrectly.  Or portmaster isn't
> implementing it properly when the port to be excluded is not actually
> installed, take your pick. 

The way that -x is implemented currently really depends on the user's
definition of the exclude pattern, and is designed to exclude things
as early as possible so as to avoid what would ultimately become
wasted effort. It's hard to justify modifying the code to guess that
something we've already started working on might match what we think
the user MEANT instead of what they SAID.

> Problem #3:
> 
> The +IGNOREME checks in portmaster aren't properly implemented for
> this case, so they fail to prevent math/atlas from being built.

s/properly implemented for/designed to handle/

If you think about this for a second, the entries in /var/db/pkg are
exclusively related to installed ports, so trying to use an +IGNOREME
file for this purpose doesn't make sense, although I can sympathize
with the OPs sense of desperation here. :)

> So what can you do while these problems are being fixed? 

Just to be clear, I didn't see anything that needs to be fixed in your
message, and I hope my explanation makes it clear why. If you think
that there are actual bugs that need to be fixed please feel free to
create a thread on -ports to discuss them.


hope this helps,

Doug

PS, Can't resist ...
http://dougbarton.us/portmaster-proposal.html

-- 

Improve the effectiveness of your Internet presence with
a domain name makeover!http://SupersetSolutions.com/

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"


Re: math/py-numpy vs. math/atlas-devel

2009-11-08 Thread b. f.
Scott Bennett wrote:
>I would like to install science/gnudatalanguage but have been running
>into various obstacles.  Lars Engels very kindly just fixed one of them
>(devel/lasi) (Thanks, Lars!), so now I'm on to the next one, which may not
>be a showstopper, but it's at least a nuisance.  One of the gnudatalanguage
>dependencies is math/py-numpy, which, in turn, depends upon math/atlas.
>However, I have math/atlas-devel installed and do not wish to revert to an
>older, slower version of the ATLAS library.  Adding a "-x atlas-\*" onto
>the portmaster command to build math/py-numpy fails to prevent portmaster
>from trying to build math/atlas.  Creating a
>/var/db/pkg/atlas-3.8.3_1,1/+IGNOREME file in addition doesn't help.  How
>can I force math/py-numpy to accept the already installed math/atlas-devel
>libraries?
>Thanks in advance for any help!


Congratulations, you've managed to defeat three sets of safeguards in
portmaster.

Problem #1

math/atlas and math/atlas-devel don't have proper CONFLICTS entries in
their Makefiles (this should be fixed), so the following code in
portmaster, from dependency_check ():


   1612 conflicts=''
   1613 if pm_cd $d_port; then
   1614 grep -ql ^CONFLICTS Makefile &&
   1615 conflicts=`pm_make_b -V CONFLICTS`
   1616 else
   1617 fail "Cannot cd to $d_port"
   1618 fi
   1619 for glob in $conflicts; do
   1620 confl_p=`pkg_info -I $glob 2>/dev/null`
   1621 if [ -n "$confl_p" ]; then
   1622 confl_p=${confl_p%% *}
   1623 echo ''
   1624 echo "===>>> The dependency
for ${origin}"
   1625 echo "   seems to be
handled by $confl_p"
   1626 echo ''
   1627 d_port="$pd/`origin_from_pdb $confl_p`"
   1628 fi
   1629 done

doesn't substitute your alternative dependency, math/atlas-devel, for
math/atlas.


 Problem #2:

You're using the -x flag incorrectly.  Or portmaster isn't
implementing it properly when the port to be excluded is not actually
installed, take your pick.  It's not completely fool-proof.  Since you
don't have math/atlas installed, the code in portmaster's
dependency_check ():

   1632 origin="${d_port#$pd/}" ;
iport=`iport_from_origin ${origin}`
   1633
   1634 if [ -n "$iport" ]; then
   1635 check_exclude $iport || continue
   1636 else
   1637 check_exclude $origin || continue
   1638 fi

   gives origin="math/atlas", and then uses:

385 iport_from_origin () {
386 local dir
387 dir=`grep -l "@comment ORIGIN:${1}$" $pdb/*/+CONTENTS`
388
389 # It should not happen that more than one port meets this
390 # requirement, but it can if the pkg data is corrupted.
391 dir="${dir%%/+CONTENTS*}"
392 echo ${dir#$pdb/}
393 }

to find that iport="" , so "check_exclude math/atlas" is called. Then,
in accordance with:

   1483 check_exclude () {
   1484 [ -n "$PM_EXCL" ] || return 0
   1485
   1486 local pat
   1487
   1488 for pat in $PM_EXCL; do
   1489 case "$1" in
   1490 *${pat}*)
   1491 if [ -n "$PM_VERBOSE" ]; then
   1492 echo "===>>> Skipping $1"
   1493 echo "   because it matches the
pattern: *${pat}*"
   1494 echo ''
   1495 fi
   1496 return 1 ;;
   1497 esac
   1498 done
   1499
   1500 return 0
   1501 }

check_exclude tries to match your patterns in PM_EXCL against
"math/atlas".  But you've got "atlas-" in PM_EXCL (after portmaster's
globstrip removed the trailing asterisk, negating your attempt protect
it with quotes), which won't match because of the hyphen.  It would
have matched if math/atlas were actually installed, in which case
iport="atlas-3.8.3_1,1" and portmaster would have compared iport with
*atlas-*.  You must use a port origin glob with the -x flag when the
port that you wish to exclude isn't installed.

Problem #3:

The +IGNOREME checks in portmaster aren't properly implemented for
this case, so they fail to prevent math/atlas from being built.  To
see this, Continue along in dependency_check (). Here, since iport="",
dependency_check () next calls "check_interactive math/atlas":

   1459 check_interactive () {
   1460 [ -n "$INTERACTIVE_UPDATE" ] || return 0
   1461
   1462 local update_to
   1463
   1464 [ -n "$2" ] && update_to=" to $2"
   1465
   1466 case "$INTERACTIVE_

math/py-numpy vs. math/atlas-devel

2009-11-07 Thread Scott Bennett
 I would like to install science/gnudatalanguage but have been running
into various obstacles.  Lars Engels very kindly just fixed one of them
(devel/lasi) (Thanks, Lars!), so now I'm on to the next one, which may not
be a showstopper, but it's at least a nuisance.  One of the gnudatalanguage
dependencies is math/py-numpy, which, in turn, depends upon math/atlas.
However, I have math/atlas-devel installed and do not wish to revert to an
older, slower version of the ATLAS library.  Adding a "-x atlas-\*" onto
the portmaster command to build math/py-numpy fails to prevent portmaster
from trying to build math/atlas.  Creating a
/var/db/pkg/atlas-3.8.3_1,1/+IGNOREME file in addition doesn't help.  How
can I force math/py-numpy to accept the already installed math/atlas-devel
libraries?
 Thanks in advance for any help!


  Scott Bennett, Comm. ASMELG, CFIAG
**
* Internet:   bennett at cs.niu.edu  *
**
* "A well regulated and disciplined militia, is at all times a good  *
* objection to the introduction of that bane of all free governments *
* -- a standing army."   *
*-- Gov. John Hancock, New York Journal, 28 January 1790 *
**
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"