Modify to be buildable for 64-bit architectures
authorSangYoun Kwak <sy.kwak@samsung.com>
Fri, 17 May 2024 10:22:50 +0000 (19:22 +0900)
committerSangYoun Kwak <sy.kwak@samsung.com>
Mon, 27 May 2024 04:54:46 +0000 (13:54 +0900)
To make hal-rootstrap buildable for 64-bit architectures, required
scripts are modified as 32-bit scripts:
 * make_rootstrap_64.sh
 * rootstrap_gen_1.0_64.sh

Change-Id: I76dd7deaecf526903adc5eee512a5a4024f13793
Signed-off-by: SangYoun Kwak <sy.kwak@samsung.com>
make_rootstrap_64.sh
packaging/hal-rootstrap.spec
script/rootstrap_gen_1.0_64.sh

index 2916cdc87e6e33ab6ae43b924a1783dd0431bfb6..bd704bee2d8aa2118adece5f7e0d2075803ff2ce 100755 (executable)
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+DEBUG_MODE=1
+
 SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
 SCRIPT_FULLPATH="$(readlink -f ${BASH_SOURCE[0]})"
 SCRIPT_BASE="$(dirname ${SCRIPT_FULLPATH})"
@@ -75,9 +77,9 @@ function callRootstrapGen () {
 
        if [[ -z ${3} ]]
        then
-               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} ${xmlList}"
+               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} ${xmlList}"
        else
-               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -b ${3} ${xmlList}"
+               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -b ${3} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} ${xmlList}"
        fi
 
        FULL_RS_INFO_CMD="${CMD_RS_INFO} -t $1 -l ${xmlList} -p $PLATFORM_PROFILE -v $PLATFORM_VERSION"
@@ -317,36 +319,36 @@ if [ "$OPT_TARGET" = true ]; then
        remove_dir ${DIR_TMP} ${DIR_TARGET}
        callRootstrapGen target ${RPM_PKG_SVR_TARGET} ${BASE_PKG_SVR_TARGET}
 
-       log "[INFO] Postscript ${DIR_TARGET}";
+       log "[INFO] Postscript ${GBS_BUILDROOT}";
 
-       mv ${DIR_TARGET}/usr/include/asm-arm64 ${DIR_TARGET}/usr/include/asm
-       mv ${DIR_TARGET}/usr/include/base/deprecated/* ${DIR_TARGET}/usr/include/base/
+       mv ${GBS_BUILDROOT}/usr/include/asm-arm64 ${GBS_BUILDROOT}/usr/include/asm
+       mv ${GBS_BUILDROOT}/usr/include/base/deprecated/* ${GBS_BUILDROOT}/usr/include/base/
 
        if [ "$INTERNAL" = false ]; then
                echo "remove Non-Public EFL API"
-               $CMD_API_FILTER .target>/dev/null #EFL filter
+               $CMD_API_FILTER ${GBS_BUILDROOT} > /dev/null #EFL filter
                echo "remove Non-Public GDBUS API"
-               $CMD_API_GDBUS_FILTER .target>/dev/null #GDBUS filter
+               $CMD_API_GDBUS_FILTER ${GBS_BUILDROOT} > /dev/null #GDBUS filter
        fi
        #echo "remove Public GDBUS API"
-       #$CMD_API_GDBUS_FILTER .target>/dev/null #GDBUS filter 
+       #$CMD_API_GDBUS_FILTER .target>/dev/null #GDBUS filter
 
        if [ "$INTERNAL" = true ]; then
                log "[INFO] Skip .. removing dlog-internal.h"
-               find ${DIR_TARGET} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+               find ${GBS_BUILDROOT} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
        else
-               find ${DIR_TARGET} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+               find ${GBS_BUILDROOT} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
        fi
 
-       if [ ! -d "${DIR_TARGET}/usr/lib" ]; then
-               mkdir -p ${DIR_TARGET}/usr/lib
+       if [ ! -d "${GBS_BUILDROOT}/usr/lib" ]; then
+               mkdir -p ${GBS_BUILDROOT}/usr/lib
        fi
 
-       if [ ! -d "${DIR_TARGET}/usr/lib64" ]; then
-               mkdir -p ${DIR_TARGET}/usr/lib64
+       if [ ! -d "${GBS_BUILDROOT}/usr/lib64" ]; then
+               mkdir -p ${GBS_BUILDROOT}/usr/lib64
        fi
 
-       for FILE in $(find ${DIR_TARGET} -name "*.so.*mobile");
+       for FILE in $(find ${GBS_BUILDROOT} -name "*.so.*mobile");
        do
                mv ${FILE} ${FILE%.mobile};
        done;
@@ -356,10 +358,10 @@ if [ "$OPT_EMULATOR" = true ]; then
        remove_dir ${DIR_TMP} ${DIR_EMULATOR}
        callRootstrapGen emulator ${RPM_PKG_SVR_EMULATOR} ${BASE_PKG_SVR_EMULATOR}
 
-       log "[INFO] Postscript ${DIR_EMULATOR}";
+       log "[INFO] Postscript ${GBS_BUILDROOT}";
 
-       mv ${DIR_EMULATOR}/usr/include/asm-ia64 ${DIR_EMULATOR}/usr/include/asm
-       mv ${DIR_EMULATOR}/usr/include/base/deprecated/* ${DIR_EMULATOR}/usr/include/base/
+       mv ${GBS_BUILDROOT}/usr/include/asm-ia64 ${GBS_BUILDROOT}/usr/include/asm
+       mv ${GBS_BUILDROOT}/usr/include/base/deprecated/* ${GBS_BUILDROOT}/usr/include/base/
 
        if [ "$INTERNAL" = false ]; then
                echo "remove Non-Public EFL API"
@@ -372,21 +374,21 @@ if [ "$OPT_EMULATOR" = true ]; then
 
        if [ "$INTERNAL" = true ]; then
                log "[INFO] Skip .. removing dlog-internal.h"
-               find ${DIR_EMULATOR} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+               find ${GBS_BUILDROOT} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
        else
-               find ${DIR_EMULATOR} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+               find ${GBS_BUILDROOT} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
        fi
 
-       if [ ! -d "${DIR_EMULATOR}/usr/lib" ]; then
-               mkdir -p ${DIR_EMULATOR}/usr/lib
+       if [ ! -d "${GBS_BUILDROOT}/usr/lib" ]; then
+               mkdir -p ${GBS_BUILDROOT}/usr/lib
        fi
 
 
-       if [ ! -d "${DIR_EMULATOR}/usr/lib64" ]; then
-               mkdir -p ${DIR_EMULATOR}/usr/lib64
+       if [ ! -d "${GBS_BUILDROOT}/usr/lib64" ]; then
+               mkdir -p ${GBS_BUILDROOT}/usr/lib64
        fi
 
-       for FILE in $(find ${DIR_EMULATOR} -name "*.so.*mobile");
+       for FILE in $(find ${GBS_BUILDROOT} -name "*.so.*mobile");
        do
                mv ${FILE} ${FILE%.mobile};
        done;
index 4ecfd04babd35fb42c2a73f26c64d3df75f8814a..09e69022a329e0e16cc2c7237058d786146c7251 100644 (file)
@@ -9,7 +9,6 @@ Release:        1
 #Group: 
 License:       Apache-2.0
 Source0:       %{name}-%{version}.tar.gz
-ExclusiveArch:  %{arm} %{ix86}
 AutoReqProv:    no
 
 BuildRequires: cmake
@@ -440,7 +439,7 @@ cp packaging/hal-rootstrap.pc %{buildroot}%{_libdir}/pkgconfig/
 
 %files
 %{hal_rootstrap_install_path}/etc/*
-%{hal_rootstrap_install_path}/lib/*
+%{hal_rootstrap_install_path}/%{_lib}/*
 %{hal_rootstrap_install_path}/usr/share/*
 %{hal_rootstrap_install_path}/%{_libdir}/*
 
index 37de889a6ede39a0c4fff8b261373aaeed74d239..49fc02441e916004964a0ba10a1ca1b96ecc45ee 100755 (executable)
@@ -176,58 +176,84 @@ function unnecessary_files()
 
 }
 
-function copy_header_and_so() # $1 : SRCDIR, $2 : DESTDIR, $3 xml
+function copy_header_and_so()
 {
-    log "***************** $FUNCNAME *****************"
-    ALL=$(xmlstarlet sel -t -m "//necessary[count(file)=1]" -v "./file/text()" ${3})
-    log "+ source directory : $1"
-    log "+ destination directory : $2"
-    log "+ xml source file : $3"
-
-    TEMP_SRC_DIR="${1}";
-    TEMP_DEST_DIR="${2}";
-    COPY_ERROR=0;
-    if [[ "${ALL}" == "*" ]] || [ "$INTERNAL" = true ]
-    then
-        (
-        log "+ copy ALL file (h, a, o, so)"
-        cd ${1}
-        find . \( -name "*.h" -o -name "*.a" -o -name "*.o" -o -name "*.so" -o -name "*.so\.[0-9]*" -o -name "*.hpp" -o -name "*.ipp" -o -name "*.x" -o -name "*.def" -o -name "*.so.*" \) \
-            -exec echo "+ copy file [{}]" \; \
-            -exec cp -L -R --parents {} ${2} \;
-        )
-    else
-        log "+ copy necessary files .."
-        for i in $(xmlstarlet sel -t -m "//necessary/file" -o "." -v "text()" -o " " -n  ${3})
-        do
-            #(
-            cd ${1}
-            log "+ copy file from [${i}]"
-            cp -L -R --parents ${i} ${2}
-            if [ "$?" -ne "0" ]; then
-                get_author "../${3}"
-                let "COPY_ERROR+=1"
-            fi
-           cd -
-            #)
-        done
-    fi
+       local src_dir=$1
+       local dest_dir=$2
+       local xml_file=$3
+       local copy_error=0
+       local files=()
+       local dest_path=""
+
+       log "***************** $FUNCNAME *****************"
+       ALL=$(xmlstarlet sel -t -m "//necessary[count(file)=1]" -v "./file/text()" ${xml_file})
+       log "+ source directory : ${src_dir}"
+       log "+ destination directory : ${dest_dir}"
+       log "+ xml source file : ${xml_file}"
+
+       if [[ "${ALL}" == "*" ]] || [[ "${INTERNAL}" == true ]]; then
+               log "ALL(*) and internal is not supported"
+               return 1
+       else
+               log "+ copy necessary files .."
+               for i in $(xmlstarlet sel -t -m "//necessary/file" -o "." -v "text()" -o " " -n  ${xml_file}); do
+                       cd ${src_dir}
+                       log "+ copy file from [${i}]"
+                       files=($(ls ${i}))
+                       for file in ${files[@]}; do
+                               dest_path="${dest_dir}/$(dirname ${file})"
+                               mkdir -p ${dest_path}
+                               cp -L -R ${file} "${dest_path}/."
+                               if [[ "$?" -ne "0" ]]; then
+                                       get_author "../${xml_file}"
+                                       let "COPY_ERROR+=1"
+                               fi
+                       done
+                       cd -
+               done
+       fi
+
+       if [[ "${copy_error}" -ne 0 ]]; then
+               log "Error Occurred Copy file .... "  1>&2
+               exit $ERROR_NOT_EXIST_FILE
+       fi
+
+       return 0
+}
 
-    if [ "$COPY_ERROR" -ne "0" ]; then
-        log "Error Occurred Copy file .... "  1>&2
-        exit $ERROR_NOT_EXIST_FILE
-    fi
-#######
-# Pc
-#######
-    if [ -d "${TEMP_SRC_DIR}/usr/lib64/pkgconfig" ]
-    then
-    (
-        cd ${TEMP_SRC_DIR}
-        cp -P -R --parents "./usr/lib64/pkgconfig"  "${TEMP_DEST_DIR}" ;
-    )
-    fi
+function copy_package_config()
+{
+       local src_dir=$1
+       local dest_dir=$2
+       local xml_file=$3
+
+       log "***************** $FUNCNAME *****************"
+       log "+ source directory : ${src_dir}"
+       log "+ destination dierctory : ${dest_dir}"
+       log "+ xml source file : ${xml_file}"
+
+       local pc_fname=''
+       local src_pc_file_path=''
+       local dest_pc_path="${dest_dir}/usr/lib64/pkgconfig"
+       local pc_fnames=($(xmlstarlet sel -t -v '//rootstrap/pkgconfig/file' ${item}))
 
+       if [[ -z ${pc_fnames[@]} ]]; then
+               pc_fnames=("$(xmlstarlet sel -t -v '//rootstrap/@name' ${item}).pc")
+       fi
+
+       for pc_fname in ${pc_fnames[@]}; do
+               src_pc_file_path="${src_dir}/usr/lib64/pkgconfig/${pc_fname}"
+
+               if [[ ! -f "${src_pc_file_path}" ]]; then
+                       log "+ no pkgconfig file(${src_pc_file_path})"
+                       return 1
+               fi
+
+               mkdir -p ${dest_pc_path}
+               cp -P "${src_pc_file_path}" "${dest_pc_path}/."
+       done
+
+       return 0
 }
 
 function check_prerequisite()
@@ -244,7 +270,7 @@ function check_prerequisite()
 #script start
 check_prerequisite
 
-OPTS=`getopt -o -t:u:b:l:i:p:wh --long type:,url:,base:,list:,id:,pw:,withlogin,help,internal,log: -n 'rootstrap_gen_1.0_64' -- "$@"`
+OPTS=`getopt -o -t:u:b:l:i:p:whq:r: --long type:,url:,base:,list:,id:,pw:,withlogin,help,internal,log: -n 'rootstrap_gen_1.0_64' -- "$@"`
 if [ $? != 0 ] ; then log "Failed parsing options." >&2 ; exit 1 ; fi
 
 log ""
@@ -259,6 +285,8 @@ INTERNAL=false
 
 while true; do
   case "$1" in
+    -q ) BUILD_REQUIRED_INSTALLED_PATH="$2"; shift;shift ;;
+    -r ) GBS_BUILDROOT="$2"; shift;shift ;;
     -t | --type ) ROOTSTRAP_TYPE="$2"; shift;shift ;;
     -u | --url ) RPM_PKG_URL="$2"; shift;shift ;;
     -b | --base ) BASE_PKG_URL="$2"; shift;shift ;;
@@ -404,21 +432,14 @@ do
         continue;
     fi
 
-    #download rpm
-    download_rpm $item
-    if [ "$?" -ne "0" ]
-    then
-        continue;
+    #copy only header & so to dest
+    copy_header_and_so ${BUILD_REQUIRED_INSTALLED_PATH} ${GBS_BUILDROOT} ${item}
+    if [[ $? -ne 0 ]]; then
+        echo "Failed to copy_header_and_so for ${item}, skip."
+        continue
     fi
-    #unpack rpm
-    unpack_rpm $item
 
-    #remove unnessary header, so
-    unnecessary_files $item
-
-    #copy only header & so to dest
-    copy_header_and_so ${TMP} ${DEST} ${item}
+    copy_package_config ${BUILD_REQUIRED_INSTALLED_PATH} ${GBS_BUILDROOT} ${item}
 
     #get build option from xml
     #get_build_option $item
@@ -435,5 +456,6 @@ do
 done
 log "Deleted needed field of so file"
 
+
 log "######################## END  [$SECONDS] Sec ##############################" 1>&2
 exit 0