This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH setup 03/14] Hoist addScript() etc. up from packageversion to packagemeta


We're only interesting in storing scripts and later running them from the
desired version as we install it, so despite being stored per
packageversion, this is only significant for the desired version.

Hoist it up from packageversion to packagemeta.
---
 install.cc         |  2 +-
 package_meta.cc    | 12 ++++++++++++
 package_meta.h     |  7 ++++++-
 package_version.cc | 28 ----------------------------
 package_version.h  |  8 --------
 postinstall.cc     |  6 +++---
 6 files changed, 22 insertions(+), 41 deletions(-)

diff --git a/install.cc b/install.cc
index 79ddd20..cd3128c 100644
--- a/install.cc
+++ b/install.cc
@@ -485,7 +485,7 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver,
           lst->write (tmp.c_str(), tmp.size());
         }
       if (Script::isAScript (fn))
-        pkgm.desired.addScript (Script (canonicalfn));
+        pkgm.addScript (Script (canonicalfn));
 
       int iteration = 0;
       archive::extract_results extres;
diff --git a/package_meta.cc b/package_meta.cc
index 1f548e2..f37340b 100644
--- a/package_meta.cc
+++ b/package_meta.cc
@@ -693,3 +693,15 @@ packagemeta::addToCategoryAll()
 {
   add_category ("All");
 }
+
+void
+packagemeta::addScript(Script const &aScript)
+{
+  scripts_.push_back(aScript);
+}
+
+std::vector <Script> &
+packagemeta::scripts()
+{
+  return scripts_;
+}
diff --git a/package_meta.h b/package_meta.h
index 506d0f2..640c253 100644
--- a/package_meta.h
+++ b/package_meta.h
@@ -19,11 +19,12 @@
 class packageversion;
 class packagemeta;
 
-/* Required to parse this completely */
 #include <set>
+#include <vector>
 #include "PackageTrust.h"
 #include "package_version.h"
 #include "package_message.h"
+#include "script.h"
 
 typedef std::pair<const std::string, std::vector<packagemeta *> > Category;
 
@@ -144,10 +145,14 @@ public:
   void logSelectionStatus() const;
   void logAllVersions() const;
 
+  void addScript(Script const &);
+  std::vector <Script> &scripts();
+
 protected:
   packagemeta &operator= (packagemeta const &);
 private:
   std::string trustLabel(packageversion const &) const;
+  std::vector <Script> scripts_;
 };
 
 #endif /* SETUP_PACKAGE_META_H */
diff --git a/package_version.cc b/package_version.cc
index 7005850..60aae06 100644
--- a/package_version.cc
+++ b/package_version.cc
@@ -54,11 +54,7 @@ public:
   void set_ldesc (const std::string& ) {}
   void uninstall (){}
   void pick(bool const &newValue){/* Ignore attempts to pick this!. Throw an exception here if you want to detect such attemtps instead */}
-  virtual void addScript(Script const &) {}
-  virtual std::vector <Script> &scripts() { scripts_.clear();  return scripts_;}
   virtual bool accessible () const {return false;}
-  private:
-    std::vector <Script> scripts_;
 };
 static _defaultversion defaultversion;
 
@@ -301,18 +297,6 @@ packageversion::scan (bool mirror_mode)
     }
 }
 
-void
-packageversion::addScript(Script const &aScript)
-{
-  return data->addScript (aScript);
-}
-
-std::vector <Script> &
-packageversion::scripts()
-{
-  return data->scripts();
-}
-
 int
 packageversion::compareVersions(const packageversion &a, const packageversion &b)
 {
@@ -400,15 +384,3 @@ _packageversion::accessible() const
   // otherwise, not accessible
   return false;
 }
-
-void
-_packageversion::addScript(Script const &aScript)
-{
-  scripts().push_back(aScript);
-}
-
-std::vector <Script> &
-_packageversion::scripts()
-{
-  return scripts_;
-}
diff --git a/package_version.h b/package_version.h
index c26593a..0f83fdc 100644
--- a/package_version.h
+++ b/package_version.h
@@ -44,8 +44,6 @@ class CategoryList;
 #include "PackageSpecification.h"
 #include "PackageTrust.h"
 #include "package_depends.h"
-#include "script.h"
-#include <vector>
 
 typedef enum
 {
@@ -127,9 +125,6 @@ public:
   /* ensure that the depends clause is satisfied */
   int set_requirements (trusts deftrust, size_t depth = 0);
 
-  void addScript(Script const &);
-  std::vector <Script> &scripts();
-
   /* utility function to compare package versions */
   static int compareVersions(const packageversion &a, const packageversion &b);
 
@@ -186,13 +181,10 @@ public:
      static package_meta * scan_package (io_stream *);
    */
   size_t references;
-  virtual void addScript(Script const &);
-  virtual std::vector <Script> &scripts();
 protected:
   /* only meaningful for binary packages */
   PackageSpecification _sourcePackage;
   packageversion sourceVersion;
-  std::vector <Script> scripts_;
 };
 
 #endif /* SETUP_PACKAGE_VERSION_H */
diff --git a/postinstall.cc b/postinstall.cc
index 2d8e73c..c871201 100644
--- a/postinstall.cc
+++ b/postinstall.cc
@@ -190,7 +190,7 @@ do_postinstall_thread (HINSTANCE h, HWND owner)
     {
       packagemeta & pkg = **i;
 
-      vector<Script> installed = pkg.installed.scripts();
+      vector<Script> installed = pkg.scripts();
       vector<Script> run;
       // extract non-perpetual scripts for the current stratum
       for (vector <Script>::iterator  j = installed.begin(); j != installed.end(); j++)
@@ -213,8 +213,8 @@ do_postinstall_thread (HINSTANCE h, HWND owner)
   for (vector <packagemeta *>::iterator i = packages.begin (); i != packages.end (); ++i)
     {
        packagemeta & pkg = **i;
-       for (std::vector<Script>::const_iterator j = pkg.installed.scripts().begin();
-            j != pkg.installed.scripts().end();
+       for (std::vector<Script>::const_iterator j = pkg.scripts().begin();
+            j != pkg.scripts().end();
             j++)
          {
            std::vector<Script>::iterator p = find(scripts.begin(), scripts.end(), *j);
-- 
2.12.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]