16 lines
674 B
Plaintext
16 lines
674 B
Plaintext
(de sortDependencies (Lst)
|
|
(setq Lst # Build a flat list
|
|
(uniq
|
|
(mapcan
|
|
'((L)
|
|
(put (car L) 'dep (cdr L)) # Store dependencies in 'dep' properties
|
|
(copy L) )
|
|
(mapcar uniq Lst) ) ) ) # without self-dependencies
|
|
(make
|
|
(while Lst
|
|
(ifn (find '((This) (not (: dep))) Lst) # Found non-depending lib?
|
|
(quit "Can't resolve dependencies" Lst)
|
|
(del (link @) 'Lst) # Yes: Store in result
|
|
(for This Lst # and remove from 'dep's
|
|
(=: dep (delete @ (: dep))) ) ) ) ) )
|