The contents generation as it currently stands is only done for the Ubuntu PRIMARY archive, shares a lock file with the publisher, and takes an hour or more. It needs to die horribly.
The rest of this bug report is a brain-dump of my current thought process about this.
This can be fixed iterably, by first creating a table (say, BinaryPackageContents), that contains a bpn id, das id, archive, filename. I have not given much thought to indexing this table, sadly.
The second step would be to write a garbo script that iterates over published BPRs with no expired BPRFs and adds rows to BPC. Expect run time is a week, perhaps less, since unlike PSC, we don't need to extract the source. We can grab the .deb from the librarian, run dpkg-deb -c over it, and parse the output.
The third step would be to hook into the publisher to create and delete rows from BPC when it marks a BPR as SUPERSEDED or PUBLISHED. We may also need to do some trickery in terms of deletion of binary packages.
The four step would be to write a hook script for the publisher that generates the contents file for a given archive, and turn off the cronscript for the current script.
The contents generation as it currently stands is only done for the Ubuntu PRIMARY archive, shares a lock file with the publisher, and takes an hour or more. It needs to die horribly.
The rest of this bug report is a brain-dump of my current thought process about this.
This can be fixed iterably, by first creating a table (say, BinaryPackageCo ntents) , that contains a bpn id, das id, archive, filename. I have not given much thought to indexing this table, sadly.
The second step would be to write a garbo script that iterates over published BPRs with no expired BPRFs and adds rows to BPC. Expect run time is a week, perhaps less, since unlike PSC, we don't need to extract the source. We can grab the .deb from the librarian, run dpkg-deb -c over it, and parse the output.
The third step would be to hook into the publisher to create and delete rows from BPC when it marks a BPR as SUPERSEDED or PUBLISHED. We may also need to do some trickery in terms of deletion of binary packages.
The four step would be to write a hook script for the publisher that generates the contents file for a given archive, and turn off the cronscript for the current script.