rantings about llvm-top

Hi Raid !

I used llvm-top at home and in the company and I basically I like
it. Here are some comments:

- the README.txt says that all routines use a common library
  and therefore accept a common set of arguments. But this
  is confusing, because things like VERBOSE look like an
  environment variable.

  Somehow people are used that arguments are always starting
  with - and that they are usually lowercase, e.g.
  "--verbose=2".

- you don't mention the "option" script. I actually did
  ./option first, then hand-edited the resulting .options
  file. I think is way easier then specifying the same
  PREFIX=blah all the time to ./build.

- it's VERBOSE, not VEROBSE (a typo in the README.txt).

- llvm-top can't build cfe. Maybe the BuildCmd would
  be something like

  "cd llvm/tools; ln -s ../../cfe; make". Then it should
  be able to build cfe?

- many directories are not svn:ignore'd in llvm-top, e.g.
  cfe, llvm-gcc-4.0, llvm. "svn st" shows you which one.

Other than that, I like it. :slight_smile:

Hi Holger,

Hi Raid !

I used llvm-top at home and in the company and I basically I like
it.

Thanks for trying it out! :slight_smile:

Here are some comments:

- the README.txt says that all routines use a common library
  and therefore accept a common set of arguments. But this
  is confusing, because things like VERBOSE look like an
  environment variable.

  Somehow people are used that arguments are always starting
  with - and that they are usually lowercase, e.g.
  "--verbose=2".

- you don't mention the "option" script. I actually did
  ./option first, then hand-edited the resulting .options
  file. I think is way easier then specifying the same
  PREFIX=blah all the time to ./build.

Yes, the intent of the option script was to make using the other scripts
easier so the arguments don't have to be specified each time. Its
basically a "set it and forget it" strategy. Looks like I didn't update
the README.txt to include this. The original idea was to use NAME=value
arguments for controlling various llvm-top features while things like -
and -- arguments got passed down to the build/install scripts. But,
perhaps that's just silly.

Do you think it would be better to locate all the llvm-top options stuff
only in the options script (using --verbose=n and --debug and etc) and
then all options to the other scripts are passed down?

- it's VERBOSE, not VEROBSE (a typo in the README.txt).

Thanks, will fix.

- llvm-top can't build cfe. Maybe the BuildCmd would
  be something like

  "cd llvm/tools; ln -s ../../cfe; make". Then it should
  be able to build cfe?

That's an issue for the cfe developer's. Its completely orthogonal to
llvm-top which will just execute whatever they have there. Also, your
suggestion won't work because its not possible to put a group of
commands on BuildCmd line, just one command. So they may need to develop
their own build script like the other modules. I'm not involved with
cfe so perhaps one of those guys will read this and do something about
it. If not, bug them directly :slight_smile:

- many directories are not svn:ignore'd in llvm-top, e.g.
  cfe, llvm-gcc-4.0, llvm. "svn st" shows you which one.

Yeah, again, that's a module maintainer's issue. I can't be cleaning up
after everyone. People are just going to have to learn how to use
subversion properly. I try to fix things where I find them, but there's
just too much going on to be thorough.

Other than that, I like it. :slight_smile:

Great. If you have any other suggestions, please let me know. The
llvm-top stuff is not "official" yet as we're trying to iron out these
kinds of wrinkles first. Eventually it will be the recommended way to
obtain and build llvm software.

Thanks,

Reid.

> - many directories are not svn:ignore'd in llvm-top, e.g.
> cfe, llvm-gcc-4.0, llvm. "svn st" shows you which one.

Yeah, again, that's a module maintainer's issue. I can't be
cleaning up after everyone. People are just going to have to
learn how to use subversion properly. I try to fix things
where I find them, but there's just too much going on to be
thorough.

Not quite. llvm-top itself does creates several directory, e.g.
by virtue of the "svn co" commands it executes. Those commands
are executed by llvm-top, not by the sub-projects llvm-top
understands. Here's an example:

$ svn info
Path: .
URL: http://llvm.org/svn/llvm-project/llvm-top/trunk
Repository Root: http://llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 41115
Node Kind: directory
Schedule: normal
Last Changed Author: reid
Last Changed Rev: 41042
Last Changed Date: 2007-08-13 08:37:41 +0200 (Mon, 13 Aug 2007)

$ svn st
? build.llvm-gcc-4.0
? llvm-gcc-4.0
? dist
? llvm

As you can see, four entities are marked as unknown by
Subversion. As it happens, all of these entities are
directories.

llvm-top created three of them: two while checking out code, one
while compiling. So this directories, being llvm-top's own
directories, should me marked as svn:ignore.

However, llvm-top couldn't know about the "dist" *) directory, so
that is ok.

*) I'm using a "dist" directory for PREFIX and not the
default "installed" directory, because in the "dist"-directory
case I can enter this dir via tab-completion in one go. In
the "installed"-directory case, the tab stops prematurely
because of the "install" script and I need to type 2 more
characters to achive the same effect :slight_smile:

Holger,

> > - many directories are not svn:ignore'd in llvm-top, e.g.
> > cfe, llvm-gcc-4.0, llvm. "svn st" shows you which one.
>
> Yeah, again, that's a module maintainer's issue. I can't be
> cleaning up after everyone. People are just going to have to
> learn how to use subversion properly. I try to fix things
> where I find them, but there's just too much going on to be
> thorough.

Not quite. llvm-top itself does creates several directory, e.g.
by virtue of the "svn co" commands it executes. Those commands
are executed by llvm-top, not by the sub-projects llvm-top
understands. Here's an example:

$ svn info
Path: .
URL: http://llvm.org/svn/llvm-project/llvm-top/trunk
Repository Root: http://llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 41115
Node Kind: directory
Schedule: normal
Last Changed Author: reid
Last Changed Rev: 41042
Last Changed Date: 2007-08-13 08:37:41 +0200 (Mon, 13 Aug 2007)

$ svn st
? build.llvm-gcc-4.0
? llvm-gcc-4.0
? dist
? llvm

As you can see, four entities are marked as unknown by
Subversion. As it happens, all of these entities are
directories.

These ones I took care of already with revision 41122. I thought you
were asking about the svn:ignore at lower levels.

llvm-top created three of them: two while checking out code, one
while compiling. So this directories, being llvm-top's own
directories, should me marked as svn:ignore.

However, llvm-top couldn't know about the "dist" *) directory, so
that is ok.

*) I'm using a "dist" directory for PREFIX and not the
default "installed" directory, because in the "dist"-directory
case I can enter this dir via tab-completion in one go. In
the "installed"-directory case, the tab stops prematurely
because of the "install" script and I need to type 2 more
characters to achive the same effect :slight_smile:

Hmm. I'll consider changing the default. Thanks for the idea.

Reid.