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"><<a href=3D"mailto:stow@adam= spiers.org">[email protected]</a>></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 <<a href=3D"mailto:[email protected]">[email protected]= u</a>> wrote:<br> > Hi Adam,<br> ><br> > On 20/11/11 22:29, Adam Spiers wrote:<br> >> Good news! =C2=A0I've finished split the core code off into tw= o new<br> >> modules: Stow.pm and Stow/Util.pm. =C2=A0I'm quite pleased tha= t the process<br> >> of separating the frontend from the backend seems to have resulted= in<br> >> some nice clean code - hope you agree when you see it.<br> >><br> >> Stow.pm provides a nice object-oriented interface, e.g.<br> >><br> >> =C2=A0 =C2=A0 my $stow =3D new Stow(%$options);<br> >><br> >> =C2=A0 =C2=A0 $stow->plan_unstow(@pkgs_to_unstow);<br> >> =C2=A0 =C2=A0 $stow->plan_stow =C2=A0(@pkgs_to_stow);<br> >><br> >> =C2=A0 =C2=A0 my @conflicts =3D $stow->get_conflicts;<br> >> =C2=A0 =C2=A0 $stow->process_tasks() unless @conflicts;<br> >><br> >> This enabled a *huge* reduction in the number of global variables.= <br> >> All the options and state (@Tasks, @Conflicts etc.) are now stored= <br> >> inside a Stow object instance. =C2=A0This made for cleaner tests -= <br> >> reset_state() is now obsolete, since to reset state you simply<br> >> instantiate a new Stow object.<br> ><br> > Very Nice :-)<br> ><br> >> After modifying the whole test suite to this new interface, I was = able<br> >> to introduce 'use strict' and 'use warnings' to al= l the tests, and<br> >> 'make test' now passes 100% again :-)<br> ><br> > Excellent!<br> ><br> >> Latest code is available here:<br> >><br> >> =C2=A0 =C2=A0 <a href=3D"https://github.com/aspiers/stow/" target= =3D"_blank">https://github.com/aspiers/stow/</a><br> ><br> > Hope to get a chance to check it out soon. =C2=A0A little busy with wo= rk ATM.<br> <br> </div></div>I'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> >> and also adding Module::Build support so that we can easily make C= PAN<br> >> releases.<br> ><br> > There be dragons.<br> <br> </div>The dragons are already slain - I've done this :)<br> <div class=3D"im"><br> >=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'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> >> I'm hoping that this will co-exist peacefully with the<br> >> autotools-based build system, although I'm currently puzzling = over how<br> >> to cope with installation of the modules. =C2=A0Module::Build expe= cts them<br> >> to be under lib/, but if I put this in Makefile.am:<br> >><br> >> =C2=A0 pmdir =3D $(libdir)/perl5<br> >> =C2=A0 nobase_pm_DATA =3D lib/Stow.pm lib/Stow/Util.pm<br> >><br> >> then autotools installs them to lib/perl5/lib/Stow* which is not<b= r> >> right :-/<br> ><br> > Getting the original autotools stuff to work really did my head in. = =C2=A0Had<br> > to read a lot of documentation just to do something very simple.<br> > I believe I may have forgotten almost everything I once new about the<= br> > autotools framework now :-(<br> <br> </div>Don't worry - I already figured it all out. =C2=A0I'll contin= ue to upload<br> to my github until either Troy reappears or someone can give me<br> co-maintainer access. =C2=A0I'm also pretty much ready to upload to CPA= N<br> but am not sure whether that would be good etiquette before being<br> "officially" recognised as co-maintainer.<br> <br> </blockquote></div><br><br clear=3D"all"><div><br></div>-- <br>Alexei "= ;RUSSOZ" 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>"I don't know.= .. fly casual!" -- Han Solo<br> </div> --f46d043be28250c76c04b26b0148--