Commit 6198c5bc authored by John van Groningen's avatar John van Groningen
Browse files

add functions for searching hierarchical modules in module PmDirCache,

use these functions in the project manager
parent 2e45ef2f
......@@ -33,7 +33,6 @@ import Platform,PlatformObjectIO, IdePlatform
import PmDriver
import StdSystem, StdClipboard
//import dodebug
//trace_n m f :== trace_n` m f
trace_n _ f :== f
......@@ -852,7 +851,7 @@ OpenModuleNoSel pathname ps
# srcpaths = case IsABCPathname pathname of
True -> Map MakeSystemPathname srcpaths
_ -> srcpaths
# ((ok,fullpath),ps) = accFiles (SearchDisk False pathname srcpaths) ps
# ((ok,fullpath),ps) = accFiles (SearchDisk pathname srcpaths) ps
| not ok
= okNotice
[ "Clean Project Manager"
......@@ -871,7 +870,7 @@ OpenModule pathname sel ps
# srcpaths = case IsABCPathname pathname of
True -> Map MakeSystemPathname srcpaths
_ -> srcpaths
# ((ok,fullpath),ps) = accFiles (SearchDisk False pathname srcpaths) ps
# ((ok,fullpath),ps) = accFiles (SearchDisk pathname srcpaths) ps
| not ok
= okNotice
[ "Clean Project Manager"
......
......@@ -625,7 +625,7 @@ exists_module pathname ps
# srcpaths = case IsABCPathname pathname of
True -> Map MakeSystemPathname srcpaths
_ -> srcpaths
# ((ok,fullpath),ps) = accFiles (SearchDisk False pathname srcpaths) ps
# ((ok,fullpath),ps) = accFiles (SearchDisk pathname srcpaths) ps
= (ok,GetLongPathName fullpath,ps)
// pm_set: set main module
......@@ -848,7 +848,7 @@ findModule pathname ps
# srcpaths = case IsABCPathname pathname of
True -> Map MakeSystemPathname srcpaths
_ -> srcpaths
# ((ok,fullpath),ps) = accFiles (SearchDisk False pathname srcpaths) ps
# ((ok,fullpath),ps) = accFiles (SearchDisk pathname srcpaths) ps
| not ok
= (Nothing, ps)
# fullpath` = GetLongPathName fullpath
......
......@@ -420,7 +420,7 @@ where
# text = {t \\ t <- text}
= accFiles (FindDefinitionInText imp rest cleanid text) ps
= accFiles (FindDefinitionInFile imp rest cleanid modname) ps
# ((ok,path),ps) = accFiles (SearchDisk False modname (AppendLists prjpaths syspaths)) ps
# ((ok,path),ps) = accFiles (SearchDisk modname (AppendLists prjpaths syspaths)) ps
| ok
# (win,ps) = IsOpen path ps
| isJust win
......@@ -498,7 +498,7 @@ where
# text = {t \\ t <- text}
= accFiles (FindIdentifiersInText imp rest cleanid text) pstate
= accFiles (FindIdentifiersInFile imp rest cleanid modname) pstate
# ((ok,path), pstate) = accFiles (SearchDisk False modname (AppendLists prjpaths syspaths)) pstate
# ((ok,path), pstate) = accFiles (SearchDisk modname (AppendLists prjpaths syspaths)) pstate
| ok
# (win,pstate) = IsOpen path pstate
| isJust win
......
......@@ -16,9 +16,12 @@ DC_Setup :: !(List Pathname) !*Files -> (!(![String],![Warn],!.DirCache),!*Files
DC_Search :: !Modulename !*DirCache -> *(!Bool,!Pathname,!DateTime,!*DirCache)
// Find file in directory cache
DC_HSearch :: !Modulename !String !*DirCache !*Files -> *(!Bool,!Pathname,!DateTime,!*DirCache,!*Files)
DC_Update :: !.(String,String,DateTime) !*DirCache -> *DirCache
DC_Update :: !(!String,!String,!DateTime) !*DirCache -> *DirCache
// Update directory cache
DC_HUpdate :: !(!String,!String,!DateTime) !String !*DirCache !*Files -> (!*DirCache,!*Files)
SearchDisk :: !Bool !Modulename !(List Pathname) !*Files -> ((!Bool,!Pathname),!*Files)
SearchDisk :: !Modulename !(List Pathname) !*Files -> (!(!Bool,!Pathname),!*Files)
// Find file in paths (no caching)
FindHModule :: !Modulename !{#Char} !(List Pathname) !*Files -> (!(!Bool,!Pathname),!*Files)
......@@ -2,50 +2,93 @@ implementation module PmDirCache
// Search paths for a file
import StdArray, StdBool, StdEnum, StdList, StdOrdList
import StdFile, StdMaybe
import StdArray,StdBool,StdEnum,StdList,StdFile,StdOrdList,StdStrictLists,StdMaybe
from StdLibMisc import :: Date{..}, :: Time{..}
import Directory
import UtilStrictLists, PmPath, UtilIO
import Platform
:: DirCacheElem :== (String,String,DateTime) // module name, module path, module modified
:: DirCache :== {(String,String,DateTime)} // module name, module path, module modified
:: SimpleDirCache :== {!DirCacheElem}
emptyDateTime :== ({year=0,month=0,day=0,dayNr=0},{hours=0,minutes=0,seconds=0})
:: SubdirElem = { subdir_name :: !{#Char}, subdir_cache :: !.SimpleDirCache}
:: SubdirCache :== {#.SubdirElem}
:: DirCache = { root :: !.SimpleDirCache, subdirs :: !.SubdirCache, paths :: ![#Pathname!] }
:: Warn = Warn String String [(String,String,DateTime)]
emptyDateTime :== ({year=0,month=0,day=0,dayNr=0},{hours=0,minutes=0,seconds=0})
DC_Setup :: !(List Pathname) !*Files -> (!(![String],![Warn],!.DirCache),!*Files)
DC_Setup paths files
# paths = RemoveDup paths
# ((err,cache),files) = setup paths files
# cache = sortBy (\(l,_,_) (r,_,_) -> l<r) cache
// must remove duplicates otherwise binsearch gives errors...
# (wrn,cache) = removedups cache
= ((err,wrn,{dir \\ dir <- cache}),files)
# paths = remove_dup_paths paths
# paths = [|winfix path \\ path<|-paths] // local hack to fix dir names
# (err,files_in_dir,files) = setup paths files
# (wrn,cache) = make_dir_cache files_in_dir
# dir_cache = {root = cache, subdirs={}, paths=paths}
= ((err,wrn,dir_cache),files)
where
setup Nil files
= (([],[]),files)
setup (path:!paths) files
# path = winfix path // local hack to fix dir names
remove_dup_paths :: (List Pathname) -> *[#Pathname!]
remove_dup_paths paths
= u_reverse (remove_dup_paths_reversed paths [|]) [|]
where
remove_dup_paths_reversed :: !(List {#Char}) !*[#{#Char}!] -> *[#{#Char}!]
remove_dup_paths_reversed (path:!paths) unique_paths
| occurs_in path unique_paths
= remove_dup_paths_reversed paths unique_paths
= remove_dup_paths_reversed paths [|path:unique_paths]
where
occurs_in path [|path_e:paths]
= path==path_e || occurs_in path paths
occurs_in path [|]
= False
remove_dup_paths_reversed Nil unique_paths
= unique_paths
u_reverse :: *[#{#Char}!] *[#{#Char}!] -> *[#{#Char}!]
u_reverse [|] r = r
u_reverse [|e:l] r = u_reverse l [|e:r]
setup [|] files
= ([],[],files)
setup [|path:paths] files
# ((ok,path`),files) = pd_StringToPath path files
| not ok
# ((errs,cache),files) = setup paths files
= (([path:errs],cache),files)
# (errs,cache,files) = setup paths files
= ([path:errs],cache,files)
# ((err,dir),files) = getDirectoryContents path` files
| err <> NoDirError
# ((errs,cache),files) = setup paths files
= (([path:errs],cache),files)
# dir = map getinfo dir // only need common fileinfo...
# dir = filter (\(b,_,_)->not b) dir
# dir = map (\(_,n,m)->(n,path,m)) dir
# ((errs,cache),files) = setup paths files
# (errs,cache,files) = setup paths files
= ([path:errs],cache,files)
# dir = [(fileName,path,lastModified)
\\ {fileName,fileInfo={pi_fileInfo={lastModified,isDirectory}}} <- dir
| not isDirectory]
# (errs,cache,files) = setup paths files
# cache = dir ++ cache
= ((errs,cache),files)
= (errs,cache,files)
//removedups :: !.[(String,String,DateTime)] -> .[(String,String,DateTime)]
//winfix :: renames root directories
winfix s = PlatformDependant
(/*Win*/ if (size s > 0 && s.[size s - 1] == ':') (s +++. "\\") (s))
(/*Mac*/ if (findPos ':' s 0 == ~1) (s +++. ":") (s))
findPos c s i
| i >= size s = ~1
| s.[i] == c = i
= findPos c s (inc i)
make_dir_cache :: [DirCacheElem] -> (![Warn],!*SimpleDirCache)
make_dir_cache cache
# cache = sortBy (\(l,_,_) (r,_,_) -> l<r) cache
// must remove duplicates otherwise binsearch gives errors...
# (wrn,cache) = removedups cache
= (wrn,{dir \\ dir<-cache})
where
removedups :: ![DirCacheElem] -> ([Warn],[DirCacheElem])
removedups [x=:(".DS_Store",_,_):xs]
= removedups xs
removedups [x=:(l,p,_):xs]
......@@ -57,106 +100,204 @@ where
= ([Warn l p wrn:wrn`],[x:xs])
removedups _ = ([],[])
//dropWarn :: (a -> .Bool) !u:[a] -> u:[a]
dropWarn :: (a -> Bool) ![a] -> ([a],[a])
dropWarn f cons=:[a:x] | f a # (wrn,x) = dropWarn f x
= ([a:wrn],x)
= ([],cons)
dropWarn f [] = ([],[])
//winfix :: renames root directories
winfix s = PlatformDependant
(/*Win*/ if (size s > 0 && s.[size s - 1] == ':') (s +++. "\\") (s))
(/*Mac*/ if (findPos ':' s 0 == ~1) (s +++. ":") (s))
findPos c s i
| i >= size s = ~1
| s.[i] == c = i
= findPos c s (inc i)
getinfo {fileName,fileInfo=fi=:{pi_fileInfo=dummyname=:{lastModified,isDirectory}}}
= (isDirectory,fileName,lastModified)
DC_Update :: !.(String,String,DateTime) !*DirCache -> *DirCache
DC_Update (n`,p`,m`) cache
# (maxi,cache) = usize cache
DC_Update :: !(!String,!String,!DateTime) !*DirCache -> *DirCache
DC_Update (n`,p`,m`) dir_cache=:{root=cache}
# cache = update_dir_cache (n`,p`,m`) cache
= {dir_cache & root=cache}
DC_HUpdate :: !(!String,!String,!DateTime) !String !*DirCache !*Files -> (!*DirCache,!*Files)
DC_HUpdate (n`,p`,m`) file_ext dir_cache=:{root=cache,subdirs,paths} files
# last_dot_i = find_last_dot_i n`
| last_dot_i<0
# cache = update_dir_cache (n`,p`,m`) cache
= ({dir_cache & root=cache},files)
# (subdir_name,file_name) = subdir_and_file_name_of_hmodule_name last_dot_i n` file_ext
(found,subdir_i,subdirs) = bin_search_subdir subdir_name subdirs
| found
# (subdir,subdirs) = subdirs![subdir_i]
cache = update_dir_cache (n`,p`,m`) subdir.subdir_cache
subdirs & [subdir_i]={subdir & subdir_cache=cache}
= ({dir_cache & subdirs=subdirs},files)
# (errs,files_in_dir,files) = setup_h paths subdir_name files
(wrn,cache) = make_dir_cache files_in_dir
cache = update_dir_cache (n`,p`,m`) cache
new_subdirs = add_subdir subdir_i subdir_name cache subdirs
= ({dir_cache & subdirs=new_subdirs},files)
update_dir_cache :: !(!String,!String,!DateTime) !*SimpleDirCache -> *SimpleDirCache
update_dir_cache (n`,p`,m`) cache
# (maxi,cache) = usize cache
= binsearch 0 maxi maxi cache
where
binsearch :: !Int !Int !Int !*DirCache -> *DirCache
binsearch :: !Int !Int !Int !*SimpleDirCache -> *SimpleDirCache
binsearch left right max cache
| left >= right
# newcache = createArray (inc max) (n`,p`,m`)
# (newcache,cache) = copy (dec right) newcache cache 0 0
# (newcache,cache) = copy (max - right) newcache cache (inc right) right
= newcache
# mid = (left+right)/2
# ((n,p,m),cache) = uselect cache mid
# mid = (left+right)>>1
# ((n,p,m),cache) = cache![mid]
| n` == n
= update cache mid (n`,p`,m`)
= {cache & [mid]=(n`,p`,m`)}
| n` < n
= binsearch left mid max cache
// n` > n
= binsearch (inc mid) right max cache
copy :: !Int !*DirCache !*DirCache !Int !Int -> (!*DirCache, !*DirCache)
copy :: !Int !*SimpleDirCache !*SimpleDirCache !Int !Int -> (!*SimpleDirCache, !*SimpleDirCache)
copy num new old newbegin oldbegin
| num <= 0 = (new,old)
# (e,old) = uselect old oldbegin
# new = update new newbegin e
# (e,old) = old![oldbegin]
# new = {new & [newbegin]=e}
= copy (dec num) new old (inc newbegin) (inc oldbegin)
find_last_dot_i :: !{#Char} -> Int
find_last_dot_i s
= find_last_dot_i s (size s-1)
where
find_last_dot_i s i
| i>=0
| s.[i]=='.'
= i
= find_last_dot_i s (i-1)
= i
concat_paths path subdir
# size_path=size path
| size_path>0 && path.[size_path-1]==DirSeparator
= path+++subdir
= path+++DirSeparatorString+++subdir
DC_Search :: !Modulename !*DirCache -> *(!Bool,!Pathname,!DateTime,!*DirCache)
DC_Search mod cache
# (maxi,cache) = usize cache
= binsearch 0 maxi mod cache
DC_Search mod dir_cache=:{root=cache}
# (found,path_name,date_time,cache) = bin_search_file mod cache
= (found,path_name,date_time,{dir_cache & root=cache})
DC_HSearch :: !Modulename !String !*DirCache !*Files -> *(!Bool,!Pathname,!DateTime,!*DirCache,!*Files)
DC_HSearch mod file_ext dir_cache=:{root=cache,subdirs,paths} files
# last_dot_i = find_last_dot_i mod
| last_dot_i<0
# (found,path_name,date_time,cache) = bin_search_file (mod+++file_ext) cache
= (found,path_name,date_time,{dir_cache & root=cache},files)
# (subdir_name,file_name) = subdir_and_file_name_of_hmodule_name last_dot_i mod file_ext
(found,subdir_i,subdirs) = bin_search_subdir subdir_name subdirs
| found
# (subdir,subdirs) = subdirs![subdir_i]
(found,path_name,date_time,cache) = bin_search_file file_name subdir.subdir_cache
subdirs & [subdir_i]={subdir & subdir_cache=cache}
= (found,path_name,date_time,{dir_cache & subdirs=subdirs},files)
# (errs,files_in_dir,files) = setup_h paths subdir_name files
(wrn,cache) = make_dir_cache files_in_dir
(found,path_name,date_time,cache) = bin_search_file file_name cache
new_subdirs = add_subdir subdir_i subdir_name cache subdirs
= (found,path_name,date_time,{dir_cache & subdirs=new_subdirs},files)
setup_h :: ![#{#Char}!] !{#Char} !*Files -> *(![{#Char}],![DirCacheElem],!*Files)
setup_h [|] subdir files
= ([],[],files)
setup_h [|path:paths] subdir files
# subdir_path = concat_paths path subdir
# ((ok,path`),files) = pd_StringToPath subdir_path files
| not ok
# (errs,cache,files) = setup_h paths subdir files
= ([subdir_path:errs],cache,files)
# ((err,dir),files) = getDirectoryContents path` files
| err <> NoDirError
# (errs,cache,files) = setup_h paths subdir files
= ([subdir_path:errs],cache,files)
# dir = [(fileName,path,lastModified)
\\ {fileName,fileInfo={pi_fileInfo={lastModified,isDirectory}}} <- dir
| not isDirectory]
# (errs,cache,files) = setup_h paths subdir files
# cache = dir ++ cache
= (errs,cache,files)
add_subdir :: !Int !{#Char} !{!DirCacheElem} !*{#SubdirElem} -> *{#SubdirElem}
add_subdir subdir_i subdir_name cache subdirs
# (n_subdirs,subdirs) = usize subdirs
new_subdirs={{subdir_name="",subdir_cache={}} \\ i<-[0..n_subdirs]}
(new_subdirs,subdirs) = move_begin_elements 0 subdir_i new_subdirs subdirs
new_subdirs & [subdir_i]={subdir_name=subdir_name, subdir_cache=cache}
= move_end_elements_to_next subdir_i new_subdirs subdirs
where
move_begin_elements :: !Int !Int !*SubdirCache !*SubdirCache -> (!*SubdirCache,!*SubdirCache)
move_begin_elements i max_i d_a s_a
| i<max_i
# (e,s_a) = replace s_a i {subdir_name="",subdir_cache={}}
# d_a & [i]=e
= move_begin_elements (i+1) max_i d_a s_a
= (d_a,s_a)
move_end_elements_to_next :: !Int !*SubdirCache !*SubdirCache -> *SubdirCache
move_end_elements_to_next i d_a s_a
| i<size s_a
# (e,s_a) = replace s_a i {subdir_name="",subdir_cache={}}
# d_a & [i+1]=e
= move_end_elements_to_next (i+1) d_a s_a
= d_a
bin_search_file :: !Modulename !*SimpleDirCache -> *(!Bool,!Pathname,!DateTime,!*SimpleDirCache)
bin_search_file mod cache
# (cache_size,cache) = usize cache
= bin_search_file 0 cache_size mod cache
where
binsearch left right mod cache
bin_search_file :: !Int !Int !Modulename !*SimpleDirCache -> *(!Bool,!Pathname,!DateTime,!*SimpleDirCache)
bin_search_file left right mod cache
| left >= right
= (False,"",emptyDateTime,cache)
# mid = (left+right)/2
# ((n,p,m),cache) = uselect cache mid
# mid = (left+right)>>1
# ((n,p,m),cache) = cache![mid]
| mod == n
= (True,p,m,cache)
| mod < n
= binsearch left mid mod cache
= bin_search_file left mid mod cache
// mod > n
= binsearch (inc mid) right mod cache
= bin_search_file (inc mid) right mod cache
//--
SearchDisk :: !Bool !Modulename !(List Pathname) !*Files -> ((!Bool,!Pathname),!*Files)
SearchDisk def_and_imp modname dirs disk
= SearchDisk2 def_and_imp modname modname2 dirs disk
where
modname2 | not def_and_imp = modname
| IsDefPathname modname = MakeImpPathname modname
= MakeDefPathname modname
SearchDisk2 :: !Bool !Modulename !Modulename !(List Pathname) !*Files -> ((!Bool,!Pathname),!*Files)
SearchDisk2 def_and_imp modname1 modname2 Nil disk
= ((False, EmptyPathname),disk)
SearchDisk2 def_and_imp modname1 modname2 (dir:!rest) disk
# dir_modname1 = MakeFullPathname dir modname1
# (exists,disk) = FExists dir_modname1 disk
| exists
= ((True, dir_modname1),disk)
| not def_and_imp
= SearchDisk2 def_and_imp modname1 modname2 rest disk
# dir_modname2 = MakeFullPathname dir modname2
# (exists,disk) = FExists dir_modname2 disk
| exists
= ((True, dir_modname1),disk)
= SearchDisk2 def_and_imp modname1 modname2 rest disk
//--
instance toString DirError
bin_search_subdir subdir_name subdirs
# (n_subdirs,subdirs) = usize subdirs
= bin_search_subdir 0 n_subdirs subdir_name subdirs
where
toString NoDirError = "NoDirError"
toString DoesntExist = "DoesntExist"
toString BadName = "BadName"
toString NotEnoughSpace = "NotEnoughSpace"
toString AlreadyExists = "AlreadyExists"
toString NoPermission = "NoPermission"
toString MoveIntoOffspring = "MoveIntoOffspring"
toString MoveAcrossDisks = "MoveAcrossDisks"
toString NotYetRemovable = "NotYetRemovable"
toString OtherDirError = "OtherDirError"
bin_search_subdir :: !Int !Int !{#Char} !*SubdirCache -> *(!Bool,!Int,!*SubdirCache)
bin_search_subdir left right subdir cache
| left >= right
= (False,right,cache)
# mid = (left+right)>>1
# (subdir_name,cache) = cache![mid].subdir_name
| subdir == subdir_name
= (True,mid,cache)
| subdir < subdir_name
= bin_search_subdir left mid subdir cache
// subdir > subdir_name
= bin_search_subdir (inc mid) right subdir cache
SearchDisk :: !Modulename !(List Pathname) !*Files -> (!(!Bool,!Pathname),!*Files)
SearchDisk modname dirs files
= SearchDisk2 modname dirs files
FindHModule :: !Modulename !{#Char} !(List Pathname) !*Files -> (!(!Bool,!Pathname),!*Files)
FindHModule module_name file_ext dirs files
# last_dot_i = find_last_dot_i module_name
| last_dot_i<0
= SearchDisk2 (module_name+++file_ext) dirs files
# (subdir_name,file_name) = subdir_and_file_name_of_hmodule_name last_dot_i module_name file_ext
# dirs = Map (\dir->concat_paths dir subdir_name) dirs
= SearchDisk2 file_name dirs files
SearchDisk2 :: !Modulename !(List Pathname) !*Files -> (!(!Bool,!Pathname),!*Files)
SearchDisk2 modname Nil files
= ((False, EmptyPathname),files)
SearchDisk2 modname (dir:!rest) files
# dir_modname1 = MakeFullPathname dir modname
# (exists,files) = FExists dir_modname1 files
| exists
= ((True, dir_modname1),files)
= SearchDisk2 modname rest files
......@@ -115,8 +115,8 @@ GenAsmProjectModule imp_pathname project setproject ps
:: *DriverState
= DInit !Bool !Project !MTPContinuation
| DComp !Bool !*DirCache !DriverCompilingInfo ![!ModuleDirAndName] !DriverStateRecord
| DGene ![!ModuleDirAndName] !DriverCodeGenerationInfo !DriverStateRecord
| DQuitCompilers ![!ModuleDirAndName] !DriverCompilingInfo !DriverStateRecord
| DGene ![!ModuleDirAndName] !DriverCodeGenerationInfo !DriverStateRecord
| DLink !DriverStateRecord
| DDone
......@@ -987,6 +987,8 @@ compiling_info_async []
compiling_info_async current
= foldl (\s c -> s +++ " "+++c.iclModule.mdn_name) "Compiling:" current
AccTuple4 f s1 :== let (e1,e2,e3,s2) = f s1 in ((e1,e2,e3),s2)
// Scan modified modules and update the dependencies (recompile if necessary).
UpdateDependencies :: !Bool !ModuleDirAndName ![!ModuleDirAndName] !DriverCompilingInfo !*DirCache !DriverStateRecord !*GeneralSt
-> (*GeneralSt,*DirCache,Bool,Bool,[!ModuleDirAndName],DriverCompilingInfo,DriverStateRecord,Bool)
......@@ -1037,14 +1039,13 @@ UpdateDependencies force mdn rest compinfo dircache ds ps`
// can actually only occur when failed to open .abc file...
# ps = showInfo line ps
= (ps,dircache,False,False,rest,compinfo,ds,False)
# (ok,paths,dircache)
= LookupModulePaths mods dircache
# ((ok,paths,dircache),ps) = accFiles (AccTuple4 (LookupModulePaths mods dircache)) ps
| not ok
# line = Level3 ["Error: '" +++ (Hd paths).mdn_name +++ "' not found."]
# ps = showInfo line ps
= (ps,dircache,False,False,rest,compinfo,ds,False)
#! rest = rest++|paths
#! project = PR_AddABCInfo mdn objs libs defaultCO defeo impeo ds.project
#! project = PR_AddABCInfo mdn objs libs defaultCO ds.project
ds = {ds & project = project, modpaths = [!mdn : ds.modpaths]}
= (ps, dircache, True, False, rest, compinfo, ds, True)
# line = Level3 ["Error: System file: '" +++ module_name +++ "' could not be patched."]
......@@ -1057,13 +1058,13 @@ UpdateDependencies force mdn rest compinfo dircache ds ps`
# line = Level3 ["Error: Strange error parsing dependencies: '" +++ info.abcpath +++ "'."]
# ps = showInfo line ps
= (ps,dircache,False,False,rest,compinfo,ds,False)
# (ok,paths,dircache) = LookupModulePaths mods dircache
# ((ok,paths,dircache),ps) = accFiles (AccTuple4 (LookupModulePaths mods dircache)) ps
| not ok
# line = Level3 ["Error: '" +++ (Hd paths).mdn_name +++ "' not found."]
# ps = showInfo line ps
= (ps,dircache,False,False,rest,compinfo,ds,False)
#! rest = paths++|rest
#! project = PR_AddABCInfo mdn objs libs defaultCO defeo impeo ds.project
#! project = PR_AddABCInfo mdn objs libs defaultCO ds.project
ds = {ds & project = project, modpaths = [!mdn : ds.modpaths]}
= (ps, dircache, True, False, rest, compinfo, ds, False)
......@@ -1079,18 +1080,18 @@ UpdateDependencies force mdn rest compinfo dircache ds ps`
# line = Level3 ["Error: Strange error parsing dependencies: '" +++ info.abcpath +++ "'."]
# ps = showInfo line ps
= (ps,dircache,False,False,rest,compinfo,ds,False)
# (okA,whyA,dircache) = check_dependant_dates module_name info.abcpath mods xxx_md xxx_dd dircache
# ((okA,whyA,dircache),ps) = accFiles (AccTuple4 (check_dependant_dates module_name mods xxx_md xxx_dd dircache)) ps
# (use_64_bit_processor,ps) = getCurrent64BitProcessor ps
# (okC,whyC) = check_module_options module_name info co mp tp eod use_64_bit_processor version
| okA && okC
# (ok,paths,dircache) = LookupModulePaths mods dircache
# ((ok,paths,dircache),ps) = accFiles (AccTuple4 (LookupModulePaths mods dircache)) ps
| not ok
# line = Level3 ["Error: '" +++ (Hd paths).mdn_name +++ "' not found."]
# ps = showInfo line ps
= (ps,dircache,False,False,rest,compinfo,ds,False)
#! rest = paths++|rest
#! project = PR_AddABCInfo mdn objs libs co defeo impeo ds.project
#! project = PR_AddABCInfo mdn objs libs co ds.project
ds = {ds & project = project, modpaths = [!mdn : ds.modpaths]}
= (ps,dircache,True,False,rest,compinfo,ds,False)
......@@ -1110,10 +1111,6 @@ where
LM_Dynamic -> True
verbose = prefs.be_verbose
defaultCO = prefs.compopts
eo =