[pacman-dev] [PATCH 1/3] doc: describe when and why the prepare function should be used
Eli Schwartz
eschwartz at archlinux.org
Tue Mar 19 04:43:14 UTC 2019
On 3/19/19 12:30 AM, Allan McRae wrote:
> On 13/3/19 3:01 am, Eli Schwartz wrote:
>> We don't want people to run architecture/OS/makepkg.conf specific
>> processes during prepare() and in fact it's been observed that makepkg
>> by design doesn't even run prepare_buildenv() for it, so the prohibition
>> against this is now baked into makepkg.
>>
>> Reflect this differentiation in the documentation on just what, exactly,
>> a prepare() function is.
>>
>> Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
>> ---
>>
>> This patch coincides with quequotion's clarification of the options=()
>> array, so thanks for inspiring me to write this!
>>
>> I believe that both patches have merit independent of each other.
>>
>> doc/PKGBUILD.5.asciidoc | 9 ++++++---
>> 1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/doc/PKGBUILD.5.asciidoc b/doc/PKGBUILD.5.asciidoc
>> index e8ce691f..285627ab 100644
>> --- a/doc/PKGBUILD.5.asciidoc
>> +++ b/doc/PKGBUILD.5.asciidoc
>> @@ -342,9 +342,12 @@ files into the packaging directory, with optional `prepare()`, `build()`, and
>> *prepare() Function*::
>> An optional `prepare()` function can be specified in which operations to
>> prepare the sources for building, such as patching, are performed. This
>> - function is run after the source extraction and before the `build()`
>> - function. The `prepare()` function is skipped when source extraction
>> - is skipped.
>> + function is run exactly once, after the source extraction and before the
>
> Why add "exactly once" here? What is this clarifying?
In contrast to the build function, which should be optimally designed to
work when makepkg --noextract carries on a build. But in retrospect,
saying "exactly once" does not clarify this and it should be inferred
since build() is logically an exception.
>> + `build()` function. The `prepare()` function is skipped when source
>> + extraction is skipped. No system-specific or build-specific commands should
>
> what is a system-specific or build-specific command here?
system-specific or build-specific is anything that depends on either the
operating system or the current makepkg environment, so that would
preclude running any sort of configure script, meson, cmake, etc.
>> + be run during `prepare()` under any circumstances, as they are meant to run
>> + exclusively during `build()`, and features like `buildflags` or `makeflags`
>> + are expressly not available.
>>
>> *build() Function*::
>> The optional `build()` function is use to compile and/or adjust the source
>>
>
> How about this, which documents by example?
>
> An optional `prepare()` function can be specified in which operations to
> prepare the sources for building, such as patching, are performed. For
> example, generating configuration files using autoreconf should occur in
> prepare(), but running the configure script should happen in build().
> This function is run after the source extraction and before the
> `build()` function. The `prepare()` function is skipped when source
> extraction is skipped.
I like the mentioning by example, but I would ideally like to mention
the unavailability of buildflags somehow, as this illustrates why
prepare() "must" not be used for configure, rather than "should" not.
--
Eli Schwartz
Bug Wrangler and Trusted User
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1601 bytes
Desc: OpenPGP digital signature
URL: <https://lists.archlinux.org/pipermail/pacman-dev/attachments/20190319/9e1b3cb1/attachment.sig>
More information about the pacman-dev
mailing list