(in-package :cl)
(defpackage :rpm
- (:use :common-lisp :inferior-shell)
+ (:use :common-lisp :inferior-shell :λ-reader :fare-utils :xcvb-driver)
+ (:import-from :asdf
+ #:probe-file*)
(:export
#:parse-rpm-versioned-name
#:rpm-versioned-name-basename #:rpm-versioned-name-version
;;; -*- Lisp -*-
(defsystem :rpm
- :depends-on (:inferior-shell)
+ :depends-on (:inferior-shell :lambda-reader :fare-utils)
:components
((:file "pkgdcl")
- (:file "version" :depends-on ("pkgdcl"))
+ (:file "character-classes" :depends-on ("pkgdcl"))
+ (:file "version" :depends-on ("character-classes"))
(:file "upgrade" :depends-on ("pkgdcl"))))
(t '=)))))
(defun compare-rpm-version-components (v1 v2)
- (let ((l1 (parse-rpm-version-component v1))
- (l2 (parse-rpm-version-component v2)))
- (loop :with l1 = (parse-rpm-version-component v1)
- :with l2 = (parse-rpm-version-component v2)
- :while (and l1 l2) :do
- (let ((r (compare-rpm-version-chunks (pop l1) (pop l2))))
- (ecase r
- ((< > nil) (return r))
- ((=) nil)))
- :finally
- (cond
- (l1 (return '>))
- (l2 (return '<))
- (t (return '=))))))
+ (loop :with l1 = (parse-rpm-version-component v1)
+ :with l2 = (parse-rpm-version-component v2)
+ :while (and l1 l2) :do
+ (let ((r (compare-rpm-version-chunks (pop l1) (pop l2))))
+ (ecase r
+ ((< > nil) (return r))
+ ((=) nil)))
+ :finally
+ (cond
+ (l1 (return '>))
+ (l2 (return '<))
+ (t (return '=)))))
(defun parse-rpm-version (x)
(block nil