Table of Contents

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

As you can see, there's no url in that file, to indicate where to fetch, You should have SourceX with same basename in your .spec:

Patch10004:     http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-004
Patch10005:     http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-005

patchset macro

Listing sources in .spec and sources file can be annoying and duplicate work.

Therefore %patchset_source macro was created.

in Preamble define %patchset_source to inject to .spec file extra SourceX definitions:

%patchset_source -f http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-%03g 1 %{patchlevel}

this would parse:

$ rpm -E '%patchset_source -f http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-%03g 1 3'
Patch10001:     http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-001
Patch10002:     http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-002
Patch10003:     http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-003 

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