Changeset - 21c31a64b0b3
[Not reviewed]
default
0 3 0
ethanzonca - 16 years ago 2009-07-05 20:00:55

Merge with previous commit, document FIXIT's in todo for matt mostly, fixed some minor errors. Let me know if the merge went foul.
3 files changed with 54 insertions and 41 deletions:
0 comments (0 inline, 0 general)
INSTALL
Show inline comments
 
Installation Instructions
 
*************************
 

	
 
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
 
2006, 2007, 2008 Free Software Foundation, Inc.
 
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 

	
 
   This file is free documentation; the Free Software Foundation gives
 
unlimited permission to copy, distribute and modify it.
 

	
 
Basic Installation
 
==================
 
@@ -156,13 +156,13 @@ Particular systems
 
==================
 

	
 
   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
 
CC is not installed, it is recommended to use the following options in
 
order to use an ANSI C compiler:
 

	
 
     ./configure CC="cc -Ae"
 
     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
 

	
 
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
 

	
 
   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
 
parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
 
a workaround.  If GNU CC is not installed, it is therefore recommended
 
@@ -171,12 +171,22 @@ to try
 
     ./configure CC="cc"
 

	
 
and if that doesn't work, try
 

	
 
     ./configure CC="cc -nodtk"
 

	
 
   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
 
directory contains several dysfunctional programs; working variants of
 
these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
 
in your `PATH', put it _after_ `/usr/bin'.
 

	
 
   On Haiku, software installed for all users goes in `/boot/common',
 
not `/usr/local'.  It is recommended to use the following options:
 

	
 
     ./configure --prefix=/boot/common
 

	
 
Specifying the System Type
 
==========================
 

	
 
   There may be some features `configure' cannot figure out
 
automatically, but needs to determine by the type of machine the package
 
will run on.  Usually, assuming the package is built to be run on the
 
@@ -186,13 +196,14 @@ a message saying it cannot guess the mac
 
type, such as `sun4', or a canonical name which has the form:
 

	
 
     CPU-COMPANY-SYSTEM
 

	
 
where SYSTEM can have one of these forms:
 

	
 
     OS KERNEL-OS
 
     OS
 
     KERNEL-OS
 

	
 
   See the file `config.sub' for the possible values of each field.  If
 
`config.sub' isn't included in this package, then this package doesn't
 
need to know the machine type.
 

	
 
   If you are _building_ compiler tools for cross-compiling, you should
TODO
Show inline comments
 
Distrend.c FIXIT's, mostly for matt:
 

	
 
1. Struct issues in frameset[frame_count]: frame_count isn't in scope, and defining obviously won't work. This is pretty crucial to the whole thing functioning. fixme!
 
2. In the frame_finder, ya can't declare variables in for() loops. Unless we're in C99 mode. Which we arent.
 
	Also, sframe, eframe, x, and frame_status are undeclared in the function. Or, rather, they aren't in the scope of the function. Make 'em args?
 
3. status_report_generator has conflicting types.
 

	
 
1. Create a CLI interface for distren
 
	X command: distren
 
	X args: -i infile.tar.bz2 -o outfile.tar.bz2 
 
	action: submits and blocks and retreives result of rendering the contents of infile.tar.bz2. Should currently just call stub functions.
 
	
 
2. Design of stubs in distren library:
src/server/distrend.c
Show inline comments
 
@@ -88,12 +88,41 @@ struct {
 

	
 

	
 

	
 
int main(int argc, char *argv[])
 
{
 

	
 
// I'm assuming this is a non-working framework :)
 
	int distrend_do_config(int argc, char *argv[], struct distrend_config *config)
 
	{
 
	  cfg_opt_t myopts =
 
	    {
 
	      CFG_SEC("listen",  /* this must be imported into struct listens (which must still be declared) */
 
	    {
 
	      CFG_SIMPLE_STR("type", NULL),
 
		CFG_SIMPLE_STR("path", NULL),
 
		CFG_SIMPLE_INT("port", NULL)
 
		},
 
		      CFGF_MULTI),
 
	      CFG_END
 
	    };
 

	
 
	  config = malloc(sizeof(struct distrend_config));
 
	  options_init(argc, argv, &config->mycfg, &myopts, "server", &config->options);
 

	
 
	  return 0;
 
	}
 
	int distrend_config_free(struct distrend_config *config)
 
	{
 
	  options_free(config->options);
 
	  free(config);
 

	
 
	  return 0;
 
	}
 

	
 

	
 
/* !!!!!!! Important notes !!!!!!!!!!!!
 

	
 
So, we need a common key. Maybe. Or we need to generate a key in registeruser() and get it to the client somehow.
 
If we use a common key, then we'll need different passphrases for each user, which would be kinda crazy. How can
 
we get a key generated on the server, and transferred to the client's distrend?
 

	
 
@@ -128,39 +157,12 @@ struct distrend_config
 

	
 
  struct distrend_listen **listens; /*< Null terminated array of structs */
 

	
 
}
 

	
 

	
 
int distrend_do_config(int argc, char *argv[], struct distrend_config *config)
 
{
 
  cfg_opt_t myopts =
 
    {
 
      CFG_SEC("listen",  /* this must be imported into struct listens (which must still be declared) */
 
    {
 
      CFG_SIMPLE_STR("type", NULL),
 
	CFG_SIMPLE_STR("path", NULL),
 
	CFG_SIMPLE_INT("port", NULL)
 
	},
 
	      CFGF_MULTI),
 
      CFG_END
 
    };
 

	
 
  config = malloc(sizeof(struct distrend_config));
 
  options_init(argc, argv, &config->mycfg, &myopts, "server", &config->options);
 

	
 
  return 0;
 
}
 
int distrend_config_free(struct distrend_config *config)
 
{
 
  options_free(config->options);
 
  free(config);
 

	
 
  return 0;
 
}
 

	
 

	
 
// Registration on server. Needs attention. (e.g., people could make tons of accounts with the key we give them...
 
// Set up distrend -c username email@example.com
 
// We must prevent multi-user-creation abuse, too.
 
void registeruser(char *username, char *email){
 
  // Logs into sandboxed user on zserver2 and registers a user. Should eventually generate a key on the server and return it to the user.
 
@@ -207,32 +209,25 @@ void registeruser(char *username, char *
 

	
 

	
 

	
 

	
 

	
 
void loginuser(char *username, int secret){
 
  // Logs into sandboxed user on zserver2 and registers a user
 
  // Logs into sandboxed user on zserver2 as a client, but really does nothing now.
 
  char buf[10];
 
  struct execio *testrem;
 
  char *execargv[] =
 
    {
 
  "ssh",
 
  "distren_setup@protofusion.org",
 
  "-i",
 
  "setup.rsa", // We gotta figure out how we're going to do the whole keys thing... maybe grab this key via http? But have a secret password compiled in distren to prevent fraud?
 
  "-p",
 
  "23",
 
  "sudo /usr/sbin/useradd",
 
  "-M",
 
  "-c",
 
  email,
 
  "-d",
 
  "/home/distren",
 
  "--gid",
 
  "541",
 
  username,
 
  "echo",
 
  "hello",
 
  (char *)NULL
 
  };
 
  size_t readlen;
 
  fprintf(stderr, "Opening stream:\n", execio_open(&testrem, "ssh", execargv));
 
  buf[9] = '\0'; // null-terminating the array...
 
  while(!execio_read(testrem, buf, 9, &readlen)) // What's with the readlen stuff?
 
@@ -285,13 +280,13 @@ void frame_num_struct_builder(int sframe
 

	
 
	highest_jobnum++;
 
}
 

	
 
// matches your computer up with a lovely frame to render
 
int frame_finder(){
 
	int your_frame = null;  // your_frame is an interger value that will be given to the client as the frame number to render
 
	int your_frame = NULL;  // your_frame is an interger value that will be given to the client as the frame number to render
 
	int finder_jobnum = 0;
 
	int frameset_count = 0; // the frameset number, because frames in an animation don't start at zero
 
	short int done = 0;
 

	
 
	for(int priority = 10; priority >= 1; priority--){ // start the scan for the next job with the highest priority
 
		finder_jobnum = hcfjob + 1; // reset it to start scanning at first uncompleted job for the pass at each priority level
0 comments (0 inline, 0 general)