chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Wish list


From: Aleksej Saushev
Subject: Re: [Chicken-users] Wish list
Date: Mon, 11 Feb 2013 01:05:38 +0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (berkeley-unix)

  Hello,

Mario Domenech Goulart <address@hidden> writes:

> On Sun, 10 Feb 2013 22:36:41 +0400 Aleksej Saushev <address@hidden> wrote:
>
>> I have talked to a user, and he reminded me of my past experience of
>> using Chicken in production environment around four years ago. While
>> many things improved since then, there're still some I'd like to have.
>>
>> 1. Distribute eggs by HTTP(S) and/or FTP(S).
>>
>> Today I have "chicken-install -r", but it still is a specialized client.
>> I don't quite understand what I can do if I'm in mildly hostile network
>> where automatically configured proxy requires authentication mechanism
>> chicken-install doesn't support.
>
> Most (if not all) eggs are available via HTTP(S).  For eggs hosted on
> call-cc.org, you ca use
> https://code.call-cc.org/svn/chicken-eggs/release/4/

I have just tried it. It has asked user name and password.
It seems not to allow anonymous access. This is not what I wish, I think.

> The other hosts (github, bitbucket, gitorious etc) also provide HTTP(S)
> access (including tarballs).
>
>
>> 2. Distribute eggs as source tarballs.
>>
>> In addition to (1) it would be nice if eggs were distributed as tarballs
>> rather than individual files. In addition, such tarballs could be
>> accompanied by cryptographic hash sums (individually per egg or as big
>> list for the whole repository). These tarballs could even be signed, even.
>
> Yeah, that can be a handy feature for packagers.
>
> Maybe that feature can be implemented via some henrietta-cache hook or
> something?

By the way, what I wish is more than tarball automatically generated at
each request. I want it stable, so that I could record cryptographic sums
and be sure that the archive doesn't change tomorrow without version change.
This is different from what github does (I don't know about bitbucket
and the rest).

>> 3. Label eggs with their versions.
>>
>> It is unfortunate, that chicken-install still doesn't report egg version
>> in any way. Did I overlook it? It would be nice, if eggs would follow
>> common standard (eggname-x.y.z.tar.gz containing subdirectory eggname-x.y.z).
>
> You can install specific egg versions by specifying them like this:
> <egg>:<version>.  Example
>
>    $ chicken-install sendfile:1.7.23
>
> chicken-status (installed by the chicken-core) lists eggs and versions.

I have missed it then.

I think, reworking it in a way that is more usable would be benefitial.

Basically, chicken-install, -status, -uninstall implement custom package
manager already. Why not consider merging them into single tool that
manages repository?

>> 1-3 in conjunction would help paranoid people who want to track
>> versioning information for various reasons (security, stability in field).
>> (It would also help packagers and thus the community in whole due to
>> better visibility. I hope we do agree that there're people who prefer
>> using controlled installation rather than dumping random files into $PREFIX.)
>
> I see.
>
>
>> 4. Support installation of eggs into directory other than
>> $(chicken-install -repository).
>>
>> It would be nice to be able to install eggs into private area
>> (for testing purposes, for migration purposes, just as developer
>> convenience, whatever).
>
> As far as I understand what you mean, that's already supported.  See
> http://wiki.call-cc.org/man/4/Extensions#changing-repository-location

I see the following problems with the state as of today.

1. Creating directory is unnecessary step.

"chicken-install -init" could do it itself. Why require user make
unnecessary steps? Note that even developers are users, they still
want tools be convenient.

2. Setting environment variable shouldn't be necessary.
It is nice if you provide it, but it would be better if it wasn't required.
And example should be described in terms like "you can set environment
variable in order to set default value overridden by another -p flag."
If the environment variable is needed in child processes, then
chicken-install can pass it.

3. If anything goes wrong, it should be reported to user.
I have tried "chicken-install -init" and "chicken-install -p".
I ended with this:

-------------------------------8<-------------------------------
mkdir: /tmp/eggs: Not a directory

Error: shell command failed with nonzero exit status 256:

  mkdir -p /tmp/eggs/lib/chicken/6


Error: shell command terminated with nonzero exit code
17920
"/usr/pkg/bin/csi -bnq -setup-mode -e \"(require-library setup-api)\" -e 
\"(impo...
-------------------------------8<-------------------------------

I think that this is caused by "-init" not creating directory.
I agree, that I haven't read documentation hard enough, but this could
be avoided by adding few lines of code.

By the way, when I do create the directory, I end with the following:

-------------------------------8<-------------------------------
  /usr/pkg/bin/csc -feature compiling-extension -setup-mode    -s -O2 -d2 
foreigners.scm -j renaming -j foreigners

Warning: extension `matchable' is currently not installed

Syntax error (import): cannot import from undefined module

        matchable

        Expansion history:

        <syntax>          (if (pair? name) (car name) name)
        <syntax>          (##core#if (pair? name) (car name) name)
        <syntax>          (pair? name)
        <syntax>          (car name)
        <syntax>          (cadr f)
        <syntax>          (cddr f)
        <syntax>          (##core#undefined)
        <syntax>          (require-library matchable)
        <syntax>          (##core#require-extension (matchable) #f)
        <syntax>          (##core#begin (##core#begin (##sys#require (quote 
matchable))) (##core#undefined))
        <syntax>          (##core#begin (##sys#require (quote matchable)))
        <syntax>          (##sys#require (quote matchable))
        <syntax>          (quote matchable)
        <syntax>          (##core#quote matchable)
        <syntax>          (##core#undefined)
        <syntax>          (import-for-syntax matchable) <--

Error: shell command terminated with non-zero exit status 17920: 
/usr/pkg/bin/chicken foreigners.scm -output-file foreigners.c -dynamic -feature 
chicken-compile-shared -feature compiling-extension -setup-mode -optimize-level 
2 -debug-level 2 -emit-import-library renaming -emit-import-library foreigners

Error: shell command failed with nonzero exit status 256:

  /usr/pkg/bin/csc -feature compiling-extension -setup-mode    -s -O2 -d2 
foreigners.scm -j renaming -j foreigners


Error: shell command terminated with nonzero exit code
17920
"/usr/pkg/bin/csi -bnq -setup-mode -e \"(require-library setup-api)\" -e 
\"(impo...
-------------------------------8<-------------------------------

I ran these commands:

cd /tmp
mkdir /tmp/eggs
chicken-install -init /tmp/eggs
chicken-install -p /tmp/eggs socket

Setting CHICKEN_REPOSITORY=/tmp/eggs doesn't change it.


4. Avoid misleading help, it doesn't help much.

"chicken-install -?" reports this:

  -p   -prefix PREFIX           change installation prefix to PREFIX

But from the documentation reference you gave me it follows that
"-p" sets "eggs repository" (or "eggs directory") rather. Only with some
intuition (augmented by ktrace(8)) it is possible to "guess" the real
meaning.


-- 
HE CE3OH...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]