feat(3p/lisp/mime4cl): build using buildLisp
The following changes are required to make mime4cl build: * file-position doesn't like to be called with NIL as the position argument, so we have to make sure to not do that in stream-file-position. My workaround is a bit clunky, but works. * Tests discover the sample file via relative path resolution. This doesn't work when they are imported into the nix store as individual files. Instead we make use of the fact that DEFVAR is a no-op if the variable is already defined and inject a file via the nix build that sets the relevant ones. For the path to sample1.msg, we need to create a new variable. Change-Id: I74eeda7bf2c2a4f64cc2b90e72081513ec3285d5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3270 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
parent
901364869c
commit
8f6955176f
6 changed files with 69 additions and 5 deletions
1
third_party/lisp/mime4cl/.skip-subtree
vendored
Normal file
1
third_party/lisp/mime4cl/.skip-subtree
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
prevent readTree from creating entries for subdirs that don't contain an .nix files
|
3
third_party/lisp/mime4cl/OWNERS
vendored
Normal file
3
third_party/lisp/mime4cl/OWNERS
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
inherited: true
|
||||
owners:
|
||||
- sterni
|
7
third_party/lisp/mime4cl/README
vendored
Normal file
7
third_party/lisp/mime4cl/README
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
MIME4CL is a Common Lisp library for dealing with MIME messages.
|
||||
It has originally been written by Walter C. Pelissero and vendored
|
||||
into depot as upstream has become inactive and provides no repo
|
||||
of any kind. Upstream and depot version may diverge.
|
||||
|
||||
Upstream Website: http://wcp.sdf-eu.org/software/#mime4cl
|
||||
Vendored Tarball: http://wcp.sdf-eu.org/software/mime4cl-20150207T211851.tbz
|
48
third_party/lisp/mime4cl/default.nix
vendored
Normal file
48
third_party/lisp/mime4cl/default.nix
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
# Copyright (C) 2021 by the TVL Authors
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
{ depot, pkgs, ... }:
|
||||
|
||||
depot.nix.buildLisp.library {
|
||||
name = "mime4cl";
|
||||
|
||||
deps = [
|
||||
depot.third_party.lisp.sclf
|
||||
depot.third_party.lisp.npg
|
||||
];
|
||||
|
||||
srcs = [
|
||||
./package.lisp
|
||||
./endec.lisp
|
||||
./streams.lisp
|
||||
./mime.lisp
|
||||
./address.lisp
|
||||
];
|
||||
|
||||
tests = {
|
||||
name = "mime4cl-tests";
|
||||
|
||||
srcs = [
|
||||
./test/rt.lisp
|
||||
./test/package.lisp
|
||||
(pkgs.writeText "nix-samples.lisp" ''
|
||||
(in-package :mime4cl-tests)
|
||||
|
||||
;; missing from the tarball completely
|
||||
(defvar *samples-directory* (pathname "/this/does/not/exist"))
|
||||
;; override auto discovery which doesn't work in store
|
||||
(defvar *sample1-file* (pathname "${./test/sample1.msg}"))
|
||||
'')
|
||||
./test/endec.lisp
|
||||
./test/address.lisp
|
||||
./test/mime.lisp
|
||||
];
|
||||
|
||||
expression = "(rtest:do-tests)";
|
||||
};
|
||||
|
||||
# limited by sclf
|
||||
brokenOn = [
|
||||
"ccl"
|
||||
"ecl"
|
||||
];
|
||||
}
|
4
third_party/lisp/mime4cl/streams.lisp
vendored
4
third_party/lisp/mime4cl/streams.lisp
vendored
|
@ -1,6 +1,7 @@
|
|||
;;; eds.lisp --- En/De-coding Streams
|
||||
|
||||
;;; Copyright (C) 2012 by Walter C. Pelissero
|
||||
;;; Copyright (C) 2021 by the TVL Authors
|
||||
|
||||
;;; Author: Walter C. Pelissero <walter@pelissero.de>
|
||||
;;; Project: mime4cl
|
||||
|
@ -63,7 +64,8 @@
|
|||
:initarg :dont-close)))
|
||||
|
||||
(defmethod stream-file-position ((stream coder-stream-mixin) &optional position)
|
||||
(file-position (slot-value stream 'real-stream) position))
|
||||
(apply #'file-position (remove nil (list (slot-value stream 'real-stream)
|
||||
position))))
|
||||
|
||||
(defclass coder-input-stream-mixin (fundamental-binary-input-stream coder-stream-mixin)
|
||||
())
|
||||
|
|
11
third_party/lisp/mime4cl/test/mime.lisp
vendored
11
third_party/lisp/mime4cl/test/mime.lisp
vendored
|
@ -1,6 +1,7 @@
|
|||
;;; mime.lisp --- MIME regression tests
|
||||
|
||||
;;; Copyright (C) 2012 by Walter C. Pelissero
|
||||
;;; Copyright (C) 2021 by the TVL Authors
|
||||
|
||||
;;; Author: Walter C. Pelissero <walter@pelissero.de>
|
||||
;;; Project: mime4cl
|
||||
|
@ -28,11 +29,13 @@
|
|||
*load-pathname*
|
||||
#P"")))
|
||||
|
||||
(defvar *sample1-file* (make-pathname :defaults #.(or *compile-file-pathname*
|
||||
*load-pathname*)
|
||||
:name "sample1"
|
||||
:type "msg"))
|
||||
|
||||
(deftest mime.1
|
||||
(let* ((orig (mime-message (make-pathname :defaults #.(or *compile-file-pathname*
|
||||
*load-pathname*)
|
||||
:name "sample1"
|
||||
:type "msg")))
|
||||
(let* ((orig (mime-message *sample1-file*))
|
||||
(dup (mime-message (with-output-to-string (out) (encode-mime-part orig out)))))
|
||||
(mime= orig dup))
|
||||
t)
|
||||
|
|
Loading…
Reference in a new issue