Re: Stow 2.0.x release requirements

Alexei Znamensky <[email protected]> Wed, 23 Nov 2011 16:22:23 -0200
Newsgroups gmane.comp.gnu.stow.devel
Message-ID <CAFK_j13XZ3B_drBLf8sW+grueaxr5C2RcaMQycRSB8BWtag+Tg@mail.gmail.com>
--f46d043be28250c76c04b26b0148
Content-Type: text/plain; charset=UTF-8

adam++ # I was planning/procrastinating/wondering about this move for a
couple of years now, but it always lagged behind some other priorities
(unfortunately it still does, but hopefully ...)

I am following your repo on github, and I hope to be able to help one of
these days...

Cheers!

On 23 November 2011 11:20, Adam Spiers <[email protected]> wrote:

> On Wed, Nov 23, 2011 at 12:02 AM, Kahlil Hodgson <[email protected]>
> wrote:
> > Hi Adam,
> >
> > On 20/11/11 22:29, Adam Spiers wrote:
> >> Good news!  I've finished split the core code off into two new
> >> modules: Stow.pm and Stow/Util.pm.  I'm quite pleased that the process
> >> of separating the frontend from the backend seems to have resulted in
> >> some nice clean code - hope you agree when you see it.
> >>
> >> Stow.pm provides a nice object-oriented interface, e.g.
> >>
> >>     my $stow = new Stow(%$options);
> >>
> >>     $stow->plan_unstow(@pkgs_to_unstow);
> >>     $stow->plan_stow  (@pkgs_to_stow);
> >>
> >>     my @conflicts = $stow->get_conflicts;
> >>     $stow->process_tasks() unless @conflicts;
> >>
> >> This enabled a *huge* reduction in the number of global variables.
> >> All the options and state (@Tasks, @Conflicts etc.) are now stored
> >> inside a Stow object instance.  This made for cleaner tests -
> >> reset_state() is now obsolete, since to reset state you simply
> >> instantiate a new Stow object.
> >
> > Very Nice :-)
> >
> >> After modifying the whole test suite to this new interface, I was able
> >> to introduce 'use strict' and 'use warnings' to all the tests, and
> >> 'make test' now passes 100% again :-)
> >
> > Excellent!
> >
> >> Latest code is available here:
> >>
> >>     https://github.com/aspiers/stow/
> >
> > Hope to get a chance to check it out soon.  A little busy with work ATM.
>
> I've made a lot more progress since the last mail.  Now I have a
> comprehensive ignore files system (including new documentation and
> tests) almost ready - just need to tweak the file syntax a bit.
>
> >> and also adding Module::Build support so that we can easily make CPAN
> >> releases.
> >
> > There be dragons.
>
> The dragons are already slain - I've done this :)
>
> > The older MakeMaker stuff may be easier.
>
> I have experience with both systems but I deliberately chose
> Module::Build because (a) it autogenerates a Build script rather than
> a Makefile and so doesn't clash with autotools, and (b) it seems to be
> a cleaner approach overall (I attended a talk by the author years ago)
> which I find pretty easy to use.
>
> >> I'm hoping that this will co-exist peacefully with the
> >> autotools-based build system, although I'm currently puzzling over how
> >> to cope with installation of the modules.  Module::Build expects them
> >> to be under lib/, but if I put this in Makefile.am:
> >>
> >>   pmdir = $(libdir)/perl5
> >>   nobase_pm_DATA = lib/Stow.pm lib/Stow/Util.pm
> >>
> >> then autotools installs them to lib/perl5/lib/Stow* which is not
> >> right :-/
> >
> > Getting the original autotools stuff to work really did my head in.  Had
> > to read a lot of documentation just to do something very simple.
> > I believe I may have forgotten almost everything I once new about the
> > autotools framework now :-(
>
> Don't worry - I already figured it all out.  I'll continue to upload
> to my github until either Troy reappears or someone can give me
> co-maintainer access.  I'm also pretty much ready to upload to CPAN
> but am not sure whether that would be good etiquette before being
> "officially" recognised as co-maintainer.
>
>


-- 
Alexei "RUSSOZ" Znamensky | russoz EM gmail com | http://russoz.org
GPG fingerprint = 42AB E78C B83A AE31 7D27  1CF3 C66F B5C7 71CA 9F3C
http://www.flickr.com/photos/alexeiz | http://github.com/russoz
"I don't know... fly casual!" -- Han Solo

--f46d043be28250c76c04b26b0148
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

adam++ # I was planning/procrastinating/wondering about this move for a cou=
ple of years now, but it always lagged behind some other priorities (unfort=
unately it still does, but hopefully ...)<div><br></div><div>I am following=
 your repo on github, and I hope to be able to help one of these days...</d=
iv>

<div><br></div><div>Cheers!<br><br><div class=3D"gmail_quote">On 23 Novembe=
r 2011 11:20, Adam Spiers <span dir=3D"ltr">&lt;<a href=3D"mailto:stow@adam=
spiers.org">[email protected]</a>&gt;</span> wrote:<br><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex;">

<div class=3D"HOEnZb"><div class=3D"h5">On Wed, Nov 23, 2011 at 12:02 AM, K=
ahlil Hodgson &lt;<a href=3D"mailto:[email protected]">[email protected]=
u</a>&gt; wrote:<br>
&gt; Hi Adam,<br>
&gt;<br>
&gt; On 20/11/11 22:29, Adam Spiers wrote:<br>
&gt;&gt; Good news! =C2=A0I&#39;ve finished split the core code off into tw=
o new<br>
&gt;&gt; modules: Stow.pm and Stow/Util.pm. =C2=A0I&#39;m quite pleased tha=
t the process<br>
&gt;&gt; of separating the frontend from the backend seems to have resulted=
 in<br>
&gt;&gt; some nice clean code - hope you agree when you see it.<br>
&gt;&gt;<br>
&gt;&gt; Stow.pm provides a nice object-oriented interface, e.g.<br>
&gt;&gt;<br>
&gt;&gt; =C2=A0 =C2=A0 my $stow =3D new Stow(%$options);<br>
&gt;&gt;<br>
&gt;&gt; =C2=A0 =C2=A0 $stow-&gt;plan_unstow(@pkgs_to_unstow);<br>
&gt;&gt; =C2=A0 =C2=A0 $stow-&gt;plan_stow =C2=A0(@pkgs_to_stow);<br>
&gt;&gt;<br>
&gt;&gt; =C2=A0 =C2=A0 my @conflicts =3D $stow-&gt;get_conflicts;<br>
&gt;&gt; =C2=A0 =C2=A0 $stow-&gt;process_tasks() unless @conflicts;<br>
&gt;&gt;<br>
&gt;&gt; This enabled a *huge* reduction in the number of global variables.=
<br>
&gt;&gt; All the options and state (@Tasks, @Conflicts etc.) are now stored=
<br>
&gt;&gt; inside a Stow object instance. =C2=A0This made for cleaner tests -=
<br>
&gt;&gt; reset_state() is now obsolete, since to reset state you simply<br>
&gt;&gt; instantiate a new Stow object.<br>
&gt;<br>
&gt; Very Nice :-)<br>
&gt;<br>
&gt;&gt; After modifying the whole test suite to this new interface, I was =
able<br>
&gt;&gt; to introduce &#39;use strict&#39; and &#39;use warnings&#39; to al=
l the tests, and<br>
&gt;&gt; &#39;make test&#39; now passes 100% again :-)<br>
&gt;<br>
&gt; Excellent!<br>
&gt;<br>
&gt;&gt; Latest code is available here:<br>
&gt;&gt;<br>
&gt;&gt; =C2=A0 =C2=A0 <a href=3D"https://github.com/aspiers/stow/" target=
=3D"_blank">https://github.com/aspiers/stow/</a><br>
&gt;<br>
&gt; Hope to get a chance to check it out soon. =C2=A0A little busy with wo=
rk ATM.<br>
<br>
</div></div>I&#39;ve made a lot more progress since the last mail. =C2=A0No=
w I have a<br>
comprehensive ignore files system (including new documentation and<br>
tests) almost ready - just need to tweak the file syntax a bit.<br>
<div class=3D"im"><br>
&gt;&gt; and also adding Module::Build support so that we can easily make C=
PAN<br>
&gt;&gt; releases.<br>
&gt;<br>
&gt; There be dragons.<br>
<br>
</div>The dragons are already slain - I&#39;ve done this :)<br>
<div class=3D"im"><br>
&gt;=C2=A0The older MakeMaker stuff may be easier.<br>
<br>
</div>I have experience with both systems but I deliberately chose<br>
Module::Build because (a) it autogenerates a Build script rather than<br>
a Makefile and so doesn&#39;t clash with autotools, and (b) it seems to be<=
br>
a cleaner approach overall (I attended a talk by the author years ago)<br>
which I find pretty easy to use.<br>
<div class=3D"im"><br>
&gt;&gt; I&#39;m hoping that this will co-exist peacefully with the<br>
&gt;&gt; autotools-based build system, although I&#39;m currently puzzling =
over how<br>
&gt;&gt; to cope with installation of the modules. =C2=A0Module::Build expe=
cts them<br>
&gt;&gt; to be under lib/, but if I put this in Makefile.am:<br>
&gt;&gt;<br>
&gt;&gt; =C2=A0 pmdir =3D $(libdir)/perl5<br>
&gt;&gt; =C2=A0 nobase_pm_DATA =3D lib/Stow.pm lib/Stow/Util.pm<br>
&gt;&gt;<br>
&gt;&gt; then autotools installs them to lib/perl5/lib/Stow* which is not<b=
r>
&gt;&gt; right :-/<br>
&gt;<br>
&gt; Getting the original autotools stuff to work really did my head in. =
=C2=A0Had<br>
&gt; to read a lot of documentation just to do something very simple.<br>
&gt; I believe I may have forgotten almost everything I once new about the<=
br>
&gt; autotools framework now :-(<br>
<br>
</div>Don&#39;t worry - I already figured it all out. =C2=A0I&#39;ll contin=
ue to upload<br>
to my github until either Troy reappears or someone can give me<br>
co-maintainer access. =C2=A0I&#39;m also pretty much ready to upload to CPA=
N<br>
but am not sure whether that would be good etiquette before being<br>
&quot;officially&quot; recognised as co-maintainer.<br>
<br>
</blockquote></div><br><br clear=3D"all"><div><br></div>-- <br>Alexei &quot=
;RUSSOZ&quot; Znamensky | russoz EM gmail com |=C2=A0<a href=3D"http://russ=
oz.org" target=3D"_blank">http://russoz.org</a><br>GPG fingerprint =3D 42AB=
 E78C B83A AE31 7D27 =C2=A01CF3 C66F B5C7 71CA 9F3C<br>

<a href=3D"http://www.flickr.com/photos/alexeiz" target=3D"_blank">http://w=
ww.flickr.com/photos/alexeiz</a>=C2=A0| <a href=3D"http://github.com/russoz=
" target=3D"_blank">http://github.com/russoz</a><br>&quot;I don&#39;t know.=
.. fly casual!&quot; -- Han Solo<br>


</div>

--f46d043be28250c76c04b26b0148--