From f39222cd1d842c8ad0139fddf2368abb6f219e2d Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 24 Aug 2009 19:39:04 +0000 Subject: [PATCH] re-order version and platform in filenames, again --- direct/src/p3d/PackageInfo.py | 2 +- direct/src/p3d/Packager.py | 58 ++++++++++++------------ direct/src/p3d/packp3d.py | 1 + direct/src/plugin/p3dOsxSplashWindow.cxx | 21 +++++---- direct/src/plugin/p3dPackage.cxx | 23 +++++----- direct/src/plugin/p3dPackage.h | 1 + 6 files changed, 56 insertions(+), 50 deletions(-) diff --git a/direct/src/p3d/PackageInfo.py b/direct/src/p3d/PackageInfo.py index 6cc9e723bf..9d2a5a27f2 100644 --- a/direct/src/p3d/PackageInfo.py +++ b/direct/src/p3d/PackageInfo.py @@ -12,7 +12,7 @@ class PackageInfo: self.packageVersion = packageVersion self.platform = platform - self.packageFullname = '%s_%s' % (self.packageName, self.packageVersion) + self.packageFullname = '%s.%s' % (self.packageName, self.packageVersion) self.packageDir = Filename(host.hostDir, 'packages/%s/%s' % (self.packageName, self.packageVersion)) self.descFileBasename = self.packageFullname + '.xml' diff --git a/direct/src/p3d/Packager.py b/direct/src/p3d/Packager.py index fe1f1f0405..c95fa8bccf 100644 --- a/direct/src/p3d/Packager.py +++ b/direct/src/p3d/Packager.py @@ -257,13 +257,12 @@ class Packager: if platformSpecific and not self.platform: self.platform = PandaSystem.getPlatform() - if not self.p3dApplication and self.platform and not self.version: - # We must have a version string for platform-specific - # packages. Use the first versioned string on our - # require list. - self.version = 'base' + if not self.p3dApplication and not self.version: + # If we don't have an implicit version, inherit the + # version from the 'panda3d' package on our require + # list. for p2 in self.requires: - if p2.version: + if p2.packageName == 'panda3d' and p2.version: self.version = p2.version break @@ -420,15 +419,15 @@ class Packager: self.packageBasename = self.packageName packageDir = self.packageName - if self.platform: - self.packageBasename += '_' + self.platform - packageDir += '/' + self.platform if self.version: - self.packageBasename += '_' + self.version + self.packageBasename += '.' + self.version packageDir += '/' + self.version + if self.platform: + self.packageBasename += '.' + self.platform + packageDir += '/' + self.platform self.packageDesc = self.packageBasename + '.xml' - self.packageImportDesc = self.packageBasename + '_import.xml' + self.packageImportDesc = self.packageBasename + '.import.xml' if self.p3dApplication: self.packageBasename += '.p3d' packageDir = '' @@ -917,7 +916,7 @@ class Packager: xpackage.SetAttribute(variable, str(value)) def writeImportDescFile(self): - """ Makes the package_import.xml file that describes the + """ Makes the package.import.xml file that describes the package and its contents, for other packages and applications that may wish to "require" this one. """ @@ -1635,7 +1634,7 @@ class Packager: def __scanPackageDir(self, rootDir, packageName, platform, version, host, requires = None): - """ Scans a directory on disk, looking for *_import.xml files + """ Scans a directory on disk, looking for *.import.xml files that match the indicated packageName and optional version. If a suitable xml file is found, reads it and returns the assocated Package definition. @@ -1648,23 +1647,23 @@ class Packager: packageDir = Filename(rootDir, packageName) basename = packageName - if platform: - packageDir = Filename(packageDir, platform) - basename += '_%s' % (platform) - if version: # A specific version package. packageDir = Filename(packageDir, version) - basename += '_%s' % (version) + basename += '.%s' % (version) else: # Scan all versions. packageDir = Filename(packageDir, '*') - basename += '_%s' % ('*') + basename += '.%s' % ('*') + + if platform: + packageDir = Filename(packageDir, platform) + basename += '.%s' % (platform) # Actually, the host means little for this search, since we're # only looking in a local directory at this point. - basename += '_import.xml' + basename += '.import.xml' filename = Filename(packageDir, basename) filelist = glob.glob(filename.toOsSpecific()) if not filelist: @@ -1673,9 +1672,13 @@ class Packager: filename = Filename(rootDir, basename) filelist = glob.glob(filename.toOsSpecific()) - self.__sortPackageImportFilelist(filelist) + packages = [] for file in filelist: package = self.__readPackageImportDescFile(Filename.fromOsSpecific(file)) + packages.append(package) + + self.__sortImportPackages(packages) + for package in packages: if package and self.__packageIsValid(package, requires): return package @@ -1709,15 +1712,14 @@ class Packager: if package.readImportDescFile(filename): return package - def __sortPackageImportFilelist(self, filelist): - """ Given a list of *_import.xml filenames, sorts them in - reverse order by version, so that the highest-numbered - versions appear first in the list. """ + def __sortImportPackages(self, packages): + """ Given a list of Packages read from *.import.xml filenames, + sorts them in reverse order by version, so that the + highest-numbered versions appear first in the list. """ tuples = [] - for file in filelist: - version = file.split('_')[-2] - version = self.__makeVersionTuple(version) + for package in packages: + version = self.__makeVersionTuple(package.version) tuples.append((version, file)) tuples.sort(reverse = True) diff --git a/direct/src/p3d/packp3d.py b/direct/src/p3d/packp3d.py index 5ec41d9a16..afb2895fca 100755 --- a/direct/src/p3d/packp3d.py +++ b/direct/src/p3d/packp3d.py @@ -124,6 +124,7 @@ def makePackedApp(args): packager.do_mainModule(mainModule) packager.endPackage() + packager.close() except Packager.PackagerError: # Just print the error message and exit gracefully. diff --git a/direct/src/plugin/p3dOsxSplashWindow.cxx b/direct/src/plugin/p3dOsxSplashWindow.cxx index 1dc7b48e25..d0167b0d25 100644 --- a/direct/src/plugin/p3dOsxSplashWindow.cxx +++ b/direct/src/plugin/p3dOsxSplashWindow.cxx @@ -319,18 +319,19 @@ paint_window() { bar_x, bar_y, bar_width, bar_height); if (_install_progress != 0.0) { - int progress_width = (int)((bar_width - 2) * _install_progress); - int progress = bar_x + 1 + progress_width; - Rect rbar = { bar_y, bar_x, bar_y + bar_height, bar_x + bar_width }; - Rect rneed = { bar_y + 1, progress, bar_y + bar_height - 1, bar_x + bar_width - 1 }; - Rect rdone = { bar_y + 1, bar_x + 1, bar_y + bar_height - 1, progress }; FrameRect(&rbar); - - RGBColor blue = { 27756, 42405, 57568 }; - RGBForeColor(&blue); - PaintRect(&rdone); - EraseRect(&rneed); + + int progress_width = (int)((bar_width - 2) * _install_progress); + if (progress_width != 0) { + int progress = bar_x + 1 + progress_width; + Rect rneed = { bar_y + 1, progress, bar_y + bar_height - 1, bar_x + bar_width - 1 }; + Rect rdone = { bar_y + 1, bar_x + 1, bar_y + bar_height - 1, progress }; + RGBColor blue = { 27756, 42405, 57568 }; + RGBForeColor(&blue); + PaintRect(&rdone); + EraseRect(&rneed); + } RGBColor black = { 0, 0, 0 }; RGBForeColor(&black); diff --git a/direct/src/plugin/p3dPackage.cxx b/direct/src/plugin/p3dPackage.cxx index bc58323bdf..89d686cb2a 100755 --- a/direct/src/plugin/p3dPackage.cxx +++ b/direct/src/plugin/p3dPackage.cxx @@ -46,7 +46,7 @@ P3DPackage(P3DHost *host, const string &package_name, _package_dir = _host->get_host_dir() + string("/") + _package_name; if (!_package_version.empty()) { - _package_fullname += string("_") + _package_version; + _package_fullname += string(".") + _package_version; _package_dir += string("/") + _package_version; } @@ -275,6 +275,9 @@ download_desc_file() { // locally. Adjust desc_file to point to the local file. string url_filename = desc_file.get_filename(); + _desc_file_url = _host->get_host_url_prefix(); + _desc_file_url += url_filename; + _desc_file_basename = url_filename; size_t slash = _desc_file_basename.rfind('/'); if (slash != string::npos) { @@ -302,10 +305,7 @@ download_desc_file() { } // The desc file is not current. Go download it. - string url = _host->get_host_url_prefix(); - url += url_filename; - - start_download(DT_desc_file, url, _desc_file_pathname, false); + start_download(DT_desc_file, _desc_file_url, _desc_file_pathname, false); } //////////////////////////////////////////////////////////////////// @@ -466,13 +466,14 @@ begin_data_download() { //////////////////////////////////////////////////////////////////// void P3DPackage:: download_compressed_archive(bool allow_partial) { - string url = _host->get_host_url_prefix(); - url += _package_name; - if (!_package_platform.empty()) { - url += "/" + _package_platform; + string url = _desc_file_url; + size_t slash = url.rfind('/'); + if (slash != string::npos) { + url = url.substr(0, slash + 1); } - url += "/" + _package_version; - url += "/" + _compressed_archive.get_filename(); + url += _compressed_archive.get_filename(); + cerr << "_desc_file_url = " << _desc_file_url << ", url = " << url + << "\n"; string target_pathname = _package_dir + "/" + _compressed_archive.get_filename(); diff --git a/direct/src/plugin/p3dPackage.h b/direct/src/plugin/p3dPackage.h index 1ee914950e..cda44c4656 100755 --- a/direct/src/plugin/p3dPackage.h +++ b/direct/src/plugin/p3dPackage.h @@ -121,6 +121,7 @@ private: P3DTemporaryFile *_temp_contents_file; + string _desc_file_url; string _desc_file_basename; string _desc_file_pathname;