Revision 42725 trunk/org.gvsig.desktop/org.gvsig.desktop.installer/src/main/packaging/gvspkg

View differences:

gvspkg
1 1
#!/usr/bin/python
2
# -*- coding: utf-8 -*- 
3

  
2
# -*- coding: utf-8 -*-
3
#
4 4
import sys
5 5
import os
6 6
import os.path
7 7
import fnmatch
8 8
import shutil
9
import zipfile 
9
import zipfile
10 10
import stat
11 11
import getopt
12 12
from os.path import dirname
......
23 23
VERBOSE = False
24 24
SEARCH_VERSIONS = list()
25 25

  
26
LINUX_EXEC_EXTENSION=".run" # antes ".bin"
26
#LINUX_EXEC_EXTENSION=".run" # antes ".bin"
27 27

  
28 28
def log(msg):
29 29
  f=open("/tmp/gvspkg.log","a")
......
36 36
def message(msg):
37 37
    if VERBOSE:
38 38
        print msg
39
        sys.stdout.flush()
39 40
    log(msg)
40 41

  
41 42
def msgerror(msg, err=None):
......
43 44
    log("ERROR: "+msg)
44 45
    if err!=None :
45 46
      print "ERROR: ", str(err)
47
      sys.stdout.flush()
46 48
      log("ERROR: "+ str(err))
47 49

  
48 50

  
49 51
def msgwarn(msg):
50 52
    print "WARNING: ", msg
53
    sys.stdout.flush()
51 54
    log("WARNING: "+ msg)
52 55

  
53 56
def debug(msg):
54 57
    if DEBUG:
55 58
        print "DEBUG: ", msg
59
        sys.stdout.flush()
56 60
        log("DEBUG: "+ msg)
57 61

  
58 62
def acquire_file(name):
......
65 69
    folder = os.path.dirname(folder)
66 70
  return files
67 71

  
68
def get_gvspkg_bin_folder(): 
72
def get_gvspkg_bin_folder():
69 73
    files = list()
70 74
    if os.environ.get("HOME") != None :
71 75
        files.append(os.path.join(os.environ['HOME'],".gvspkg.bin"))
......
82 86
    return None
83 87
  return os.path.dirname(f)
84 88

  
85
RWALL = stat.S_IWOTH | stat.S_IROTH | stat.S_IWUSR | stat.S_IRUSR | stat.S_IWGRP | stat.S_IRGRP 
86
RWXALL = RWALL | stat.S_IXUSR | stat.S_IXOTH | stat.S_IXGRP 
89
RWALL = stat.S_IWOTH | stat.S_IROTH | stat.S_IWUSR | stat.S_IRUSR | stat.S_IWGRP | stat.S_IRGRP
90
RWXALL = RWALL | stat.S_IXUSR | stat.S_IXOTH | stat.S_IXGRP
87 91

  
88 92
VERSION = os.path.basename(os.getcwd())
89 93
GVSPKG_ROOT = search_GVSPKG_ROOT()
......
124 128
    except Exception, ex:
125 129
        msgwarn("Can't change permissions of file '%s', error %s" % (filename, str(ex)))
126 130

  
131
def makedirs(path):
132
    if not os.path.isdir(path) :
133
      os.makedirs(path)
134

  
127 135
class Command:
128 136

  
129 137
    def __init__(self, args):
......
200 208
        self.gvsig_version = s[2]
201 209
        self.code = s[3]
202 210
        try:
203
	# gvSIG-desktop-1.12.0-com.iver.cit.gvsig.cad-1.12.0-opencadtools-1418-final-all-all-j1_6.gvspkg
204
	#    0 -  1    -  2   -          3           -  4   - 5          -  6 - 7   - 8 - 9 - 10
205
	# gvSIG-desktop-1.12.0-com.iver.cit.gvsig.cad-1.12.0-1418-final-all-all-j1_6.gvspkg
206
	#    0 -  1    -  2   -          3           -  4   - 5  -  6  - 7 - 8 - 9 
207
	    if isDigit(s[5]) :
211
  # gvSIG-desktop-1.12.0-com.iver.cit.gvsig.cad-1.12.0-opencadtools-1418-final-all-all-j1_6.gvspkg
212
  #    0 -  1    -  2   -          3           -  4   - 5          -  6 - 7   - 8 - 9 - 10
213
  # gvSIG-desktop-1.12.0-com.iver.cit.gvsig.cad-1.12.0-1418-final-all-all-j1_6.gvspkg
214
  #    0 -  1    -  2   -          3           -  4   - 5  -  6  - 7 - 8 - 9
215

  
216
            if isDigit(s[5]) :
208 217
                self.version = s[4]
209 218
                self.build = s[5]
210 219
                self.status = s[6]
......
222 231
            self.status = "unknow"
223 232
            self.os = "all"
224 233
            self.arch = "all"
225
	try:
226
	    self.build = int(self.build)
227
	except:
228
	    pass
234
        try:
235
            self.build = int(self.build)
236
        except:
237
            pass
229 238

  
230 239
    def getCode(self):
231 240
        return self.code
......
243 252
        return os.path.basename(self.filename)
244 253

  
245 254
    def getFullVersion(self):
246
        if "-" in self.version :
247
          return "%s-%06d" %(self.version,self.build)
248
        else:
249
          return "%s-ZZZ-%06d" %(self.version,self.build)
255
        try:
256
          r = re.compile("([0-9]+)[.]([0-9]+)[.]([0-9]+)-([a-zA-Z0-0]+)$")
257
          m = r.match(self.version)
258
          if m == None:
259
            clasificador="ZZZZZZZZ"
260
            r = re.compile("([0-9]+)[.]([0-9]+)[.]([0-9]+)$")
261
            m = r.match(self.version)
262
          else:
263
            clasificador=m.group(4)
264
          v1=int(m.group(1))
265
          v2=int(m.group(2))
266
          v3=int(m.group(3))
267
          return "%06d.%06d.%06d-%s-%06d" % (v1,v2,v3,clasificador,self.build)
268
        except:
269
          if "-" in self.version :
270
            return "%s-%06d" %(self.version,self.build)
271
          else:
272
            return "%s-ZZZZZZZZ-%06d" %(self.version,self.build)
250 273

  
251 274
    def getFilename(self):
252 275
        return self.filename + "." + self.type
......
268 291
      ini = self.getIni()
269 292
      if ini.has_option(section, name):
270 293
        x = ini.get(section, name)
271
      	x = x.replace("\\:", ":")
272
        return x 
273
      return default 
294
        x = x.replace("\\:", ":")
295
        return x
296
      return default
274 297
    
275 298
    def getDescription(self):
276 299
      return self.getIniOption("description")
......
398 421
    except getopt.GetoptError, err:
399 422
        # print help information and exit:
400 423
        print str(err) # will print something like "option -a not recognized"
401
        help(args)
424
        shorthelp(args)
402 425
        sys.exit(2)
403 426

  
404 427
    long_format=False
......
420 443
            else:
421 444
                print info.getPkiFilename()
422 445

  
423
def installkit_add(cmd,arg1,arg2):
424 446

  
447
def installer_add(cmd,arg1,arg2):
448
    installer_add_use_zip(cmd,arg1,arg2)
449
    
450
def installer_add_use_zip(cmd,arg1,arg2):
451
    if cmd == "addjrelin":
452
      return
453
    
454
    if cmd == "addjrewin":
455
      return
456
    
457
    if cmd == "addpks":
458
       zip = zipfile.ZipFile(arg1,"a",zipfile.ZIP_STORED)
459
       zip.write(arg2,"package.gvspks")
460
       zip.close()
461
    
462
def installer_add_use_installkit(cmd,arg1,arg2):
425 463
    folder = "%s/gvspkg.bin" % GVSPKG_ROOT
426 464

  
427 465
    cmd = "%s/installkit %s/main.tcl %s %s %s" % (
466
        "/mnt/data0/public-files/gvsig-desktop/gvspkg.bin",
428 467
        folder,
429
        folder,
430 468
        cmd,
431 469
        arg1,
432 470
        arg2
......
440 478
    except getopt.GetoptError, err:
441 479
        # print help information and exit:
442 480
        print str(err) # will print something like "option -a not recognized"
443
        help(args)
481
        shorthelp(args)
444 482
        sys.exit(2)
445 483

  
446 484
    #print "opts = ",opts
......
466 504
    
467 505

  
468 506
    if len(args) != 2 :
469
        help(args)
507
        shorthelp(args)
470 508
        sys.exit(4)
471 509

  
472 510
    bin_name = args[0]
......
481 519
        print "gvspkg mkinstall: only one of addjrelin or addjrewin is allowed."
482 520
        sys.exit(4)
483 521

  
484
    message("Creando %s..." % custom_name)
522
    message("Creating %s..." % custom_name)
485 523
    shutil.copyfile(bin_name, custom_name)
486 524
    mychmod(custom_name,RWALL)
487
    message("A�adiendo %s..." % gvspks_name)
488
    installkit_add("addpks", custom_name, gvspks_name)
489

  
525
    message("Adding %s..." % gvspks_name)
526
    installer_add("addpks", custom_name, gvspks_name)
527
    
528
    """
490 529
    if addjrelin:
491 530
        withjre_name = bin_name.replace("online", distribution_name+"-withjre")
492
        message("Creando %s..." % withjre_name)
531
        message("Creating %s..." % withjre_name)
493 532
        shutil.copyfile(custom_name, withjre_name)
494 533
        mychmod(withjre_name,RWALL)
495
        message("A�adiendo %s..." % jrelin)
496
        installkit_add("addjrelin", withjre_name, jrelin)
534
        message("Adding %s..." % jrelin)
535
        installer_add("addjrelin", withjre_name, jrelin)
497 536

  
498 537

  
499 538
    if addjrewin:
500 539
        withjre_name = bin_name.replace("online", distribution_name+"-withjre")
501
        message("Creando %s..." % withjre_name)
540
        message("Creating %s..." % withjre_name)
502 541
        shutil.copyfile(custom_name, withjre_name)
503 542
        mychmod(withjre_name,RWALL)
504
        message("A�adiendo %s..." % jrewin)
505
        installkit_add("addjrewin", withjre_name, jrewin)
543
        message("Adding %s..." % jrewin)
544
        installer_add("addjrewin", withjre_name, jrewin)
545
    """
506 546

  
507

  
508 547
def mks(args):
509 548
    cmd = Command(args)
510 549
    try:
......
512 551
    except getopt.GetoptError, err:
513 552
        # print help information and exit:
514 553
        print str(err) # will print something like "option -a not recognized"
515
        help(args)
554
        shorthelp(args)
516 555
        sys.exit(2)
517 556

  
518 557
    platforms = ("x86", "x86_64")
......
565 604
    packages_txt = getDist() +"/packages.txt"
566 605
    packages_gvspki = getDist() +"/packages.gvspki"    
567 606

  
568
    message( "Creating 'packages.gvspki' for version '%s'" % getVersion() )
607
    message( "Creating 'packages.gvspki' for version '%s'" % getVersion() + "...")
569 608
    if not os.path.exists(getDist()):
570 609
        msgerror("Can't locate version folder '%s'." % getDist())
571 610
        sys.exit(3)
......
594 633
            except Exception, ex:
595 634
                msgerror("Can't add index '%s', error %s" % (info, str(ex)))
596 635
        else:
597
            message("Exclude package '%s'" % info.getFullName())
636
            debug("Exclude package '%s'" % info.getFullName())
598 637
    if default_selection != None :
599 638
        set.write(default_selection,default_selection)
600 639
    set.close()
......
619 658
                  except Exception, ex:
620 659
                      msgerror("Can't add package '%s', error %s" % (index, str(ex)))
621 660
              else:
622
                  message("Exclude package '%s'" % info.getFullName())
661
                  debug("Exclude package '%s'" % info.getFullName())
623 662
          if default_selection != None :
624 663
              set.write(default_selection,default_selection)
625 664
          set.close()
......
628 667
          md5sum(packages_gvspks,packages_gvspks+".md5")
629 668
          mychmod(packages_gvspks+".md5",RWALL)
630 669

  
631
    message( "Created")
670
    message( "Createds package indexes.\n")
632 671

  
633 672
def mkmirror(args):
634 673
    cmd = Command(args)
......
637 676
    except getopt.GetoptError, err:
638 677
        # print help information and exit:
639 678
        print str(err) # will print something like "option -a not recognized"
640
        help(args)
679
        shorthelp(args)
641 680
        sys.exit(2)
642 681

  
643 682
    build = None
......
651 690
        msgerror("Build number required.")
652 691
        sys.exit(3)
653 692
    domkmirror( getPackagesRoot(),getVersion(),build)
693

  
694
def linkfile(src,dst):
695
  if os.path.lexists(dst):
696
    os.remove(dst)
697
  os.symlink(src,dst)
698
  if os.path.lexists(src+".md5") :
699
    if os.path.lexists(dst+".md5"):
700
      os.remove(dst+".md5")
701
    os.symlink(src+".md5",dst+".md5")
654 702
    
655 703
def domkmirror(root_src, version, build):
656 704
  join = os.path.join
657 705

  
658
  def linkfile(src,dst):
659
    if os.path.lexists(dst):
660
      os.remove(dst)
661
    os.symlink(src,dst)
662
    if os.path.lexists(src+".md5") :
663
      if os.path.lexists(dst+".md5"):
664
        os.remove(dst+".md5")
665
      os.symlink(src+".md5",dst+".md5")
666

  
667

  
668 706
  build = str(build)
669 707
  root_target = join(root_src,"mirrors",version+"-"+build,"gvsig-desktop")
670 708
  build_src = join(root_src,"dists",version,"builds",build)
......
672 710
  pool_src = join(root_src,"pool")
673 711
  pool_target = join(root_target,"pool")
674 712
  
675
  if not os.path.isdir(root_target):
676
    os.makedirs(root_target)
677
  if not os.path.isdir(build_target):
678
    os.makedirs(build_target)
679
  if not os.path.isdir(pool_target):
680
    os.makedirs(pool_target)
713
  makedirs(root_target)
714
  makedirs(build_target)
715
  makedirs(pool_target)
681 716
  files = os.listdir(build_src)
682 717
  linkfile(join(build_src,"packages.gvspki"), join(root_target,"dists",version,"packages.gvspki"))
683 718
  for f in files:
......
691 726
  for pkgname in pkgs:
692 727
    if pkgname!='defaultPackages':
693 728
      pkg = PackageInfo(pkgname)
694
      if not os.path.exists(join(root_target,"pool",pkg.getCode())) :
695
        os.makedirs(join(root_target,"pool",pkg.getCode()))
729
      makedirs(join(root_target,"pool",pkg.getCode()))
696 730
      src = join(root_src,"pool",pkg.getCode(),pkg.getPkgFilename())
697 731
      target = join(root_target,"pool",pkg.getCode(),pkg.getPkgFilename())
698 732
      linkfile(src,target)
......
710 744
    except getopt.GetoptError, err:
711 745
        # print help information and exit:
712 746
        print str(err) # will print something like "option -a not recognized"
713
        help(args)
747
        shorthelp(args)
714 748
        sys.exit(2)
715 749

  
716 750
    index_only = False
......
733 767
        else:
734 768
            assert False, "unhandled option %r" % opt
735 769

  
770
    message("Creating html pages...")
736 771
    indexes = IndexList()
737 772

  
738 773
    packages_txt = getDist() +"/packages.txt"
......
782 817
        text-algin:right;
783 818
    }
784 819
  </style>
785
</head>''' 
820
</head>'''
786 821

  
787 822
    html += '''
788 823
<body>
......
810 845
      <td>%s</td>
811 846
      <td>%s</td>
812 847
    </tr>\n'''%(
813
	"../../../web/" + item.getFullName() + ".html?height=400&width=600",
848
  "../../../web/" + item.getFullName() + ".html?height=400&width=600",
814 849
        item.getName(),
815
	item.version,
816
	item.os,
817
	item.getOfficial(),
818
	item.getType(),
819
	item.getOwner()
850
  item.version,
851
  item.os,
852
  item.getOfficial(),
853
  item.getType(),
854
  item.getOwner()
820 855
      )
821 856
    html += """ </tbody>\n </table>
822 857
<!--javascript para la visualizaci�n de la tabla y carga din�mica del contenido del enlace -->
......
848 883
    except Exception, ex:
849 884
      raise ex
850 885

  
851

  
886
    message("html pages createds.\n")
887
  
888
  
852 889
def mkpkihtml(basepath, info):
853 890
  html='''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
854 891
<html xmlns="http://www.w3.org/1999/xhtml">
......
905 942
    description = ""
906 943
  description = description.replace("\\n", "<br>")
907 944
  description = description.replace("\:",":")
908
  html += '    <tr valing="top"><th valing="top">%s </th><td>%s</td></tr>\n'%("Description", description) 
945
  html += '    <tr valing="top"><th valing="top">%s </th><td>%s</td></tr>\n'%("Description", description)
909 946
  html += """  </tbody>\n</table>\n"""
910
  html += """ 
947
  html += """
911 948
  <!-- javascript para la visualizaci�n de la tabla -->
912 949
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
913 950
  <script src="http://datatables.net/release-datatables/media/js/jquery.dataTables.js" type="text/javascript"></script>
......
934 971
  except Exception, ex:
935 972
    raise ex
936 973

  
974
def extract_make_portable(zfile, targetfolder):
975
  zf = zipfile.ZipFile(zfile)
976
  data = zf.read("gvsig-desktop/tools/make-portable")
977
  f = open(os.path.join(targetfolder,"make-portable"),"wb")
978
  f.write(data)
979
  f.close()
980
  zf.close()
981

  
982
def prepare_portable(args):
983
    cmd = Command(args)
984
    try:
985
        opts, args = getopt.getopt(cmd.getArgs("prepare-portable"), "b:s:", [ "build=", "state=" ])
986
    except getopt.GetoptError, err:
987
        # print help information and exit:
988
        print str(err) # will print something like "option -a not recognized"
989
        shorthelp(args)
990
        sys.exit(2)
991

  
992
    build=None
993
    state=None
994
    for opt, arg in opts:
995
        if opt in ("-b", "--build"):
996
            build=arg
997
        elif opt in ("-s", "--state"):
998
            state=arg
999
        else:
1000
            assert False, "unhandled option %r" % opt
1001

  
1002
    if build == None:
1003
      print "Requiered option --build not found."
1004
      shorthelp(args)
1005
      sys.exit(2)
1006

  
1007
    if state == None:
1008
      print "Requiered option --state not found."
1009
      shorthelp(args)
1010
      sys.exit(2)
1011
      
1012
    join = os.path.join
1013
    build_folder = join(getPackagesRoot(),"dists",getVersion(),"builds",build)
1014
    if not os.path.isdir(build_folder):
1015
      print "Can't access the build folder "+build_folder+"."
1016
      sys.exit(2)
1017

  
1018
    do_prepare_portable(build,state)
1019

  
1020
def do_prepare_portable(build,state):
1021
    join = os.path.join
1022
    build_folder = join(getPackagesRoot(),"dists",getVersion(),"builds",build)
1023
    portable_folder = join(build_folder,"misc","portable")
1024
    makedirs(portable_folder)
1025
    makedirs(join(portable_folder,"packages","custom"))
1026
    makedirs(join(portable_folder,"standard"))
1027
    makedirs(join(portable_folder,"patchs"))
1028
    f=open(join(portable_folder,"packages","excludes"),"w")
1029
    f.write("""EPSG_v6                                                                                                                               
1030
EPSG_v8_4                                                                                                                                     
1031
org.gvsig.app.document.layout1.app.mainplugin
1032
org.gvsig.dyschromatopsia.app.extension
1033
org.gvsig.educa.portableview.app.editor
1034
org.gvsig.educa.portableview.app.viewer
1035
org.gvsig.projection.app.cresques
1036
org.gvsig.projection.app.proj4j
1037
org.gvsig.editing.app.mainplugin
1038
org.gvsig.downloader.app.mainplugin
1039
""")
1040
    f.close()
1041
    fname_base = "gvSIG-desktop-%s-%s-%s" % (getVersion(),build,state)
1042
    linkfile(
1043
      join(build_folder,fname_base + "-all-x86-online.zip"),
1044
      join(portable_folder,"standard",fname_base + "-all-x86-online.zip")
1045
    )
1046
    linkfile(
1047
      join(build_folder,fname_base + "-lin-x86.gvspks"),
1048
      join(portable_folder,"standard",fname_base + "-lin-x86.gvspks")
1049
    )
1050
    linkfile(
1051
      join(build_folder,fname_base + "-lin-x86_64.gvspks"),
1052
      join(portable_folder,"standard",fname_base + "-lin-x86_64.gvspks")
1053
    )
1054
    linkfile(
1055
      join(build_folder,fname_base + "-lin-x86-online.jar"),
1056
      join(portable_folder,"standard",fname_base + "-lin-x86-online.jar")
1057
    )
1058
    linkfile(
1059
      join(build_folder,fname_base + "-win-x86.gvspks"),
1060
      join(portable_folder,"standard",fname_base + "-win-x86.gvspks")
1061
    )
1062
    linkfile(
1063
      join(build_folder,fname_base + "-win-x86-online.jar"),
1064
      join(portable_folder,"standard",fname_base + "-win-x86-online.jar")
1065
    )
1066
    extract_make_portable(
1067
      join(build_folder,fname_base + "-all-x86-online.zip"),
1068
      join(portable_folder)
1069
    )
1070
    # shutil.copyfile(
1071
    #   join(getPackagesRoot(),"gvspkg.bin","make-portable"),
1072
    #   join(portable_folder,"make-portable")
1073
    # )
1074
    mychmod(join(portable_folder,"make-portable"),RWXALL)
1075
    
1076
def zipfolder(source,target):
1077
  def zipdir(path, zip):
1078
      for root, dirs, files in os.walk(path):
1079
          for file in files:
1080
              zip.write(os.path.join(root, file))
1081
  zipf = zipfile.ZipFile(target, 'w')
1082
  zipdir(source, zipf)
1083
  zipf.close()
1084

  
1085
def removefile(filename):
1086
  if os.path.exists(filename):
1087
    os.remove(filename)
1088
  
1089
def mkportable(args):
1090
    cmd = Command(args)
1091
    try:
1092
        opts, args = getopt.getopt(cmd.getArgs("mkportable"), "b:s:", [ "build=", "state=" ])
1093
    except getopt.GetoptError, err:
1094
        # print help information and exit:
1095
        print str(err) # will print something like "option -a not recognized"
1096
        shorthelp(args)
1097
        sys.exit(2)
1098

  
1099
    build=None
1100
    state=None
1101
    for opt, arg in opts:
1102
        if opt in ("-b", "--build"):
1103
            build=arg
1104
        elif opt in ("-s", "--state"):
1105
            state=arg
1106
        else:
1107
            assert False, "unhandled option %r" % opt
1108

  
1109
    if build == None:
1110
      print "Requiered option --build not found."
1111
      shorthelp(args)
1112
      sys.exit(2)
1113

  
1114
    if state == None:
1115
      print "Requiered option --state not found."
1116
      shorthelp(args)
1117
      sys.exit(2)
1118
      
1119
    join = os.path.join
1120
    build_folder = join(getPackagesRoot(),"dists",getVersion(),"builds",build)
1121
    if not os.path.isdir(build_folder):
1122
      print "Can't access the build folder "+build_folder+"."
1123
      sys.exit(2)
1124
    
1125
    portable_folder = join(build_folder,"misc","portable")
1126
    if not os.path.isdir(portable_folder) :
1127
      do_prepare_portable(build,state)
1128
    os.system('cd %s ; ./make-portable' % (portable_folder))
1129

  
1130
    message("Removing previos portable zip files")
1131
    removefile(join(build_folder,"gvsig-desktop-%s-%s-%s-lin-x86.zip" %  (getVersion(),build,state)))
1132
    removefile(join(build_folder,"gvsig-desktop-%s-%s-%s-lin-x86_x86.zip" % (getVersion(),build,state)))
1133
    removefile(join(build_folder,"gvsig-desktop-%s-%s-%s-win-x86.zip" % (getVersion(),build,state)))
1134
    
1135
    target_folder = join(getPackagesRoot(),"dists",getVersion(),"builds",build,"misc","portable","target")
1136
    os.chdir(target_folder)
1137
    
1138
    message("Creating zip gvsig-desktop-%s-%s-%s-lin-x86.zip" % (getVersion(),build,state))
1139
    zipfolder(
1140
      "gvsig-desktop-%s-%s-%s-lin-x86" % (getVersion(),build,state),
1141
      join(build_folder,"gvsig-desktop-%s-%s-%s-lin-x86.zip" % (getVersion(),build,state))
1142
    )
1143
    message("Creating zip gvsig-desktop-%s-%s-%s-lin-x86_64.zip" % (getVersion(),build,state))
1144
    zipfolder(
1145
      "gvsig-desktop-%s-%s-%s-lin-x86_64" % (getVersion(),build,state),
1146
      join(build_folder,"gvsig-desktop-%s-%s-%s-lin-x86_64.zip" % (getVersion(),build,state))
1147
    )
1148
    message("Creating zip gvsig-desktop-%s-%s-%s-win-x86.zip" % (getVersion(),build,state))
1149
    zipfolder(
1150
      "gvsig-desktop-%s-%s-%s-win-x86" % (getVersion(),build,state),
1151
      join(build_folder,"gvsig-desktop-%s-%s-%s-win-x86.zip" % (getVersion(),build,state))
1152
    )
1153
    
1154
    #message("Remove temporary folders")
1155
    #shutil.rmtree(target_folder)
1156

  
937 1157
def mkdist(args):
938 1158
    cmd = Command(args)
939 1159
    try:
......
941 1161
    except getopt.GetoptError, err:
942 1162
        # print help information and exit:
943 1163
        print str(err) # will print something like "option -a not recognized"
944
        help(args)
1164
        shorthelp(args)
945 1165
        sys.exit(2)
946 1166

  
947 1167
    build=None
......
963 1183
            args = "x86_64"
964 1184
          if not arg in ("x86","x86_64"):
965 1185
            print "Unsuported platform "+repr(platform)+", must be x86, x86_64 or amd64."
966
            help(args)
1186
            shorthelp(args)
967 1187
            sys.exit(2)
968 1188
          platforms = (arg,)
969 1189
        else:
......
971 1191

  
972 1192
    if build == None:
973 1193
      print "Requiered option --build not found."
974
      help(args)
1194
      shorthelp(args)
975 1195
      sys.exit(2)
976 1196

  
977 1197
    if state == None:
978 1198
      print "Requiered option --state not found."
979
      help(args)
1199
      shorthelp(args)
980 1200
      sys.exit(2)
981 1201

  
982 1202
    #
......
993 1213
      sys.exit(2)
994 1214
       
995 1215
    message( "Generating distribution for build "+ build + "...")
1216
    message("Recreating index of packages...")
996 1217
    executeCommand("mks", "-s", "-c")
1218
    
997 1219
    executeCommand("mkhtml" )
998 1220

  
999 1221
    gvspki_filename = "builds/"+build+"/packages.gvspki"
1000
    message( "Coping packages.gvspki to "+ gvspki_filename)
1222
    message( "Coping packages.gvspki to "+ gvspki_filename + "\n")
1001 1223
    shutil.copyfile("packages.gvspki", gvspki_filename)
1002 1224
    shutil.copyfile("packages.gvspki.md5", gvspki_filename +".md5")
1003

  
1004
    exec_extensions = { 
1005
      "lin" : LINUX_EXEC_EXTENSION,
1006
      "win" : ".exe"
1007
    }
1008 1225
    
1226
    #exec_extensions = {
1227
    #  "lin" : LINUX_EXEC_EXTENSION,
1228
    #  "win" : ".exe"
1229
    #}
1230
    
1009 1231
    for cur_os in oss:
1010
      exec_extension = exec_extensions[cur_os]
1232
      exec_extension = ".jar" #exec_extensions[cur_os]
1011 1233
      for cur_platform in platforms:
1012
        message( "Process "+cur_os+"/"+cur_platform)
1234
        message( "Creating installers for platform "+cur_os+"/"+cur_platform+"...")
1013 1235
        gvspks_filename = "builds/"+build+"/gvSIG-desktop-" + VERSION + "-" + build+ "-" + state + "-"+cur_os+"-"+cur_platform+".gvspks"
1014 1236
        online_filename = "builds/"+build+"/gvSIG-desktop-" + VERSION + "-" + build+ "-" + state + "-"+cur_os+"-x86-online" + exec_extension
1015 1237

  
......
1027 1249
        md5sum(online_filename,online_filename+".md5")
1028 1250
        mychmod(online_filename+".md5",RWALL)
1029 1251

  
1252
        
1030 1253
        executeCommand("mkinstall" , "--addjre"+cur_os, online_filename, gvspks_filename)
1031 1254

  
1032 1255
        message( "Renaming files from custom to standard...")
......
1040 1263
        md5sum(target_filename,target_filename+".md5")
1041 1264
        mychmod(target_filename+".md5",RWALL)
1042 1265

  
1266
        """
1043 1267
        target_filename = "builds/"+build+"/gvSIG-desktop-" + VERSION + "-" + build+ "-" + state + "-"+cur_os+"-"+cur_platform+"-"+distribution_name+"-withjre" + exec_extension
1044 1268
        shutil.move(
1045 1269
            "builds/"+build+"/gvSIG-desktop-" + VERSION + "-" + build+ "-" + state + "-"+cur_os+"-x86-custom-withjre" + exec_extension,
......
1049 1273

  
1050 1274
        md5sum(target_filename,target_filename+".md5")
1051 1275
        mychmod(target_filename+".md5",RWALL)
1276
        """
1277
        message( "Createds installers for platform "+cur_os+"/"+cur_platform+"\n")
1052 1278
        
1053
        message( "Coping html index to browse paqueges of the distro.")
1054
        shutil.rmtree("builds/"+build+"/web", ignore_errors=True)
1055
        shutil.copytree("web", "builds/"+build+"/web")
1056
        f = file("builds/"+build+"/web/index.html","r")
1057
        contents = f.read()
1058
        f.close()
1059
        contents = contents.replace("href=\"../../../web/gvSIG-desktop-", "href=\"../../../../../web/gvSIG-desktop-")
1060
        f = file("builds/"+build+"/web/index.html","w")
1061
        f.write(contents)
1062
        f.close()
1279
    message( "Coping html index to browse paqueges of the distro.")
1280
    shutil.rmtree("builds/"+build+"/web", ignore_errors=True)
1281
    shutil.copytree("web", "builds/"+build+"/web")
1282
    f = file("builds/"+build+"/web/index.html","r")
1283
    contents = f.read()
1284
    f.close()
1285
    contents = contents.replace("href=\"../../../web/gvSIG-desktop-", "href=\"../../../../../web/gvSIG-desktop-")
1286
    f = file("builds/"+build+"/web/index.html","w")
1287
    f.write(contents)
1288
    f.close()
1063 1289

  
1064
    message( "Process completed.")
1290
    message( "\nCreation of distribution completed.\n")
1065 1291
         
1066 1292
      
1067 1293
      
......
1073 1299
    except getopt.GetoptError, err:
1074 1300
        # print help information and exit:
1075 1301
        print str(err) # will print something like "option -a not recognized"
1076
        help(args)
1302
        shorthelp(args)
1077 1303
        sys.exit(2)
1078 1304

  
1079 1305
    eerify = False
......
1115 1341
    except getopt.GetoptError, err:
1116 1342
        # print help information and exit:
1117 1343
        print str(err) # will print something like "option -a not recognized"
1118
        help(args)
1344
        shorthelp(args)
1119 1345
        sys.exit(2)
1120 1346

  
1121 1347
    index_only = False
......
1163 1389
        if not ( info.code in excludes_pki or info.getFullName() in excludes_pki ):
1164 1390
            try:
1165 1391
                if info.hasPki() :
1166
                  print info.getPkiFilename() 
1392
                  print info.getPkiFilename()
1167 1393
                  if interactive :
1168 1394
                    edit_pkginfo_of_package(info.getPkiFilename(), edit_ui)
1169 1395
                  elif len(replaces) < 1:
......
1182 1408
    except getopt.GetoptError, err:
1183 1409
        # print help information and exit:
1184 1410
        print str(err) # will print something like "option -a not recognized"
1185
        help(args)
1411
        shorthelp(args)
1186 1412
        sys.exit(2)
1187 1413

  
1188 1414
    replaces = list()
......
1271 1497
def install(args):
1272 1498
    cmd = Command(args)
1273 1499
    try:
1274
        opts, args = getopt.getopt(cmd.getArgs("install"), "f", [ "force" ])
1500
        opts, args = getopt.getopt(cmd.getArgs("install"), "fS", [ "force","nohttps" ])
1275 1501
    except getopt.GetoptError, err:
1276 1502
        # print help information and exit:
1277 1503
        print str(err) # will print something like "option -a not recognized"
1278
        help(args)
1504
        shorthelp(args)
1279 1505
        sys.exit(2)
1280 1506

  
1281 1507
    force = False
1508
    nohttps = False
1282 1509
    for opt, arg in opts:
1283 1510
        if opt in ("-f", "--force"):
1284 1511
            force = True
1512
        if opt in ("-S", "--nohttps"):
1513
            nohttps = True
1285 1514
        else:
1286 1515
            assert False, "unhandled option %r" % opt
1287 1516

  
1288 1517
    url_pki = args[0]
1518
    if url_pki.startswith("https:") and nohttps :
1519
       url_pki = "http:" + url_pki[6:]
1520
       
1289 1521
    message( "Download package index '%s'" % url_pki)
1290 1522
    temppath_pki= os.path.join("/tmp",os.path.basename(url_pki))
1291 1523
    if not downloadFile(url_pki,temppath_pki):
......
1298 1530
    if url_pkg[-7:] == ".gvspki" :
1299 1531
      msgwarn("Suspicious download-url value. Ends with gvspki, expected gvspkg.")
1300 1532
      msgwarn("download-url ='%s'." % url_pkg)
1533
    
1534
    if url_pkg.startswith("https:") and nohttps :
1535
       url_pkg = "http:" + url_pkg[6:]
1536
       
1301 1537
    message( "Download package '%s'" % url_pkg)
1302 1538
    temppath_pkg= os.path.join("/tmp",os.path.basename(url_pkg))
1303 1539
    if not downloadFile(url_pkg,temppath_pkg):
......
1306 1542
      print # force a newline
1307 1543
      return 1
1308 1544
    folder = os.path.join(getPool(),pkg.getCode())
1309
    if not os.path.isdir(folder) :
1310
        os.makedirs(folder)
1545
    makedirs(folder)
1311 1546
    pathname_pki = os.path.join(folder,os.path.basename(url_pki))
1312 1547
    if not force and os.path.isfile(pathname_pki) :
1313 1548
        msgwarn("The package index alreade exist in the pool. Use -f to forrce install.")
......
1343 1578
  fsrc.close()
1344 1579
  return True
1345 1580

  
1581
def shorthelp(args):
1582
    print """
1583
usage: gvspkg [OPTIONS] COMMANDS
1584
OPTIONS:
1346 1585

  
1586
-h,--help       Muestra esta ayuda
1587
-v,--verbose    Activa el modo verbose
1588
-d,--debug      Activa el modo debug.
1589
--version ver   Fija la version con la que van a trabajar.
1590
-r,--package-root root    Fija la carpeta del raiz del sistema de paquetes
1591
    
1592
COMMANDS:
1593

  
1594
mkinstall [OPTIONS] install-file packages-file
1595
    -L, --jrelin=path
1596
    -W, --jrewin=path
1597
    -l, --addjrelin
1598
    -w, --addjrewin
1599
    -N, --distribution-name=name
1600

  
1601
lsi [OPTIONS]
1602
    -l, --long-format
1603

  
1604
mks [OPTIONS]
1605
     -c, --clear-list
1606
     --excludepkg pkgcode
1607
     --excludepki pkgcode
1608
     --exclude pkgcode
1609
     -s, --include-default-selection
1610
     -p, --platform=name
1611
     -i, --index-only
1612
     -I full-path-to-package, --include full-path-to-package
1613

  
1614
mkdist [OPTIONS]
1615
     -s STATE, --state=STATE
1616
     -b BUILD, --build=BUILD
1617
     -p, --platform=all|x86|x86_64|amd64
1618
     -N, --distribution-name=name
1619
     
1620
mkmirror [OPTIONS]
1621
     -b, --build buildnumber
1622

  
1623
mkhtml [OPTIONS]
1624
     -c, --clear-list
1625
     --excludepkg pkgcode
1626
     --excludepki pkgcode
1627
     --exclude pkgcode
1628

  
1629
show OPTIONS package-index
1630
    --verify, -V
1631

  
1632
edit [OPTIONS] package-index
1633
     --replace=@search@replace@
1634
     --onlysign
1635
     --sign, -S
1636

  
1637
editall [OPTIONS]
1638
     -c, --clear-list
1639
     --excludepkg pkgcode
1640
     --excludepki pkgcode
1641
     --exclude pkgcode
1642
     --replace=@search@replace@
1643
     --sign, -S
1644

  
1645
install [OPTIONS] url-to-pki
1646
     -f, --force
1647

  
1648
prepare-portable [OPTIONS]
1649
     -b, --build
1650
     -s, --state
1651

  
1652
mkportable [OPTIONS]
1653
     -b, --build
1654
     -s, --state
1655

  
1656
La version actual a utilizar es:
1657
  %s
1658

  
1659
El directorio root de la estructura de packetes actual es:
1660
  %s
1661
    """ % (VERSION, GVSPKG_ROOT)
1662

  
1663

  
1347 1664
def help(args):
1348 1665
    print """
1349 1666
usage: gvspkg [OPTIONS] COMMANDS
......
1419 1736
        por defecto.
1420 1737

  
1421 1738
     -p | --platform=name
1422
        Indica para que plataforma queremos generar el conjunto de paquetes. 
1739
        Indica para que plataforma queremos generar el conjunto de paquetes.
1423 1740
        Es un parametro opcional.
1424 1741
        Sus valores pueden ser:
1425 1742
        - all (Se incluiren los de todas las plataformas, no solo los multiplataforma)
......
1434 1751
     -i | --index-only
1435 1752
        No crea el fichero gvspks, solo crea el gvspki
1436 1753

  
1437
     -I full-path-to-package | --include full-path-to-package 
1438
        A�ade el paquete indicado a la lista de paquetes aunque no coincida para 
1754
     -I full-path-to-package | --include full-path-to-package
1755
        A�ade el paquete indicado a la lista de paquetes aunque no coincida para
1439 1756
        la version de gvSIG con la que se esta trabajando.
1440 1757

  
1441 1758
mkdist [OPTIONS]
1442
     Crea los ficheros de la distribucion standard para el buil dindicado a partir de 
1759
     Crea los ficheros de la distribucion standard para el buil dindicado a partir de
1443 1760
     la distribucion online y los paquetes que hayan en el pool para esta version.
1444 1761
     Ejecuta un "mks" y un "mkhtml" automaticamente para preparar el conjunto de paquetes
1445 1762
     a incluir en la distribucion, y una vez preparados ejecuta un "mkinsrall" por
......
1456 1773
        dejar los ficheros generados.
1457 1774

  
1458 1775
     -p | --platform=name
1459
        Indica para que plataforma queremos generar los instalables de gvSIG. 
1776
        Indica para que plataforma queremos generar los instalables de gvSIG.
1460 1777
        Es un parametro opcional.
1461 1778
        Sus valores pueden ser:
1462 1779
        - all (si se indica se generara para x86)
......
1517 1834
       Esta opcion puede indicarse tatas veces como reemplazos se deseen efectuar.
1518 1835

  
1519 1836
     --onlysign
1520
       firma el package.info sin editarlo de forma interactiva (no invoca al editor antes 
1837
       firma el package.info sin editarlo de forma interactiva (no invoca al editor antes
1521 1838
       de firmarlo).
1522 1839

  
1523 1840
     --sign | -S
1524 1841
       Firma el package.info tras terminar la edicion (bach o interactiva)
1525 1842

  
1526 1843
editall [OPTIONS]
1527
    Edita todos los package.info 
1844
    Edita todos los package.info
1528 1845

  
1529 1846
     OPTIONS:
1530 1847

  
......
1560 1877
       fuerza la sobreescritura de los ficheros en caso de que estos ya existan.
1561 1878

  
1562 1879
Si en la carpeta corriente encuentra un fichero gvspkg.options cargara los
1563
flags indicados ahi como flags por defecto para cada comando. El formato del 
1880
flags indicados ahi como flags por defecto para cada comando. El formato del
1564 1881
fichero es:
1565 1882
  main=OPCION-POR-DEFECTO
1566 1883
  mks=OPCOPNES-POR-DEFECTO
1567 1884
Donde main indica las opciones por defecto generales, independientes del comando
1568
a ejecutar. "mks" indica las opciones por defecto a usar en el comando "mks", y 
1885
a ejecutar. "mks" indica las opciones por defecto a usar en el comando "mks", y
1569 1886
asi sucesivamente, indicando el nombre del comando seguido de un "=" y las opciones
1570 1887
por defecto para ese comando.
1571 1888

  
1572
Por defecto la version la obtiene del nombre de la carpeta 
1889
Por defecto la version la obtiene del nombre de la carpeta
1573 1890
corriente (%s). Las opciones indicadas en el fichero gvspkg.options tienen prioridad
1574 1891
sobre este valor.
1575 1892

  
1576 1893
El directorio root de la estructura de packetes lo buscara en el
1577 1894
sitio indicado por la variable de entorno GVPKG_ROOT, y si esta no
1578
esta establecida usara "%s". Las opciones indicadas en el fichero gvspkg.options 
1895
esta establecida usara "%s". Las opciones indicadas en el fichero gvspkg.options
1579 1896
tienen prioridad sobre este valor.
1580 1897

  
1581 1898
    """ % (VERSION, GVSPKG_ROOT)
1582 1899

  
1583 1900
def executeCommand(*args):
1584
    command = "help"
1901
    command = "shorthelp"
1585 1902
    if len(args)>0:
1586 1903
        command=args[0]
1587 1904

  
1905
    r=1
1588 1906
    if command=="lsi" :
1589
        lsi(args)
1907
        r=lsi(args)
1590 1908
    elif command == "mks":
1591
        mks(args)
1909
        r=mks(args)
1592 1910
    elif command == "edit":
1593
        edit(args)
1911
        r=edit(args)
1594 1912
    elif command == "editall":
1595
        editall(args)
1913
        r=editall(args)
1596 1914
    elif command == "show":
1597
        show(args)
1915
        r=show(args)
1598 1916
    elif command == "mkhtml":
1599
        mkhtml(args)
1917
        r=mkhtml(args)
1600 1918
    elif command == "mkinstall":
1601
        mkinstall(args)
1919
        r=mkinstall(args)
1602 1920
    elif command == "install":
1603
        install(args)
1921
        r=install(args)
1604 1922
    elif command == "mkdist":
1605
        mkdist(args)
1923
        r=mkdist(args)
1606 1924
    elif command == "mkmirror":
1607
        mkmirror(args)
1925
        r=mkmirror(args)
1926
    elif command == "mkportable":
1927
        r=mkportable(args)
1928
    elif command == "prepare-portable":
1929
        r=prepare_portable(args)
1930
    elif command == "help":
1931
        r=help(args)
1608 1932
    else:
1609
        help(args)
1933
        r=shorthelp(args)
1934
    return r
1610 1935

  
1611

  
1612 1936
def main():
1613 1937
    global DEBUG
1614 1938
    global VERSION
......
1622 1946
    except getopt.GetoptError, err:
1623 1947
        # print help information and exit:
1624 1948
        print str(err) # will print something like "option -a not recognized"
1625
        help(None)
1949
        shorthelp(None)
1626 1950
        sys.exit(2)
1627 1951

  
1628 1952
    for opt, arg in opts:
1629 1953
        if opt in ("-h", "--help"):
1630
            help(args)
1954
            shorthelp(args)
1631 1955
            sys.exit()
1632 1956
        elif opt in ("-d", "--debug"):
1633 1957
            DEBUG = True
......
1641 1965
            GVSPKG_ROOT = arg
1642 1966
        else:
1643 1967
            assert False, "unhandled option"
1644
    # 
1968
    #
1645 1969
    debug("DEBUG=%s" % DEBUG)
1646 1970
    debug("VERSION=%s" % VERSION)
1647 1971
    debug("GVSPKG_ROOT=%s" % GVSPKG_ROOT)
1648 1972
    if GVSPKG_ROOT == None:
1649
      help(None)
1973
      shorthelp(None)
1650 1974
    else:
1651
      executeCommand(*args)
1975
      r=executeCommand(*args)
1976
      sys.exit(r)
1652 1977

  
1653
main()
1654

  
1978
main()

Also available in: Unified diff