1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | % Input predicates, which represent the state of the system at one point: % % installed(Package, Root) - package Package is physically present in root Root. % is_prefix(yes/no) - whether this is Gentoo Prefix, i.e. everything happens inside the prefix % d_HDEPEND(Package, DependPackage) - Package has a HDEPEND on DependPackage % d_RDEPEND(Package, DependPackage) - ... has RDEPEND ... % d_DEPEND(Package, DependPackage) % d_PDEPEND(Package, DependPackage) % d_BADEPEND(Package, DependPackage) % d_IDEPEND(Package, DependPackage) % Get "host root" (for HDEPENDs and IDEPENDs). % If this is Gentoo Prefix, produces Root. % Otherwise, produces '/'. host_root(Root, Root) :- is_prefix(yes). host_root(Root, '/') :- is_prefix(no). % package Package is installed in root Root and has RDEPENDs satisfied installed_correctly(Package, Root) :- % must be physically installed installed(Package, Root), % all RDEPENDs must be installed correctly forall(d_RDEPEND(Package, RunDependPackage), installed_correctly(RunDependPackage, Root)). % package Package is installed correctly and all PDEPENDs are satisfied installed_completely(Package, Root) :- % must be physically installed installed(Package, Root), % all RDEPENDs must be installed completely forall(d_RDEPEND(Package, RunDependPackage), installed_completely(RunDependPackage, Root)), % all PDEPENDs must be installed completely forall(d_PDEPEND(Package, PostDependPackage), installed_completely(PostDependPackage, Root)). % package Package for root Root can be built right now can_be_built(Package, Root) :- % all HDEPENDs are satisfied host_root(Root, HostRoot), forall(d_HDEPEND(Package, HostDependPackage), installed_correctly(HostDependPackage, HostRoot)), % should this be installed_completely()? % all DEPENDs are satisfied forall(d_DEPEND(Package, DependPackage), can_be_built_against(DependPackage, Root)). % package Package in root Root can be built against, i.e. successfully used % within a DEPEND. can_be_built_against(Package, Root) :- % must be installed correctly installed_correctly(Package, Root), % all its BADEPENDs must be able to be built against forall(d_BADEPEND(Package, BuildAgainstPackage), can_be_built_against(BuildAgainstPackage, Root)). % package Package has install dependencies satisfied for % installing or removing from root Root install_deps_satisfied(Package, Root) :- host_root(Root, HostRoot), forall(d_IDEPEND(Package, InstallDependPackage), installed_correctly(InstallDependPackage, HostRoot)). % should this be installed_completely()? |
JSBJbnB1dCBwcmVkaWNhdGVzLCB3aGljaCByZXByZXNlbnQgdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0gYXQgb25lIHBvaW50OgolCiUgaW5zdGFsbGVkKFBhY2thZ2UsIFJvb3QpIC0gcGFja2FnZSBQYWNrYWdlIGlzIHBoeXNpY2FsbHkgcHJlc2VudCBpbiByb290IFJvb3QuCiUgaXNfcHJlZml4KHllcy9ubykgLSB3aGV0aGVyIHRoaXMgaXMgR2VudG9vIFByZWZpeCwgaS5lLiBldmVyeXRoaW5nIGhhcHBlbnMgaW5zaWRlIHRoZSBwcmVmaXgKJSBkX0hERVBFTkQoUGFja2FnZSwgRGVwZW5kUGFja2FnZSkgLSBQYWNrYWdlIGhhcyBhIEhERVBFTkQgb24gRGVwZW5kUGFja2FnZQolIGRfUkRFUEVORChQYWNrYWdlLCBEZXBlbmRQYWNrYWdlKSAtIC4uLiBoYXMgUkRFUEVORCAuLi4gCiUgZF9ERVBFTkQoUGFja2FnZSwgRGVwZW5kUGFja2FnZSkgCiUgZF9QREVQRU5EKFBhY2thZ2UsIERlcGVuZFBhY2thZ2UpCiUgZF9CQURFUEVORChQYWNrYWdlLCBEZXBlbmRQYWNrYWdlKQolIGRfSURFUEVORChQYWNrYWdlLCBEZXBlbmRQYWNrYWdlKSAKCiUgR2V0ICJob3N0IHJvb3QiIChmb3IgSERFUEVORHMgYW5kIElERVBFTkRzKS4KJSBJZiB0aGlzIGlzIEdlbnRvbyBQcmVmaXgsIHByb2R1Y2VzIFJvb3QuCiUgT3RoZXJ3aXNlLCBwcm9kdWNlcyAnLycuCmhvc3Rfcm9vdChSb290LCBSb290KSA6LSBpc19wcmVmaXgoeWVzKS4KaG9zdF9yb290KFJvb3QsICcvJykgOi0gaXNfcHJlZml4KG5vKS4KCiUgcGFja2FnZSBQYWNrYWdlIGlzIGluc3RhbGxlZCBpbiByb290IFJvb3QgYW5kIGhhcyBSREVQRU5EcyBzYXRpc2ZpZWQKaW5zdGFsbGVkX2NvcnJlY3RseShQYWNrYWdlLCBSb290KSA6LQogICAgJSBtdXN0IGJlIHBoeXNpY2FsbHkgaW5zdGFsbGVkCiAgICBpbnN0YWxsZWQoUGFja2FnZSwgUm9vdCksCiAgICAlIGFsbCBSREVQRU5EcyBtdXN0IGJlIGluc3RhbGxlZCBjb3JyZWN0bHkKICAgIGZvcmFsbChkX1JERVBFTkQoUGFja2FnZSwgUnVuRGVwZW5kUGFja2FnZSksCiAgICAgICAgaW5zdGFsbGVkX2NvcnJlY3RseShSdW5EZXBlbmRQYWNrYWdlLCBSb290KSkuICAgIAoKJSBwYWNrYWdlIFBhY2thZ2UgaXMgaW5zdGFsbGVkIGNvcnJlY3RseSBhbmQgYWxsIFBERVBFTkRzIGFyZSBzYXRpc2ZpZWQKaW5zdGFsbGVkX2NvbXBsZXRlbHkoUGFja2FnZSwgUm9vdCkgOi0KICAgICUgbXVzdCBiZSBwaHlzaWNhbGx5IGluc3RhbGxlZAogICAgaW5zdGFsbGVkKFBhY2thZ2UsIFJvb3QpLAogICAgJSBhbGwgUkRFUEVORHMgbXVzdCBiZSBpbnN0YWxsZWQgY29tcGxldGVseQogICAgZm9yYWxsKGRfUkRFUEVORChQYWNrYWdlLCBSdW5EZXBlbmRQYWNrYWdlKSwKICAgICAgICBpbnN0YWxsZWRfY29tcGxldGVseShSdW5EZXBlbmRQYWNrYWdlLCBSb290KSksCiAgICAlIGFsbCBQREVQRU5EcyBtdXN0IGJlIGluc3RhbGxlZCBjb21wbGV0ZWx5CiAgICBmb3JhbGwoZF9QREVQRU5EKFBhY2thZ2UsIFBvc3REZXBlbmRQYWNrYWdlKSwKICAgICAgICBpbnN0YWxsZWRfY29tcGxldGVseShQb3N0RGVwZW5kUGFja2FnZSwgUm9vdCkpLgoKJSBwYWNrYWdlIFBhY2thZ2UgZm9yIHJvb3QgUm9vdCBjYW4gYmUgYnVpbHQgcmlnaHQgbm93CmNhbl9iZV9idWlsdChQYWNrYWdlLCBSb290KSA6LQogICAgJSBhbGwgSERFUEVORHMgYXJlIHNhdGlzZmllZAogICAgaG9zdF9yb290KFJvb3QsIEhvc3RSb290KSwKICAgIGZvcmFsbChkX0hERVBFTkQoUGFja2FnZSwgSG9zdERlcGVuZFBhY2thZ2UpLAogICAgICAgIGluc3RhbGxlZF9jb3JyZWN0bHkoSG9zdERlcGVuZFBhY2thZ2UsIEhvc3RSb290KSksICUgc2hvdWxkIHRoaXMgYmUgaW5zdGFsbGVkX2NvbXBsZXRlbHkoKT8KICAgICUgYWxsIERFUEVORHMgYXJlIHNhdGlzZmllZAogICAgZm9yYWxsKGRfREVQRU5EKFBhY2thZ2UsIERlcGVuZFBhY2thZ2UpLAogICAgICAgIGNhbl9iZV9idWlsdF9hZ2FpbnN0KERlcGVuZFBhY2thZ2UsIFJvb3QpKS4KCiUgcGFja2FnZSBQYWNrYWdlIGluIHJvb3QgUm9vdCBjYW4gYmUgYnVpbHQgYWdhaW5zdCwgaS5lLiBzdWNjZXNzZnVsbHkgdXNlZAolIHdpdGhpbiBhIERFUEVORC4KY2FuX2JlX2J1aWx0X2FnYWluc3QoUGFja2FnZSwgUm9vdCkgOi0KICAgICUgbXVzdCBiZSBpbnN0YWxsZWQgY29ycmVjdGx5CiAgICBpbnN0YWxsZWRfY29ycmVjdGx5KFBhY2thZ2UsIFJvb3QpLAogICAgJSBhbGwgaXRzIEJBREVQRU5EcyBtdXN0IGJlIGFibGUgdG8gYmUgYnVpbHQgYWdhaW5zdAogICAgZm9yYWxsKGRfQkFERVBFTkQoUGFja2FnZSwgQnVpbGRBZ2FpbnN0UGFja2FnZSksCiAgICAgICAgY2FuX2JlX2J1aWx0X2FnYWluc3QoQnVpbGRBZ2FpbnN0UGFja2FnZSwgUm9vdCkpLgoKJSBwYWNrYWdlIFBhY2thZ2UgaGFzIGluc3RhbGwgZGVwZW5kZW5jaWVzIHNhdGlzZmllZCBmb3IKJSBpbnN0YWxsaW5nIG9yIHJlbW92aW5nIGZyb20gcm9vdCBSb290Cmluc3RhbGxfZGVwc19zYXRpc2ZpZWQoUGFja2FnZSwgUm9vdCkgOi0KICAgIGhvc3Rfcm9vdChSb290LCBIb3N0Um9vdCksCiAgICBmb3JhbGwoZF9JREVQRU5EKFBhY2thZ2UsIEluc3RhbGxEZXBlbmRQYWNrYWdlKSwKICAgICAgICBpbnN0YWxsZWRfY29ycmVjdGx5KEluc3RhbGxEZXBlbmRQYWNrYWdlLCBIb3N0Um9vdCkpLiAlIHNob3VsZCB0aGlzIGJlIGluc3RhbGxlZF9jb21wbGV0ZWx5KCk/
prog.pl:16: warning: singleton variables [Root] for host_root/2 /home/g3yHfK/gplcSwWnmb.o: In function `predicate(host_root/2)': (.text+0x3e): undefined reference to `predicate(is_prefix/1)' /home/g3yHfK/gplcSwWnmb.o: In function `Lpred1_1': (.text+0x6b): undefined reference to `predicate(is_prefix/1)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(installed_correctly/2)': (.text+0xab): undefined reference to `predicate(installed/2)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(installed_correctly/2)': (.text+0x115): undefined reference to `predicate(forall/2)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(installed_completely/2)': (.text+0x15b): undefined reference to `predicate(installed/2)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(installed_completely/2)': (.text+0x1ca): undefined reference to `predicate(forall/2)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(installed_completely/2)': (.text+0x234): undefined reference to `predicate(forall/2)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(can_be_built/2)': (.text+0x2ef): undefined reference to `predicate(forall/2)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(can_be_built/2)': (.text+0x359): undefined reference to `predicate(forall/2)' /home/g3yHfK/gplcSwWnmb.o: In function `predicate(can_be_built_against/2)': (.text+0x405): undefined reference to `predicate(forall/2)' /home/g3yHfK/gplcSwWnmb.o:(.text+0x4b4): more undefined references to `predicate(forall/2)' follow collect2: ld returned 1 exit status compilation failed


