]> Lady’s Gitweb - Shushe/commitdiff
Get destinations from “with metadata” parsed file
authorLady <redacted>
Fri, 6 Mar 2026 02:47:43 +0000 (21:47 -0500)
committerLady <redacted>
Fri, 6 Mar 2026 03:23:10 +0000 (22:23 -0500)
This file contains the entire parse result, so there is no need to load
the parse result separately. This commit also updates the Make
dependencies to accurately track that these files are required.

GNUmakefile
lib/expandmetadata.xslt

index a8838375e568bc8b58a7e96e7b2c3e738e687e4c..33fa6018a34b19c2862d0d7d97169409061a1836 100644 (file)
@@ -1,4 +1,4 @@
-# SPDX-FileCopyrightText: 2023, 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-FileCopyrightText: 2023, 2024, 2025, 2026 Lady <https://www.ladys.computer/about/#lady>
 # SPDX-License-Identifier: MPL-2.0
 
 SHELL = /bin/sh
@@ -8,7 +8,7 @@ override define makefileinfo
  ╭────────────────────────────╮
 ╔╡ ⁌ ⛩📰 书社 ∷ GNUmakefile ╞═════════════════════════════════╗
 ║╰────────────────────────────╯                                ║
-╟┬  Prerequisites ───────────────────────────────────────────┬╢
+╟┬ § Prerequisites ───────────────────────────────────────────┬╢
 ║│                                                            │║
 ║│ Requires G·N·U Make, at least version 3.81, the Fine Free  │║
 ║│ File Command, and the various programs packaged with       │║
@@ -51,7 +51,7 @@ override define makefileinfo
 ║│ program `program´ by overriding the corresponding variable │║
 ║│ `PROGRAM´ when calling Make.                               │║
 ║╰────────────────────────────────────────────────────────────╯║
-╟┬  Usage ───────────────────────────────────────────────────┬╢
+╟┬ § Usage ───────────────────────────────────────────────────┬╢
 ║│                                                            │║
 ║│ • `make all´ (default): Compile, but do not install, all   │║
 ║│   files.                                                   │║
@@ -81,9 +81,9 @@ override define makefileinfo
 ║│ See `README.markdown´ for a more involved description of   │║
 ║│ the capabilities and configuration of this program.        │║
 ║╰────────────────────────────────────────────────────────────╯║
-╟┬  Copyright & License ─────────────────────────────────────┬╢
+╟┬ § Copyright & License ─────────────────────────────────────┬╢
 ║│                                                            │║
-║│ Copyright © 2023–2025 Lady [@ Ladys Computer].             │║
+║│ Copyright © 2023–2026 Lady [@ Ladys Computer].             │║
 ║│                                                            │║
 ║│ This Source Code Form is subject to the terms of the       │║
 ║│ Mozilla Public License, v 2.0. If a copy of the M·P·L was  │║
@@ -689,7 +689,7 @@ $(call metadata,$(sourcefiles) $(sourceincludes)) : % : $$(call datadata,$$@) $(
 # Collect the metadata into a single file, and generate the dependencies and destinations files as side·effects.
 #
 # Doing this all in one step reduces the number of calls to `xsltproc´ required, but requires that it be called from the build directory (necessitating a subshell).
-$(BUILDDIR)/dependencies $(BUILDDIR)/destinations $(BUILDDIR)/metadata : $(call diffprereqs,metadatas,$(call metadata,$(sort $(sourcefiles) $(sourceincludes)))) $$(call parseresult,$(sourcefiles) $(sourceincludes)) $(THISDIR)/lib/expandmetadata.xslt
+$(BUILDDIR)/dependencies $(BUILDDIR)/destinations $(BUILDDIR)/metadata : $(call diffprereqs,metadatas,$(call metadata,$(sort $(sourcefiles) $(sourceincludes)))) $(call diffprereqs,parseds,$$(call parsed,$(sort $(sourcefiles) $(sourceincludes)))) $(THISDIR)/lib/expandmetadata.xslt
        $(call inform,$(PRINTF) '%s\n' 'Compiling metadata…' >&2)
        $(silent){ $(PRINTF) '<?xml version="1.0"?><rdf:RDF xmlns:nie="http://www.semanticdesktop.org/ontologies/2007/01/19/nie#" xmlns:nfo="http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:书社vocab="urn:fdc:ladys.computer:20231231:Shu1She4:vocab:"><书社vocab:BuildDirectory nfo:fileUrl="%s"/>' $(call quote,$(call attresc,$(call fileuri,$(BUILDDIR)))); {$(foreach meta,$(call metadata,$(sort $(sourcefiles) $(sourceincludes))), $(CAT) $(call quote,$(meta));) } | $(SED) 's/<?xml version="1.0"?>//g'; $(PRINTF) '%s\n' '</rdf:RDF>'; } | ( $(CD) $(call quote,$(BUILDDIR)); $(XSLTPROC) --nonet --novalid --nomkdir $(call quote,$(abspath $(THISDIR)/lib/expandmetadata.xslt)) - ) | $(XMLLINT) --nonet --nsclean - >|$(call quote,$(BUILDDIR)/metadata)
 
index 727d58a084bc4d9cb7f06969bd4db0dcb50189f0..df790f9830374436d6e3380b787b371ede001092 100644 (file)
@@ -1,12 +1,12 @@
 <?xml version="1.0"?>
 <!--
-SPDX-FileCopyrightText: 2023, 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2023, 2024, 2025, 2026 Lady <https://www.ladys.computer/about/#lady>
 SPDX-License-Identifier: MPL-2.0
 -->
 <!--
 ⁌ ⛩📰 书社 ∷ lib/expandmetadata.xslt
 
-© 2023–2025 Lady [@ Ladys Computer].
+© 2023–2026 Lady [@ Ladys Computer].
 
 This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
 If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
@@ -28,9 +28,9 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
        <variable name="files" select="//书社vocab:SourceFile|//书社vocab:IncludeFile"/>
        <variable name="stated-dependencies-fragment">
                <for-each select="$files[nie:interpretedAs/nfo:PlainTextDocument]">
-                       <variable name="uri" select="书社vocab:hasParsedFile/@nfo:fileUrl"/>
+                       <variable name="uri" select="书社vocab:hasParsedFileWithMetadata/@nfo:fileUrl"/>
                        <书社:Dependencies for="{@rdf:about}">
-                               <for-each select="document($uri)//书社:link">
+                               <for-each select="document($uri)/书社:parsed/书社:result//书社:link">
                                        <variable name="spaced-show">
                                                <choose>
                                                        <when test="@xlink:show">
@@ -170,7 +170,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                </copy>
        </template>
        <template match="//书社vocab:SourceFile[nie:interpretedAs/nfo:PlainTextDocument]" priority="1">
-               <variable name="parsed" select="document(书社vocab:hasParsedFile/@nfo:fileUrl)"/>
+               <variable name="parsed" select="document(书社vocab:hasParsedFileWithMetadata/@nfo:fileUrl)/书社:parsed/书社:result"/>
                <variable name="provided-destinations" select="normalize-space($parsed/*/@书社:destination)"/>
                <variable name="destinations-fragment">
                        <if test="$provided-destinations!=''">
@@ -241,7 +241,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                <variable name="result" select="exsl:node-set($result-fragment)"/>
                <copy-of select="$result/*"/>
                <exsl:document href="dependencies" method="text" encoding="UTF-8">
-                       <for-each select="$result/rdf:RDF/*[nie:interpretedAs/nfo:PlainTextDocument]">
+                       <for-each select="$result/rdf:RDF/*[self::书社vocab:SourceFile|self::书社vocab:IncludeFile]">
                                <value-of select="@rdf:about"/>
                                <text>&#xA;</text>
                                <for-each select="书社vocab:hasRecursiveDependencyOn/@rdf:resource">
@@ -262,7 +262,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                        </for-each>
                </exsl:document>
                <exsl:document href="destinations" method="text" encoding="UTF-8">
-                       <for-each select="$result//书社vocab:SourceFile">
+                       <for-each select="$result/rdf:RDF/书社vocab:SourceFile">
                                <value-of select="@rdf:about"/>
                                <text>|</text>
                                <for-each select="书社vocab:destination">
This page took 0.335656 seconds and 4 git commands to generate.