Thanks a lot! It sounds... amazingly simpler. It even supports branches! Even readding support for auto-update sounds easy, to prevent human errors by students. (It's certainly less work than I spent working around the current system). I might even integrate this in the docs.
The "hard part" is just `(git-checkout "github.com" "mflatt/uu-cs5510" #:dest-dir #f #:ref master)` to get the topmost commit hash... if I can store that locally*, I have an update check :-D, and the package system API does the rest. *With my current knowledge, I'd (ab)use preferences for doing that without writing around the system, but I'm open to better ways. Cheers, Paolo On 6 September 2015 at 23:31, Matthew Flatt <[email protected]> wrote: > An easier way is: > > * Create a Git repo (e.g., at GitHub) for your handin client. It's a > good idea to name the repo something specific to your class, as > opposed to just "handin". > > For example, the one for my class is > > https://github.com/mflatt/uu-cs5510.git > > * Optionally, register a short name for that package at > pkgs.racket-lang.org. > > For example, I have registered "uu-cs5510" to point to the above > URL. (Actually, I used the older "git://..." form, but the new form > should work fine.) > > * Install and update via the "Install Package..." menu item in > DrRacket. > > Since I've registered "uu-cs5510" as a package name at > pkgs.racket-lang.org", students just install or update the > "uu-cs5510" package. They could just as well paste the above URL > into the dialog, though. > > If I need to update the package, I can just push changes to the repo, > and students can get the new version using the same menu item in > DrRacket to update their installations. No further automation tools are > needed. > > Avoid `raco setup -A`. That approach has all the problems you describe > and more, and it's much better to just use the package system. > > At Sun, 6 Sep 2015 13:42:28 -0700 (PDT), Paolo Giarrusso wrote: > > Hi all, > > my research group is going to teach using How to Design Programs (2nd > ed.), and > > I'm currently automating deployment of the handin-client with > auto-update. > > Since the handin-client (and the auto-updater) was written for the old > "package > > management system" (Planet), I'm having some trouble — the procedure seem > > hackier than desirable, in part because I've not mastered Racket package > > management yet, in part because it's less error-tolerant than I wish. > (I'll > > admit, things will be probably fine for students, just not for me). > > > > I believe a couple of things could be bugs (especially n. 3), but I'll > just > > tell my story and let you judge. (In the end, it finally seems to be > working). > > > > Meanwhile, if there's enough interest, I could put some effort into > sharing the > > setup (beyond https://github.com/plt/handin/issues/19). > > > > 1. IIUC, since the autoupdater works with PLT files, students will have > to > > paste the plugin URL > > ( > http://ps.informatik.uni-tuebingen.de/teaching/ws15/info1/handinplugin/utue-inf > > o1-ws15.plt) into "Install .plt file". IIUC, that's equivalent to > `racket setup > > -A`, but the latter doesn't seem to accept URLs. Do I really have to > download > > the files beforehand to install them from the command line? > > > > Moreover, I haven't found a clean way to uninstall those packages from > > `(find-user-collects-dir)`. > > > > Finally, we've discovered that if the files are renamed the wrong way > after > > downloading (say, to `utue-info1-ws15 (2).plt`), installation goes wrong > — > > which seems very fragile. For students, we're giving instructions to > paste the > > URL to work this around. > > > > 2. I discovered that `raco pkg install` seemed to accept URLs to PLT > files, if > > I produce sha1 checksums (but SHA1 is deprecated?!?). That seemed > wonderful, > > but lead to unacceptable problems. > > So I could just type: > > > > $ raco pkg install $(for i in '' -local -staging; do echo > > > http://ps.informatik.uni-tuebingen.de/teaching/ws15/info1/handinplugin/utue-info > > 1-ws15$i.plt; done) > > > > and later remove everything with `raco pkg`. However, files end up in > > `(find-user-pkgs-dir)`, and that's very bad, because `raco setup -A` can > > install the same package also in `(find-user-collects-dir)` — in > particular, > > that's what happens as soon as you do an auto-update (`raco pkg` refuses > > instead to do that, after `raco setup` was run). Afterwards, DrRacket > seems to > > try loading the plugin twice, resulting in: > > > > ``` > > Error invoking tool > > > #<path:/Users/pgiarrusso/Library/Racket/6.2.1/pkgs/utue-info1-ws15/utue-info1-ws > > 15>;"client-gui.rkt" > > > > preferences:set-default: preferences default already set for > > 'handin:utue-info1-ws15:submit:username > > context...: > > > > > /Users/pgiarrusso/Library/Racket/6.2.1/pkgs/utue-info1-ws15/utue-info1-ws15/clie > > nt-gui.rkt: [running body] > > /Applications/Racket > > v6.2.1/share/pkgs/drracket/drracket/private/tools.rkt:283:4 > > loop > > /Applications/Racket > > v6.2.1/share/pkgs/drracket/drracket/private/tools.rkt:71:0: > > load/invoke-all-tools > > /Applications/Racket v6.2.1/share/pkgs/drracket/drracket/tool-lib.rkt: > > [running body] > > /Applications/Racket > > v6.2.1/share/pkgs/drracket/drracket/private/drracket-normal.rkt: > [running body] > > /Applications/Racket v6.2.1/share/pkgs/drracket/drracket/drracket.rkt: > > [running body] > > ``` > > > > 3. Earlier I was trying to automate `raco pack --collect --at-plt > ++setup` > > using setup/pack, testing the result using `raco planet structure` and > getting > > contract violations. > > Then I got the same contract violations using `raco planet structure` on > a > > valid .plt file. > > Finally, I verified that `raco planet structure` understands the result > of > > `raco planet create`, but not necessarily the result of `raco pack`. > People on > > IRC suggested mentioning this here. > > > > What do you think? > > > > Cheers, > > Paolo > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Racket Users" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email > > to [email protected]. > > For more options, visit https://groups.google.com/d/optout. > -- Paolo G. Giarrusso - Ph.D. Student, Tübingen University *http://ps.informatik.uni-tuebingen.de/team/giarrusso/ <http://ps.informatik.uni-tuebingen.de/team/giarrusso/>* -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

