xref: /OK3568_Linux_fs/yocto/scripts/bitbake-prserv-tool (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/usr/bin/env bash
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunhelp ()
7*4882a593Smuzhiyun{
8*4882a593Smuzhiyun    base=`basename $0`
9*4882a593Smuzhiyun    echo -e "Usage: $base command"
10*4882a593Smuzhiyun    echo "Avaliable commands:"
11*4882a593Smuzhiyun    echo -e "\texport <file.conf>: export and lock down the AUTOPR values from the PR service into a file for release."
12*4882a593Smuzhiyun    echo -e "\timport <file.conf>: import the AUTOPR values from the exported file into the PR service."
13*4882a593Smuzhiyun}
14*4882a593Smuzhiyun
15*4882a593Smuzhiyunclean_cache()
16*4882a593Smuzhiyun{
17*4882a593Smuzhiyun    s=`bitbake -e | grep ^CACHE= | cut -f2 -d\"`
18*4882a593Smuzhiyun    if [ "x${s}" != "x" ]; then
19*4882a593Smuzhiyun        rm -rf ${s}
20*4882a593Smuzhiyun    fi
21*4882a593Smuzhiyun}
22*4882a593Smuzhiyun
23*4882a593Smuzhiyundo_export ()
24*4882a593Smuzhiyun{
25*4882a593Smuzhiyun    file=$1
26*4882a593Smuzhiyun    [ "x${file}" == "x" ] && help && exit 1
27*4882a593Smuzhiyun    rm -f ${file}
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun    clean_cache
30*4882a593Smuzhiyun    bitbake -R conf/prexport.conf -p
31*4882a593Smuzhiyun    s=`bitbake -R conf/prexport.conf -e | grep ^PRSERV_DUMPFILE= | cut -f2 -d\"`
32*4882a593Smuzhiyun    if [ "x${s}" != "x" ];
33*4882a593Smuzhiyun    then
34*4882a593Smuzhiyun       [ -e $s ] && mv -f $s $file && echo "Exporting to file $file succeeded!"
35*4882a593Smuzhiyun       return 0
36*4882a593Smuzhiyun    fi
37*4882a593Smuzhiyun    echo "Exporting to file $file failed!"
38*4882a593Smuzhiyun    return 1
39*4882a593Smuzhiyun}
40*4882a593Smuzhiyun
41*4882a593Smuzhiyundo_import ()
42*4882a593Smuzhiyun{
43*4882a593Smuzhiyun    file=$1
44*4882a593Smuzhiyun    [ "x${file}" == "x" ] && help && exit 1
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun    clean_cache
47*4882a593Smuzhiyun    bitbake -R conf/primport.conf -R $file -p
48*4882a593Smuzhiyun    ret=$?
49*4882a593Smuzhiyun    [ $ret -eq 0 ] && echo "Importing from file $file succeeded!" || echo "Importing from file $file failed!"
50*4882a593Smuzhiyun    return $ret
51*4882a593Smuzhiyun}
52*4882a593Smuzhiyun
53*4882a593Smuzhiyundo_migrate_localcount ()
54*4882a593Smuzhiyun{
55*4882a593Smuzhiyun    df=`bitbake -R conf/migrate_localcount.conf -e | \
56*4882a593Smuzhiyun                grep ^LOCALCOUNT_DUMPFILE= | cut -f2 -d\"`
57*4882a593Smuzhiyun    if [ "x${df}" == "x" ];
58*4882a593Smuzhiyun    then
59*4882a593Smuzhiyun        echo "LOCALCOUNT_DUMPFILE is not defined!"
60*4882a593Smuzhiyun        return 1
61*4882a593Smuzhiyun    fi
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun    rm -rf $df
64*4882a593Smuzhiyun    clean_cache
65*4882a593Smuzhiyun    echo "Exporting LOCALCOUNT to AUTOINCs..."
66*4882a593Smuzhiyun    bitbake -R conf/migrate_localcount.conf -p
67*4882a593Smuzhiyun    [ ! $? -eq 0 ] && echo "Exporting to file $df failed!" && exit 1
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun    if [ -e $df ];
70*4882a593Smuzhiyun    then
71*4882a593Smuzhiyun        echo "Exporting to file $df succeeded!"
72*4882a593Smuzhiyun    else
73*4882a593Smuzhiyun        echo "Exporting to file $df failed!"
74*4882a593Smuzhiyun        exit 1
75*4882a593Smuzhiyun    fi
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun    echo "Importing generated AUTOINC entries..."
78*4882a593Smuzhiyun    [ -e $df ] && do_import $df
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun    if [ ! $? -eq 0 ]
81*4882a593Smuzhiyun    then
82*4882a593Smuzhiyun        echo "Migration from LOCALCOUNT to AUTOINCs failed!"
83*4882a593Smuzhiyun        return 1
84*4882a593Smuzhiyun    fi
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun    echo "Migration from LOCALCOUNT to AUTOINCs succeeded!"
87*4882a593Smuzhiyun    return 0
88*4882a593Smuzhiyun}
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun[ $# -eq 0 ] && help  && exit 1
91*4882a593Smuzhiyun
92*4882a593Smuzhiyuncase $2 in
93*4882a593Smuzhiyun*.conf|*.inc)
94*4882a593Smuzhiyun    ;;
95*4882a593Smuzhiyun*)
96*4882a593Smuzhiyun    echo ERROR: $2 must end with .conf or .inc!
97*4882a593Smuzhiyun    exit 1
98*4882a593Smuzhiyun    ;;
99*4882a593Smuzhiyunesac
100*4882a593Smuzhiyun
101*4882a593Smuzhiyuncase $1 in
102*4882a593Smuzhiyunexport)
103*4882a593Smuzhiyun    do_export $2
104*4882a593Smuzhiyun    ;;
105*4882a593Smuzhiyunimport)
106*4882a593Smuzhiyun    do_import $2
107*4882a593Smuzhiyun    ;;
108*4882a593Smuzhiyunmigrate_localcount)
109*4882a593Smuzhiyun    do_migrate_localcount
110*4882a593Smuzhiyun    ;;
111*4882a593Smuzhiyun*)
112*4882a593Smuzhiyun    help
113*4882a593Smuzhiyun    exit 1
114*4882a593Smuzhiyun    ;;
115*4882a593Smuzhiyunesac
116