OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Michael van Elst
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   04-Feb-2003 13:02:50
  Branch: HEAD                             Handle: 2003020412025000

  Modified files:
    openpkg-src/openpkg-tool
                            openpkg-build.pl

  Log:
    code cleanup, no more guessing about default options

  Summary:
    Revision    Changes     Path
    1.50        +17 -38     openpkg-src/openpkg-tool/openpkg-build.pl
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg-tool/openpkg-build.pl
  ============================================================================
  $ cvs diff -u -r1.49 -r1.50 openpkg-build.pl
  --- openpkg-src/openpkg-tool/openpkg-build.pl 4 Feb 2003 11:26:56 -0000       1.49
  +++ openpkg-src/openpkg-tool/openpkg-build.pl 4 Feb 2003 12:02:50 -0000       1.50
  @@ -529,7 +529,7 @@
   sub parse_options ($) {
       my($l) = @_;
       $l = join("\n", @$l) if ref $l;
  -    return if ($l !~ m/(--define|\%option\s+)/s);
  +    return {} if ($l !~ m/(--define|\%option\s+)/s);
       my $with = {};
       $l =~ s/--define\s*'(\S+)\s+(\S+?)'/$with->{$1} = $2, ''/sge; # before 
openpkg-20021230
       $l =~ s/\%option\s+(\S+)\s+(\S+)/$with->{$1} = $2, ''/sge;     # after  
openpkg-20021230
  @@ -541,20 +541,14 @@
   # where option already exists in old or option key
   # matches regular expression
   #
  -# return true if anything was actually changed or augmented
  -#
   sub override_options ($$$) {
       my($old, $new, $reg) = @_;
  -    my($rc);
   
       foreach my $k (keys %$new) {
           if ((exists $old->{$k} && $old->{$k} ne $new->{$k}) || $k =~ /^$reg$/) {
               $old->{$k} = $new->{$k};
  -            $rc = 1;
           }
       }
  -
  -    return $rc;
   }
   
   #
  @@ -869,7 +863,8 @@
                       desc      => $desc,
                       platform  => $platform,
                       prefix    => $prefix,
  -                    OPTIONS   => $options
  +                    OPTIONS   => $options,
  +                    DEFOPTS   => { %$options }
                   };
   
                   foreach (@provides) {
  @@ -964,7 +959,8 @@
               source    => xwith($_->{'Source'}, $mywith),
               nosource  => xwith($_->{'NoSource'}, $mywith),
               desc      => $desc,
  -            OPTIONS   => $options
  +            OPTIONS   => $options,
  +            DEFOPTS   => { %$options }
           };
   
           foreach (@provides) {
  @@ -1775,46 +1771,29 @@
   # suitable for rpm
   #
   sub make_defines ($$$$) {
  -    my($old, $new, $c, $rebuild) = @_;
  +    my($old, $new, $def, $c) = @_;
       my($with);
   
  +    $old = {} unless $old;
  +    $def = {} unless $def;
  +
       #
       # override old parameters with new parameters
       # drop new parameters that do not exist in old set
       #
  -    # if there is no old set at all (which happens if there
  -    # is no template and no installed package), just use the
  -    # new parameters and assume these are useful.
  -    #
  -    if ($old) {
  -        $old = { %$old };
  -        if (!override_options($old, $new, $c->{optreg})) {
  -            #
  -            # nothing was changed against previous options
  -            #
  -            # if $rebuild is true this is an already installed
  -            # target and 'previous options' may be different
  -            # from the package defaults
  -            #
  -            # but if $rebuild is false this is a package from
  -            # repository, it must be package defaults and we
  -            # can drop the --defines from the script
  -            #
  -            if (!$rebuild) {
  -                return '';
  -            }
  -        }
  -    } else {
  -        $old = $new;
  -    }
  +    $old = { %$old };
  +    override_options($old, $new, $c->{optreg});
   
       #
       # convert parameters to --define command line options
       # skip parameter templates from index
  +    # skip parameters that are identical to defaults
       #
       $with = join(' ',map { "--define '$_ $old->{$_}'" }
  -                     sort grep { $old->{$_} =~ /\S/ &&
  -                                 $old->{$_} !~ /^%/
  +                     sort grep {
  +                         $old->{$_} =~ /\S/ &&
  +                         $old->{$_} !~ /^%/ &&
  +                         $old->{$_} ne $def->{$_}
                        } keys %$old);
   
       $with = ' '.$with if $with ne '';
  @@ -1854,7 +1833,7 @@
           if ($uncond || !-f $bpkg ||
               !target_suitable(binary_target($_, $bpkg),$with)) {
   
  -            $opt = make_defines($_->{OPTIONS}, $with, $c, $_->{REBUILD});
  +            $opt = make_defines($_->{OPTIONS}, $with, $_->{DEFOPTS}, $c);
   
               #
               # proxy packages are rebuilt from their maste
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to