From: Matsumura, G. <gm9...@oh...> - 2022-07-16 10:47:43
|
Greetings, In order to solve the mentioned issues, I was able to create the attached prefix_defines.patch which moves the expansion of the ${prefix} and ${exec_prefix} variables to build time through make as opposed to configure time through autoconf. This is in accordance with the suggestion here: https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Installation-Directory-Variables.html Specifically, this guideline was followed: "In order to support these features, it is essential that datarootdir remains defined as ‘${prefix}/share’, so that its value can be expanded based on the current value of prefix. A corollary is that you should not use these variables except in makefiles. For instance, instead of trying to evaluate datadir in configure and hard-coding it in makefiles using e.g., ‘AC_DEFINE_UNQUOTED([DATADIR], ["$datadir"], [Data directory.])’, you should add -DDATADIR='$(datadir)' to your makefile's definition of CPPFLAGS (AM_CPPFLAGS if you are also using Automake)." This approach is somewhat similar to that which existed in gutenprint before commit b6043e. I wasn't sure if there was a particular reason why this method was undesirable/removed at the time. As a consequence of my build of gutenprint not being able to find the modules, I hit the segfault described here: https://sourceforge.net/p/gimp-print/bugs/732/ The attached no_modules_segfault.patch alters this behaviour so that stp_printer_model_count is called instead of stp_list_get_length, leading to an informative warning being printed in the case of no modules instead of a segmentation fault. This is consistent with usage in the rest of the code. Thank you for reading this, and any consideration of these changes would be very much appreciated. I apologize for any mistakes I made in creating the patches. If there is anything I can do to improve them, please let me know. Regards, George On 7/1/22 21:30, Matsumura, George wrote: > Greetings, > > My build of Gutenprint, built through Void Linux's standardized build > process, was unable to find the module directories due to PKGMODULEDIR > being defined in config.h as: > #define PKGMODULEDIR "${exec_prefix}/lib64/gutenprint/5.3/modules" > > Since the C processor cannot expand exec_prefix, it remains in the path > at runtime and cannot be resolved. > > Attached is the config.summary from the build. In particular, the > following flag passed to configure seemed to be responsible: > --libdir=\${exec_prefix}/lib64 > > There seems to be a specific case in configure.ac for when libdir is > defined as \${exec_prefix}/lib, but this would not cover my case. > > This seems to be similar to the problem described here: > https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Defining-Directories.html > > Is there a recommended way to patch configure.ac so that such an option > works correctly? The above reference suggests either moving definitions > to compile-time options in Makefile.am, which, looking at the repository > history, seems to have been done in gutenprint in the past, or using an > additional macro to resolve the pathname. > > Thank you for reading this and in advance for any reply. > > Regards, > George |