...
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>
Tue, 20 Mar 2018 06:37:28 +0000 (07:37 +0100)
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>
Tue, 20 Mar 2018 06:37:28 +0000 (07:37 +0100)
modules/language/python/compile.scm
modules/language/python/module/os.scm
modules/oop/pf-objects.scm

index d0e1ca57d383eb1f18cfa5be9a6b50168e62513f..95878a4928469f1c15d8fbdf6fee3a0661647351 100644 (file)
   (lambda (x)
     (catch #t
       (lambda ()
-       (set! (@@ (system base message) %dont-warn-list) '()))
+       (fluid-set! (@@ (system base message) %dont-warn-list) '()))
       (lambda x (pre)))
     #f))
 
 (define (dont-warn v)
   (catch #t
     (lambda ()
-      (set! (@@ (system base message) %dont-warn-list)
+      (fluid-set! (@@ (system base message) %dont-warn-list)
            (cons v
-                 (@@ (system base message) %dont-warn-list))))
+                 (fluid-ref (@@ (system base message) %dont-warn-list)))))
     (lambda x (values))))
 
 (define *prefixes* (make-fluid '()))
index 6639b1d9c1b5f87f8d7d183fe9fd301fa19ac993..3d8b852077fd62c6cbac66f201aab6aff7ba756d 100644 (file)
                   sched_setscheduler sched_getscheduler sched_setparam
                   sched_getparam sched_rr_get_intervall sched_yield
                   sched_setaffinity sched_getaffinity
-                  
+
+                  supports_dir_fs support_effective_ids supports_fd
                   ))
 
+(define supports_dir_fs
+  (py-set '()))
+
+(define support_effective_ids
+  (py-set '()))
+
+(define supports_fd
+  (py-set '()))
+
 (define error OSError)
 (define errno
   (let ((f (dynamic-pointer "errno" (dynamic-link))))
         (raise error (errno) ((@ (guile) strerror) (errno)))
         (values))))
 
-(define-syntax-rule (defineu f x)
-  (define f
-    (catch #t
-      (lambda () x)
-      (lambda z
-        (let ((message (format #f "could not define ~a" 'f)))
-          (warn message)
-          (lambda z (error message)))))))
+(define (py-add s x)
+  ((ref s 'add) x))
+
+(define-syntax reg
+  (syntax-rules ()
+    ((_ () f)
+     (values))
+    ((_ (0 . l) f)
+     (begin
+       (py-add supports_dir_fs (symbol->string 'f))
+       (reg l f)))
+    ((_ (1 . l) f)
+     (begin
+       (py-add support_effective_ids (symbol->string 'f))
+       (reg l f)))
+    ((_ (2 . l) f)
+     (begin
+       (py-add supports_fd (symbol->string 'f))
+       (reg l f)))))
+
+(define-syntax-rule (defineu f a x)
+  (begin
+    (define f
+      (catch #t
+        (lambda () x)
+        (lambda z
+          (let ((message (format #f "could not define ~a" 'f)))
+            (warn message)
+            (lambda z (error message))))))
+    (reg a f)))
 
 (define-syntax guile
   (syntax-rules ()
 (guile getpriority)
 
 (define getresgid #f)
-(defineu getresgid
+(defineu getresgid ()
   (let* ((f  (pointer->procedure
               void
               (dynamic-func "getresgid" (dynamic-link))
 (guile getuid)
 
 (define initgroups #f)
-(defineu initgroups
+(defineu initgroups ()
   (let ((f (pointer->procedure
             int
             (dynamic-func "initgroups" (dynamic-link))
 
 (guile setgroups)
 (define setpgrp #f)
-(defineu setpgrp
+(defineu setpgrp ()
   (let ((f (pointer->procedure int
                                (dynamic-func "setpgrp" (dynamic-link))
                                '())))
       (rm (f a b c)))))
 
 (define setreuid #f)
-(defineu setreuid
+(defineu setreuid ()
   (let ((f (pointer->procedure int
                                (dynamic-func "setreuid" (dynamic-link))
                                (list int int))))
       (rm (f a b)))))
 
 (define setresuid #f)
-(defineu setresuid
+(defineu setresuid ()
   (let ((f (pointer->procedure int
                                (dynamic-func "setresuid" (dynamic-link))
                                (list int int int))))
 (define F_TEST  3)
 
 (define lockf #f)
-(defineu lockf
+(defineu lockf (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "lockf" (dynamic-link))
                                (list int int long))))
 (define SEEK_HOLE #x4)
 
 (define lseek  #f)
-(defineu lseek 
+(defineu lseek (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "lseek" (dynamic-link))
                                (list int long int))))
     (values (car x) (cdr x))))
 
 (define pipe2 #f)
-(defineu pipe2
+(defineu pipe2 ()
   (let ((f (pointer->procedure int
                                (dynamic-func "pipe2" (dynamic-link))
                                (list int '* int))))
 
 
 (define posix_fallocate #f)
-(defineu posix_fallocate
+(defineu posix_fallocate (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "posix_fallocate" (dynamic-link))
                                (list int long long))))
       (rm (f fd off len)))))
 
 (define posix_fadvise #f)
-(defineu posix_fadvise
+(defineu posix_fadvise (2)
    (let ((f (pointer->procedure int
                                (dynamic-func "posix_fadvise" (dynamic-link))
                                (list int long long int))))
 (define POSIX_FADV_NOREUSE    5)
 
 (define pread #f)
-(defineu pread
+(defineu pread (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "pread" (dynamic-link))
                                (list int '* long long))))
                 o)))))))
 
 (define pwrite #f)
-(defineu pwrite
+(defineu pwrite (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "pwrite" (dynamic-link))
                                (list int '* long long))))
         (rm (f fd ap (len a) offset))))))
 
 (define read #f)
-(defineu read
+(defineu read (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "read" (dynamic-link))
                                (list int '* long))))
 
 (define fcntl2 #f)
 (define fcntl3 #f)
-(defineu fcntl2 (pointer->procedure int
-                                    (dynamic-func "fcntl" (dynamic-link))
-                                   (list int int)))
-(defineu fcntl3 (pointer->procedure int
-                                    (dynamic-func "fcntl" (dynamic-link))
-                                    (list int int int)))
+(defineu fcntl2 () (pointer->procedure int
+                                       (dynamic-func "fcntl" (dynamic-link))
+                                       (list int int)))
+(defineu fcntl3 () (pointer->procedure int
+                                       (dynamic-func "fcntl" (dynamic-link))
+                                       (list int int int)))
 
 (define (set_blocking fd is-blocking?)
   (let ((o (rm (fcntl2 fd F_GETFL))))
 (guile (fd)    ttyname)
 
 (define write #f)
-(defineu write
+(defineu write (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "write" (dynamic-link))
                                (list int '* long))))
 (define X_OK (@ (guile) X_OK))
 
 (define access #f)
-(defineu access
+(defineu access (0 1)
   (let ((f  (pointer->procedure int
                                (dynamic-func "access" (dynamic-link))
                                (list '* int)))
 
 
 (define chdir #f)
-(defineu chdir
+(defineu chdir (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "chdir" (dynamic-link))
                                '(*))))
   (lambda x (error "Not implemented")))
 
 (define chmod (lambda x #f))
-(defineu chmod
+(defineu chmod (0 2)
   (let ((f   (pointer->procedure int
                                  (dynamic-func "chmod" (dynamic-link))
                                  (list '* int)))
        path))
 
 (define chown (lambda x #f))
-(defineu chown
+(defineu chown (0 2)
   (let ((f   (pointer->procedure int
                                  (dynamic-func "chown" (dynamic-link))
                                  (list '* int int)))
 (define AT_FDCWD -100)
 
 (define link #f)
-(defineu link
+(defineu link (0)
   (let ((f (pointer->procedure int
                                (dynamic-func "linkat" (dynamic-link))
                                  (list '* '* int int int))))
           (lambda x (closedir o)))))))
 
 (define stat (lambda x #f))
-(defineu stat
+(defineu stat (0 2)
   (let ((f (pointer->procedure int
                                (dynamic-func "__fxstatat" (dynamic-link))
                                (list int int '* '* int)))
     (stat path #:dir_fd dir_fd #:follow_symlinks #f)))
 
 (define mkdir #f)
-(defineu mkdir
+(defineu mkdir (0)
   (let ((fat (pointer->procedure int
                                  (dynamic-func "mkdirat" (dynamic-link))
                                  (list int '* int))))
          (lp s l))))))
 
 (define mkfifo #f)
-(defineu mkfifo
+(defineu mkfifo (0)
   (let ((fat (pointer->procedure int
                                  (dynamic-func "mkfifoat" (dynamic-link))
                                  (list int '* int))))
                mode)))))
 
 (define mknod #f)
-(defineu mknod
+(defineu mknod (0)
   (let ((fat (pointer->procedure int
                                  (dynamic-func "__xmknodat" (dynamic-link))
                                  (list int int '* int))))
                device)))))
 
 (define major #f)
-(defineu major
+(defineu major ()
   (let ((f (pointer->procedure int
                                (dynamic-func "gnu_dev_major" (dynamic-link))
                                (list int64))))
       (ca (f device)))))
 
 (define minor #f)
-(defineu minor
+(defineu minor ()
   (let ((f (pointer->procedure int
                                (dynamic-func "gnu_dev_minor" (dynamic-link))
                                (list int64))))
       (ca (f device)))))
 
 (define makedev #f)
-(defineu makedev
+(defineu makedev ()
   (let ((f (pointer->procedure int64
                                (dynamic-func "gnu_dev_makedev" (dynamic-link))
                                (list int int))))
 
 
 (define pathconf #f)
-(defineu pathconf
+(defineu pathconf (2)
   (let ((f (pointer->procedure long
                                (dynamic-func "pathconf" (dynamic-link))
                                (list '* int)))
               (rmp (f (string->pointer path) ni))))))))
 
 (define readlink #f)
-(defineu readlink
+(defineu readlink (0)
   (let ((fat (pointer->procedure int
                                  (dynamic-func "readlinkat" (dynamic-link))
                                  (list int '* '* long))))
         (pointer->string bvp)))))
 
 (define remove #f)
-(defineu remove
+(defineu remove (0)
   (let ((fat (pointer->procedure int
                                  (dynamic-func "unlinkat" (dynamic-link))
                                  (list int '* int))))
             (lp (cdr l)))))))
 
 (define rename #f)
-(defineu rename
+(defineu rename (0)
   (let ((fat (pointer->procedure int
                                  (dynamic-func "renameat" (dynamic-link))
                                  (list int '* int '*))))
        (list a1 a2 a3 a4 a5 a6 a7 a8 a9 a10)))))
 
 (define statvfs #f)
-(defineu statvfs
+(defineu statvfs (2)
   (let ((f (pointer->procedure int
                                (dynamic-func "statvfs" (dynamic-link))
                                (list '* '*)))
          (bytevector-u64-ref bv (* 10 8) (native-endianness)))))))
 
 (define symlink #f)
-(defineu symlink
+(defineu symlink (0)
   (let ((fat (pointer->procedure int
                                  (dynamic-func "symlinkat" (dynamic-link))
                                  (list '* int '*))))
                 (string->pointer (path-it src))))))))
 
 (define truncate #f)
-(defineu truncate
+(defineu truncate (2)
   (let ((ff (pointer->procedure int
                                 (dynamic-func "ftruncate" (dynamic-link))
                                 (list int long)))
 (define UTIME_NOW (- (ash 1 30) 1))
 
 (define utime #f)
-(defineu utime
+(defineu utime (0 2)
   (let ((ff  (pointer->procedure int
                                  (dynamic-func "futimes" (dynamic-link))
                                  (list int '*)))
 
 ;; Extended attributes
 (define getxattr #f)
-(defineu getxattr
+(defineu getxattr (2)
   (let ((f   (pointer->procedure int
                                 (dynamic-func "getxattr" (dynamic-link))
                                 (list '* '* '* int)))
                    (pointer->string pv)))))))))
 
 (define listxattr #f)
-(defineu listxattr
+(defineu listxattr (2)
   (let ((f  (pointer->procedure int
                                 (dynamic-func "listxattr" (dynamic-link))
                                 (list '* '* int)))
                         (pylist (reverse l))))))))))))
 
 (define removexattr #f)
-(defineu removexattr
+(defineu removexattr (2)
   (let ((f  (pointer->procedure int
                                 (dynamic-func "removexattr" (dynamic-link))
                                 (list '* '*)))
                     (lf path k))))))))
 
 (define setxattr #f)
-(defineu setxattr
+(defineu setxattr (2)
   (let ((f  (pointer->procedure int
                                 (dynamic-func "setxattr" (dynamic-link))
                                 (list '* '* '* int int)))
               (ref self 'si_status)))))
       
 (define waitid #f)
-(defineu waitid
+(defineu waitid ()
   (let ((f (pointer->procedure int
                                 (dynamic-func "waitid" (dynamic-link))
                                 (list int int '* int))))
   (ca ((@ (guile) waitpid) pid options)))
 
 (define wait3 #f)
-(defineu wait3
+(defineu wait3 ()
   (let ((f (pointer->procedure int
                                 (dynamic-func "wait3" (dynamic-link))
                                 (list '* int '*))))
                 (ResUsage v)))))))
 
 (define wait4 #f)
-(defineu wait4
+(defineu wait4 ()
   (let ((f (pointer->procedure int
                                (dynamic-func "wait4" (dynamic-link))
                                (list int '* int '*))))
           (set self 'sched_priority v)))))
 
 (define sched_get_priority_min #f)
-(defineu sched_get_priority_min
+(defineu sched_get_priority_min ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_get_priority_min"
                                              (dynamic-link))
     (lambda (policy) (rm (f policy)))))
 
 (define sched_get_priority_max #f)
-(defineu sched_get_priority_max
+(defineu sched_get_priority_max ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_get_priority_max"
                                              (dynamic-link))
     (lambda (policy) (rm (f policy)))))
 
 (define sched_setscheduler #f)
-(defineu sched_setscheduler
+(defineu sched_setscheduler ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_setscheduler"
                                              (dynamic-link))
         (rm (f pid policy vp))))))
 
 (define sched_getscheduler #f)
-(defineu sched_getscheduler
+(defineu sched_getscheduler ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_getscheduler"
                                              (dynamic-link))
       (ca (f pid)))))
 
 (define sched_setparam #f)
-(defineu sched_setparam
+(defineu sched_setparam ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_setparam"
                                              (dynamic-link))
         (rm (f pid vp))))))
 
 (define sched_getparam #f)
-(defineu sched_getparam
+(defineu sched_getparam ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_getparam"
                                              (dynamic-link))
   (lambda x (error "not implemented")))
 
 (define sched_yield #f)
-(defineu sched_yield
+(defineu sched_yield ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_yield"
                                              (dynamic-link))
     (lambda () (rm (f)))))
 
 (define sched_setaffinity#f)
-(defineu sched_setaffinity
+(defineu sched_setaffinity ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_setaffinity"
                                              (dynamic-link))
         (rm (f pid (/ n 8) vp))))))
 
 (define sched_getaffinity #f)
-(defineu sched_getaffinity
+(defineu sched_getaffinity ()
   (let ((f (pointer->procedure int
                                (dynamic-func "sched_getaffinity"
                                              (dynamic-link))
               
 
 ;; MISC SYSTEM INFORMATION
-
-(define supprts_dir_fs
-  (py-set '()))
-
-(define support_effective_ids
-  (py-set '()))
-
-(define supports_fd
-  (py-set '()))
index 5b7806332c89e6ffb258e14e4bb3dd58eec158fb..125a3f79924fa048b5f48e4a0066911f1303c422 100644 (file)
@@ -2,6 +2,8 @@
   #:use-module (oop goops)
   #:use-module (ice-9 vlist)
   #:use-module (ice-9 match)
+  #:use-module (system base message)
+  #:use-module (language python guilemod)
   #:use-module (logic guile-log persistance)
   #:replace (equal?)  
   #:export (set ref make-p <p> <py> <pf> <pyf> <property>
@@ -748,6 +750,9 @@ explicitly tell it to not update etc.
                               (symbol->string
                                (syntax->datum #'name))
                               "-goops-class")))))
+         (%add-to-warn-list (syntax->datum #'nname))
+         (map (lambda (x) (%add-to-warn-list (syntax->datum x)))
+              #'(ddname ...))
        #'(let ()
            (define name 
              (letruc ((dname dval) ...)
@@ -765,7 +770,7 @@ explicitly tell it to not update etc.
 
            (module-define! (current-module) 'nname (ref name '__goops__))
            (name-object nname)
-           
+           (name-object name)
            name))))))
 
 (define-syntax-rule (def-p-class name . l)
@@ -822,6 +827,7 @@ explicitly tell it to not update etc.
 (define-syntax-rule (define-python-class name (parents ...) code ...)
   (define name (mk-p-class name (arglist->pkw (list parents ...)) code ...)))
 
+
 (define-syntax make-python-class
   (lambda (x)
     (syntax-case x ()