[haiku-commits] haiku: hrev54312 - src/kits/package

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 9 Jun 2020 20:20:24 -0400 (EDT)

hrev54312 adds 1 changeset to branch 'master'
old head: 16ad15142c48ee36cd6a807a24efc99c88d4310d
new head: 9ab0dec5452f892a07ca7daf5f889dda24d9da9a
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=9ab0dec5452f+%5E16ad15142c48

----------------------------------------------------------------------------

9ab0dec5452f: Revert "PackageKit: HPKR BMessage Format Fix"
  
  This reverts commit 82f985c036aaae979bd6f5a6b1a29bed03fa3fa0.
  
  Reason for revert: Broke the build with this message:
  /packages/groff-1.22.3-1-x86_64.hpkg: Scheme missing.
  
  Change-Id: I9dea4986238cedfdc33c84739e69a331add09cdf
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2896
  Reviewed-by: waddlesplash <waddlesplash@xxxxxxxxx>

                                   [ waddlesplash <waddlesplash@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev54312
Commit:      9ab0dec5452f892a07ca7daf5f889dda24d9da9a
URL:         https://git.haiku-os.org/haiku/commit/?id=9ab0dec5452f
Author:      waddlesplash <waddlesplash@xxxxxxxxx>
Date:        Wed Jun 10 00:20:10 2020 UTC

----------------------------------------------------------------------------

1 file changed, 23 insertions(+), 23 deletions(-)
src/kits/package/RepositoryInfo.cpp | 46 ++++++++++++++++-----------------

----------------------------------------------------------------------------

diff --git a/src/kits/package/RepositoryInfo.cpp 
b/src/kits/package/RepositoryInfo.cpp
index 270e466094..e43ace75ba 100644
--- a/src/kits/package/RepositoryInfo.cpp
+++ b/src/kits/package/RepositoryInfo.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2020, Haiku, Inc. All Rights Reserved.
+ * Copyright 2011-2018, Haiku, Inc. All Rights Reserved.
  * Distributed under the terms of the MIT License.
  *
  * Authors:
@@ -92,14 +92,15 @@ BRepositoryInfo::Archive(BMessage* data, bool deep) const
 
        if ((result = data->AddString(kNameField, fName)) != B_OK)
                return result;
-       if ((result = data->AddString(kIdentifierField, fIdentifier)) != B_OK)
-               return result;
-       // "url" is an older, deprecated key for "identifier"
+       // Field in the archive is named "url" for backward compatility reasons.
+       // We can change this when everyone has updated to a version of Haiku
+       // with support for reading the "identifier" field.
        if ((result = data->AddString(kURLField, fIdentifier)) != B_OK)
                return result;
        if ((result = data->AddString(kVendorField, fVendor)) != B_OK)
                return result;
-       if ((result = data->AddString(kSummaryField, fSummary)) != B_OK)
+       result = data->AddString(kSummaryField, fSummary);
+       if (result != B_OK)
                return result;
        if ((result = data->AddUInt8(kPriorityField, fPriority)) != B_OK)
                return result;
@@ -281,35 +282,34 @@ BRepositoryInfo::_SetTo(const BMessage* data)
        status_t result;
        if ((result = data->FindString(kNameField, &fName)) != B_OK)
                return result;
-       result = data->FindString(kIdentifierField, &fIdentifier);
-       if (result == B_NAME_NOT_FOUND) {
-               result = data->FindString(kURLField, &fIdentifier);
-                       // this is a legacy key for the identifier.
+       if ((result = data->FindString(kIdentifierField, &fIdentifier)) != 
B_OK) {
+               // Handle the "url" field as well (it is still the one we 
generate).
+               // Later on when everyone is using this code we can switch the 
writing
+               // side to use the "identifier" field with its correct name.
+               if ((result = data->FindString(kURLField, &fIdentifier)) != 
B_OK)
+                       return result;
        }
-       if (result != B_OK)
-               return result;
        if ((result = data->FindString(kVendorField, &fVendor)) != B_OK)
                return result;
        if ((result = data->FindString(kSummaryField, &fSummary)) != B_OK)
                return result;
        if ((result = data->FindUInt8(kPriorityField, &fPriority)) != B_OK)
                return result;
-       if ((result = data->FindUInt8(
-                       kArchitectureField, (uint8*)&fArchitecture)) != B_OK) {
+       result = data->FindUInt8(kArchitectureField, (uint8*)&fArchitecture);
+       if (result != B_OK)
                return result;
-       }
        if (fArchitecture == B_PACKAGE_ARCHITECTURE_ANY)
                return B_BAD_DATA;
 
-       // this field is optional because earlier versions did not support this
-       // field.
-       status_t baseUrlResult = data->FindString(kBaseURLField, &fBaseURL);
-       switch (baseUrlResult) {
-               case B_OK:
-               case B_NAME_NOT_FOUND:
-                       break;
-               default:
-                       return baseUrlResult;
+       // Old packages had no base-url field, the "url" field acted both as an
+       // identifier and locator for the repository.
+       data->FindString(kBaseURLField, &fBaseURL);
+       if (fBaseURL.Length() == 0) {
+               fBaseURL = fIdentifier;
+               // In that case make sure the identifier is indeed an http URL
+               // (in the new format, the protocol is not required to be http 
anymore)
+               if (!fBaseURL.StartsWith("http"))
+                       return B_BAD_DATA;
        }
 
        const char* licenseName;


Other related posts:

  • » [haiku-commits] haiku: hrev54312 - src/kits/package - waddlesplash