<div dir="ltr">Thank you for your swift response! I read through the guide and have tried to understand the task in detail. <div><br></div><div><font color="#212121">I've shared a draft proposal with MacPorts on the GSOC site. Please review. </font></div><div><br></div><div>Regards,</div><div>Chinmaya<br class="gmail_msg"><br><div class="gmail_quote"><div dir="ltr">On Fri, 31 Mar 2017 at 01:02 Rainer Müller <<a href="mailto:raimue@macports.org">raimue@macports.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br class="gmail_msg">
<br class="gmail_msg">
On 03/30/2017 04:04 PM, Chinmaya Bhat wrote:<br class="gmail_msg">
> I am Chinmaya, a third-year Computer Science student at BMSIT, Bangalore. I am<br class="gmail_msg">
> new to MacPorts. I can code in C and Python and am going through the Tcl<br class="gmail_msg">
> tutorial on the GSOC wiki.<br class="gmail_msg">
> I have installed MacPorts and am reading the documentation provided.<br class="gmail_msg">
<br class="gmail_msg">
Thank you for your interest in MacPorts! That already seems like a good start.<br class="gmail_msg">
<br class="gmail_msg">
> I'm interested in implementing the task "Improve fetching from version control"<br class="gmail_msg">
> and I have read through the trac ticket <<a href="https://trac.macports.org/ticket/16373" rel="noreferrer" class="gmail_msg" target="_blank">https://trac.macports.org/ticket/16373</a>><br class="gmail_msg">
> provided with it.<br class="gmail_msg">
<br class="gmail_msg">
As noted in the Trac ticket, I implemented parts of this last year during the<br class="gmail_msg">
MacPorts meeting together with Mojca.<br class="gmail_msg">
<br class="gmail_msg">
This can be found on the vcs-fetch branch of macports-base:<br class="gmail_msg">
<a href="https://github.com/macports/macports-base/compare/vcs-fetch" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/macports/macports-base/compare/vcs-fetch</a><br class="gmail_msg">
<br class="gmail_msg">
The implementation already works for git and creates reproducible tarballs with<br class="gmail_msg">
its internal 'git archive' command. However, nothing has yet been done for other<br class="gmail_msg">
version control systems. I think it would be preferable that all fetch.types for<br class="gmail_msg">
VCS work the same, therefore I did not merge it yet.<br class="gmail_msg">
<br class="gmail_msg">
The idea is that for the fetch.types for VCS, port automatically generates a<br class="gmail_msg">
tarball in the fetch phase. It also sets the distfiles option such that<br class="gmail_msg">
subsequent checksum and extract phases work like for every other port. Such a<br class="gmail_msg">
Portfile will then always require checksums. Therefore, the generated tarball<br class="gmail_msg">
has to be reproducible, which means the process in the fetch phase will have to<br class="gmail_msg">
always generate the exact same byte-to-byte identical tarball.<br class="gmail_msg">
<br class="gmail_msg">
> However, I dont understand how to implement it.<br class="gmail_msg">
> Where are the distfiles and work dir located?<br class="gmail_msg">
<br class="gmail_msg">
Ports that use a fetch.type for a VCS do not have any explicit distfiles, but<br class="gmail_msg">
the filename of the tarball is implicitly taken from its name and VCS<br class="gmail_msg">
tag/revision. The work dir is created when building a port locally.<br class="gmail_msg">
<br class="gmail_msg">
Read through the explanations of the different phases to understand how a port<br class="gmail_msg">
is built:<br class="gmail_msg">
<a href="https://guide.macports.org/#reference.phases" rel="noreferrer" class="gmail_msg" target="_blank">https://guide.macports.org/#reference.phases</a><br class="gmail_msg">
<br class="gmail_msg">
> Do I need to edit the Portfile of every application individually to check for<br class="gmail_msg">
> the latest working copy?<br class="gmail_msg">
<br class="gmail_msg">
The Portfiles will need additional checksums for the generated tarballs, but<br class="gmail_msg">
everything else should still work as it is now.<br class="gmail_msg">
<br class="gmail_msg">
> Also, do I need to know cvs/svn/hg/bzr ? I know git and nothing about the rest.<br class="gmail_msg">
<br class="gmail_msg">
Knowledge about these tools can be acquired during the task. There is no<br class="gmail_msg">
requirement of knowing them before starting with this. Mainly you will only have<br class="gmail_msg">
to know about how to clone or checkout a working copy, for which the commands<br class="gmail_msg">
are already in the base code.<br class="gmail_msg">
<br class="gmail_msg">
As a second step in this project, we will also want to provide these generated<br class="gmail_msg">
VCS tarballs on our mirrors. The port command should first try to fetch a<br class="gmail_msg">
generated tarball from our mirrors before attempting to generate a tarball<br class="gmail_msg">
locally (reducing dependencies, avoiding firewalls for git:// protocol, etc).<br class="gmail_msg">
<br class="gmail_msg">
Rainer<br class="gmail_msg">
</blockquote></div></div></div>