Raymond Toy pushed to branch master at cmucl / cmucl

Commits:

8 changed files:

Changes:

  • src/code/bsd-os.lisp
    ... ... @@ -48,19 +48,6 @@
    48 48
     		      #+Darwin "Darwin"
    
    49 49
     		      #-(or freebsd NetBSD OpenBSD Darwin) "BSD")
    
    50 50
     
    
    51
    -(defvar *software-version* nil "Version string for supporting software")
    
    52
    -
    
    53
    -(defun software-version ()
    
    54
    -  "Returns a string describing version of the supporting software."
    
    55
    -  (unless *software-version*
    
    56
    -    (setf *software-version*
    
    57
    -	  (string-trim '(#\newline)
    
    58
    -		       (with-output-to-string (stream)
    
    59
    -			 (run-program "/usr/bin/uname"
    
    60
    -				      '("-r")
    
    61
    -				      :output stream)))))
    
    62
    -  *software-version*)
    
    63
    -
    
    64 51
     
    
    65 52
     ;;; OS-Init initializes our operating-system interface.  It sets the values
    
    66 53
     ;;; of the global port variables to what they should be and calls the functions
    

  • src/code/linux-os.lisp
    ... ... @@ -28,20 +28,10 @@
    28 28
     
    
    29 29
     (setq *software-type* "Linux")
    
    30 30
     
    
    31
    -;;; Instead of reading /proc/version (which has some bugs with
    
    32
    -;;; select() in Linux kernel 2.6.x) and instead of running uname -r,
    
    33
    -;;; let's just get the info from uname().
    
    34
    -(defun software-version ()
    
    35
    -  "Returns a string describing version of the supporting software."
    
    36
    -  (multiple-value-bind (sysname nodename release version)
    
    37
    -      (unix:unix-uname)
    
    38
    -    (declare (ignore sysname nodename))
    
    39
    -    (concatenate 'string release " " version)))
    
    40
    -
    
    41
    -
    
    42 31
     ;;; OS-Init initializes our operating-system interface.
    
    43 32
     ;;;
    
    44
    -(defun os-init () nil)
    
    33
    +(defun os-init ()
    
    34
    +  (setf *software-version* nil))
    
    45 35
     
    
    46 36
     
    
    47 37
     ;;; GET-PAGE-SIZE  --  Interface
    

  • src/code/misc.lisp
    ... ... @@ -17,7 +17,7 @@
    17 17
     (in-package "LISP")
    
    18 18
     (intl:textdomain "cmucl")
    
    19 19
     
    
    20
    -(export '(documentation *features* variable room
    
    20
    +(export '(*features* variable room
    
    21 21
     	  lisp-implementation-type lisp-implementation-version machine-type
    
    22 22
     	  machine-version machine-instance software-type software-version
    
    23 23
     	  short-site-name long-site-name dribble compiler-macro))
    
    ... ... @@ -81,12 +81,32 @@
    81 81
       (unix:unix-gethostname))
    
    82 82
     
    
    83 83
     (defvar *software-type* "Unix"
    
    84
    -  "The value of SOFTWARE-TYPE.  Set in FOO-os.lisp.")
    
    84
    +  _N"The value of SOFTWARE-TYPE.  Set in FOO-os.lisp.")
    
    85 85
     
    
    86 86
     (defun software-type ()
    
    87 87
       "Returns a string describing the supporting software."
    
    88 88
       *software-type*)
    
    89 89
     
    
    90
    +(defvar *software-version* nil
    
    91
    +  _N"Version string for supporting software")
    
    92
    +
    
    93
    +(defun software-version ()
    
    94
    +  _N"Returns a string describing version of the supporting software."
    
    95
    +  (unless *software-version*
    
    96
    +    (setf *software-version*
    
    97
    +	  (let (version result)
    
    98
    +	    (unwind-protect
    
    99
    +		 (progn
    
    100
    +		   (setf version
    
    101
    +			 (alien:alien-funcall
    
    102
    +			  (alien:extern-alien "os_software_version"
    
    103
    +					      (function (alien:* c-call:c-string)))))
    
    104
    +		   (setf result (alien:cast version c-call:c-string))))
    
    105
    +	    (if (zerop (length result))
    
    106
    +		"Unknown"
    
    107
    +		result)))
    
    108
    +    *software-version*))
    
    109
    +
    
    90 110
     (defvar *short-site-name* nil
    
    91 111
       "The value of SHORT-SITE-NAME.  Set in library:site-init.lisp.")
    
    92 112
     
    

  • src/code/sunos-os.lisp
    ... ... @@ -33,19 +33,6 @@
    33 33
     
    
    34 34
     (setq *software-type* "SunOS")
    
    35 35
     
    
    36
    -(defvar *software-version* nil "Version string for supporting software")
    
    37
    -
    
    38
    -(defun software-version ()
    
    39
    -  "Returns a string describing version of the supporting software."
    
    40
    -  (unless *software-version*
    
    41
    -    (setf *software-version*
    
    42
    -	  (multiple-value-bind (sysname nodename release version)
    
    43
    -	      (unix:unix-uname)
    
    44
    -	    (declare (ignore sysname nodename))
    
    45
    -	    (concatenate 'string release " " version))))
    
    46
    -  *software-version*)
    
    47
    -
    
    48
    -
    
    49 36
     ;;; OS-INIT -- interface.
    
    50 37
     ;;;
    
    51 38
     ;;; Other OS dependent initializations.
    

  • src/general-info/release-21e.md
    ... ... @@ -49,10 +49,11 @@ public domain.
    49 49
         * ~~#108~~ Update ASDF.
    
    50 50
         * ~~#112~~ CLX can't connect to X server via inet sockets.
    
    51 51
         * ~~#113~~ REQUIRE on contribs can pull in the wrong things via ASDF.
    
    52
    -    * ~~#121~~ Wrong column index in FILL-POINTER-OUTPUT-STREAM.
    
    53
    -    * ~~#122~~ gcc 11 can't build cmucl.
    
    54
    -    * ~~#124~~ directory with `:wild-inferiors` doesn't descend subdirectories.
    
    55
    -    * ~~#125~~ Linux `unix-stat` returning incorrect values.
    
    52
    +    * ~~#120~~ `SOFTWARE-VERSION` is implemented in C.
    
    53
    +    * ~~#121~~ Wrong column index in FILL-POINTER-OUTPUT-STREAM
    
    54
    +    * ~~#122~~ gcc 11 can't build cmucl
    
    55
    +    * ~~#124~~ directory with `:wild-inferiors` doesn't descend subdirectories 
    
    56
    +    * ~~#125~~ Linux `unix-stat` returning incorrect values
    
    56 57
         * ~~#127~~ Linux unix-getpwuid segfaults when given non-existent uid.
    
    57 58
         * ~~#128~~ `QUIT` accepts an exit code.
    
    58 59
         * ~~#130~~ Move file-author to C.
    

  • src/i18n/locale/cmucl-linux-os.pot
    ... ... @@ -15,10 +15,6 @@ msgstr ""
    15 15
     "Content-Type: text/plain; charset=UTF-8\n"
    
    16 16
     "Content-Transfer-Encoding: 8bit\n"
    
    17 17
     
    
    18
    -#: src/code/linux-os.lisp
    
    19
    -msgid "Returns a string describing version of the supporting software."
    
    20
    -msgstr ""
    
    21
    -
    
    22 18
     #: src/code/linux-os.lisp
    
    23 19
     msgid "Unix system call getrusage failed: ~A."
    
    24 20
     msgstr ""
    

  • src/i18n/locale/cmucl.pot
    ... ... @@ -5646,6 +5646,14 @@ msgstr ""
    5646 5646
     msgid "Returns a string describing the supporting software."
    
    5647 5647
     msgstr ""
    
    5648 5648
     
    
    5649
    +#: src/code/misc.lisp
    
    5650
    +msgid "Version string for supporting software"
    
    5651
    +msgstr ""
    
    5652
    +
    
    5653
    +#: src/code/misc.lisp
    
    5654
    +msgid "Returns a string describing version of the supporting software."
    
    5655
    +msgstr ""
    
    5656
    +
    
    5649 5657
     #: src/code/misc.lisp
    
    5650 5658
     msgid "The value of SHORT-SITE-NAME.  Set in library:site-init.lisp."
    
    5651 5659
     msgstr ""
    

  • src/lisp/os-common.c
    ... ... @@ -17,6 +17,7 @@
    17 17
     #include <string.h>
    
    18 18
     #include <sys/resource.h>
    
    19 19
     #include <sys/stat.h>
    
    20
    +#include <sys/utsname.h>
    
    20 21
     #include <unistd.h>
    
    21 22
     #include <time.h>
    
    22 23
     
    
    ... ... @@ -830,4 +831,27 @@ os_get_system_info(int64_t* utime, int64_t* stime, long* major_fault)
    830 831
         return rc;
    
    831 832
     }
    
    832 833
     
    
    834
    +/*
    
    835
    + * Get the software version.  This is the same as "uname -r", the release.
    
    836
    + * A pointer to a static string is returned. If uname fails, an empty
    
    837
    + * string is returned.
    
    838
    + */
    
    839
    +char*
    
    840
    +os_software_version(void)
    
    841
    +{
    
    842
    +    struct utsname uts;
    
    843
    +    int status;
    
    844
    +
    
    845
    +    /*
    
    846
    +     * Buffer large enough to hold the release.
    
    847
    +     */
    
    848
    +    static char result[sizeof(uts.release)];
    
    849
    +    result[0] = '\0';
    
    850
    +
    
    851
    +    status = uname(&uts);
    
    852
    +    if (status == 0) {
    
    853
    +      strcpy(result, uts.release);
    
    854
    +    }
    
    833 855
         
    
    856
    +    return result;
    
    857
    +}