]> cygwin.com Git - cygwin-apps/setup.git/commitdiff
2002-07-13 Robert Collins <rbtcollins@hotmail.com>
authorRobert Collins <rbtcollins@hotmail.com>
Sat, 13 Jul 2002 00:46:54 +0000 (00:46 +0000)
committerRobert Collins <rbtcollins@hotmail.com>
Sat, 13 Jul 2002 00:46:54 +0000 (00:46 +0000)
        * IniDBBuilder.cc (IniDBBuilder::buildBeginBuildDepends): Implement.
        (IniDBBuilder::buildBeginBinary): Implement.
        * IniDBBuilder.h (IniDBBuilder::buildBeginBuildDepends): Declare.
        (IniDBBuilder::buildBeginBinary): Ditto.
        * IniDBBuilderPackage.cc (IniDBBuilderPackage::buildBeginBuildDepends):
        Implement.
        (IniDBBuilderPackage::buildBeginBinary): Ditto.
        * IniDBBuilderPackage.h (IniDBBuilderPackage::buildBeginBuildDepends):
        Declare.
        (IniDBBuilderPackage::buildBeginBinary): Ditto.
        * inilex.l: Recognise Build-Depends-Indep, [,], >, < and remove
        T_UNKNOWN.
        * iniparse.y: Full support for parsing a debian Sources file in-line in
        setup.ini.
        * package_version.cc (packageversion::binaries): Implement.
        * package_version.h (packageversion::binaries): Declare list of what
        packages are created from a given source package.
        (_packageversion::binaries): Ditto.

ChangeLog
IniDBBuilder.cc
IniDBBuilder.h
IniDBBuilderPackage.cc
IniDBBuilderPackage.h
inilex.l
iniparse.y
package_version.cc
package_version.h

index d78c6cfb5018697cf6e1cad98228f673a5c7d1b2..b1a6335fbb0201beca813d31a1ed6ed4758f679d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2002-07-13  Robert Collins  <rbtcollins@hotmail.com>
+
+       * IniDBBuilder.cc (IniDBBuilder::buildBeginBuildDepends): Implement.
+       (IniDBBuilder::buildBeginBinary): Implement.
+       * IniDBBuilder.h (IniDBBuilder::buildBeginBuildDepends): Declare.
+       (IniDBBuilder::buildBeginBinary): Ditto.
+       * IniDBBuilderPackage.cc (IniDBBuilderPackage::buildBeginBuildDepends):
+       Implement.
+       (IniDBBuilderPackage::buildBeginBinary): Ditto.
+       * IniDBBuilderPackage.h (IniDBBuilderPackage::buildBeginBuildDepends):
+       Declare.
+       (IniDBBuilderPackage::buildBeginBinary): Ditto.
+       * inilex.l: Recognise Build-Depends-Indep, [,], >, < and remove
+       T_UNKNOWN.
+       * iniparse.y: Full support for parsing a debian Sources file in-line in
+       setup.ini.
+       * package_version.cc (packageversion::binaries): Implement.
+       * package_version.h (packageversion::binaries): Declare list of what
+       packages are created from a given source package.
+       (_packageversion::binaries): Ditto.
+
 2002-07-10  Robert Collins  <rbtcollins@hotmail.com>
 
        * iniparse.y: Add basis for support for parsing a debian Sources file.
index c1f92c7ecd878ec35d9c8e4c44fe7d8cb740ea04..c370df9584ed91c69626f086976f77b4dc475963 100644 (file)
@@ -40,6 +40,8 @@ void IniDBBuilder::buildBeginSuggests (){}
 void IniDBBuilder::buildBeginReplaces (){}
 void IniDBBuilder::buildBeginConflicts (){}
 void IniDBBuilder::buildBeginProvides (){}
+void IniDBBuilder::buildBeginBuildDepends (){}
+void IniDBBuilder::buildBeginBinary (){}
 void IniDBBuilder::buildDescription (String const &){}
 void IniDBBuilder::buildSourceName (String const &){}
 void IniDBBuilder::buildSourceNameVersion (String const &){}
index 2fc53a01bd0784880034c81a313aa153824859a5..f9d46e536f3c69fb3072fd1d5bea588d674b8f0b 100644 (file)
@@ -47,6 +47,8 @@ public:
   virtual void buildBeginReplaces ();
   virtual void buildBeginConflicts ();
   virtual void buildBeginProvides ();
+  virtual void buildBeginBuildDepends ();
+  virtual void buildBeginBinary ();
   virtual void buildDescription (String const &);
   virtual void buildSourceName (String const &);
   virtual void buildSourceNameVersion (String const &);
index 5949a75dc2e4f1d922c6d66a3c27607a5c5a7131..760a590b7ee4bf8ca1f67c7d3a66662eef77da65 100644 (file)
@@ -234,6 +234,11 @@ IniDBBuilderPackage::buildInstalledSize (String const &size)
 void
 IniDBBuilderPackage::buildMaintainer (String const &){}
 
+/* TODO: we can multiple arch's for a given package,
+   and it may befor either source or binary, so we need to either set both
+   or track a third current package that points to whether we altering source
+   or binary at the moment
+   */
 void
 IniDBBuilderPackage::buildArchitecture (String const &arch)
 {
@@ -323,6 +328,31 @@ IniDBBuilderPackage::buildBeginProvides ()
   currentAndList = cbpv.provides();
 }
 
+void
+IniDBBuilderPackage::buildBeginBuildDepends ()
+{
+#if DEBUG
+  log (LOG_BABBLE) << "Beginning of a Build-Depends statement" << endLog;
+  dumpAndList (currentAndList);
+#endif
+  currentSpec = NULL;
+  currentOrList = NULL; /* set by the build AndListNode */
+  currentAndList = cspv.depends ();
+}
+
+  
+void
+IniDBBuilderPackage::buildBeginBinary ()
+{
+#if DEBUG
+  log (LOG_BABBLE) << "Beginning of a Binary statement" << endLog;
+  dumpAndList (currentAndList);
+#endif
+  currentSpec = NULL;
+  currentOrList = NULL; /* set by the build AndListNode */
+  currentAndList = cspv.binaries ();
+}
+
 void
 IniDBBuilderPackage::buildDescription (String const &descline)
 {
index fd90c46fbafdb62e3f7c8ef219df2affb5d8482e..54c8d91f865062eade0ff763d968707e54df3f7d 100644 (file)
@@ -52,6 +52,8 @@ public:
   virtual void buildBeginReplaces ();
   virtual void buildBeginConflicts ();
   virtual void buildBeginProvides ();
+  virtual void buildBeginBuildDepends ();
+  virtual void buildBeginBinary ();
   virtual void buildDescription (String const &);
   virtual void buildSourceName (String const &);
   virtual void buildSourceNameVersion (String const &);
index 24633dfb04f2fabd29396c2ace30095da9f38c55..c849259cf4ea61b12ad67feaf828b26bbf58d2ee 100644 (file)
--- a/inilex.l
+++ b/inilex.l
@@ -42,7 +42,7 @@ static void ignore_line (void);
 %x descriptionstate
 %x eolstate
 
-STR    [a-zA-Z0-9_./:\+-]+
+STR    [!a-zA-Z0-9_./:\+-]+
 
 %%
 
@@ -84,6 +84,7 @@ STR   [a-zA-Z0-9_./:\+-]+
 "Source:"              return SOURCEPACKAGE;
 "Binary:"              return BINARYPACKAGE;
 "Build-Depends:"       return BUILDDEPENDS;
+"Build-Depends-Indep:" return BUILDDEPENDS; /* technicallyincorrect :[ */
 "Standards-Version:"   return STANDARDSVERSION; 
 "Format:"              return FORMAT;
 "Directory:"           return DIRECTORY;
@@ -113,14 +114,17 @@ STR       [a-zA-Z0-9_./:\+-]+
 "[test]"               return T_TEST;
 "[exp]"                        return T_TEST;
 "[prev]"               return T_PREV;
-"["{STR}"]"            return T_UNKNOWN;
 
 "("                    return OPENBRACE;
 ")"                    return CLOSEBRACE;
+"["                    return OPENSQUARE;
+"]"                    return CLOSESQUARE;
 "<<"                   return LT;
 ">>"                   return GT;
 ">="                   return GTEQUAL;
 "<="                   return LTEQUAL;
+">"                    return GT;
+"<"                    return LT;
 "="                     return EQUAL;
 \,                     return COMMA;
 "|"                    return OR;
@@ -146,7 +150,6 @@ STR [a-zA-Z0-9_./:\+-]+
 
 \n                     { return NL; }
 .                      { return *yytext;}
-<<EOF>>                        { return LEX_EOF; }
 
 %%
 
index 12ab7df81eddcd2d2327e444780ff29bfb554247..dbb155ea62367f19ec2517e11897a6a9e58eaa9b 100644 (file)
@@ -46,19 +46,20 @@ void add_correct_version();
 %token SETUP_TIMESTAMP SETUP_VERSION PACKAGEVERSION INSTALL SOURCE SDESC LDESC
 %token CATEGORY DEPENDS REQUIRES
 %token APATH PPATH INCLUDE_SETUP EXCLUDE_PACKAGE DOWNLOAD_URL
-%token T_PREV T_CURR T_TEST T_UNKNOWN
+%token T_PREV T_CURR T_TEST
 %token MD5 INSTALLEDSIZE MAINTAINER PRIORITY
 %token DESCTAG DESCRIPTION FILESIZE ARCHITECTURE SOURCEPACKAGE MD5LINE 
 %token RECOMMENDS PREDEPENDS
-%token SUGGESTS CONFLICTS REPLACES PROVIDES PACKAGENAME STRTOEOL PARAGRAPH LEX_EOF
+%token SUGGESTS CONFLICTS REPLACES PROVIDES PACKAGENAME STRTOEOL PARAGRAPH
 %token EMAIL COMMA OR NL AT
 %token OPENBRACE CLOSEBRACE EQUAL GT LT GTEQUAL LTEQUAL 
+%token OPENSQUARE CLOSESQUARE
 %token BINARYPACKAGE BUILDDEPENDS STANDARDSVERSION FORMAT DIRECTORY FILES
 
 %%
 
 whole_file
- : setup_headers packages
+ : setup_headers packageseparator packages
  ;
 
 setup_headers: /* empty */
@@ -71,7 +72,7 @@ header /* non-empty */
  ;
 
 packages: /* empty */
- | packages packageseparator package
+ | packages package packageseparator
  ;
 
 packageseparator: /* empty */
@@ -98,11 +99,10 @@ singleitem /* non-empty */
  | T_PREV NL                   { iniBuilder->buildPackageTrust (TRUST_PREV); }
  | T_CURR NL                   { iniBuilder->buildPackageTrust (TRUST_CURR); }
  | T_TEST NL                   { iniBuilder->buildPackageTrust (TRUST_TEST); }
- | T_UNKNOWN NL                      { iniBuilder->buildPackageTrust (TRUST_UNKNOWN);}
  | PRIORITY STRING NL          { iniBuilder->buildPriority ($2); }
  | INSTALLEDSIZE STRING NL     { iniBuilder->buildInstalledSize ($2); }
  | MAINTAINER STRING NL                { iniBuilder->buildMaintainer ($2); }
- | ARCHITECTURE STRING NL      { iniBuilder->buildArchitecture ($2); }
+ | ARCHITECTURE packagearchspec NL     { iniBuilder->buildArchitecture ($2); }
  | FILESIZE STRING NL          { iniBuilder->buildInstallSize($2); }
  | FORMAT STRING NL            { /* TODO */ }
  | DIRECTORY STRING NL         { /* TODO */ }
@@ -113,7 +113,7 @@ singleitem /* non-empty */
  | INSTALL STRING { iniBuilder->buildPackageInstall ($2); } installmeta NL
  | SOURCE STRING STRING sourceMD5 NL {iniBuilder->buildPackageSource ($2, $3);}
  | PROVIDES            { iniBuilder->buildBeginProvides(); } packagelist NL
- | BINARYPACKAGE  { /* TODO */ } packagelist NL
+ | BINARYPACKAGE  { iniBuilder->buildBeginBinary (); } packagelist NL
  | CONFLICTS   { iniBuilder->buildBeginConflicts(); } versionedpackagelist NL
  | DEPENDS { iniBuilder->buildBeginDepends(); } versionedpackagelist NL
  | REQUIRES { iniBuilder->buildBeginDepends(); }versionedpackagelistsp NL
@@ -121,16 +121,19 @@ singleitem /* non-empty */
  | RECOMMENDS { iniBuilder->buildBeginRecommends(); }   versionedpackagelist NL
  | SUGGESTS { iniBuilder->buildBeginSuggests(); } versionedpackagelist NL
  | REPLACES { iniBuilder->buildBeginReplaces(); }       versionedpackagelist NL
- | BUILDDEPENDS { /* todo */ } versionedpackagelist NL
+ | BUILDDEPENDS { iniBuilder->buildBeginBuildDepends(); } versionedpackagelist NL
  | FILES NL SourceFilesList
  | DESCTAG mlinedesc
- | LEX_EOF                     { YYACCEPT; }
  | error                       { yyerror (String("unrecognized line ") 
                                          + yylineno 
                                          + " (do you have the latest setup?)");
                                }
  ;
 
+packagearchspec: /* empty */
+ | packagearchspec STRING { iniBuilder->buildArchitecture ($2); }
+ ;
 categories: /* empty */
  | categories STRING           { iniBuilder->buildPackageCategory ($2); }
  ;
@@ -166,7 +169,7 @@ packagelist /* non-empty */
  ;
 
 packageentry /* empty not allowed */
- : STRING              { iniBuilder->buildPackageListOrNode($1); }
+ : STRING                { iniBuilder->buildPackageListOrNode($1); } 
  | packageentry OR STRING { iniBuilder->buildPackageListOrNode($3); }
  ;
 
@@ -181,14 +184,14 @@ versionedpackagelistsp /* non-empty */
  ;
 
 
-listseparator /* non-empty */
: COMMA
+listseparator: /* empty */
| COMMA
  | COMMA NL
  ;
  
 versionedpackageentry /* empty not allowed */
- : STRING { iniBuilder->buildPackageListOrNode($1); } versioncriteria
- | versionedpackageentry OR STRING { iniBuilder->buildPackageListOrNode($3); } versioncriteria
+ : STRING { iniBuilder->buildPackageListOrNode($1); } versioncriteria architecture
+ | versionedpackageentry OR STRING { iniBuilder->buildPackageListOrNode($3); } versioncriteria architecture
  ;
 
 versioncriteria: /* empty */
@@ -203,6 +206,15 @@ operator /* non-empty */
  | GTEQUAL { iniBuilder->buildPackageListOperator (PackageSpecification::MoreThanEquals); }
  ;
  
+architecture: /* empty */
+ | OPENSQUARE architecturelist CLOSESQUARE
+ ;
+
+architecturelist: /* empty */
+ | architecturelist STRING
+ ;
+  
 SourceFilesList: /* empty */
  | SourceFilesList MD5 STRING STRING NL
  ;
index df6a97ef70bb76a1130254f909a2ec0c666ba300..98fd0e95b7b5a57d03f7f00251b41c08d6c8d604 100644 (file)
@@ -246,6 +246,11 @@ packageversion::provides()
       return &data->provides;
 }
 
+vector <vector <PackageSpecification *> *> *
+packageversion::binaries()
+{
+      return &data->binaries;
+}
 
 bool
 packageversion::picked () const
index c4ce10cf883edf502abdb97f469ca3121a3f4dfe..f96fa0a2a269d92099abba1f8a394b9a289bb2a6 100644 (file)
@@ -117,7 +117,7 @@ public:
 
   /* invariant: these never return NULL */
   vector <vector <PackageSpecification *> *> *depends(), *predepends(), 
-  *recommends(), *suggests(), *replaces(), *conflicts(), *provides();
+  *recommends(), *suggests(), *replaces(), *conflicts(), *provides(), *binaries();
 
   bool picked() const;   /* true if this version is to be installed */
   void pick(bool); /* trigger an install/reinsall */
@@ -171,7 +171,7 @@ public:
   virtual void setSourcePackageSpecification (PackageSpecification const &);
   
   vector <vector <PackageSpecification *> *> depends, predepends, recommends,
-  suggests, replaces, conflicts, provides;
+  suggests, replaces, conflicts, provides, binaries;
   
   bool picked; /* non zero if this version is to be installed */
                /* This will also trigger reinstalled if it is set */
This page took 0.04442 seconds and 5 git commands to generate.