Skip to content
Snippets Groups Projects
Select Git revision
  • 8.0
  • 9.0
  • master default protected
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • nt-tools
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
  • v8.0.1982
  • v8.0.1980
  • v8.0.1978
  • v8.0.1976
  • v8.0.1974
  • v8.0.1972
  • v8.0.1970
  • v8.0.1968
  • v8.0.1966
  • v8.0.1964
40 results

parse_install_log

Blame
  • parse_install_log 2.90 KiB
    #!/usr/local/bin/pike
    
    string basename(string s)
    {
      return (s/"/")[-1];
    }
    
    mapping install_from=([]);
    mapping fake_dirs=([]);
    
    void install(string from, string to)
    {
      if(search(from,"/CVS/")!=-1) return;
      install_from[combine_path(".",to)]=combine_path(".",from);
    }
    
    int main(int argc, string *argv)
    {
      string srcdir=argv[1];
      string prefix=argv[2];
      string *lines=Stdio.stdin->read(0x7fffffff)/"\n";
    
      foreach(lines, string line)
        {
          string *args=line/" ";
          args[0]=basename(args[0]);
          
          Getopt.find_all_options(args,
    			      ({
    				({"ignore",Getopt.NO_ARG,"-cvf"}),
    				  }),
    			      0,
    			      0);
          args=Getopt.get_args(args,0,0);
          
          switch(args[0])
          {
    	case "mkdir":
    	  for(int e=1;e<sizeof(args);e++)
    	    fake_dirs[args]=1;
    	  break;
    	  
    	case "install":
    	case "cp":
    	  mixed s=file_stat(args[-1]);
    	  
    	  if((s && s[1]==-2) || sizeof(args)>3 || fake_dirs[s])
    	  {
    	    for(int e=1;e<sizeof(args)-1;e++)
    	      install(args[e], combine_path(args[-1],basename(args[e])));
    	  }else{
    	    install(args[1], args[2]);
    	  }
          }
        }
    
      string dirname=replace(version()," ","-");
    #if constant(uname)
      mixed u=uname();
      if(u->sysname=="AIX")
        dirname+="-"+u->sysname+"-"+u->version+"."+u->release;
      else
        dirname+="-"+u->sysname+"-"+u->release+"-"+u->machine;
    
      dirname=replace(dirname,"/","-");
    #endif
    
      Process.system("rm -rf "+dirname);
      mkdir(dirname);
      chmod(dirname,0755);
    
      mkdir(dirname+"/files");
      chmod(dirname+"/files",0755);
      
      Process.system("cp "+
    	srcdir+"/install-sh "+
    	srcdir+"/COPYING "+
    	srcdir+"/COPYRIGHT "+
    	srcdir+"/DISCLAIMER "+
    	srcdir+"/../ANNOUNCE "+
    	dirname);
      chmod(dirname+"/install-sh",0755);
    
      mapping new_install_from=([]);
      int fileno;
    
      foreach(sort(indices(install_from)), mixed i)
        {
          Process.system("cp "+install_from[i]+" "+dirname+"/files/"+fileno);
          new_install_from[i]="files/"+fileno;
          fileno++;
        }
    
      string script="#!/bin/sh\n";
      script+="cat <<\EOF\n";
    
      script+=
        "This script will install "+version()+" on this machine.\n"
        "The following directories will be created if they do not\n"
        "already exist:\n"
        "\n"
        "           "+prefix+"/bin/\n"
        "           "+prefix+"/lib/pike/\n"
        "           "+prefix+"/include/pike/\n"
        "\n"
        "Do you wish to continue? \n"
        "EOF\n"
        "if read answer ; then\n"
        "  case x$answer in\n"
        "    xy* | xY*) ;;\n"
        "    *) echo See you later. ; exit 0\n"
        "  esac\n"
        "else\n"
        "  :\n"
        "fi\n"
        ;
    
      
      foreach(sort(indices(new_install_from)), mixed i)
        {
          script+=
    	sprintf("echo installing %s\n",i)+
    	sprintf("if test -f %s ; then mv -f %s %s.old ; else : ; fi\n",i,i,i)+
    	sprintf("./install-sh %s %s\n",new_install_from[i],i);
        }
    
      rm(dirname+"/install");
      Stdio.write_file(dirname+"/install",script);
      chmod(dirname+"/install",0755);
    
      Process.system("tar cvf - "+dirname+" | gzip -9 >"+dirname+".tar.gz");
    }