Modify to copy necessary files per architecture 05/313105/3
authorSangYoun Kwak <sy.kwak@samsung.com>
Wed, 19 Jun 2024 01:35:53 +0000 (10:35 +0900)
committerSangYoun Kwak <sy.kwak@samsung.com>
Fri, 21 Jun 2024 09:26:37 +0000 (18:26 +0900)
In the .xml files, necessary files are specified and they are copied to
the final .rpm product. These files are depends on the architecture
being built.

Previously, necessary files are separated with only 32-bit and 64-bit,
but there are differences of necessary files between other
architectures, like x86_64 and i686.

Thus, tags below are added to distinguish them:
 * <file_arm> for armv7l and armv7hl
 * <file_aarch64> for aarch64
 * <file_i686> for i686
 * <file_x86_64> for x86_64

Change-Id: I9f7537b396e48036f4f73a366c15e4c3ccb5bd59
Signed-off-by: SangYoun Kwak <sy.kwak@samsung.com>
generate_rootstrap.sh
make_rootstrap.sh
make_rootstrap_64.sh
rs_resource/OSS/baserpm/glibc-rs.xml
rs_resource/OSS/glib2-rs.xml
rs_resource/OSS/libdrm-rs.xml
script/rootstrap_gen_1.0.sh
script/rootstrap_gen_1.0_64.sh

index 8f48d09a2e8c5c9c4cb086f7620b827695c77025..60465baad4111c5806570697de853f6d79cd21c8 100755 (executable)
@@ -19,7 +19,7 @@ function generate_rootstrap_ix86 {
                return $?
        fi
 
-       ./make_rootstrap.sh -C rs-config ./rs_resource --clean --emulator
+       ./make_rootstrap.sh -C rs-config ./rs_resource --clean --emulator -A i686
        RET=$?
        if [[ ${RET} -ne 0 ]]; then
                echo "Failed to create rootstrap."
@@ -35,7 +35,7 @@ function generate_rootstrap_x86_64 {
                return $?
        fi
 
-       ./make_rootstrap_64.sh -C rs-config ./rs_resource --clean --emulator
+       ./make_rootstrap_64.sh -C rs-config ./rs_resource --clean --emulator -A x86_64
        RET=$?
        if [[ ${RET} -ne 0 ]]; then
                echo "Failed to create rootstrap."
@@ -51,7 +51,7 @@ function generate_rootstrap_arm {
                return $?
        fi
 
-       ./make_rootstrap.sh -C rs-config ./rs_resource --clean --target
+       ./make_rootstrap.sh -C rs-config ./rs_resource --clean --target -A arm
        RET=$?
        if [[ ${RET} -ne 0 ]]; then
                echo "Failed to create rootstrap."
@@ -67,7 +67,23 @@ function generate_rootstrap_aarch64 {
                return $?
        fi
 
-       ./make_rootstrap_64.sh -C rs-config ./rs_resource --clean --target
+       ./make_rootstrap_64.sh -C rs-config ./rs_resource --clean --target -A aarch64
+       RET=$?
+       if [[ ${RET} -ne 0 ]]; then
+               echo "Failed to create rootstrap."
+       fi
+
+       return ${RET}
+}
+
+function generate_rootstrap_riscv64 {
+       ./script/convert64.sh
+       if [[ $? -ne 0 ]]; then
+               echo "Failed to convert .xml files into 64-bit"
+               return $?
+       fi
+
+       ./make_rootstrap_64.sh -C rs-config ./rs_resource --clean --target -A riscv64
        RET=$?
        if [[ ${RET} -ne 0 ]]; then
                echo "Failed to create rootstrap."
@@ -96,6 +112,10 @@ function generate_rootstrap {
                        generate_rootstrap_x86_64
                        return $?
                        ;;
+               "riscv64")
+                       generate_rootstrap_riscv64
+                       return $?
+                       ;;
                *)
                        echo "Architecture not supported: ${arch}"
                        exit 1
index b49b2d7b688f3479ad166f06261bef9d0ec460dc..c36ce6ebf6159a6e08b9dc0e411c495a75a87605 100755 (executable)
@@ -77,9 +77,9 @@ function callRootstrapGen () {
 
        if [[ -z ${3} ]]
        then
-               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} ${xmlList}"
+               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} -A ${OPT_ARCH} ${xmlList}"
        else
-               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -b ${3} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} ${xmlList}"
+               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -b ${3} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} -A ${OPT_ARCH} ${xmlList}"
        fi
 
        FULL_RS_INFO_CMD="${CMD_RS_INFO} -t $1 -l ${xmlList} -p $PLATFORM_PROFILE -v $PLATFORM_VERSION"
@@ -144,6 +144,7 @@ OPT_EMULATOR=false
 OPT_DOWNLOAD_RPM=false
 OPT_CLEAN=true
 OPT_CONF=""
+OPT_ARCH=""
 INTERNAL=false
 
 ###############################################################################
@@ -155,6 +156,7 @@ function usage () {
        echo "    -e, --emulator      : Make Rootstrap for Emulator"
        echo "    -t, --target        : Make Rootstrap for Target"
        echo "    -c, --clean        : Delete .rpm cache folder"
+       echo "    -A, --arch         : Architecture for building"
        echo "    -h, --help"
        echo "    -v, --version       : Display script version information"
        echo ""
@@ -178,7 +180,7 @@ function usage () {
 ###############################################################################
 ## Get Parameter
 ###############################################################################
-OPTS=`getopt -o -C:tedchv --long target,emulator,downloadrpm,clean,help,version,internal -- "$@"`
+OPTS=`getopt -o -A:C:tedchv --long target,emulator,downloadrpm,clean,help,version,internal -- "$@"`
 if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
 
 echo ""
@@ -187,6 +189,7 @@ eval set -- "$OPTS"
 
 while true; do
        case "$1" in
+               -A )OPT_ARCH=$2;shift;shift;;
                -C | --conf )OPT_CONF=$2;shift;shift;;
                -t | --target )OPT_TARGET=true;shift;;
                -e | --emulator )OPT_EMULATOR=true;shift;;
@@ -239,6 +242,11 @@ if [[ "$xmlList" == "" ]]; then
        exit 1
 fi
 
+if [[ -z ${OPT_ARCH} ]]; then
+       log "[Error] No architecture specified"
+       exit 1
+fi
+
 if [[ -e ${OPT_CONF} ]]; then
        log "source ${OPT_CONF}"
        source "${OPT_CONF}"
index bd704bee2d8aa2118adece5f7e0d2075803ff2ce..740a9592c5a37f316a3c9bc27efecd901fa24906 100755 (executable)
@@ -77,9 +77,9 @@ function callRootstrapGen () {
 
        if [[ -z ${3} ]]
        then
-               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} ${xmlList}"
+               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} -A ${OPT_ARCH} ${xmlList}"
        else
-               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -b ${3} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} ${xmlList}"
+               FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -b ${3} -q ${BUILD_REQUIRED_INSTALLED_PATH} -r ${GBS_BUILDROOT} -A ${OPT_ARCH} ${xmlList}"
        fi
 
        FULL_RS_INFO_CMD="${CMD_RS_INFO} -t $1 -l ${xmlList} -p $PLATFORM_PROFILE -v $PLATFORM_VERSION"
@@ -144,6 +144,7 @@ OPT_EMULATOR=false
 OPT_DOWNLOAD_RPM=false
 OPT_CLEAN=true
 OPT_CONF=""
+OPT_ARCH=""
 INTERNAL=false
 
 ###############################################################################
@@ -155,6 +156,7 @@ function usage () {
        echo "    -e, --emulator      : Make Rootstrap for Emulator"
        echo "    -t, --target        : Make Rootstrap for Target"
        echo "    -c, --clean        : Delete .rpm cache folder"
+       echo "    -A, --arch         : Architecture for building"
        echo "    -h, --help"
        echo "    -v, --version       : Display script version information"
        echo ""
@@ -178,7 +180,7 @@ function usage () {
 ###############################################################################
 ## Get Parameter
 ###############################################################################
-OPTS=`getopt -o -C:tedchv --long target,emulator,downloadrpm,clean,help,version,internal -- "$@"`
+OPTS=`getopt -o -A:C:tedchv --long target,emulator,downloadrpm,clean,help,version,internal -- "$@"`
 if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
 
 echo ""
@@ -187,6 +189,7 @@ eval set -- "$OPTS"
 
 while true; do
        case "$1" in
+               -A )OPT_ARCH=$2;shift;shift;;
                -C | --conf )OPT_CONF=$2;shift;shift;;
                -t | --target )OPT_TARGET=true;shift;;
                -e | --emulator )OPT_EMULATOR=true;shift;;
@@ -239,6 +242,11 @@ if [[ "$xmlList" == "" ]]; then
        exit 1
 fi
 
+if [[ -z ${OPT_ARCH} ]]; then
+       log "[Error] No architecture specified"
+       exit 1
+fi
+
 if [[ -e ${OPT_CONF} ]]; then
        log "source ${OPT_CONF}"
        source "${OPT_CONF}"
index 41d54d8eee3fdba3badc220d15efa369d847ce4d..65fdd51bb3e0ed838d11ec48031c998f88a6f070 100644 (file)
     <file>/usr/lib/Mcrt1.o</file>
     <file>/usr/lib/Scrt1.o</file>
     <file>/usr/include/gnu/*.h</file>
-    <file>/usr/include/sys/debugreg.h</file>
-    <file>/usr/include/sys/io.h</file>
-    <file>/usr/include/sys/perm.h</file>
-    <file>/usr/include/sys/reg.h</file>
-    <file>/usr/include/sys/vm86.h</file>
 
-    <file_32>/lib/ld-linux.so.*</file_32>
+    <file_arm>/lib/ld-linux.so.*</file_arm>
 
-    <file_64>/lib64/ld-linux-*</file_64>
-    <file_64>/lib/ld-linux-*</file_64>
-    <file_64>/usr/include/sys/ifunc.h$</file_64>
+    <file_i686>/lib/ld-linux.so.*</file_i686>
+    <file_i686>/usr/include/sys/debugreg.h</file_i686>
+    <file_i686>/usr/include/sys/io.h</file_i686>
+    <file_i686>/usr/include/sys/perm.h</file_i686>
+    <file_i686>/usr/include/sys/reg.h</file_i686>
+    <file_i686>/usr/include/sys/vm86.h</file_i686>
+
+    <file_aarch64>/lib64/ld-linux-*</file_aarch64>
+    <file_aarch64>/lib/ld-linux-*</file_aarch64>
+    <file_aarch64>/usr/include/sys/ifunc.h</file_aarch64>
+
+    <file_x86_64>/lib64/ld-linux-*</file_x86_64>
+    <file_x86_64>/usr/include/sys/debugreg.h</file_x86_64>
+    <file_x86_64>/usr/include/sys/io.h</file_x86_64>
+    <file_x86_64>/usr/include/sys/perm.h</file_x86_64>
+    <file_x86_64>/usr/include/sys/reg.h</file_x86_64>
+    <file_x86_64>/usr/include/sys/vm86.h</file_x86_64>
   </necessary>
 
   <unnecessary>
index 313f017ea0416801710d3b6d3f67be1ec71d6350..7eeab6969cb312a926ea0a0699ecccbd58924107 100644 (file)
     <file>/usr/lib/libgthread-2.0.so.0</file>
     <file>/usr/lib/libgthread-2.0.so.0.7800.4</file>
 
-    <file_32>/usr/share/gdb/auto-load/usr/lib/libglib-2.0.so.0.7800.4-gdb.py</file_32>
-    <file_32>/usr/share/gdb/auto-load/usr/lib/libgobject-2.0.so.0.7800.4-gdb.py</file_32>
+    <file_arm>/usr/share/gdb/auto-load/usr/lib/libglib-2.0.so.0.7800.4-gdb.py</file_arm>
+    <file_arm>/usr/share/gdb/auto-load/usr/lib/libgobject-2.0.so.0.7800.4-gdb.py</file_arm>
 
-    <file_64>/usr/share/gdb/auto-load/usr/lib64/libglib-2.0.so.0.7800.4-gdb.py</file_64>
-    <file_64>/usr/share/gdb/auto-load/usr/lib64/libgobject-2.0.so.0.7800.4-gdb.py</file_64>
+    <file_i686>/usr/share/gdb/auto-load/usr/lib/libglib-2.0.so.0.7800.4-gdb.py</file_i686>
+    <file_i686>/usr/share/gdb/auto-load/usr/lib/libgobject-2.0.so.0.7800.4-gdb.py</file_i686>
+
+    <file_aarch64>/usr/share/gdb/auto-load/usr/lib64/libglib-2.0.so.0.7800.4-gdb.py</file_aarch64>
+    <file_aarch64>/usr/share/gdb/auto-load/usr/lib64/libgobject-2.0.so.0.7800.4-gdb.py</file_aarch64>
+
+    <file_x86_64>/usr/share/gdb/auto-load/usr/lib64/libglib-2.0.so.0.7800.4-gdb.py</file_x86_64>
+    <file_x86_64>/usr/share/gdb/auto-load/usr/lib64/libgobject-2.0.so.0.7800.4-gdb.py</file_x86_64>
   </necessary>
 
   <include_path>/usr/include/gio-unix-2.0</include_path>
index 38808a9258f260d28238efc7cb9b55c207a5c0a2..ffc7d8122833a0833b22aeb7111f9dc55f96d082 100644 (file)
@@ -35,8 +35,6 @@
     <file>/usr/include/libdrm/sis_drm.h</file>
     <file>/usr/include/libdrm/tegra_drm.h</file>
     <file>/usr/include/libdrm/vc4_drm.h</file>
-    <file>/usr/include/libdrm/vc4_packet.h</file>
-    <file>/usr/include/libdrm/vc4_qpu_defines.h</file>
     <file>/usr/include/libdrm/via_drm.h</file>
     <file>/usr/include/libdrm/vigs.h</file>
     <file>/usr/include/libdrm/virtgpu_drm.h</file>
     <file>/usr/lib/libdrm_vigs.so</file>
     <file>/usr/lib/libdrm_vigs.so.10</file>
     <file>/usr/lib/libdrm_vigs.so.10.0.0</file>
+
+    <file_armv7l>/usr/include/libdrm/vc4_packet.h</file_armv7l>
+    <file_armv7l>/usr/include/libdrm/vc4_qpu_defines.h</file_armv7l>
+
+    <file_aarch64>/usr/include/libdrm/vc4_packet.h</file_aarch64>
+    <file_aarch64>/usr/include/libdrm/vc4_qpu_defines.h</file_aarch64>
+
+    <file_i686>/usr/include/libdrm/intel_aub.h</file_i686>
+    <file_i686>/usr/include/libdrm/intel_bufmgr.h</file_i686>
+    <file_i686>/usr/include/libdrm/intel_debug.h</file_i686>
+    <file_i686>/usr/lib/libdrm_intel.so</file_i686>
+
+    <file_x86_64>/usr/include/libdrm/intel_aub.h</file_x86_64>
+    <file_x86_64>/usr/include/libdrm/intel_bufmgr.h</file_x86_64>
+    <file_x86_64>/usr/include/libdrm/intel_debug.h</file_x86_64>
+    <file_x86_64>/usr/lib64/libdrm_intel.so</file_x86_64>
   </necessary>
 </rootstrap>
index 733833f107b8ec0489f5d3f4363902cae4b787b1..7dd893529b31d8366d6c91010e06521404e1e3ba 100755 (executable)
@@ -181,6 +181,8 @@ function copy_header_and_so()
        local src_dir=$1
        local dest_dir=$2
        local xml_file=$3
+       local build_arch=$4
+       local file_tag="file_${build_arch}"
        local copy_error=0
        local dest_path=""
        local -a files
@@ -198,7 +200,7 @@ function copy_header_and_so()
        else
                log "+ copy necessary files .."
                necessary_files=($(xmlstarlet sel -t -m "//necessary/file" -o "." -v "text()" -o " " -n  ${xml_file}))
-               necessary_files+=($(xmlstarlet sel -t -m "//necessary/file_32" -o "." -v "text()" -o " " -n  ${xml_file}))
+               necessary_files+=($(xmlstarlet sel -t -m "//necessary/${file_tag}" -o "." -v "text()" -o " " -n  ${xml_file}))
                for i in ${necessary_files[@]}; do
                        cd ${src_dir}
                        log "+ copy file from [${i}]"
@@ -273,7 +275,7 @@ function check_prerequisite()
 #script start
 check_prerequisite
 
-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' -- "$@"`
+OPTS=`getopt -o -A:t:u:b:l:i:p:whq:r: --long type:,url:,base:,list:,id:,pw:,withlogin,help,internal,log: -n 'rootstrap_gen_1.0' -- "$@"`
 if [ $? != 0 ] ; then log "Failed parsing options." >&2 ; exit 1 ; fi
 
 log ""
@@ -285,11 +287,13 @@ RPM_PKG_URL=""
 BASE_PKG_URL=""
 XML_INPUT_LIST=""
 INTERNAL=false
+BUILD_ARCH=""
 
 while true; do
   case "$1" in
     -q ) BUILD_REQUIRED_INSTALLED_PATH="$2"; shift;shift ;;
     -r ) GBS_BUILDROOT="$2"; shift;shift ;;
+    -A ) BUILD_ARCH="$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 ;;
@@ -436,7 +440,7 @@ do
     fi
 
     #copy only header & so to dest
-    copy_header_and_so ${BUILD_REQUIRED_INSTALLED_PATH} ${GBS_BUILDROOT} ${item}
+    copy_header_and_so ${BUILD_REQUIRED_INSTALLED_PATH} ${GBS_BUILDROOT} ${item} ${BUILD_ARCH}
     if [[ $? -ne 0 ]]; then
         echo "Failed to copy_header_and_so for ${item}, skip."
         continue
index eb4ca84a869d45876ef04d749fda04961b703dd7..555142a1d887d6b17d0a45cc3dfac2224b504302 100755 (executable)
@@ -181,6 +181,8 @@ function copy_header_and_so()
        local src_dir=$1
        local dest_dir=$2
        local xml_file=$3
+       local build_arch=$4
+       local file_tag="file_${build_arch}"
        local copy_error=0
        local dest_path=""
        local -a files
@@ -198,7 +200,7 @@ function copy_header_and_so()
        else
                log "+ copy necessary files .."
                necessary_files=($(xmlstarlet sel -t -m "//necessary/file" -o "." -v "text()" -o " " -n  ${xml_file}))
-               necessary_files+=($(xmlstarlet sel -t -m "//necessary/file_64" -o "." -v "text()" -o " " -n  ${xml_file}))
+               necessary_files+=($(xmlstarlet sel -t -m "//necessary/${file_tag}" -o "." -v "text()" -o " " -n  ${xml_file}))
                for i in ${necessary_files[@]}; do
                        cd ${src_dir}
                        log "+ copy file from [${i}]"
@@ -273,7 +275,7 @@ function check_prerequisite()
 #script start
 check_prerequisite
 
-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' -- "$@"`
+OPTS=`getopt -o -A: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 ""
@@ -285,11 +287,13 @@ RPM_PKG_URL=""
 BASE_PKG_URL=""
 XML_INPUT_LIST=""
 INTERNAL=false
+BUILD_ARCH=""
 
 while true; do
   case "$1" in
     -q ) BUILD_REQUIRED_INSTALLED_PATH="$2"; shift;shift ;;
     -r ) GBS_BUILDROOT="$2"; shift;shift ;;
+    -A ) BUILD_ARCH="$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 ;;
@@ -436,7 +440,7 @@ do
     fi
 
     #copy only header & so to dest
-    copy_header_and_so ${BUILD_REQUIRED_INSTALLED_PATH} ${GBS_BUILDROOT} ${item}
+    copy_header_and_so ${BUILD_REQUIRED_INSTALLED_PATH} ${GBS_BUILDROOT} ${item} ${BUILD_ARCH}
     if [[ $? -ne 0 ]]; then
         echo "Failed to copy_header_and_so for ${item}, skip."
         continue