summaryrefslogtreecommitdiff
path: root/xibuild/make_infos.sh
blob: 7d76c867dfe0744461902c57b841f6bbf2788b7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/sh


# TODO remember to update this if there are ever changes
XIPKG_INFO_VERSION='03'

get_info() {
        local name=$(basename $1 ".xipkg")

        local pkg_ver=$PKG_VER
        [ -z "$pkg_ver" ] && pkg_ver=$BRANCH
        [ -z "$pkg_ver" ] && pkg_ver="latest"
        
        echo "# XiPKG info file version $XIPKG_INFO_VERSION"
        echo "# automatically generated from the built packages"
        echo "NAME=$name"
        echo "DESCRIPTION=$DESC"
        echo "PKG_FILE=$name.xipkg"
        echo "CHECKSUM=$(md5sum $1 | awk '{ print $1 }')"
        echo "VERSION=$pkg_ver"
        echo "SOURCE=$SOURCE"
        echo "DATE=$(stat -t $1 | cut -d' ' -f13 | xargs date -d)"
        echo "DEPS=${DEPS}"
        echo "MAKE_DEPS=${MAKE_DEPS}"
}

sign () {
    printf "SIGNATURE="
    openssl dgst -sign $PRIV_KEY $1 | base64 | tr '\n' ' '
    printf "\n"
}

list_line() {
    local pkg_file=$1
    
    local name=$(basename $pkg_file ".xipkg" )
    local filecount=$(gzip -cd $pkg_file | tar -tvv | grep -c ^-)
    local checksum=$(md5sum $pkg_file | awk '{ print $1 }')
    local size=$(stat -t $pkg_file | cut -d" " -f2)

    echo $name.xipkg $checksum $size $filecount 
}

list_deps() {
    local info_file=$1
    local deps=$(grep "^DEPS=" $info_file | sed -rn 's/DEPS=(.*)/\1/p')
    local name=$(basename $info_file ".xipkg.info" )

    echo "$name: $deps"
}


list=$(ls -d "$XIB_EXPORT"/repo/*)
total=$(echo $list | wc -w)
i=0
for repo in $list; do
    file="$repo/packages.list"
    [ -e $file ] && rm $file
    touch $file

    hbar -T "removing old repos" $i $total
    i=$((i+1))
done
hbar -t -T "removing old repos" $i $total

graph_file="$XIB_EXPORT"/repo/deps.graph
[ -f $graph_file ] && rm $graph_file

list=$(find "$XIB_EXPORT"/repo/ -name "*.xipkg")
total=$(echo $list | wc -w)
i=0
for pkg in $list; do
        name=$(basename $pkg ".xipkg")
        repo=$(echo $pkg | rev | cut -d/ -f2 | rev)
        info_file="$XIB_EXPORT/repo/$repo/$name.xipkg.info"
        build_file="$XIB_EXPORT/repo/$repo/$name.xibuild"

        . $build_file

        get_info $pkg > $info_file
        sign $pkg >> $info_file
        list_line $pkg >> "$XIB_EXPORT"/repo/$repo/packages.list
        [ -f $info_file ] && list_deps $info_file >> $graph_file

        hbar -T "generating info" $i $total
        i=$((i+1))
done
hbar -t -T "generating info" $i $total
printf "${INFO}Created $i info files!\n"