bug-automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#54390: YACC rules don't check DESTDIR existence for VPATH builds


From: Mike Frysinger
Subject: bug#54390: YACC rules don't check DESTDIR existence for VPATH builds
Date: Fri, 13 Jan 2023 01:13:54 -0500

On 14 Mar 2022 17:21, Sam James wrote:
> It appears that YACC rules don't check for whether the destination directory 
> exists before executing ylwrap.
> 
> When trying to package libaacs (https://code.videolan.org/videolan/libaacs) 
> with an out-of-source build, I hit an unexpected build failure:
> ```
> /var/tmp/portage/media-libs/libaacs-0.11.1/work/libaacs-0.11.1/src/file/keydbcfg-parser.y:
>  warning: fix-its can be applied.  Rerun with option '--update'. [-Wother]
> /var/tmp/portage/media-libs/libaacs-0.11.1/work/libaacs-0.11.1/build-aux/ylwrap:
>  206: cannot create ../src/file/keydbcfg-parser.c: Directory nonexistent
> updating src/file/keydbcfg-parser.h
> mv: cannot move 'tmp-keydbcfg-parser.h' to '../src/file/keydbcfg-parser.h': 
> No such file or directory
> make: *** [Makefile:1150: src/file/keydbcfg-parser.c] Error 2
> ```
> 
> I can workaround this by running `mkdir -p ${BUILD_DIR}/src/file` to ensure 
> that the necessary directory exists within the build directory beforehand, but
> it feels like I shouldn't have to.
> 
> Their Makefile.am can be found here: 
> https://code.videolan.org/videolan/libaacs/-/blob/master/Makefile.am. Snippet:
> ```
> libaacs_la_SOURCES=\
>       src/libaacs/aacs.h \
> [...]
>       src/file/dirs.h \
>       src/file/file.h \
>       src/file/file.c \
>       src/file/filesystem.h \
>       src/file/filesystem.c \
>       src/file/keydbcfg.c \
>       src/file/keydbcfg.h \
>       src/file/keydb.h \
>       src/file/keydbcfg-parser.y \
>       src/file/keydbcfg-lexer.l \
>       src/file/mmc_device.h \
> [...]
> ```
> 
> While src/libaacs exists within the build dir, src/file/ doesn't exist at 
> all, hence the failure.
> 
> automake yacc rules should mkdir -p the needed directories within the build 
> dir for VPATH builds before running ylwrap/yacc.

i think there's more to it.  if you're using a release tarball for this project
created by `make dist`, then you shouldn't be running yacc in the first place.

https://www.gnu.org/software/automake/manual/html_node/Yacc-and-Lex.html
> The intermediate files generated by yacc (or lex) will be included in any
> distribution that is made. That way the user doesn’t need to have yacc or lex.

cloning that repo and running `make dist` shows the file is generated, and it's
listed in am__DIST_COMMON, but it still doesn't make it into the tarball.  oh,
it looks like this is self-inflicted:
https://code.videolan.org/videolan/libaacs/-/blob/0.11.1/Makefile.am#L88
https://code.videolan.org/videolan/libaacs/-/commit/f60f46da1dc5e87f70b6edc965a8909d3f21c247

that makes no sense.  file a bug with them.
-mike

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]