On 2018-03-18 12:28, Zero King wrote: > On Sun, Mar 18, 2018 at 09:57:58AM +0100, Mojca Miklavec wrote: >> On 18 March 2018 at 08:33, Zero King wrote: >> I would add the patches to distfiles and include debian site in >> master_sites. You then need to keep your fingers crossed that the main >> distfile is also packaged as tar.xz because you need to manually >> extract some of the files otherwise (MacPorts does not yet support >> extracting from different types of archives). > > The main distfile is tar.gz.
The debian tarball already contains the full sources. Is there a reason to use the upstream distfile? If w3m upstream at sf.net is dead, just switch to the Debian version that still receives patches. MacPorts will always try to download files listed in patchfiles from patch_sites or master_sites if they are not already in the files/ directory next to the Portfile. For this, all entries in patchfiles are expected to be simple filenames, not full paths. Therefore Mojca's suggestion will not work. Solution 1: Download the patches using patch_sites from an URL Keep the upstream distfile, download additional patches from Debian. dist_subdir ${name}/${version} patchfiles 020_debian.patch patch_sites https://.../debian/patches/ The dist_subdir option is required as these patches are likely to change with each version. Of course you could also leave it out at first and only add it once it is required. The downside is that we are relying on sources.debian.org [1], the Debian Gitlab [2] or the GitHub mirror [3] serving these files. [1] https://sources.debian.org/src/w3m/0.5.3-36/debian/patches/ [2] https://salsa.debian.org/debian/w3m/tree/debian-stretch/debian/patches [3] https://github.com/tats/w3m Solution 2: A hack to avoid fetching patchfiles Only the tarball from Debian is used, no additional downloads. distfiles w3m_0.5.3-36.debian.tar.xz master_sites debian:w/w3m The following pre-patch phase should trick MacPorts into not fetching patches by setting the patchfiles option late, but apply them in the patch phase: pre-patch { patchfiles ${worksrcpath}/debian/patches/020_debian.patch } Solution 3: A custom post-patch phase to apply these patches Same as in solution 2, but instead of using the hack, the patches are applied manually in a custom post-patch phase. This is probably the most flexible solution. post-patch { foreach p 020_debian.patch ... { system -W ${worksrcpath} "patch -p0 debian/patches/${p}" } } Rainer