Add %dir, %config, %manifest support.
authorRonan Le Martret <ronan@fridu.net>
Fri, 11 Jul 2014 13:21:15 +0000 (15:21 +0200)
committerRonan Le Martret <ronan@fridu.net>
Fri, 11 Jul 2014 13:21:15 +0000 (15:21 +0200)
Change-Id: Iae404c2672b4d872b80922b359eeafbc3af06904

proto-meta-Tizen_generic/rpm_tizen_macro/lib/tizen_macros
tools/spec2yocto.py

index 55a2910..0ecbfe2 100644 (file)
 # Tizen
 #
 %configure \
-  %{_configure} --build=%{_build} --host=%{_host} \\\
-        --target=%{_target_platform} \\\
-        --program-prefix=%{?_program_prefix} \\\
-        --prefix=%{_prefix} \\\
-        --exec-prefix=%{_exec_prefix} \\\
-        --bindir=%{_bindir} \\\
-        --sbindir=%{_sbindir} \\\
-        --sysconfdir=%{_sysconfdir} \\\
-        --datadir=%{_datadir} \\\
-        --includedir=%{_includedir} \\\
-        --libdir=%{_libdir} \\\
-        --libexecdir=%{_libexecdir} \\\
-        --localstatedir=%{_localstatedir} \\\
-        --sharedstatedir=%{_sharedstatedir} \\\
-        --mandir=%{_mandir} \\\
-        --infodir=%{_infodir}
-
+  %{_configure} 
 
 %reconfigure \
-  %{_configure} --build=%{_build} --host=%{_host} \\\
-        --target=%{_target_platform} \\\
-        --program-prefix=%{?_program_prefix} \\\
-        --prefix=%{_prefix} \\\
-        --exec-prefix=%{_exec_prefix} \\\
-        --bindir=%{_bindir} \\\
-        --sbindir=%{_sbindir} \\\
-        --sysconfdir=%{_sysconfdir} \\\
-        --datadir=%{_datadir} \\\
-        --includedir=%{_includedir} \\\
-        --libdir=%{_libdir} \\\
-        --libexecdir=%{_libexecdir} \\\
-        --localstatedir=%{_localstatedir} \\\
-        --sharedstatedir=%{_sharedstatedir} \\\
-        --mandir=%{_mandir} \\\
-        --infodir=%{_infodir}
+  %{_configure} 
 
 %autogen \
   %reconfigure
index ec3d52b..3e75610 100755 (executable)
@@ -1155,6 +1155,10 @@ Group: devel
         return a list of file
         '''
         res_list = []
+        config_list=[]
+        manifest_list=[]
+        dir_list=[]
+        
         for line in self.__spect_dico[package_section_name][1:]:
             if not line.startswith( "%" ) and not line == "":
                 line = line.replace( "//", "/" )
@@ -1169,13 +1173,26 @@ Group: devel
                 res_list.append( line.replace( "%doc ", "" ) )
             elif line.startswith( "%dir " ):
                 line = line.replace( "//", "/" )
-                res_list.append( line.replace( "%dir ", "" ) )
+                
+                file_name = line.replace( "%dir ", "" )
+                dir_list.append( file_name )
+                
+                res_list.append( file_name )
             elif line.startswith( "%config " ):
                 line = line.replace( "//", "/" )
-                res_list.append( line.replace( "%config ", "" ) )
+                
+                file_name = line.replace( "%config ", "" )
+                config_list.append( file_name )
+                
+                res_list.append( file_name )
             elif line.startswith( "%manifest " ):
                 line = line.replace( "//", "/" )
-                res_list.append( line.replace( "%manifest ", "" ) )
+                
+                file_name = line.replace( "%manifest ", "" )
+                manifest_list.append( file_name )
+                
+                #res_list.append( file_name )
+                
             elif line.startswith( "%config(noreplace) " ):
                 line = line.replace( "//", "/" )
                 res_list.append( line.replace( "%config(noreplace) ", "" ) )
@@ -1187,7 +1204,8 @@ Group: devel
             else:
                 pass
 
-        return res_list
+        #return res_list,config_list
+        return res_list,config_list, manifest_list, dir_list
 
     def get_script_from_section(self, __flag):
         '''
@@ -1226,8 +1244,8 @@ Group: devel
                 package_name = self.__base_name
 
             package_name = package_name.replace( " ", "" )
-            res_files_list = self.get_files_list_from_section( package_section_name )
-            res_dico[ package_name ] = res_files_list
+            res_list,config_list, manifest_list, dir_list = self.get_files_list_from_section( package_section_name )
+            res_dico[ package_name ] = res_list,config_list, manifest_list, dir_list
 
         #db_src=self.__base_name+"-debugsource"
         #if db_src not in res_dico:
@@ -1441,10 +1459,10 @@ class MetaSpec:
             for p_provide in self.__provides_dico[k_provide]:
                 provides_list.append( p_provide[0] )
         for p_provide in self.__packages_dico.keys():
-            provides_list.extend( self.__packages_dico[p_provide] )
+            provides_list.extend( self.__packages_dico[p_provide][0] )
 
         for package in self.__packages_dico.keys():
-            for pkg_file in self.__packages_dico[package]:
+            for pkg_file in self.__packages_dico[package][0]:
                 pkgconfig_name_res = re.findall( RePattern.pkgconfig_name, pkg_file )
                 for tmp_res in pkgconfig_name_res:
                     provides_list.append( "pkgconfig(%s)" % tmp_res )
@@ -1460,7 +1478,7 @@ class MetaSpec:
             for p_provide in self.__provides_dico[k_provide]:
                 provides_list.append( p_provide[0] )
         for p_provide in self.__packages_dico.keys():
-            provides_list.extend( self.__packages_dico[p_provide] )
+            provides_list.extend( self.__packages_dico[p_provide][0] )
 
         MetaSpec.mExtraRProvidesDico[self.__package_name] = provides_list
 
@@ -1532,8 +1550,8 @@ class MetaSpec:
                     pkg_yocto_name=pkg_yocto_name.replace("-devel","-dev")
 
                 file_d.write( "%s_files = \"\"\n" % pkg_yocto_name )
-
-                for pkg_f in self.__packages_dico[package]:
+                pkg_list, config_list, manifest_list, dir_list  = self.__packages_dico[package]
+                for pkg_f in pkg_list:
                     pkg_f=pkg_f.strip()
 
                     if  pkg_f.startswith( _license ):
@@ -1541,7 +1559,25 @@ class MetaSpec:
                     else:
                         pkg_yocto_name = package.replace("-devel","-dev")
                         file_d.write( "%s_files += \"%s\"\n" % ( pkg_yocto_name, pkg_f ) )
+                        
+                pkg_yocto_name_short = pkg_yocto_name.replace( self.__package_name, "${PN}" )  
+                
+                if len(config_list)>0:
+                    file_d.write( "CONFFILES_%s = \"\"\n" % ( pkg_yocto_name_short ) )
+                for pkg_f in config_list:
+                    file_d.write( "CONFFILES_%s += \"%s\"\n" % ( pkg_yocto_name_short, pkg_f ) )
+                
+                if (len(manifest_list) == 1) :
+                    file_d.write( "MANIFESTFILES_%s = \"%s\"\n" % ( pkg_yocto_name_short, manifest_list[0] ) )
+                elif (len(manifest_list) > 1) :
+                    msg="ERROR Too many manifest for %s" % pkg_yocto_name_short
+                    print >> sys.stderr, colorize( msg, "red" )
 
+                if len(dir_list)>0:
+                    file_d.write( "DIRFILES_%s = \"\"\n" % ( pkg_yocto_name_short ) )
+                for pkg_f in dir_list:
+                    file_d.write( "DIRFILES_%s += \"%s\"\n" % ( pkg_yocto_name_short, pkg_f ) )
+                    
                 file_d.write( "\n" )
 
             for package in self.__packages_dico.keys():
@@ -1573,12 +1609,34 @@ class MetaSpec:
         file_d.write( "\n" )
 
     def __create_compile( self ,file_d):
+        EXTRA_OECONF = None
         code=self.__spec_parser.get_build_section()
         code=code.replace("\n","\n ")
         
         file_d.write( "do_compile() {\n" )
-        file_d.write( " %s\n" % code )
+        if  code.count("autotools_do_configure") == 1 :
+              code_line=code.replace("\\\n"," ").split("\n")
+              for line in code_line:
+                  if "autotools_do_configure" in line:
+                      EXTRA_OECONF = line.split("autotools_do_configure")[1]
+                      file_d.write( "  autotools_do_configure\n" )
+                  else:
+                      file_d.write( " %s\n" % line )
+              
+              
+        elif  code.count("autotools_do_configure") > 1 :
+            msg="ERROR more than 1 autotools_do_configure for \"%s\"" % self.__package_name
+            print >> sys.stderr, colorize( msg, "red" )
+        
+        else:
+            file_d.write( " %s\n" % code )
+            
         file_d.write( "}\n" )
+        if EXTRA_OECONF is not None:
+            while EXTRA_OECONF.count("  "):
+                EXTRA_OECONF=EXTRA_OECONF.replace("  "," ")
+            file_d.write( "EXTRA_OECONF += \"%s\"\n" % EXTRA_OECONF )
+            
         file_d.write( "\n" )
 
     def __create_install( self ,file_d):