Bug 166796

Summary: Review Request: cmucl: CMU Common Lisp compiler
Product: [Fedora] Fedora Reporter: Rex Dieter <rdieter>
Component: Package ReviewAssignee: Jason Tibbitts <j>
Status: CLOSED NEXTRELEASE QA Contact: David Lawrence <dkl>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: fedora-extras-list, j
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
URL: http://www.cons.org/cmucl/
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-03-09 21:27:17 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 163779, 166783    

Description Rex Dieter 2005-08-25 19:44:14 UTC
Spec Name or Url: http://apt.kde-redhat.org/apt/fedora/SPECS/cmucl-19b-1.spec
SRPM Name or Url: http://apt.kde-redhat.org/apt/fedora/all/SRPMS/stable/cmucl-19b-1.src.rpm
Description:

CMUCL is a free, high performance implementation of the Common Lisp
programming language which runs on most major Unix platforms. It
mainly conforms to the ANSI Common Lisp standard. CMUCL provides a
sophisticated native code compiler; a powerful foreign function
interface; an implementation of CLOS, the Common Lisp Object System,
which includes multimethods and a metaobject protocol; a source-level
debugger and code profiler; and an Emacs-like editor implemented in
Common Lisp. CMUCL is maintained by a team of volunteers collaborating
over the Internet, and is mostly in the public domain.

Comment 1 Rex Dieter 2005-08-25 19:45:08 UTC
NOTE: builds (may) fail on FC4+ (FC3 is fine).  Not sure why, yet.

Comment 3 Rex Dieter 2005-08-29 13:08:47 UTC
%changelog
* Fri Aug 26 2005 Rex Dieter <rexdieter[AT]users.sf.net> 19b-2
- use setarch
- -extras subpkg


Comment 4 Rex Dieter 2005-08-31 13:28:40 UTC
FC4 failure, looks like a gcc4 thing:

gcc -rdynamic -Wstrict-prototypes -Wall -g -DGENCGC -DLINKAGE_TABLE -D__NO_CTYPE
-I. -I../../p86/lisp -I../../src/lisp -I-
 -I/usr/X11R6/include -DGENCGC -DLINKAGE_TABLE  -c -o interrupt.o
../../src/lisp/interrupt.c
cc1: note: obsolete option -I- used, please use -iquote instead
../../src/lisp/interrupt.c: In function 'interrupt_internal_error':
../../src/lisp/interrupt.c:172: warning: unused variable 'code'
../../src/lisp/interrupt.c: In function 'interrupt_handle_pending':
../../src/lisp/interrupt.c:209: warning: unused variable 'were_in_lisp'
../../src/lisp/interrupt.c: In function 'interrupt_handle_now':
../../src/lisp/interrupt.c:300: error: memory input 0 is not directly addressable
../../src/lisp/interrupt.c: In function 'maybe_now_maybe_later':
../../src/lisp/interrupt.c:451: error: memory input 0 is not directly addressable
../../src/lisp/interrupt.c: In function 'interrupt_install_low_level_handler':
../../src/lisp/interrupt.c:556: warning: assignment from incompatible pointer type
../../src/lisp/interrupt.c: In function 'install_handler':
../../src/lisp/interrupt.c:620: warning: assignment from incompatible pointer type
../../src/lisp/interrupt.c:622: warning: assignment from incompatible pointer type
../../src/lisp/interrupt.c:624: warning: assignment from incompatible pointer type
gmake[1]: *** [interrupt.o] Error 1
gmake[1]: Leaving directory
`/usr/local/tmp/BUILD/cmucl-19b/i386-redhat-linux-gnu/lisp'


Comment 5 Rex Dieter 2005-08-31 13:38:54 UTC
near line 300:

    if (contextstruct.fpstate)
#if defined(__x86_64)
      setfpucw(contextstruct.fpstate->cwd & ~0xc00);
#else
      setfpucw(contextstruct.fpstate->cw & ~0xc00);
#endif


near line 451: 

      if (contextstruct.fpstate)
#if defined(__x86_64)
        setfpucw(contextstruct.fpstate->cwd & ~0xc00);
#else
        setfpucw(contextstruct.fpstate->cw & ~0xc00);
#endif


Comment 6 Rex Dieter 2005-09-13 19:32:50 UTC
%changelog
* Tue Sep 13 2005 Rex Dieter <rexdieter[AT]users.sf.net> 19b-3
- ADDR_NO_RANDOMIZE patch
- gcc4 patch

(Now builds on Fedora Core 4).

Spec Name or Url: http://apt.kde-redhat.org/apt/fedora/SPECS/cmucl-19b-3.spec
SRPM Name or Url:
http://apt.kde-redhat.org/apt/fedora/all/SRPMS/stable/cmucl-19b-3.src.rpm


Comment 7 Rex Dieter 2005-09-22 14:23:16 UTC
%changelog
* Mon Sep 19 2005 Rex Dieter <rexdieter[AT]users.sf.net> 19b-4
- move (re)exec/personality call runprog.c -> lisp.c (in main() ) (sent upstream)
- optflags patch
- better gcc4 patch (sent upstream)
- use my_setarch.c instead of setarch (so we can build on fc3 too)
 
Spec Name or Url: http://apt.kde-redhat.org/apt/fedora/SPECS/cmucl-19b-4.spec
SRPM Name or Url:
http://apt.kde-redhat.org/apt/fedora/all/SRPMS/stable/cmucl-19b-4.src.rpm

Comment 8 Rex Dieter 2005-10-21 13:14:56 UTC
%changelog
* Fri Oct 21 2005 Rex Dieter <rexdieter[AT]users.sf.net> 19c-0.pre1
- 19c-pre1
- drop upstreamed gcc4 patch
- drop unused setarch/personality bits

* Fri Oct 07 2005 Rex Dieter <rexdieter[AT]users.sf.net> 19b-5
- use known-to-be-good cmucl-19a for bootstrap (19b has issues)
- drop personalility patch (not needed afterall)
 
Spec Name or Url: http://apt.kde-redhat.org/apt/fedora/SPECS/cmucl-19c-0.pre1.spec
SRPM Name or Url:
http://apt.kde-redhat.org/apt/fedora/all/SRPMS/stable/cmucl-19c-0.pre1.src.rpm

Comment 9 Rex Dieter 2005-10-21 15:15:36 UTC
%changelog
* Fri Oct 21 2005 Rex Dieter <rexdieter[AT]users.sf.net> 19c-1.pre
- cleanup shared-motif patch
- use simpler build.sh script

Spec Name or Url: http://apt.kde-redhat.org/apt/fedora/SPECS/cmucl-19c-1.pre1.spec
SRPM Name or Url:
http://apt.kde-redhat.org/apt/fedora/all/SRPMS/stable/cmucl-19c-1.pre1.src.rpm

Comment 11 Rex Dieter 2005-12-03 22:52:20 UTC
19c final was just released Friday... will update here asap (probably Monday)

Comment 12 Rex Dieter 2005-12-05 16:13:50 UTC
* Fri Dec 02 2005 Rex Dieter <rexdieter[AT]users.sf.net> 19c-2
- 19c (final)

Spec Name or Url: http://apt.kde-redhat.org/apt/fedora/SPECS/cmucl-19c-2.spec
SRPM Name or Url:
http://apt.kde-redhat.org/apt/fedora/all/SRPMS.stable/cmucl-19c-2.src.rpm

Comment 13 Jason Tibbitts 2006-01-19 18:54:08 UTC
I have a need for cmucl packages, so I figured I'd put in some work
into a review.

rpmlint output:
W: cmucl devel-file-in-non-devel-package /usr/lib/cmucl/internals.h
E: cmucl no-signature
E: cmucl-extras requires-on-release cmucl 19c-2
W: cmucl-extras no-documentation
E: cmucl-extras no-signature

Issues:
- The single header file that's included in the main package.  I can't
  imagine it's worth creating a separate -devel package for one file, but
  that would have to be decided by someone more knowledgeable than I.  Is
  it needed for the compiler to operate?
- The license.  Upstream does not include a separate license text.  The
  specfile indicates "Public Domain", but the README file says "... 
  is mostly in the public domain".  Section 1.3 of the manual lists a
  number of copyright statements; I will include them at the end of this
  review.  An expert will need to make sure these are acceptable, and then
  decide whether it's reasonable to call the whole "Public Domain".
- rpmlint complains "E: cmucl-extras requires-on-release cmucl 19c-2".
  Unfortunately I don't know what this means.  (rpmlint -i provides no
  explanation.)
- rpmlint complains "W: cmucl-extras no-documentation", and indeed there is
  no documentation included in the package.  I think it would be
  reasonable to explain just what some of this stuff is.  At minimum, the
  %description for the extras package could list what is included.
- The spec includes two separate build methods.  Are they both needed?
- ExclusiveArch: %{ix86} - Is there no portability at all to x86_64 or PPC?
- Since the compiler builds itself, the srpm includes a pre-built copy.  I
  believe this is accepted practice but I figured I'd make sure.

Here are the copyright statements from the manual:

CMUCL's CLOS implementation is derived from the PCL reference
implementation written at Xerox PARC:

    Copyright (c) 1985, 1986, 1987, 1988, 1989, 1990 Xerox Corporation.
    All rights reserved.

    Use and copying of this software and preparation of derivative works
    based upon this software are permitted. Any distribution of this
    software or derivative works must comply with all applicable United
    States export control laws.

    This software is made available AS IS, and Xerox Corporation makes no
    warranty about the software, its performance or its conformity to any
    specification.

Its implementation of the LOOP macro was derived from code from Symbolics,
which was derived from code written at MIT:

    Portions of LOOP are Copyright (c) 1986 by the Massachusetts Institute
    of Technology.  All Rights Reserved.

    Permission to use, copy, modify and distribute this software and its
    documentation for any purpose and without fee is hereby granted,
    provided that the M.I.T. copyright notice appear in all copies and that
    both that copyright notice and this permission notice appear in
    supporting documentation. The names "M.I.T." and "Massachusetts
    Institute of Technology" may not be used in advertising or publicity
    pertaining to distribution of the software without specific, written
    prior permission. Notice must be given in supporting documentation that
    copying distribution is by permission of M.I.T. M.I.T. makes no
    representations about the suitability of this software for any
    purpose. It is provided "as is" without express or implied warranty.

    Portions of LOOP are Copyright (c) 1989, 1990, 1991, 1992 by Symbolics,
    Inc.  All Rights Reserved.

    Permission to use, copy, modify and distribute this software and its
    documentation for any purpose and without fee is hereby granted,
    provided that the Symbolics copyright notice appear in all copies and
    that both that copyright notice and this permission notice appear in
    supporting documentation. The name "Symbolics" may not be used in
    advertising or publicity pertaining to distribution of the software
    without specific, written prior permission. Notice must be given in
    supporting documentation that copying distribution is by permission of
    Symbolics. Symbolics makes no representations about the suitability of
    this software for any purpose. It is provided "as is" without express
    or implied warranty.

    Symbolics, CLOE Runtime, and Minima are trademarks, and CLOE, Genera,
    and Zetalisp are registered trademarks of Symbolics, Inc.

The CLX code is copyrighted by Texas Instruments Incorporated:

    Copyright (C) 1987 Texas Instruments Incorporated.

    Permission is granted to any individual or institution to use, copy,
    modify, and distribute this software, provided that this complete
    copyright and permission notice is maintained, intact, in all copies
    and supporting documentation.

    Texas Instruments Incorporated provides this software "as is" without
    express or implied warranty.


Comment 14 Rex Dieter 2006-01-19 19:02:18 UTC
Thanks.

> W: cmucl devel-file-in-non-devel-package /usr/lib/cmucl/internals.h

Since cmucl *is* a compiler afterall, I think it's ok to include it here. (-:

> - The license.

Looks like a mix of PD and MIT.  I'll fix that.

> - The spec includes two separate build methods.  Are they both needed?

method 1: use included/internal cmucl for bootstrap
method 2: use (previous) rpm-built cmucl for bootstrap.

Obviously, at least the first iteration for inclusion in Extras will have to be
method 1.

> - rpmlint complains "W: cmucl-extras no-documentation"

I'll see if I can find some.  (-:

> - ExclusiveArch: %{ix86} - Is there no portability at all to x86_64 or PPC?

Yes, no.  It can theoretically work, but there's no bootstrap binary available
from upstream, nor do I have any x86_64 or ppc box of my own to attempt to make one.

Comment 15 Jason Tibbitts 2006-01-19 19:22:33 UTC
> Since cmucl *is* a compiler afterall, I think it's ok to include it here. (-:

I would tend to agree; I wonder why rpmlint doesn't complain about gcc which
does the same thing.  Ahhh, it has a specific exception.

> method 1: use included/internal cmucl for bootstrap
> method 2: use (previous) rpm-built cmucl for bootstrap.
> 
> Obviously, at least the first iteration for inclusion in Extras will have to
> be method 1.

I see.  Do you plan to switch it over once the package is included?

> > - ExclusiveArch: %{ix86} - Is there no portability at all to x86_64 or PPC?
> 
> Yes, no.  It can theoretically work, but there's no bootstrap binary available
> from upstream, nor do I have any x86_64 or ppc box of my own to attempt to
> make one.

I can give you an account on an x86_64 machine if you like, but I can't help you
with PPC.

I think the requires-on-release is fixed by replacing the

Requires: %{name} = %{version}-%{release}

lines by

Requires: %{name} = %{version}

Comment 16 Rex Dieter 2006-03-09 02:22:22 UTC
>> Obviously, at least the first iteration for inclusion in Extras will have to
>> be method 1.

> I see.  Do you plan to switch it over once the package is included?

Yep.



Comment 17 Jason Tibbitts 2006-03-09 04:28:09 UTC
So let's see where we're at.  Looking at the specfile for 19c-2:

The license needs fixing.
rpmlint complains about requires-on-release.
Did you want access to an x86_64 machine to try and get a bootstrap going?


Comment 18 Rex Dieter 2006-03-09 05:06:49 UTC
> The license needs fixing.

I think we'll go with Public Domain/MIT

> rpmlint complains about requires-on-release.

I think that's bogus, and not something worth worrying about.

> Did you want access to an x86_64 machine to try and get a bootstrap going?

No, I have a x86_64 box now, but don't have much time to invest in that.

Comment 19 Jason Tibbitts 2006-03-09 05:50:46 UTC
OK, I just did a fresh build on FC4 and it seems rpmlint has undergone quite a
few changes since I last ran it.  Here's the current output:

W: cmucl devel-file-in-non-devel-package /usr/lib/cmucl/internals.h
W: cmucl-extras no-documentation
E: cmucl-extras script-without-shellbang /usr/lib/cmucl/lib/mh-scan

This is a compiler so it's expected to contain devel files.
There isn't any documentation to include in cmucl-extras.
mh-scan isn't a shell script.

So this rpmlint output is OK.

Now the only remaining issue is a mock build.  Unfortunately it just failed for me:

+ ./src/tools/build.sh -b i386-redhat-linux-gnu -C 'linux_gencgc x86' -v '19c
Fedora Extras release 2.fc5' -o 'bin/lisp -noinit -batch'
//starting build: Thu Mar  9 00:32:02 EST 2006
Lisp = linux_gencgc
Motif = x86
./src/tools/build.sh: line 97: time: command not found
Makefile:62: Depends: No such file or directory

gcc -MM -E  -rdynamic -Wstrict-prototypes -Wall -g   -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4
-m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D__NO_CTYPE -I.
-I../../src/lisp -I- -I/usr/X11R6/include   ../../src/lisp/lisp.c
../../src/lisp/coreparse.c ../../src/lisp/alloc.c ../../src/lisp/monitor.c
../../src/lisp/print.c ../../src/lisp/interr.c ../../src/lisp/vars.c
../../src/lisp/parse.c ../../src/lisp/interrupt.c ../../src/lisp/search.c
../../src/lisp/validate.c ../../src/lisp/globals.c ../../src/lisp/dynbind.c
../../src/lisp/breakpoint.c ../../src/lisp/regnames.c ../../src/lisp/backtrace.c
../../src/lisp/save.c ../../src/lisp/purify.c ../../src/lisp/socket.c
../../src/lisp/runprog.c ../../src/lisp/time.c ../../src/lisp/x86-arch.c
../../src/lisp/x86-assem.S ../../src/lisp/linux-stubs.S
../../src/lisp/Linux-os.c ../../src/lisp/os-common.c ../../src/lisp/elf.c
../../src/lisp/gc.c > ,depends
cc1: note: obsolete option -I- used, please use -iquote instead
In file included from ../../src/lisp/lisp.c:19:
./internals.h:1:2: error: #error You need to run genesis (via build-world.sh)
before compiling the startup code!
[snip many similar warnings and errors]
gmake: *** [Depends] Error 1
src/tools/load-world.sh: line 17: i386-redhat-linux-gnu-2/lisp/lisp: No such
file or directory
Failed to build i386-redhat-linux-gnu-2!
error: Bad exit status from /var/tmp/rpm-tmp.53056 (%build)


Comment 20 Rex Dieter 2006-03-09 14:56:55 UTC
My apologies for not actually having tried building cmucl with mock myself yet.

%changelog
* Wed Mar 08 2006 Rex Dieter <rexdieter[AT]users.sf.net> 19c-3
- License: +MIT
- BR: bc, time

Spec Name or Url: http://apt.kde-redhat.org/apt/fedora/SPECS/cmucl-19c-3.spec
SRPM Name or Url:
http://apt.kde-redhat.org/apt/fedora/all/SRPMS.stable/cmucl-19c-3.src.rpm

Comment 21 Jason Tibbitts 2006-03-09 19:30:11 UTC
OK, everything builds fine.  I think we're good to go.

Approved.


Comment 22 Rex Dieter 2006-03-09 19:32:04 UTC
Thanks, importing now.

Comment 23 Jason Tibbitts 2006-03-09 20:08:55 UTC
Don't forget the tracking bugs for the excluded architectures.

Comment 24 Rex Dieter 2006-03-09 21:25:12 UTC
6135 (cmucl): Build on target fedora-development-extras succeeded.
     Build logs may be found at
http://buildsys.fedoraproject.org/logs/fedora-development-extras/6135-cmucl-19c-4.fc5/