315 lines
11 KiB
Text
315 lines
11 KiB
Text
|
|
#set _PASSTHROUGH = ['rpmID', 'fileOrder', 'fileStart', 'buildrootOrder', 'buildrootStart']
|
|
|
|
#include "includes/header2.chtml"
|
|
#set epoch = (rpm.epoch|string + ':' if rpm.epoch != None else '')
|
|
<h4>Information for RPM <a href="rpminfo?rpmID={{ rpm.id }}">{{ rpm.name }}-{{ epoch }}{{ rpm.version }}-{{ rpm.release }}.{{rpm.arch}}.rpm</a></h4>
|
|
|
|
<table>
|
|
<tr>
|
|
<th>ID</th><td>{{ rpm.id }}</td>
|
|
</tr>
|
|
#if build
|
|
<tr>
|
|
<th>Build</th><td><a href="buildinfo?buildID={{ build.id }}">{{ koji.buildLabel(build) }}</a></td>
|
|
</tr>
|
|
#endif
|
|
<tr>
|
|
#if build
|
|
<th>Name</th><td><a href="packageinfo?packageID={{ build.package_id }}">{{ rpm.name }}</a></td>
|
|
#else
|
|
<th>Name</th><td>{{ rpm.name }}</td>
|
|
#endif
|
|
</tr>
|
|
<tr>
|
|
#if build
|
|
<th>Version</th><td><a href="buildinfo?buildID={{ build.id }}">{{ rpm.version }}</a></td>
|
|
#else
|
|
<th>Version</th><td>{{ rpm.version }}</td>
|
|
#endif
|
|
</tr>
|
|
<tr>
|
|
<th>Release</th><td>{{ rpm.release }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Epoch</th><td>{{ rpm.epoch }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Arch</th><td>{{ rpm.arch }}</td>
|
|
</tr>
|
|
<tr>
|
|
#if rpm.draft
|
|
<th>Draft</th><td>True</td>
|
|
#else
|
|
<th>Draft</th><td>False</td>
|
|
#endif
|
|
#if rpm.external_repo_id == 0
|
|
<tr>
|
|
<th>Summary</th><td class="rpmheader">{{ summary }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Description</th><td class="rpmheader">{{ description }}</td>
|
|
</tr>
|
|
#endif
|
|
<tr>
|
|
<th>Build Time</th><td>{{ time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(rpm.buildtime)) }} GMT</td>
|
|
</tr>
|
|
#if build and build.state == koji.BUILD_STATES.DELETED
|
|
<tr>
|
|
<th>State</th><td class="deleted">deleted</td>
|
|
</tr>
|
|
#endif
|
|
#if rpm.external_repo_id
|
|
<tr>
|
|
<th>External Repository</th><td><a href="externalrepoinfo?extrepoID={{ rpm.external_repo_id }}">{{ rpm.external_repo_name }}</a></td>
|
|
</tr>
|
|
#endif
|
|
<tr>
|
|
<th>Size</th><td><span title="{{ util.formatThousands(rpm.size) }}">{{ util.formatNatural(rpm.size) }}</span></td>
|
|
</tr>
|
|
<tr>
|
|
<th><label title="The MD5 digest of the combined header and payload contents. You can query it by `rpmkeys -Kv foo.rpm`">SIGMD5</label></th><td>{{ rpm.payloadhash }}</td>
|
|
</tr>
|
|
#if rpm.external_repo_id == 0
|
|
<tr>
|
|
<th>License</th><td>{{ license }}</td>
|
|
</tr>
|
|
#if vcs
|
|
<tr>
|
|
<th><label title="Package source code VCS location">VCS</label></th><td>{{ util.formatLink(vcs) }}</td>
|
|
</tr>
|
|
#endif
|
|
#if disturl
|
|
<tr>
|
|
<th>DistURL</th><td>{{ util.formatLink(disturl) }}</td>
|
|
</tr>
|
|
#endif
|
|
#endif
|
|
#if builtInRoot
|
|
<tr>
|
|
<th>Buildroot</th><td><a href="buildrootinfo?buildrootID={{ builtInRoot.id }}">{{ util.brLabel(builtInRoot) }}</a></td>
|
|
</tr>
|
|
#endif
|
|
#if rpm.get('extra')
|
|
<tr>
|
|
<th>Extra</th><td class="usertext">{{ pformat(rpm.extra) }}</td>
|
|
</tr>
|
|
#endif
|
|
#if rpm.external_repo_id == 0
|
|
<tr>
|
|
<th>Provides</th>
|
|
<td class="container">
|
|
#if (provides |length) > 0
|
|
<table class="nested">
|
|
#for dep in provides
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Provides
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Obsoletes</th>
|
|
<td class="container">
|
|
#if (obsoletes |length) > 0
|
|
<table class="nested">
|
|
#for dep in obsoletes
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Obsoletes
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Conflicts</th>
|
|
<td class="container">
|
|
#if (conflicts |length) > 0
|
|
<table class="nested">
|
|
#for dep in conflicts
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Conflicts
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Requires</th>
|
|
<td class="container">
|
|
#if (requires |length) > 0
|
|
<table class="nested">
|
|
#for dep in requires
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Requires
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Recommends</th>
|
|
<td class="container">
|
|
#if (recommends |length) > 0
|
|
<table class="nested">
|
|
#for dep in recommends
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Recommends
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Suggests</th>
|
|
<td class="container">
|
|
#if (suggests |length) > 0
|
|
<table class="nested">
|
|
#for dep in suggests
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Suggests
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Supplements</th>
|
|
<td class="container">
|
|
#if (supplements |length) > 0
|
|
<table class="nested">
|
|
#for dep in supplements
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Supplements
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Enhances</th>
|
|
<td class="container">
|
|
#if (enhances |length) > 0
|
|
<table class="nested">
|
|
#for dep in enhances
|
|
<tr>
|
|
<td>{{ util.formatDep(dep.name, dep.version, dep.flags) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Enhances
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th id="filelist">Files</th>
|
|
<td class="container">
|
|
#if (files |length) > 0
|
|
<table class="nested data-list">
|
|
<tr>
|
|
<td class="paginate" colspan="2">
|
|
#if (filePages |length) > 1
|
|
<form class="pageJump" action="">
|
|
Page:
|
|
<select onchange="javascript: window.location = 'rpminfo?fileStart=' + this.value * {{ fileRange }} + '{{ util.passthrough_except('fileStart') }}#filelist';">
|
|
#for pageNum in filePages
|
|
<option value="{{ pageNum }}"{{ ' selected' if pageNum == fileCurrentPage else '' }}>{{ pageNum + 1 }}</option>
|
|
#endfor
|
|
</select>
|
|
</form>
|
|
#endif
|
|
#if fileStart > 0
|
|
<a href="rpminfo?fileStart={{ fileStart - fileRange }}{{ util.passthrough_except('fileStart') }}#filelist"><<<</a>
|
|
#endif
|
|
<strong>{{ fileStart + 1 }} through {{ fileStart + fileCount }} of {{ totalFiles }}</strong>
|
|
#if fileStart + fileCount < totalFiles
|
|
<a href="rpminfo?fileStart={{ fileStart + fileRange }}{{ util.passthrough_except('fileStart') }}#filelist">>>></a>
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr class="list-header">
|
|
<th><a href="rpminfo?fileOrder={{ util.toggleOrder('name', 'fileOrder') }}{{ util.passthrough_except('fileOrder', 'fileStart') }}#filelist">Name</a> {{ util.sortImage('name', 'fileOrder') }}</th>
|
|
<th align="right"><a href="rpminfo?fileOrder={{ util.toggleOrder('size', 'fileOrder') }}{{ util.passthrough_except('fileOrder', 'fileStart') }}#filelist">Size</a> {{ util.sortImage('size', 'fileOrder') }}</th>
|
|
</tr>
|
|
#for file in files
|
|
<tr class="{{ util.rowToggle() }}">
|
|
<td><a href="fileinfo?rpmID={{ rpm.id }}&filename={{ file.name|urlencode }}">{{ file.name }}</a></td><td align="right"><span title="{{ util.formatThousands(file.size) }}">{{ util.formatNatural(file.size) }}</span></td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Files
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
#endif
|
|
<tr>
|
|
<th id="buildrootlist">Component of</th>
|
|
<td class="container">
|
|
#if (buildroots |length) > 0
|
|
<table class="nested data-list">
|
|
<tr>
|
|
<td class="paginate" colspan="3">
|
|
#if (buildrootPages |length) > 1
|
|
<form class="pageJump" action="">
|
|
Page:
|
|
<select onchange="javascript: window.location = 'rpminfo?buildrootStart=' + this.value * {{ buildrootRange }} + '{{ util.passthrough_except('buildrootStart') }}#buildrootlist';">
|
|
#for pageNum in buildrootPages
|
|
<option value="{{ pageNum }}"{{ ' selected' if pageNum == buildrootCurrentPage else '' }}>{{ pageNum + 1 }}</option>
|
|
#endfor
|
|
</select>
|
|
</form>
|
|
#endif
|
|
#if buildrootStart > 0
|
|
<a href="rpminfo?buildrootStart={{ buildrootStart - buildrootRange }}{{ util.passthrough_except('buildrootStart') }}#buildrootlist"><<<</a>
|
|
#endif
|
|
<strong>{{ buildrootStart + 1 }} through {{ buildrootStart + buildrootCount }} of {{ totalBuildroots }}</strong>
|
|
#if buildrootStart + buildrootCount < totalBuildroots
|
|
<a href="rpminfo?buildrootStart={{ buildrootStart + buildrootRange }}{{ util.passthrough_except('buildrootStart') }}#buildrootlist">>>></a>
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
<tr class="list-header">
|
|
<th><a href="rpminfo?buildrootOrder={{ util.toggleOrder('id', 'buildrootOrder') }}{{ util.passthrough_except('buildrootOrder', 'buildrootStart') }}#buildrootlist">Buildroot</a> {{ util.sortImage('id', 'buildrootOrder') }}</th>
|
|
<th><a href="rpminfo?buildrootOrder={{ util.toggleOrder('create_event_time', 'buildrootOrder') }}{{ util.passthrough_except('buildrootOrder', 'buildrootStart') }}#buildrootlist">Created</a> {{ util.sortImage('create_event_time', 'buildrootOrder') }}</th>
|
|
<th><a href="rpminfo?buildrootOrder={{ util.toggleOrder('state', 'buildrootOrder') }}{{ util.passthrough_except('buildrootOrder', 'buildrootStart') }}#buildrootlist">State</a> {{ util.sortImage('state', 'buildrootOrder') }}</th>
|
|
</tr>
|
|
#for buildroot in buildroots
|
|
<tr class="{{ util.rowToggle() }}">
|
|
<td><a href="buildrootinfo?buildrootID={{ buildroot.id }}">{{ util.brLabel(buildroot) }}</a></td>
|
|
<td>{{ util.formatTime(buildroot.create_event_time) }}</td>
|
|
<td>{{ util.imageTag(util.brStateName(buildroot.state)) }}</td>
|
|
</tr>
|
|
#endfor
|
|
</table>
|
|
#else
|
|
No Buildroots
|
|
#endif
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
#include "includes/footer2.chtml"
|