├── .hadk.env ├── .mersdk.profile ├── .mersdkubu.profile ├── README.md ├── cancro_local_manifest.xml ├── setup-mersdk.sh └── setup-platformsdk.sh /.hadk.env: -------------------------------------------------------------------------------- 1 | export MER_ROOT=$HOME/mer 2 | export PLATFORM_SDK_ROOT=$MER_ROOT 3 | export VENDOR="xiaomi" 4 | export DEVICE="cancro" 5 | export PORT_ARCH="armv7hl" 6 | 7 | export ROOMSERVICE_BRANCHES="cm-12.1" 8 | export HYBRIS_BRANCH="hybris-12.1" 9 | export SAILFISH_VERSION=2.1.3.7 10 | 11 | export ANDROID_ROOT=$MER_ROOT/android/droid 12 | export HABUILD_ROOT=$MER_ROOT/sdks/ubuntu 13 | export MER_TMPDIR=$MER_ROOT/tmp 14 | export OBS_ROOT=$MER_ROOT/OBS 15 | export HYBRIS_MW_ROOT=$ANDROID_ROOT/hybris/mw/ 16 | 17 | 18 | alias croot="cd $ANDROID_ROOT" 19 | -------------------------------------------------------------------------------- /.mersdk.profile: -------------------------------------------------------------------------------- 1 | function hadk() { source $HOME/.hadk.env; echo "Env setup for $DEVICE"; } 2 | hadk 3 | 4 | alias enter_habuildsdk="ubu-chroot -r $HABUILD_ROOT" 5 | alias enter_scratchbox="sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R" 6 | 7 | PS1="MerSDK $PS1" 8 | 9 | #TODO add error checks 10 | 11 | pushd () { 12 | command pushd "$@" > /dev/null 13 | } 14 | 15 | popd () { 16 | command popd "$@" > /dev/null 17 | } 18 | 19 | die () { 20 | if [ -z "$*" ]; then 21 | echo "command failed at `date`, dying..." 22 | else 23 | echo "$*" 24 | fi 25 | exit 1 26 | } 27 | 28 | 29 | function setup_ubuntuchroot { 30 | mkdir -p $MER_TMPDIR 31 | pushd $MER_TMPDIR 32 | TARBALL=ubuntu-trusty-android-rootfs.tar.bz2 33 | curl -k -O -C - http://img.merproject.org/images/mer-hybris/ubu/$TARBALL || die "Error downloading ubuntu rootfs" 34 | sudo rm -rf $HABUILD_ROOT 35 | sudo mkdir -p $HABUILD_ROOT 36 | sudo tar --numeric-owner -xvjf $TARBALL -C $HABUILD_ROOT 37 | ubu-chroot -r $HABUILD_ROOT /bin/bash -c "echo Installing useful tools && sudo apt-get update && sudo apt-get install -y rsync vim unzip silversearcher-ag bsdmainutils openjdk-7-jdk && sudo update-java-alternatives -s java-1.7.0-openjdk-amd64" 38 | popd 39 | } 40 | 41 | function setup_repo { 42 | mkdir -p $ANDROID_ROOT 43 | sudo chown -R $USER $ANDROID_ROOT 44 | ubu-chroot -r $HABUILD_ROOT /bin/bash -c "echo Installing repo && curl -O https://storage.googleapis.com/git-repo-downloads/repo && chmod a+x repo && sudo mv repo /usr/bin" 45 | } 46 | 47 | function fetch_sources { 48 | ubu-chroot -r $HABUILD_ROOT /bin/bash -c "echo Initializing repo && cd $ANDROID_ROOT && repo init -u git://github.com/mer-hybris/android.git -b $HYBRIS_BRANCH" 49 | ubu-chroot -r $HABUILD_ROOT /bin/bash -c "echo Syncing sources && cd $ANDROID_ROOT && repo sync --fetch-submodules" 50 | } 51 | 52 | function setup_scratchbox { 53 | mkdir -p $MER_TMPDIR 54 | pushd $MER_TMPDIR 55 | 56 | sdk-assistant create SailfishOS-latest http://releases.sailfishos.org/sdk/latest/Jolla-latest-Sailfish_SDK_Tooling-i486.tar.bz2 57 | sdk-assistant create $VENDOR-$DEVICE-$PORT_ARCH http://releases.sailfishos.org/sdk/latest/Jolla-latest-Sailfish_SDK_Target-armv7hl.tar.bz2 58 | 59 | popd 60 | } 61 | 62 | function test_scratchbox { 63 | mkdir -p $MER_TMPDIR 64 | pushd $MER_TMPDIR 65 | 66 | cat > main.c << EOF 67 | #include 68 | #include 69 | int main(void) { 70 | printf("Scratchbox, works!\n"); 71 | return EXIT_SUCCESS; 72 | } 73 | EOF 74 | 75 | sb2 -t $VENDOR-$DEVICE-$PORT_ARCH gcc main.c -o test 76 | sb2 -t $VENDOR-$DEVICE-$PORT_ARCH ./test 77 | 78 | popd 79 | } 80 | 81 | function build_hybrishal { 82 | ubu-chroot -r $HABUILD_ROOT /bin/bash -c "echo Building hybris-hal && cd $ANDROID_ROOT && source build/envsetup.sh && breakfast $DEVICE && make -j8 hybris-hal" 83 | } 84 | 85 | function build_package { 86 | PKG_PATH=`readlink -e $1` 87 | shift 88 | pushd $PKG_PATH 89 | SPECS=$1 90 | if [ -z "$SPECS" ]; then 91 | echo "No spec file for package building specified, building all I can find." 92 | SPECS="rpm/*.spec" 93 | fi 94 | for SPEC in $SPECS ; do 95 | minfo "Building $SPEC" 96 | mb2 -s $SPEC -t $VENDOR-$DEVICE-$PORT_ARCH build || die "Error building package $1" 97 | done 98 | 99 | PKG=`basename $PKG_PATH` 100 | mkdir -p "$ANDROID_ROOT/droid-local-repo/$DEVICE/$PKG" 101 | rm -f "$ANDROID_ROOT/droid-local-repo/$DEVICE/$PKG/"*.rpm 102 | mv RPMS/*.rpm "$ANDROID_ROOT/droid-local-repo/$DEVICE/$PKG" 103 | echo "Packages Built:" 104 | ls $ANDROID_ROOT/droid-local-repo/$DEVICE/$PKG/ 105 | popd 106 | } 107 | 108 | function build_packages { 109 | pushd $ANDROID_ROOT 110 | 111 | rpm/dhd/helpers/build_packages.sh $@ 112 | rpm/dhd/helpers/build_packages.sh --mw="https://git.merproject.org/kimmoli/pulseaudio-policy-enforcement.git" 113 | rpm/dhd/helpers/build_packages.sh --mw="https://git.merproject.org/mer-core/qt-mobility-haptics-ffmemless.git" 114 | 115 | popd 116 | } 117 | 118 | function fetch_mw { 119 | mkdir -p $HYBRIS_MW_ROOT 120 | pushd $HYBRIS_MW_ROOT 121 | 122 | PKG=`basename $1 .git` 123 | if [ -d "$PWD/$PKG" ] 124 | then 125 | cd $PWD/$PKG 126 | git pull 127 | git submodule update 128 | else 129 | git clone $1 130 | cd $PWD/$PKG 131 | git submodule init 132 | git submodule update 133 | fi 134 | popd 135 | } 136 | 137 | function build_audioflingerglue { 138 | ubu-chroot -r $HABUILD_ROOT /bin/bash -c "echo Building audioflingerglue && cd $ANDROID_ROOT && source build/envsetup.sh && breakfast $DEVICE && make -j8 libaudioflingerglue miniafservice" 139 | 140 | pushd $ANDROID_ROOT 141 | 142 | PKG_PATH=$HYBRIS_MW_ROOT/audioflingerglue-localbuild 143 | mkdir -p $PKG_PATH/rpm 144 | 145 | #FIXME: DO NOT hardcode the version of the tgz archive of audioflingerglue 146 | $ANDROID_ROOT/rpm/dhd/helpers/pack_source_audioflingerglue-localbuild.sh 147 | mv $HYBRIS_MW_ROOT/audioflingerglue-0.0.1.tgz $PKG_PATH/ 148 | cp $ANDROID_ROOT/rpm/dhd/helpers/audioflingerglue-localbuild.spec $PKG_PATH/rpm/audioflingerglue.spec 149 | build_package $PKG_PATH 150 | 151 | #Build pulseaudio-modules-droid-glue 152 | PKG_REPO=https://github.com/mer-hybris/pulseaudio-modules-droid-glue.git 153 | PKG=`basename $PKG_REPO .git` 154 | 155 | fetch_mw $PKG_REPO || die "Unable to fetch $PKG_REPO" 156 | #pushd $HYBRIS_MW_ROOT/$PKG 157 | #curl http://pastebin.com/raw/H8U5nSNm -o pulseaudio-modules-droid-glue.patch 158 | #patch -p1 < pulseaudio-modules-droid-glue.patch 159 | #popd 160 | 161 | build_package $HYBRIS_MW_ROOT/$PKG 162 | 163 | popd 164 | } 165 | 166 | function build_gstdroid { 167 | ubu-chroot -r $HABUILD_ROOT /bin/bash -c "echo Building gstdroid && cd $MER_ROOT/android/droid && source build/envsetup.sh && breakfast $DEVICE && make -j8 libcameraservice libdroidmedia minimediaservice minisfservice" 168 | pushd $ANDROID_ROOT 169 | 170 | PKG_PATH=$HYBRIS_MW_ROOT/droidmedia-localbuild 171 | mkdir -p $PKG_PATH/rpm/ 172 | 173 | DROIDMEDIA_VERSION=$(git --git-dir $ANDROID_ROOT/external/droidmedia/.git describe --tags | sed -r "s/\-/\+/g") 174 | sed -e "s/0.0.0/$DROIDMEDIA_VERSION/" $ANDROID_ROOT/rpm/dhd/helpers/droidmedia-localbuild.spec > $PKG_PATH/rpm/droidmedia.spec 175 | 176 | #FIXME: Do not hardcode version this way 177 | $ANDROID_ROOT/rpm/dhd/helpers/pack_source_droidmedia-localbuild.sh $DROIDMEDIA_VERSION 178 | mv $HYBRIS_MW_ROOT/droidmedia-$DROIDMEDIA_VERSION.tgz $PKG_PATH/ 179 | build_package $PKG_PATH 180 | 181 | PKG_REPO=https://github.com/sailfishos/gst-droid.git 182 | fetch_mw $PKG_REPO 183 | build_package $ANDROID_ROOT/hybris/mw/`basename $PKG_REPO .git` 184 | 185 | popd 186 | } 187 | 188 | function generate_kickstart { 189 | pushd $ANDROID_ROOT 190 | 191 | rpm/dhd/helpers/build_packages.sh --configs 192 | 193 | mkdir -p tmp 194 | KS="Jolla-@RELEASE@-$DEVICE-@ARCH@.ks" 195 | KS_PATH=$ANDROID_ROOT/tmp/$KS 196 | 197 | pushd tmp 198 | rpm2cpio $ANDROID_ROOT/droid-local-repo/$DEVICE/droid-configs/droid-config-$DEVICE-ssu-kickstarts-1-1.armv7hl.rpm | cpio -idmv 199 | popd tmp 200 | 201 | cp $ANDROID_ROOT/tmp/usr/share/kickstarts/$KS $KS_PATH 202 | 203 | #By default we make the kickstart file point to devel repos. 204 | HA_REPO="repo --name=adaptation-community-$DEVICE-@RELEASE@" 205 | HA_REPO_COMMON="repo --name=adaptation-community-common-$DEVICE-@RELEASE@" 206 | if ! grep -q "$HA_REPO" $KS_PATH; then 207 | echo "Adding devel repo to the kick start" 208 | sed -i -e "s|^$HA_REPO_COMMON|$HA_REPO --baseurl=http://repo.merproject.org/obs/nemo:/devel:/hw:/$VENDOR:/$DEVICE/sailfish_latest_@ARCH@/\n$HA_REPO_COMMON|" $KS_PATH 209 | fi 210 | 211 | #Using this switch we can switch to local/testing repos 212 | if [[ "$#" -eq 1 && $1 == "local" ]]; then 213 | sed -i -e "s|^$HA_REPO.*$|$HA_REPO --baseurl=file://$ANDROID_ROOT/droid-local-repo/$DEVICE|" $KS_PATH 214 | elif [[ "$#" -eq 1 && $1 == "release" ]]; then 215 | #Adding our OBS repo 216 | sed -i -e "s/nemo\:\/devel/nemo\:\/testing/g" $KS_PATH 217 | sed -i -e "s/sailfish_latest_@ARCH@\//sailfishos_@RELEASE@\//g" $KS_PATH 218 | fi 219 | 220 | sed -i -e "s|@Jolla Configuration $DEVICE|@Jolla Configuration $DEVICE\njolla-email\nsailfish-weather\njolla-calculator\njolla-notes\njolla-calendar\nsailfish-office\nharbour-poor-maps|" $KS_PATH 221 | 222 | #Hacky workaround for droid-hal-init starting before /system partition is mounted 223 | #sed -i '/%post$/a sed -i \"s;WantedBy;RequiredBy;g\" \/lib\/systemd\/system\/system.mount' $KS_PATH 224 | #sed -i '/%post$/a echo \"RequiredBy=droid-hal-init.service\" >> \/lib\/systemd\/system\/local-fs.target' $KS_PATH 225 | #sed -i '/%post$/a echo \"[Install]\" >> \/lib\/systemd\/system\/local-fs.target' $KS_PATH 226 | 227 | popd 228 | } 229 | 230 | function build_rootfs { 231 | RELEASE=$SAILFISH_VERSION 232 | if [[ -z "$1" ]] 233 | then 234 | EXTRA_NAME=-test 235 | else 236 | EXTRA_NAME=-$1 237 | fi 238 | echo Building Image: $EXTRA_NAME 239 | sudo mic create fs --arch $PORT_ARCH --debug --tokenmap=ARCH:$PORT_ARCH,RELEASE:$RELEASE,EXTRA_NAME:$EXTRA_NAME --record-pkgs=name,url --outdir=sfe-$DEVICE-$RELEASE$EXTRA_NAME --pack-to=sfe-$DEVICE-$RELEASE$EXTRA_NAME.tar.bz2 $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks 240 | } 241 | 242 | function serve_repo { 243 | LOCAL_ADDRESSES=$(/sbin/ip addr | grep inet | grep -v inet6 | grep -v "host lo" | cut -f6 -d' ' | cut -f 1 -d'/') 244 | LOCAL_PORT=2016 245 | echo "Starting a repo on this machine. You can add it to your device using:" 246 | for ADDR in $LOCAL_ADDRESSES; do echo " " ssu ar local http://$ADDR:$LOCAL_PORT/; done 247 | 248 | pushd $ANDROID_ROOT/droid-local-repo/$DEVICE/ 249 | python -m SimpleHTTPServer $LOCAL_PORT 250 | popd 251 | } 252 | 253 | function update_sdk { 254 | SFE_SB2_TARGET=$MER_ROOT/targets/$VENDOR-$DEVICE-$PORT_ARCH 255 | TARGETS_URL=http://releases.sailfishos.org/sdk/latest/targets/targets.json 256 | CURRENT_STABLE_TARGET=$(curl -s $TARGETS_URL 2>/dev/null | grep "$PORT_ARCH.tar.bz2" | cut -d\" -f4 | grep $PORT_ARCH | head -n 1) 257 | CURRENT_STABLE_VERSION=`echo $CURRENT_STABLE_TARGET | cut -d'/' -f6 | cut -f 2 -d'-'` 258 | 259 | if [ "$CURRENT_STABLE_VERSION" == "$SAILFISH_VERSION" ] 260 | then 261 | echo "You are already at the latest Release:" $SAILFISH_VERSION 262 | else 263 | echo "There is an updated version available:" $CURRENT_STABLE_VERSION 264 | read -p "Are you sure you wish to update? [Y/n]" -n 1 -r 265 | echo 266 | 267 | if [[ $REPLY =~ ^[Yy]$ ]] 268 | then 269 | sed -i /export\ SAILFISH_VERSION/s/.*/export\ SAILFISH_VERSION=$CURRENT_STABLE_VERSION/ ~/.hadk.env 270 | . ~/.hadk.env 271 | echo Updating to $SAILFISH_VERSION 272 | sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -R -msdk-install ssu re $SAILFISH_VERSION 273 | sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -R -msdk-install zypper ref 274 | sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -R -msdk-install zypper dup 275 | sudo zypper ref 276 | sudo zypper dup 277 | sudo ssu re $SAILFISH_VERSION 278 | sudo zypper ref 279 | sudo zypper dup 280 | fi 281 | fi 282 | } 283 | 284 | function setup_obsenv { 285 | if [[ ! -d $OBS_ROOT ]] 286 | then 287 | sudo mkdir $OBS_ROOT 288 | sudo chown $USER $OBS_ROOT 289 | pushd $OBS_ROOT 290 | echo "" 291 | echo " Make yourself familier with setting up .oscrc" 292 | echo " https://wiki.merproject.org/wiki/Building_against_Mer_in_Community_OBS#Setup_.oscrc" 293 | echo "" 294 | osc -A https://api.merproject.org/ ls mer-tools:testing 295 | osc co nemo:devel:hw:$VENDOR:$DEVICE 296 | popd 297 | fi 298 | } 299 | 300 | function upload_packages { 301 | #Upload gstdroid and droid-hal* to OBS 302 | pushd $OBS_ROOT/nemo\:devel\:hw\:$VENDOR\:$DEVICE/droid-hal-$DEVICE/ 303 | 304 | osc up 305 | rm *.rpm 306 | cp $ANDROID_ROOT/droid-local-repo/$DEVICE/droid-hal-$DEVICE/* . 307 | cp $ANDROID_ROOT/droid-local-repo/$DEVICE/audioflingerglue-localbuild/* . 308 | cp $ANDROID_ROOT/droid-local-repo/$DEVICE/droidmedia-localbuild/* . 309 | osc ar 310 | osc ci 311 | 312 | popd 313 | } 314 | 315 | function promote_packages { 316 | #Promote packages from devel repo to testing repo 317 | TESTING_REPO="nemo:testing:hw:$VENDOR:$DEVICE" 318 | DEVEL_REPO="nemo:devel:hw:$VENDOR:$DEVICE" 319 | 320 | #Ignoring the _pattern package and comments. 321 | #Wrapping each package name with % %, for easier array search 322 | DEVEL_PACKAGES=`osc ls $DEVEL_REPO | grep -v "_pattern\|^#" | sed -e 's/^/%/' | sed -e 's/$/%/'` 323 | TESTING_PACKAGES=`osc ls $TESTING_REPO | grep -v "_pattern\|^#" | sed -e 's/^/%/' | sed -e 's/$/%/'` 324 | 325 | # Delete any packages which are in testing repo but not in devel 326 | for PACKAGE in $TESTING_PACKAGES; do 327 | if [[ ! "${DEVEL_PACKAGES[@]}" =~ "${PACKAGE}" ]]; then 328 | osc -A https://api.merproject.org rdelete $TESTING_REPO ${PACKAGE//%/} -m maintenance 329 | fi 330 | done 331 | 332 | # Copy packages over from devel to testing 333 | for PACKAGE in $DEVEL_PACKAGES; do 334 | osc -A https://api.merproject.org copypac $DEVEL_REPO ${PACKAGE//%/} $TESTING_REPO 335 | done 336 | } 337 | 338 | function mer_man { 339 | echo "Welcome to MerSDK" 340 | echo "Additional convenience functions defined here are:" 341 | echo " 1) setup_ubuntuchroot: set up ubuntu chroot for painless building of android" 342 | echo " 2) setup_repo: sets up repo tool in ubuntu chroot to fetch android/mer sources" 343 | echo " 3) setup_obsenv: sets up a folder to use OBS" 344 | echo " 4) fetch_sources: fetch android/mer sources" 345 | echo " 5) setup_scratchbox: sets up a cross compilation toolchain to build mer packages" 346 | echo " 6) test_scratchbox: tests the scratchbox toolchain." 347 | echo " 7) build_hybrishal: builds the hybris-hal needed to boot sailfishos for $DEVICE" 348 | echo " 8) build_package PKG_PATH [spec files]: builds package at path specified by the spec files" 349 | echo " 9) build_packages: builds packages needed to build the sailfishos rootfs of $DEVICE" 350 | echo " 10) build_audioflingerglue: builds audioflingerglue packages for audio calls" 351 | echo " 11) build_gstdroid: builds gstdroid for audio/video/camera support" 352 | echo " 12) upload_packages: uploads droid-hal*, audioflingerglue, gstdroid* packages to nemo:devel:hw:$VENDOR:$DEVICE on OBS" 353 | echo " 13) promote_packages: promote packages on OBS from nemo:devel:hw:$VENDOR:$DEVICE to nemo:testing:hw:$VENDOR:$DEVICE" 354 | echo " 14) generate_kickstart [local/release]: generates a kickstart file with devel repos, needed to build rootfs. Specifying local/release will switch the OBS repos" 355 | echo " 15) build_rootfs [releasename]: builds a sailfishos installer zip for $DEVICE" 356 | echo " 16) serve_repo : starts a http server on local host. (which you can easily add to your device as ssu ar http://:9000)" 357 | echo " 17) update_sdk: Update the SDK target to the current stable version, if available." 358 | echo " 18) mer_man: Show this help" 359 | } 360 | 361 | cd $ANDROID_ROOT 362 | mer_man 363 | -------------------------------------------------------------------------------- /.mersdkubu.profile: -------------------------------------------------------------------------------- 1 | function hadk() { source $HOME/.hadk.env; echo "Env setup for $DEVICE"; } 2 | export PS1="HABUILD_SDK [\${DEVICE}] $PS1" 3 | hadk 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sailfish-build-environment 2 | 3 | A collection of scripts and functions to automate tasks while building Sailfish OS. 4 | 5 | Review .hadk.env to make sure it suits your needs. 6 | 7 | ## Usage 8 | 9 | ``` 10 | setup-mersdk.sh 11 | ``` 12 | 13 | This script will Download and install mersdk and initialize it's environment with custom functions to automate tasks 14 | So, Backup your ~/.hadk.env , ~/.mersdk.profile, ~/.mersdkubu.profile, if you already have any. 15 | 16 | The Additional bash functions it provides are: 17 | 18 | ``` 19 | 1) setup_ubuntuchroot: set up ubuntu chroot for painless building of android 20 | 2) setup_repo: sets up repo tool in ubuntu chroot to fetch android/mer sources 21 | 3) setup_obsenv: sets up a folder to use OBS 22 | 4) fetch_sources: fetch android/mer sources 23 | 5) setup_scratchbox: sets up a cross compilation toolchain to build mer packages 24 | 6) test_scratchbox: tests the scratchbox toolchain. 25 | 7) build_hybrishal: builds the hybris-hal needed to boot sailfishos for $DEVICE 26 | 8) build_package PKG_PATH [spec files]: builds package at path specified by the spec files 27 | 9) build_packages: builds packages needed to build the sailfishos rootfs of $DEVICE 28 | 10) build_audioflingerglue: builds audioflingerglue packages for audio calls 29 | 11) build_gstdroid: builds gstdroid for audio/video/camera support 30 | 12) upload_packages: uploads droid-hal*, audioflingerglue, gstdroid* packages to nemo:devel:hw:$VENDOR:$DEVICE on OBS 31 | 13) promote_packages: promote packages on OBS from nemo:devel:hw:$VENDOR:$DEVICE to nemo:testing:hw:$VENDOR:$DEVICE 32 | 14) generate_kickstart [local/release]: generates a kickstart file with devel repos, needed to build rootfs. Specifying local/release will switch the OBS repos 33 | 15) build_rootfs [releasename]: builds a sailfishos installer zip for $DEVICE 34 | 16) serve_repo : starts a http server on local host. (which you can easily add to your device as ssu ar http://:9000) 35 | 17) update_sdk: Update the SDK target to the current stable version, if available. 36 | 18) mer_man: Show this help 37 | ``` 38 | 39 | ### More info: 40 | 41 | * [Sailfish HADK](https://sailfishos.org/develop/hadk/) 42 | * [Sailfish HADK FAQ](http://piratepad.net/hadk-faq-v2) 43 | 44 | Thanks a ton to #saiflishos-porters on freenode 45 | -------------------------------------------------------------------------------- /cancro_local_manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /setup-mersdk.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pushd `dirname $0` > /dev/null 4 | SCRIPTPATH=`pwd` 5 | popd > /dev/null 6 | 7 | #Setup environment 8 | rm ~/.hadk.env 9 | rm ~/.mersdk.profile 10 | rm ~/.mersdkubu.profile 11 | ln -s $SCRIPTPATH/.hadk.env ~/.hadk.env 12 | ln -s $SCRIPTPATH/.mersdk.profile ~/.mersdk.profile 13 | ln -s $SCRIPTPATH/.mersdkubu.profile ~/.mersdkubu.profile 14 | 15 | source ~/.hadk.env 16 | 17 | mkdir -p $MER_TMPDIR 18 | mkdir -p $ANDROID_ROOT/.repo/local_manifests 19 | cp $SCRIPTPATH/cancro_local_manifest.xml $ANDROID_ROOT/.repo/local_manifests/cancro.xml 20 | 21 | #Download Setup MER SDK 22 | cd $MER_TMPDIR 23 | TARBALL=mer-i486-latest-sdk-rolling-chroot-armv7hl-sb2.tar.bz2 24 | curl -k -O -C - https://img.merproject.org/images/mer-sdk/$TARBALL 25 | 26 | SDK_ROOT=$MER_ROOT/sdks/sdk 27 | sudo rm -rf $SDK_ROOT 28 | mkdir -p $SDK_ROOT 29 | cd $SDK_ROOT 30 | sudo tar --numeric-owner -p -xjf $MER_TMPDIR/$TARBALL 31 | 32 | #Setup convenience bash aliases 33 | echo "export MER_ROOT=$MER_ROOT" >> ~/.bashrc 34 | echo "alias mersdk=$MER_ROOT/sdks/sdk/mer-sdk-chroot" >> ~/.bashrc 35 | 36 | cd $HOME 37 | 38 | # These commands are a tmp workaround of glitch when working with target: 39 | sudo chroot $SDK_ROOT sudo zypper ar http://repo.merproject.org/obs/home:/sledge:/mer/latest_i486/ curlfix 40 | sudo chroot $SDK_ROOT sudo zypper ref curlfix 41 | sudo chroot $SDK_ROOT sudo zypper dup --from curlfix 42 | sudo chroot $SDK_ROOT sudo zypper in android-tools createrepo zip 43 | 44 | 45 | echo "Mer SDK setup complete. You can start MerSDK by simply typing mersdk on your bash shell. Good Luck!" 46 | exec bash 47 | -------------------------------------------------------------------------------- /setup-platformsdk.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pushd `dirname $0` > /dev/null 4 | SCRIPTPATH=`pwd` 5 | popd > /dev/null 6 | 7 | #Setup environment 8 | rm ~/.hadk.env 9 | rm ~/.mersdk.profile 10 | rm ~/.mersdkubu.profile 11 | ln -s $SCRIPTPATH/.hadk.env ~/.hadk.env 12 | ln -s $SCRIPTPATH/.mersdk.profile ~/.mersdk.profile 13 | ln -s $SCRIPTPATH/.mersdkubu.profile ~/.mersdkubu.profile 14 | 15 | source ~/.hadk.env 16 | 17 | mkdir -p $MER_TMPDIR 18 | mkdir -p $ANDROID_ROOT/.repo/local_manifests 19 | cp $SCRIPTPATH/cancro_local_manifest.xml $ANDROID_ROOT/.repo/local_manifests/cancro.xml 20 | 21 | #Download Setup MER SDK 22 | cd $MER_TMPDIR 23 | TARBALL=Jolla-latest-SailfishOS_Platform_SDK_Chroot-i486.tar.bz2 24 | curl -k -O -C - http://releases.sailfishos.org/sdk/installers/latest/$TARBALL 25 | 26 | SDK_ROOT=$PLATFORM_SDK_ROOT/sdks/sfossdk 27 | sudo rm -rf $SDK_ROOT 28 | mkdir -p $SDK_ROOT 29 | cd $SDK_ROOT 30 | sudo tar --numeric-owner -p -xjf $MER_TMPDIR/$TARBALL 31 | 32 | #Setup convenience bash aliases 33 | echo "export PLATFORM_SDK_ROOT=$PLATFORM_SDK_ROOT" >> ~/.bashrc 34 | echo "alias sfossdk=$SDK_ROOT/mer-sdk-chroot" >> ~/.bashrc 35 | 36 | cd $HOME 37 | 38 | sudo chroot $SDK_ROOT sudo zypper in patterns-sailfish-sb2-armv7hl android-tools createrepo zip 39 | 40 | echo "SailfishOS Platform SDK setup complete. You can start Sailfish OS SDK by simply typing sfossdk on your bash shell. Good Luck!" 41 | exec bash 42 | --------------------------------------------------------------------------------