aboutsummaryrefslogtreecommitdiff
path: root/brep
diff options
context:
space:
mode:
Diffstat (limited to 'brep')
-rw-r--r--brep/mod-package-version-details.cxx3
-rw-r--r--brep/package7
-rw-r--r--brep/package.cxx4
-rw-r--r--brep/package.xml1
-rw-r--r--brep/page14
-rw-r--r--brep/page.cxx11
6 files changed, 37 insertions, 3 deletions
diff --git a/brep/mod-package-version-details.cxx b/brep/mod-package-version-details.cxx
index cbf9c86..992b829 100644
--- a/brep/mod-package-version-details.cxx
+++ b/brep/mod-package-version-details.cxx
@@ -161,7 +161,7 @@ handle (request& rq, response& rs)
: P_DESCRIPTION (*d, options_->package_description (),
url (!full, id)));
- assert (pkg->location);
+ assert (pkg->location && pkg->sha256sum);
s << TABLE(CLASS="proplist", ID="version")
<< TBODY
@@ -175,6 +175,7 @@ handle (request& rq, response& rs)
<< TR_LOCATION (pkg->internal_repository.object_id (), root)
<< TR_DOWNLOAD (pkg->internal_repository.load ()->location.string () +
"/" + pkg->location->string ())
+ << TR_SHA256SUM (*pkg->sha256sum)
<< ~TBODY
<< ~TABLE
diff --git a/brep/package b/brep/package
index fa129f3..67f0e31 100644
--- a/brep/package
+++ b/brep/package
@@ -132,7 +132,7 @@ namespace brep
std::chrono::nanoseconds::period>::value,
"The following timestamp ODB mapping is invalid");
- // As it pointed out in butl/timestamp we will overflow in year 2262 but
+ // As it pointed out in butl/timestamp we will overflow in year 2262, but
// by that time some larger basic type will be available for mapping.
//
#pragma db map type(timestamp) as(uint64_t) \
@@ -470,6 +470,7 @@ namespace brep
dependencies_type,
requirements_type,
optional<path> location,
+ optional<string> sha256sum,
shared_ptr<repository_type>);
// Create external package object.
@@ -506,6 +507,10 @@ namespace brep
//
optional<path> location;
+ // Present only for internal packages.
+ //
+ optional<string> sha256sum;
+
vector<lazy_shared_ptr<repository_type>> other_repositories;
// Database mapping.
diff --git a/brep/package.cxx b/brep/package.cxx
index 1f93a56..d1bbe21 100644
--- a/brep/package.cxx
+++ b/brep/package.cxx
@@ -62,6 +62,7 @@ namespace brep
dependencies_type dp,
requirements_type rq,
optional<path> lc,
+ optional<string> sh,
shared_ptr<repository_type> rp)
: id (move (nm), vr),
version (move (vr)),
@@ -78,7 +79,8 @@ namespace brep
dependencies (move (dp)),
requirements (move (rq)),
internal_repository (move (rp)),
- location (move (lc))
+ location (move (lc)),
+ sha256sum (move (sh))
{
assert (internal_repository->internal);
}
diff --git a/brep/package.xml b/brep/package.xml
index 6abbf1d..14598a5 100644
--- a/brep/package.xml
+++ b/brep/package.xml
@@ -87,6 +87,7 @@
<column name="package_email_comment" type="TEXT" null="true"/>
<column name="internal_repository" type="TEXT" null="true"/>
<column name="location" type="TEXT" null="true"/>
+ <column name="sha256sum" type="TEXT" null="true"/>
<column name="search_index" type="tsvector" null="true"/>
<primary-key>
<column name="name"/>
diff --git a/brep/page b/brep/page
index 4f97ef8..512c11a 100644
--- a/brep/page
+++ b/brep/page
@@ -293,6 +293,20 @@ namespace brep
const string& url_;
};
+ // Generates sha256sum element.
+ //
+ class TR_SHA256SUM
+ {
+ public:
+ TR_SHA256SUM (const string& s): sha256sum_ (s) {}
+
+ void
+ operator() (xml::serializer&) const;
+
+ private:
+ const string& sha256sum_;
+ };
+
// Generates comment element.
//
class SPAN_COMMENT
diff --git a/brep/page.cxx b/brep/page.cxx
index 27e1b2a..689ee20 100644
--- a/brep/page.cxx
+++ b/brep/page.cxx
@@ -481,6 +481,17 @@ namespace brep
<< ~TR;
}
+ // TR_SHA256SUM
+ //
+ void TR_SHA256SUM::
+ operator() (serializer& s) const
+ {
+ s << TR(CLASS="sha256")
+ << TH << "sha256" << ~TH
+ << TD << SPAN(CLASS="value") << sha256sum_ << ~SPAN << ~TD
+ << ~TR;
+ }
+
// SPAN_COMMENT
//
void SPAN_COMMENT::