On Thu, 2011-12-08 at 20:06 +0000, Richard W.M. Jones wrote: > On Thu, Dec 08, 2011 at 07:01:45PM +0000, Paul Howarth wrote: > > On Thu, 8 Dec 2011 18:58:29 +0000 > > "Richard W.M. Jones" <rjones@xxxxxxxxxx> wrote: > > > > > On Thu, Dec 08, 2011 at 07:31:58PM +0100, Till Maas wrote: > > > > On Thu, Dec 08, 2011 at 06:10:17PM +0000, Richard W.M. Jones wrote: > > > > > > > > > # conditionalize Ocaml support > > > > > %ifarch sparc64 s390 s390x > > > > > %bcond_with ocaml > > > > > %else > > > > > %bcond_without ocaml > > > > > %endif > > > > > > > > > > #... > > > > > > > > > > %if %{with ocaml} > > > > > BuildRequires: ocaml > > > > > BuildRequires: ocaml-findlib-devel > > > > > %endif > > > > > > > > > > This code correctly disables OCaml support on architectures where > > > > > we don't bother to compile OCaml (sparc64 s390 s390x). But the > > > > > conditional code looks backwards to me. Does this make sense to > > > > > anyone? > > > > > > > > It makes sense when you read "%bcond_with ocaml" as 'add a > > > > "--with-ocaml" build condition flag' to the spec. > > > > > > It does? Still seems backwards to me. OCaml is disabled on the > > > listed architectures, so that'd be --without-ocaml wouldn't it? > > > > Having a build *option* for "--with ocaml" implies that the default > > (which is what you get when you build the package in koji) is "without" > > ocaml. > > I'm sure you're right, but I still genuinely don't understand your > explanation :-( > > Just to be clear, I'm talking about the %ifarch part above: > > %ifarch sparc64 s390 s390x > %bcond_with ocaml > %else > %bcond_without ocaml > %endif > > Why does that disable OCaml support on the architectures sparc64, > s390, s390x? As I understand Paul's explanation, bcond_with doesn't mean "build with this option", it means "create an rpmbuild option which will enable building with this option". i.e., "bcond_with ocaml" sets up an parameter *for the .src.rpm itself* so that you could do "rpmbuild --with-ocaml foobar.src.rpm" on the resultant .src.rpm to build it with ocaml support. It does not mean that a *default* build of the .src.rpm will be done with ocaml support. That's how I understood the explanation, anyway. Here's how it's explained in /usr/lib/rpm/macros: # Handle conditional builds. %bcond_with is for case when feature is # default off and needs to be activated with --with ... command line # switch. %bcond_without is for the dual case. # # %bcond_with foo defines symbol with_foo if --with foo was specified on # command line. # %bcond_without foo defines symbol with_foo if --without foo was *not* # specified on command line. -- Adam Williamson Fedora QA Community Monkey IRC: adamw | Twitter: AdamW_Fedora | identi.ca: adamwfedora http://www.happyassassin.net -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel