octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Result: Octave-UPM on Windows :-(


From: Ben Abbott
Subject: Re: Result: Octave-UPM on Windows :-(
Date: Sat, 10 Nov 2012 21:14:20 -0500

On Nov 10, 2012, at 6:49 PM, Ben Abbott wrote:

> 
> On Nov 10, 2012, at 6:06 PM, Alexander Hansen wrote:
> 
>> On 11/10/12 3:05 PM, Ben Abbott wrote:
>>> 
>>> On Nov 10, 2012, at 4:39 PM, Alexander Hansen wrote:
>>> 
>>>> On 11/10/12 1:59 PM, Ben Abbott wrote:
>>>>> 
>>>>> On Nov 10, 2012, at 12:44 PM, Benjamin Abbott wrote:
>>>>> 
>>>>>> On Nov 10, 2012, at 12:31 PM, Jordi Gutiérrez Hermoso <address@hidden> 
>>>>>> wrote:
>>>>>> 
>>>>>>> On 10 November 2012 12:30, Alexander Hansen <address@hidden> wrote:
>>>>>>>> On 11/10/12 10:14 AM, Jordi Gutiérrez Hermoso wrote:
>>>>>>>>> On 10 November 2012 06:03, Jacob Dawid <address@hidden> wrote:
>>>>>>>>>> The problem is that we are collecting experience with using VS and 
>>>>>>>>>> by doing
>>>>>>>>>> that we promote non-free software.
>>>>>>>>> 
>>>>>>>>> There's also a practical problem with distribution here, since given
>>>>>>>>> Visual Studio's non-free nature, our users have to go and chase
>>>>>>>>> additional libraries on their own, since we are not free to give them
>>>>>>>>> those libraries ourselves.
>>>>>>>>> 
>>>>>>>>> A similar problem occurs with Xcode and free distribution on Mac OS X.
>>>>>>>> 
>>>>>>>> Except that Xcode *doesn't install libraries*.
>>>>>>> 
>>>>>>> It installs headers, right? What's in the "command line tools for
>>>>>>> Xcode" that we can't distribute freely?
>>>>>>> 
>>>>>>> - Jordi G. H.
>>>>>> 
>>>>>> I've been meaning look at the copyright for the headers used by Xcode, 
>>>>>> but keep forgetting.  Has anyone taken a peek?
>>>>>> 
>>>>>> Ben
>>>>> 
>>>>> I'm not sure which headers Octave uses when build on MacOS X.   I looked 
>>>>> through several .h files in /usr/include to see what was there.  Some 
>>>>> include a FSF copyright.
>>>>> 
>>>>>> This file is part of GCC.
>>>>>> 
>>>>>> GCC is free software; you can redistribute it and/or modify it under
>>>>>> the terms of the GNU General Public License as published by the Free
>>>>>> Software Foundation; either version 2, or (at your option) any later
>>>>>> version.
>>>>>> 
>>>>>> GCC is distributed in the hope that it will be useful, but WITHOUT ANY
>>>>>> WARRANTY; without even the implied warranty of MERCHANTABILITY or
>>>>>> FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
>>>>>> for more details.
>>>>>> 
>>>>>> You should have received a copy of the GNU General Public License
>>>>>> along with GCC; see the file COPYING.  If not, write to the Free
>>>>>> Software Foundation, 59 Temple Place - Suite 330, Boston, MA
>>>>>> 02111-1307, USA.  */
>>>>> 
>>>>> Some a FreeBSD Copyright (?)
>>>>> 
>>>>>> // Copyright (c) 1993 The Regents of the University of California.
>>>>>> // All rights reserved.
>>>>>> //
>>>>>> // This code is derived from software contributed to Berkeley by
>>>>>> // Kent Williams and Tom Epperly.
>>>>>> //
>>>>>> //  Redistribution and use in source and binary forms, with or without
>>>>>> //  modification, are permitted provided that the following conditions
>>>>>> //  are met:
>>>>>> 
>>>>>> //  1. Redistributions of source code must retain the above copyright
>>>>>> //  notice, this list of conditions and the following disclaimer.
>>>>>> //  2. Redistributions in binary form must reproduce the above copyright
>>>>>> //  notice, this list of conditions and the following disclaimer in the
>>>>>> //  documentation and/or other materials provided with the distribution.
>>>>>> 
>>>>>> //  Neither the name of the University nor the names of its contributors
>>>>>> //  may be used to endorse or promote products derived from this software
>>>>>> //  without specific prior written permission.
>>>>>> 
>>>>>> //  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
>>>>>> //  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
>>>>>> //  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>>>>>> //  PURPOSE.
>>>>> 
>>>>> Some the Apple Public Source License (not GPL compatible)
>>>>> 
>>>>>> * This file contains Original Code and/or Modifications of Original Code
>>>>>> * as defined in and that are subject to the Apple Public Source License
>>>>>> * Version 2.0 (the 'License'). You may not use this file except in
>>>>>> * compliance with the License. Please obtain a copy of the License at
>>>>>> * http://www.opensource.apple.com/apsl/ and read it before using this
>>>>>> * file.
>>>>>> * 
>>>>>> * The Original Code and all software distributed under the License are
>>>>>> * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
>>>>>> * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
>>>>>> * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
>>>>>> * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
>>>>>> * Please see the License for the specific language governing rights and
>>>>>> * limitations under the License.
>>>>> 
>>>>> Is there a way to determine which include files Octave uses ?
>>>>> 
>>>>> Ben
>>>> 
>>>> If you use --enable-dependency-tracking at configure time (I don't
>>>> remember if that's default or not), that information gets cached in
>>>> files in the build tree.
>>> 
>>> Forgive my ignorance, but after the build completes, how to I determine the 
>>> dependencies?
>>> 
>>> Ben
>>> 
>>> 
>> 
>> No problem
>> 
>> What you're looking for is files with a ".Po" or ".Plo" extension.
>> They're just text files, and have entries like:
>> 
>> main.o: main.c ../config.h ../libgnu/stdint.h \
>> /usr/bin/../lib/clang/4.1/include/stdint.h /usr/include/stdint.h \
>> ../libgnu/sys/types.h /usr/include/sys/types.h \
>> /usr/include/sys/appleapiopts.h /usr/include/sys/cdefs.h \
>> /usr/include/sys/_symbol_aliasing.h \
>> /usr/include/sys/_posix_availability.h /usr/include/machine/types.h \
>> /usr/include/i386/types.h /usr/include/i386/_types.h \
>> /usr/include/sys/_types.h /usr/include/machine/_types.h \
>> /usr/include/machine/endian.h /usr/include/i386/endian.h \
>> /usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
>> /usr/include/libkern/i386/_OSByteOrder.h /usr/include/sys/_structs.h \
>> /usr/bin/../lib/clang/4.1/include/limits.h /usr/include/limits.h \
>> /usr/include/machine/limits.h /usr/include/i386/limits.h \
>> /usr/include/i386/_limits.h /usr/include/sys/syslimits.h \
>> /usr/include/inttypes.h /usr/include/_types.h \
>> ../libcruft/misc/f77-fcn.h ../libcruft/misc/quit.h ../libgnu/stdio.h \
>> /usr/include/stdio.h /usr/include/Availability.h \
>> /usr/include/AvailabilityInternal.h /usr/include/secure/_stdio.h \
>> /usr/include/secure/_common.h \
>> /usr/bin/../lib/clang/4.1/include/stdarg.h \
>> /usr/bin/../lib/clang/4.1/include/stddef.h ../libgnu/signal.h \
>> /usr/include/signal.h /usr/include/sys/signal.h \
>> /usr/include/machine/signal.h /usr/include/i386/signal.h \
>> /usr/include/i386/_structs.h /usr/include/machine/_structs.h \
>> /usr/include/mach/i386/_structs.h /usr/include/setjmp.h \
>> ../liboctave/lo-ieee.h octave.h
>> 
>> ../config.h:
>> 
>> ../libgnu/stdint.h:
>> 
>> /usr/bin/../lib/clang/4.1/include/stdint.h:
>> 
>> <...>
>> 
>> I believe the reiteration of the headers is to show what headers _they_
>> drag in.
>> 
>> So it's pretty human-readable or processable via scripts.
> 
> Thanks.
> 
> I wrote a short script in Octave to locate the dependencies in /usr and then 
> check to see if they were under the APSL, and not FreeBSD.  The APSL include 
> files listed in my src/.deps/octave-main.Po are ...
> 
> /usr/include/Availability.h             
> /usr/include/AvailabilityInternal.h     
> /usr/include/AvailabilityMacros.h       
> /usr/include/_structs.h                 
> /usr/include/_types.h                   
> /usr/include/architecture/i386/math.h   
> /usr/include/crt_externs.h              
> /usr/include/i386/_structs.h            
> /usr/include/i386/_types.h              
> /usr/include/i386/setjmp.h              
> /usr/include/i386/signal.h              
> /usr/include/libkern/_OSByteOrder.h     
> /usr/include/libkern/i386/_OSByteOrder.h
> /usr/include/mach/i386/_structs.h       
> /usr/include/machine/_structs.h         
> /usr/include/machine/_types.h           
> /usr/include/machine/endian.h           
> /usr/include/machine/setjmp.h           
> /usr/include/machine/signal.h           
> /usr/include/machine/types.h            
> /usr/include/math.h                     
> /usr/include/pthread.h                  
> /usr/include/pthread_impl.h             
> /usr/include/sched.h                    
> /usr/include/setjmp.h                   
> /usr/include/sys/_posix_availability.h  
> /usr/include/sys/_select.h              
> /usr/include/sys/_structs.h             
> /usr/include/sys/_symbol_aliasing.h     
> /usr/include/sys/_types.h               
> /usr/include/sys/appleapiopts.h        
> 
> As I'm on a MacBook with MacPorts installed this list may not be the same as 
> it would be for Fink.
> 
> I assume this means that distributing an Octave binary built this way is a 
> violation of the GPL?
> 
> Ben

From http://www.gnu.org/licenses/quick-guide-gplv3.html

> Less Source to Distribute: New System Libraries Exception
> 
> Both versions of the GPL require you to provide all the source necessary to 
> build the software, including supporting libraries, compilation scripts, and 
> so on. They also draw the line at System Libraries: you're not required to 
> provide the source for certain core components of the operating system, such 
> as the C library.
> 
> GPLv3 has adjusted the definition of System Library to include software that 
> may not come directly with the operating system, but that all users of the 
> software can reasonably be expected to have. For example, it now also 
> includes the standard libraries of common programming languages such as 
> Python and Ruby.
> 
> The new definition also makes it clear that you can combine GPLed software 
> with GPL-incompatible System Libraries, such as OpenSolaris' C library, and 
> distribute them both together. These changes will make life easier for free 
> software distributors who want to provide these combinations to their users.

and from http://www.gnu.org/licenses/gcc-exception-3.1.html

> When you use GCC to compile a program, GCC may combine portions of certain 
> GCC header files and runtime libraries with the compiled program. The purpose 
> of this Exception is to allow compilation of non-GPL (including proprietary) 
> programs to use, in this way, the header files and runtime libraries covered 
> by this Exception.

Sounds like a reasonable interpretation is that Apple's libraries and header 
files are fair game.

Ben







reply via email to

[Prev in Thread] Current Thread [Next in Thread]