From Fedora Project Wiki

(Add Category)
m (Change from .txt to .rst)
(19 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= Package Database - SOP =
{{header|infra}}
{{shortcut|ISOP:PKGDB}}


== Contact Information ==
{{admon/important|This SOP has moved to the fedora Infrastructure SOP git repo. Please see the current document at: [http://infrastructure.fedoraproject.org/infra/docs/packagedatabase.rst Package Database] For changes, questions or comments, please contact anyone in the Fedora Infrastructure team. }}
Owner: Fedora Infrastructure Team


Contact: #fedora-admin


Persons: abadger1999


Location: Phoenix
Servers: admin.fedoraproject.org -- app3 app4
Purpose: Manage package ownership
== Description ==
The PackageDB is used by Fedora developers to manage package ownership and acls.  It controls who is allowed to commit to a package and who gets notification of changes to packages.
PackageDB project Trac: https://fedorahosted.org/packagedb/
== Troubleshooting and Resolution ==
=== Adding a new Pseudo User as a package owner ===
Sometimes you want to have a mailing list own a package so that bugzilla email is assigned to the mailing list.  Doing this requires adding a new pseudo user to the account system and assigning that person as the package maintainer.
{{Admon/tip | In the following examples, replace ("xen", "kernel-xen-2.6") with the packages you are assigning to the new user and 9902 to the userid you select in step 2}}
* Log into a box that can access db2.
* Log into the db as a user that can make changes
<pre>
$ psql -U apache -h db2 fedorausers
fedorausers>
</pre>
* Find the current pseudo-users
<pre>
fedorausers>  select id, username from person where id < 10000 order by id;
id  |    username
------+------------------
9900 | orphan
9901 | anaconda-maint
</pre>
* Create a new account with the next available id after 9900
<pre>
fedorausers> insert into person (id, username, email, human_name, password, creation,
approval_status, otrs_orgid) values (9902, 'xen-maint', 'xen-maint@redhat.com',
'Xen Maintainers', '', now(), 'approved', 'Fedora');
</pre>
* Connect to the pkgdb as a user that can make changes
<pre>
$ psql -U pkgdbadmin -h db2 pkgdb
pkgdb>
</pre>
* Add the current package owner as a comaintainer of the package.  If this user is not currently on he acls for the package you can use the following database queries:
<pre>
insert into personpackagelisting (userid, packagelistingid)
select pl.owner, pl.id from packagelisting as pl, package as p
where p.id = pl.packageid and p.name in ('xen', 'kernel-xen-2.6');
insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
select ppl.id, 'build', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
where p.id = pl.packageid and pl.id = ppl.packagelistingid and pl.owner = ppl.userid
and p.name in ('xen', 'kernel-xen-2.6');
insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
select ppl.id, 'commit', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
where p.id = pl.packageid and pl.id = ppl.packagelistingid
and pl.owner = ppl.userid
and p.name in ('xen', 'kernel-xen-2.6');
insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
select ppl.id, 'approveacls', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
where p.id = pl.packageid and pl.id = ppl.packagelistingid
and pl.owner = ppl.userid
and p.name in ('xen', 'kernel-xen-2.6');
</pre>
If the owner is in the acls, you will need to figure out which packages already acls and only add the new acls for that one.
* Reassign the pseudo-user to be the new owner
<pre>
update packagelisting set owner = 9902 from package as p
where packagelisting.packageid = p.id and p.name in ('xen', 'kernel-xen-2.6');
</pre>
=== Renaming a package ===
On db2:
<pre>
sudo -u postgres psql pkgdb
select * from package where name = 'OLDNAME';
[Make sure only the package you want is selected]
update package set name = 'NEWNAME' where name = 'OLDNAME';
</pre>
On cvs-int:
<pre>
CVSROOT=/cvs/pkgs cvs co CVSROOT
sed -i 's/OLDNAME/NEWNAME/g' CVSROOT/modules
cvs commit -m 'Rename OLDNAME => NEWNAME'
cd /cvs/pkgs/rpms
mv OLDNAME NEWNAME
cd NEWNAME
find . -name 'Makefile,v' -exec sed -i 's/NAME := OLDNAME/NAME := NEWNAME/' \{\} \;
cd ../../devel
rm OLDNAME
ln -s ../rpms/NEWNAME .
</pre>


[[Category:Infrastructure SOPs]]
[[Category:Infrastructure SOPs]]

Revision as of 18:58, 20 July 2015

Shortcut:
ISOP:PKGDB
Important.png
This SOP has moved to the fedora Infrastructure SOP git repo. Please see the current document at: Package Database For changes, questions or comments, please contact anyone in the Fedora Infrastructure team.