citemplate: add initial cerbero msvc builds
[platform/upstream/gstreamer.git] / gitlab / cerbero_setup.sh
1 set -ex
2
3 show_ccache_sum() {
4     if [[ -n ${HAVE_CCACHE} ]]; then
5         ccache -s
6     fi
7 }
8
9 # Produces runtime and devel tarball packages for linux/android or .pkg for macos
10 cerbero_package_and_check() {
11     # FIXME: mingw translates $(pwd) in a broken way
12     if [[ $CONFIG == win??.cbc ]]; then
13         PACKAGE_PATH="$CI_PROJECT_DIR"
14     else
15         PACKAGE_PATH=$(pwd)
16     fi
17
18     $CERBERO $CERBERO_ARGS package --offline ${CERBERO_PACKAGE_ARGS} -o "$PACKAGE_PATH" gstreamer-1.0
19
20     # Run gst-inspect-1.0 for some basic checks. Can't do this for cross-(android|ios)-universal, of course.
21     if [[ $CONFIG != *universal* ]]; then
22         $CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX --version
23         $CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX
24     fi
25
26     show_ccache_sum
27 }
28
29 cerbero_before_script() {
30     # FIXME Wrong namespace
31     # Workaround build-tools having hardcoded internal path
32     pwd
33     mkdir -p "../../gstreamer"
34     ln -sf "$(pwd)" "../../gstreamer/cerbero"
35     mkdir -p "../../${CI_PROJECT_NAMESPACE}"
36     ln -sf "$(pwd)" "../../${CI_PROJECT_NAMESPACE}/cerbero"
37
38     # Make sure there isn't a pre-existing config hanging around
39     rm -v -f localconf.cbc
40     rm -v -f ${CERBERO_HOST_DIR}/localconf.cbc
41
42     if [[ $CONFIG == win??.cbc ]]; then
43         # For windows hardcode the path so it doesn't get
44         # mangled by msys path handling
45         # FIXME: make the sources point to pwd/$CI_PROJECT_DIR like the rest
46         echo 'local_sources="C:/cerbero/cerbero-sources"' > localconf.cbc
47         echo 'home_dir="C:/cerbero/cerbero-build"' >> localconf.cbc
48
49         # Visual Studio 2017 build tools install path
50         echo 'vs_install_path = "C:/BuildTools"' >> localconf.cbc
51         echo 'vs_install_version = "vs15"' >> localconf.cbc
52     else
53         echo "home_dir = \"$(pwd)/${CERBERO_HOME}\"" > localconf.cbc
54         echo "local_sources = \"$(pwd)/${CERBERO_SOURCES}\"" >> localconf.cbc
55     fi
56
57     cat localconf.cbc
58
59     rsync -aH "${CERBERO_HOST_DIR}" .
60
61     cat localconf.cbc
62
63     # FIXME: if you comment out this line it fails like so, no clue why. Its not windows defender either.
64     # From https://gitlab.freedesktop.org/gstreamer/cerbero
65     #    b02080cb..d6923e42  master     -> origin/master
66     # Fetching origin
67     # error: unable to create file cerbero-uninstalled: Permission denied
68     # fatal: Could not reset index file to revision 'd6923e4216c8a17759527a3db070d15cf7ff10a0'.
69     # ERROR: Failed to proceed with self update Command Error: Running ['git', 'reset', '--hard', 'd6923e4216c8a17759527a3db070d15cf7ff10a0'] returned 128
70     git status
71
72     ./cerbero-uninstalled --self-update manifest.xml
73 }
74
75 cerbero_script() {
76     show_ccache_sum
77
78     $CERBERO $CERBERO_ARGS show-config
79     $CERBERO $CERBERO_ARGS fetch-bootstrap --build-tools-only
80     $CERBERO $CERBERO_ARGS fetch-package --deps gstreamer-1.0
81     $CERBERO $CERBERO_ARGS fetch-cache --branch "${GST_UPSTREAM_BRANCH}"
82
83     if [[ -n ${CERBERO_OVERRIDDEN_DIST_DIR} ]]; then
84         test -d "${CERBERO_HOME}/dist/${ARCH}"
85         mkdir -p "${CERBERO_OVERRIDDEN_DIST_DIR}"
86         rsync -aH "${CERBERO_HOME}/dist/${ARCH}/" "${CERBERO_OVERRIDDEN_DIST_DIR}"
87     fi
88
89     $CERBERO $CERBERO_ARGS bootstrap --offline --build-tools-only
90     cerbero_package_and_check
91 }
92
93 cerbero_deps_script() {
94     show_ccache_sum
95
96     $CERBERO $CERBERO_ARGS show-config
97     $CERBERO $CERBERO_ARGS fetch-bootstrap --build-tools-only
98     $CERBERO $CERBERO_ARGS fetch-package --deps gstreamer-1.0
99     $CERBERO $CERBERO_ARGS bootstrap --offline --build-tools-only
100     $CERBERO $CERBERO_ARGS build-deps --offline \
101         gstreamer-1.0 gst-plugins-base-1.0 gst-plugins-good-1.0 \
102         gst-plugins-bad-1.0 gst-plugins-ugly-1.0 gst-rtsp-server-1.0 \
103         gst-libav-1.0 gst-devtools-1.0 gst-editing-services-1.0 libnice
104
105     if [[ -n ${CERBERO_OVERRIDDEN_DIST_DIR} ]]; then
106         mkdir -p "${CERBERO_HOME}/dist/${ARCH}"
107         rsync -aH "${CERBERO_OVERRIDDEN_DIST_DIR}/" "${CERBERO_HOME}/dist/${ARCH}"
108     fi
109
110     if [[ -n ${CERBERO_PRIVATE_SSH_KEY} ]]; then
111         $CERBERO $CERBERO_ARGS gen-cache --branch "${GST_UPSTREAM_BRANCH}"
112         $CERBERO $CERBERO_ARGS upload-cache --branch "${GST_UPSTREAM_BRANCH}"
113     fi
114
115     cerbero_package_and_check
116 }
117
118 # Run whichever function is asked of us
119 eval "$1"