Menu

#203 Documentation build fails if build path has a space in it

open
nobody
None
3 days ago
2026-08-25
Techokami
No

Hello!
I am trying to build the current state of the git repo on Fedora 44. I got up to making the documentation, at which point everything grinds to a halt. After piping stderr to a separate file so I can actually read it all, it appears that the build script did not wrap the path in quotes, and thus created a bunch of broken nonsense that led to over 200 errors, causing the build to fail with error 255. Which is... very surprising for a multitude of reasons. The biggest one being that it was using the non-symlinked path, which contains spaces, when I was executing it from a symlinked path that had no spaces. But also, everything else up to that point built just fine...
I relocated my local copy of the repository to a completely different location on a completely different drive to ensure that there were no spaces in the path, and the build seems to have completed successfully.

Discussion

  • Jon Trulson

    Jon Trulson - 3 days ago

    Hi, what "script" are you talking about?

     
    • Techokami

      Techokami - 3 days ago

      Ah, right, I'm talking about the Makefile. In particular, the ones in cde/doc/en_US.UTF-8/guides
      To elaborate, I put the majority of my files on my computer in a 27TB HDD that I named "Storage Barn DX", because I am very much allowed to have a fun name for a behemoth HDD. This means the mount point is /mnt/Storage Barn DX and changing the name would break, uh, everything that looks for things on this drive. Now on the root of this drive is a folder I call "GITS" where I put all git-related stuff: various cloned repos and all my local repos, basically. To make it easier to get into from launching a fresh terminal, I created a symlink in my home directory to this location, so ~/GITS is a valid alternative to /mnt/Storage Barn DX/GITS. However, configure.sh prefers the non-symlinked path.
      Thus, when the Makefile for CDE gets to making the guides, this happens:

      onsgmls:E: cannot open "/mnt/Storage" (No such file or directory)
      onsgmls:E: cannot find "Barn"; tried "Barn", "./Barn", "../Barn"
      onsgmls:E: cannot find "DX/GITS/techokami-cdesktopenv/cde/doc/en_US.UTF-8/guides/common/catalog"; tried "DX/GITS/techokami-cdesktopenv/cde/doc/en_US.UTF-8/guides/common/catalog", "./DX/GITS/techokami-cdesktopenv/cde/doc/en_US.UTF-8/guides/common/catalog", "../DX/GITS/techokami-cdesktopenv/cde/doc/en_US.UTF-8/guides/common/catalog"
      onsgmls:E: cannot find "-c/home/techokami/GITS/techokami-cdesktopenv/cde/programs/dtdocbook/sgml/catalog"; tried "-c/home/techokami/GITS/techokami-cdesktopenv/cde/programs/dtdocbook/sgml/catalog", "./-c/home/techokami/GITS/techokami-cdesktopenv/cde/programs/dtdocbook/sgml/catalog", "../-c/home/techokami/GITS/techokami-cdesktopenv/cde/programs/dtdocbook/sgml/catalog"
      onsgmls:E: cannot find "-oline"; tried "-oline", "./-oline", "../-oline"
      onsgmls:E: cannot find "-wno-idref"; tried "-wno-idref", "./-wno-idref", "../-wno-idref"
      onsgmls:/home/techokami/GITS/techokami-cdesktopenv/cde/programs/dtdocbook/sgml/dtinfoBook.dtd:114:0:W: cannot generate system identifier for public text "-//Common Desktop Environment//ENTITIES Dtinfo SS Localization//EN"
      onsgmls:/home/techokami/GITS/techokami-cdesktopenv/cde/programs/dtdocbook/sgml/dtinfoBook.dtd:115:9:E: reference to entity "LocalFoo" for which no system identifier could be generated
      onsgmls:/home/techokami/GITS/techokami-cdesktopenv/cde/programs/dtdocbook/sgml/dtinfoBook.dtd:112:0: entity was defined here
      onsgmls:E: cannot open "/mnt/Storage" (No such file or directory)
      onsgmls:./usersGuide/book.sgm:2:61:W: cannot generate system identifier for public text "-//HaL and O'Reilly//DTD DocBook//EN"
      onsgmls:./usersGuide/book.sgm:58:0:E: reference to entity "BOOK" for which no system identifier could be generated
      onsgmls:./usersGuide/book.sgm:2:0: entity was defined here
      onsgmls:./usersGuide/book.sgm:58:0:E: DTD did not contain element declaration for document type name
      onsgmls:././usersGuide/BEntity.sgm:367:0:E: notation "TIFF" for entity "UG.Cal.fig.19" undefined
      [omitting 15,000 lines of the above]
      onsgmls:I: maximum number of errors (200) reached; change with -E option
      dtdocbook2infolib: command failed: cat /tmp/dtinfogen-guides.236343/otk.1/tmp.2 | NodeParser toc /tmp/dtinfogen-guides.236343/otk.1 /tmp/dtinfogen-guides.236343/otk.1 > /tmp/dtinfogen-guides.236343/otk.1/tmp.3
      make[3]: *** [Makefile:1598: usersGuide/TOC.sgm] Error 255
      make[2]: *** [Makefile:450: all-recursive] Error 1
      make[1]: *** [Makefile:457: all-recursive] Error 1
      make: *** [Makefile:634: all-recursive] Error 1
      

      And when you look at the first few lines of what went to stderr, the cause is simply not wrapping the path, thus shattering the command into multiple bad commands. But I don't know exactly where in the Makefile (or which Makefile) I would need to fix this. Yes, the problem can be "fixed" by using a different directory that doesn't have spaces in the path, but considering that everything else up to this point builds just fine, it would be better to amend the Makefiles to not have this be an issue.

       

Log in to post a comment.