[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: |
Sam James |
Subject: |
bug#54390: YACC rules don't check DESTDIR existence for VPATH builds |
Date: |
Fri, 13 Jan 2023 06:22:30 +0000 |
> On 13 Jan 2023, at 06:13, Mike Frysinger <vapier@gentoo.org> wrote:
>
> 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.
Thanks - IIRC I hit this when running from git too, which is why I filed the
bug, but that's definitely
wrong on their side anyway, and I can't say I want to bother trying to build it
again from git.
I'll report it over there.
signature.asc
Description: Message signed with OpenPGP