User Tools

Site Tools


infrastructure:distfiles

This is an old revision of the document!


Distfiles

PLD distfiles handles storing external sources in distfiles.

The files are stored under /distfiles/by-md5/X/Y/HASH/FILENAME, for example: /distfiles/by-md5/8/1/81348932d5da294953e15d4814c74dd1/bash-4.3.tar.gz. files in distfiles itself are accessible by http and ftp protocols.

Using sources file

Besides indicating with # SourceX-md5 that source should be stored in distfiles, a combination of distfiles handler and builder macros, allow to use sources file.

sources file format: MD5-HASH *FILENAME, the asterisk is ignored. for example:

sources
bf8d53d227829d67235927689a03cc7a  bash43-004
c0c00935c8b8ffff76e8ab77e7be7d15 *bash43-005

Manually forcing distfiles fetch

use make-request -df paramter:

$ ./make-request.sh -n bash:master -df
Distfiles Request: bash:master via /usr/sbin/sendmail

Dropin

  • Uploading to dropin can be done using scp to either dropin@dropin.pld-linux.org or distfiles@dropin.pld-linux.org.
    • SSH keys are copied from the git@ authorized_keys to the dropin@ authorized_keys using a gitolite hook (~git/.gitolite/hooks/gitolite-admin/post-update.secondary), therefore it has to be writable by git user.
  • Openssh is configured to chroot both accounts into /var/lib/dropin and then run rssh which is configured to only allow scp transfers.
    • There's a minimal env in /var/lib/dropin that contains rssh and scp.
  • Uploaded files end up in /var/lib/dropin/dropin.
    • Stale files get deleted after 30 days by tmpwatch.
  • The scripts responsible for sending the files from dropin to distfiles (and then deleting them from dropin) are in ~dfadm/distfiles.
    • run-ff.sh is run from dfadm's crontab every minute.
    • chmodd.sh is a simple inotifywait-based script that always runs in the background (started from rc.local on system boot) and does a proper chmod on all uploaded files.
infrastructure/distfiles.1396985704.txt.gz · Last modified: 2014-04-08 21:35 by glen