We previously created the texlive.tlpdb by concatenating all tlpobj
files. This means that the entries will be right after another.

As it turns out, some TeX Live tools require a newline (e.g., tlmgr)
between the entries, while others do not (e.g., texdoc). And the
"official" tlpdb also has the entries separated by newlines. Therefore
this changes texlive-common_update_tlpdb() to also add them.

Signed-off-by: Florian Schmaus <f...@gentoo.org>
---
 eclass/texlive-common.eclass | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/eclass/texlive-common.eclass b/eclass/texlive-common.eclass
index b32ea2af1121..929062c0444a 100644
--- a/eclass/texlive-common.eclass
+++ b/eclass/texlive-common.eclass
@@ -270,10 +270,18 @@ texlive-common_update_tlpdb() {
        touch "${new_tlpdb}" || die
 
        if [[ -d "${tlpobj}" ]]; then
-               find "${tlpobj}" -maxdepth 1 -type f -name "*.tlpobj" -print0 |
-                       sort -z |
-                       xargs -0 --no-run-if-empty cat >> "${new_tlpdb}"
-               assert "generating tlpdb failed"
+               all_tlpobjs() {
+                       find "${tlpobj}" -maxdepth 1 -type f -name "*.tlpobj" 
-print0 |
+                               sort -z
+                       assert "Error enumerating all tlpobj files"
+               }
+               (
+                       while IFS="" read -d $'\0' -r f; do
+                               cat "${f}" || die "Failed to read ${f}"
+                               # Ensure there is an empty line between every 
tlpobj entry.
+                               echo
+                       done < <(all_tlpobjs)
+               ) >> "${new_tlpdb}"
        fi
 
        if [[ -f ${tlpdb} ]]; then
-- 
2.43.2


Reply via email to