diff -ur -x .hg pungi/pungi pungi_stages/pungi
--- pungi/pungi	2007-05-30 16:03:58.000000000 +0200
+++ pungi_stages/pungi	2007-05-30 17:56:14.000000000 +0200
@@ -101,7 +101,7 @@
 
     # Actually do work.
     if not config.get('default', 'arch') == 'source':
-        if opts.do_all or opts.do_gather:
+        if opts.do_gather:
             mygather = pypungi.gather.Gather(config, pkglist)
             mygather.getPackageObjects()
             mygather.downloadPackages()
@@ -111,17 +111,17 @@
 
         mypungi = pypungi.pungi.Pungi(config)
 
-        if opts.do_all or opts.do_buildinstall:
+        if opts.do_buildinstall:
            mypungi.doBuildinstall()
            mypungi.doGetRelnotes()
 
-        if opts.do_all or opts.do_packageorder:
+        if opts.do_packageorder:
            mypungi.doPackageorder()
 
-        if opts.do_all or opts.do_splittree:
+        if opts.do_splittree:
              mypungi.doSplittree()
 
-        if opts.do_all or opts.do_createiso:
+        if opts.do_createiso:
            mypungi.doCreateSplitrepo()
            mypungi.doCreateIsos()
 
@@ -133,10 +133,10 @@
                                       config.get('default', 'version'),
                                       config.get('default', 'flavor'),
                                       'source', 'SRPM')
-        if opts.do_all or opts.do_splittree:
+        if opts.do_splittree:
             mypungi.doSplitSRPMs()
 
-        if opts.do_all or opts.do_createiso:
+        if opts.do_createiso:
             mypungi.doCreateIsos()
 
 if __name__ == '__main__':
@@ -165,7 +165,29 @@
 
         (opts, args) = parser.parse_args()
         if opts.do_gather or opts.do_buildinstall or opts.do_packageorder or opts.do_splittree or opts.do_createiso:
-            opts.do_all = False
+            stMin = 0#Maximum stage
+            stMax = 4#Minimum stage
+            #chosen stages
+            choSt=[ opts.do_gather, opts.do_buildinstall, opts.do_packageorder, opts.do_splittree, opts.do_createiso ]
+
+            #Finding the minimum stage
+            for i in range(len(choSt)):
+                if choSt[i]:
+                   stMin = i
+                   break
+            #Finding the maximum stage
+            for i in range(len(choSt)):
+                if choSt[len(choSt)-1-i]:
+                    stMax = len(choSt)-1-i
+                    break
+            #Select what we are going to execute
+            for i in range(len(choSt)):
+                if i<stMin or i>stMax:choSt[i]=False
+                else:choSt[i]=True
+            [opts.do_gather,opts.do_buildinstall,opts.do_packageorder,opts.do_splittree,opts.do_createiso] = choSt
+        else:
+            opts.do_gather = opts.do_buildinstall = opts.do_packageorder = opts.do_splittree = opts.do_createiso= True
+ 
         if len(sys.argv) < 2:
             parser.print_help()
             sys.exit(0)
