GSOC Application

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

GSOC Application

Chinmaya Bhat
Hi, 
I am Chinmaya, a third-year Computer Science student at BMSIT, Bangalore. I am new to MacPorts. I can code in C and Python and am going through the Tcl tutorial on the GSOC wiki. 
I have installed MacPorts and am reading the documentation provided.

I'm interested in implementing the task "Improve fetching from version control" and I have read through the trac ticket provided with it.

However, I dont understand how to implement it. 
Where are the distfiles and work dir located? 
Do I need to edit the Portfile of every application individually to check for the latest working copy?
Also, do I need to know cvs/svn/hg/bzr ? I know git and nothing about the rest.


Thanks,
Chinmaya
IRC : chinmayasb
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: GSOC Application

Rainer Müller-4
Hello,

On 03/30/2017 04:04 PM, Chinmaya Bhat wrote:
> I am Chinmaya, a third-year Computer Science student at BMSIT, Bangalore. I am
> new to MacPorts. I can code in C and Python and am going through the Tcl
> tutorial on the GSOC wiki.
> I have installed MacPorts and am reading the documentation provided.

Thank you for your interest in MacPorts! That already seems like a good start.

> I'm interested in implementing the task "Improve fetching from version control"
> and I have read through the trac ticket <https://trac.macports.org/ticket/16373>
> provided with it.

As noted in the Trac ticket, I implemented parts of this last year during the
MacPorts meeting together with Mojca.

This can be found on the vcs-fetch branch of macports-base:
https://github.com/macports/macports-base/compare/vcs-fetch

The implementation already works for git and creates reproducible tarballs with
its internal 'git archive' command. However, nothing has yet been done for other
version control systems. I think it would be preferable that all fetch.types for
VCS work the same, therefore I did not merge it yet.

The idea is that for the fetch.types for VCS, port automatically generates a
tarball in the fetch phase. It also sets the distfiles option such that
subsequent checksum and extract phases work like for every other port. Such a
Portfile will then always require checksums. Therefore, the generated tarball
has to be reproducible, which means the process in the fetch phase will have to
always generate the exact same byte-to-byte identical tarball.

> However, I dont understand how to implement it.
> Where are the distfiles and work dir located?

Ports that use a fetch.type for a VCS do not have any explicit distfiles, but
the filename of the tarball is implicitly taken from its name and VCS
tag/revision. The work dir is created when building a port locally.

Read through the explanations of the different phases to understand how a port
is built:
https://guide.macports.org/#reference.phases

> Do I need to edit the Portfile of every application individually to check for
> the latest working copy?

The Portfiles will need additional checksums for the generated tarballs, but
everything else should still work as it is now.

> Also, do I need to know cvs/svn/hg/bzr ? I know git and nothing about the rest.

Knowledge about these tools can be acquired during the task. There is no
requirement of knowing them before starting with this. Mainly you will only have
to know about how to clone or checkout a working copy, for which the commands
are already in the base code.

As a second step in this project, we will also want to provide these generated
VCS tarballs on our mirrors. The port command should first try to fetch a
generated tarball from our mirrors before attempting to generate a tarball
locally (reducing dependencies, avoiding firewalls for git:// protocol, etc).

Rainer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: GSOC Application

Bradley Giesbrecht-3

Regards,
Bradley Giesbrecht (pixilla)




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

Would the buildbots upload the tarballs to the MacPorts mirrors?


Brad
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: GSOC Application

Rainer Müller-4
On 03/31/2017 12:08 AM, Bradley Giesbrecht wrote:
> Would the buildbots upload the tarballs to the MacPorts mirrors?

Yes, that is the idea. It will not even require anything special on the
buildbots, as just running the usual 'sudo port fetch' will generate this
tarball after fetching from VCS.

Rainer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: GSOC Application

Chinmaya Bhat
In reply to this post by Rainer Müller-4
Thank you for your swift response! I read through the guide and have tried to understand the task in detail. 

I've shared a draft proposal with MacPorts on the GSOC site. Please review. 

Regards,
Chinmaya

On Fri, 31 Mar 2017 at 01:02 Rainer Müller <[hidden email]> wrote:
Hello,

On 03/30/2017 04:04 PM, Chinmaya Bhat wrote:
> I am Chinmaya, a third-year Computer Science student at BMSIT, Bangalore. I am
> new to MacPorts. I can code in C and Python and am going through the Tcl
> tutorial on the GSOC wiki.
> I have installed MacPorts and am reading the documentation provided.

Thank you for your interest in MacPorts! That already seems like a good start.

> I'm interested in implementing the task "Improve fetching from version control"
> and I have read through the trac ticket <https://trac.macports.org/ticket/16373>
> provided with it.

As noted in the Trac ticket, I implemented parts of this last year during the
MacPorts meeting together with Mojca.

This can be found on the vcs-fetch branch of macports-base:
https://github.com/macports/macports-base/compare/vcs-fetch

The implementation already works for git and creates reproducible tarballs with
its internal 'git archive' command. However, nothing has yet been done for other
version control systems. I think it would be preferable that all fetch.types for
VCS work the same, therefore I did not merge it yet.

The idea is that for the fetch.types for VCS, port automatically generates a
tarball in the fetch phase. It also sets the distfiles option such that
subsequent checksum and extract phases work like for every other port. Such a
Portfile will then always require checksums. Therefore, the generated tarball
has to be reproducible, which means the process in the fetch phase will have to
always generate the exact same byte-to-byte identical tarball.

> However, I dont understand how to implement it.
> Where are the distfiles and work dir located?

Ports that use a fetch.type for a VCS do not have any explicit distfiles, but
the filename of the tarball is implicitly taken from its name and VCS
tag/revision. The work dir is created when building a port locally.

Read through the explanations of the different phases to understand how a port
is built:
https://guide.macports.org/#reference.phases

> Do I need to edit the Portfile of every application individually to check for
> the latest working copy?

The Portfiles will need additional checksums for the generated tarballs, but
everything else should still work as it is now.

> Also, do I need to know cvs/svn/hg/bzr ? I know git and nothing about the rest.

Knowledge about these tools can be acquired during the task. There is no
requirement of knowing them before starting with this. Mainly you will only have
to know about how to clone or checkout a working copy, for which the commands
are already in the base code.

As a second step in this project, we will also want to provide these generated
VCS tarballs on our mirrors. The port command should first try to fetch a
generated tarball from our mirrors before attempting to generate a tarball
locally (reducing dependencies, avoiding firewalls for git:// protocol, etc).

Rainer
Loading...