Manual merge from the lp:ubuntu-sdk-ide-click with kalikiana's fix

This commit is contained in:
Zoltán Balogh
2016-09-07 11:55:57 +03:00
parent 83af1e731f
commit f3d0865da9
11 changed files with 490 additions and 0 deletions

5
click/apparmor.json Normal file
View File

@@ -0,0 +1,5 @@
{
"policy_version": 1.3,
"template": "unconfined",
"policy_groups": []
}

15
click/manifest.json Normal file
View File

@@ -0,0 +1,15 @@
{
"architecture": "armhf",
"description": "Ubuntu SDK IDE and DevKit",
"framework": "ubuntu-sdk-15.04",
"hooks": {
"sdk": {
"apparmor": "apparmor.json",
"desktop": "sdk.desktop"
}
},
"maintainer": "Zoltán Balogh <zoltan.balogh@ubuntu.com>",
"name": "com.ubuntu.sdk",
"title": "Ubuntu SDK IDE and DevKit",
"version": "27"
}

17
click/sdk.desktop Normal file
View File

@@ -0,0 +1,17 @@
[Desktop Entry]
Name=Ubuntu SDK IDE and DevKit
Exec=ubuntu-sdk-ide-click %F
Terminal=false
Type=Application
X-Ubuntu-Touch=true
X-Ubuntu-Gettext-Domain=com.ubuntu.sdk
X-Ubuntu-XMir-Enable=true
# Added Icon and Path as a workaround for http://pad.lv/1227359.
# TODO remove them once that bug is fixed. --elopio - 2013-09-18
Icon=ubuntu-sdk-ide.png
GenericName=Integrated Development Environment
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.nokia.qt.qmakeprofile;application/vnd.nokia.xml.qt.resource;application/x-qmlproject;
Categories=Qt;Development;IDE;
InitialPreference=9
Keywords=IDE;Ubuntu SDK IDE;buntu SDK;SDK;Ubuntu Touch;Qt Creator;Qt

23
click/ubuntu-sdk-ide-click Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/sh
export PERL5LIB=//opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/share/perl5/:/opt/click.ubuntu.com/com.ubuntu.sdk/23/usr/lib/arm-linux-gnueabihf/perl/5.20.2/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/lib/arm-linux-gnueabihf
/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/bin/matchbox-window-manager -theme ../../..//opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/share/themes/Default/ -use_titlebar no &
#XKB config
#export XKB_CONFIG_ROOT=/usr/share/X11/xkb
# Qt Platform to Mir
export QT_QPA_PLATFORM=xcb
#export QTCHOOSER_NO_GLOBAL_DIR=1
export LD_LIBRARY_PATH=/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/lib/arm-linux-gnueabihf:/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-ide/lib/qtcreator/:/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-ide/qtcreator/lib:/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/lib:$LD_LIBRARY_PATH
# Qt Modules
export QT_PLUGIN_PATH=/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-ide/bin/plugins/
#export QML2_IMPORT_PATH=/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-dev/qml
exec /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-ide/bin/qtcreator

BIN
click/ubuntu-sdk-ide.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,28 @@
Modify /usr/bin/libertine-xmir with an export TMPDIR=/tmp" before the exec line.
Change the GU in the /etc/ubuntu-touch-session.d/[DEVICE].conf to a smaller value.
Testing from terminal the Xmir session can be started like this:
$ Xmir :1 -mirSocket $XDG_RUNTIME_DIR/mir_socket --desktop_file_hint=dialer-app
the display need to be directed to the Xmir
$ export DISPLAY=:1
Set the Qt Platform
$ export QT_QPA_PLATFORM=xcb
Hack around the library path
# Qt Libs
$ export LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/:/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-ide/qtcreator/lib:/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/lib:$LD_LIBRARY_PATH
$ export LD_LIBRARY_PATH=/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-dev/lib:$LD_LIBRARY_PATH
Set Qt Modules
$ export QT_PLUGIN_PATH=/opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-ide/bin/plugins/
Execute /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/ubuntu-sdk-ide/bin/qtcreator

290
create-ubuntu-sdk-ide-click.py Executable file
View File

@@ -0,0 +1,290 @@
#!/usr/bin/python
from optparse import OptionParser
import re
import urlparse
from launchpadlib.launchpad import Launchpad
from subprocess import call
import subprocess
import sys
import os
import glob
import shutil
import requests
ide_packages = [
"ubuntu-sdk-ide",
"ubuntu-sdk-dev",
"ubuntu-clicksdk-qmake",
"apparmor",
"apparmor-easyprof",
"apparmor-easyprof-ubuntu",
"at",
"autoconf",
"automake",
"autotools-dev",
"base-files",
"binutils",
"bsdmainutils",
"build-essential",
"busybox-initramfs",
"bzip2",
"ca-certificates",
"click",
"click-apparmor",
"click-dev",
"click-reviewers-tools",
"cmake",
"cmake-data",
"cmake-extras",
"cpio",
"cpp",
"cpp-4.9",
"cron",
"dbus",
"dctrl-tools",
"debhelper",
"debootstrap",
"devscripts",
"dh-apparmor",
"dh-make",
"dh-python",
"diffstat",
"distro-info-data",
"dpkg-dev",
"libdpkg-perl",
"dput",
"fakeroot",
"file",
"g++",
"g++-4.9",
"gcc",
"gcc-4.9",
"gdb",
"gdb-multiarch",
"gdbserver",
"gettext",
"gettext-base",
"gir1.2-click-0.4",
"gir1.2-gee-0.8",
"gir1.2-glib-2.0",
"gir1.2-json-1.0",
"groff-base",
"hardening-includes",
"ifupdown",
"init-system-helpers",
"initramfs-tools",
"initramfs-tools-bin",
"intltool",
"intltool-debian",
"iproute2",
"isc-dhcp-client",
"isc-dhcp-common",
"iso-codes",
"klibc-utils",
"kmod",
"krb5-locales",
"libalgorithm-c3-perl",
"libalgorithm-diff-perl",
"libalgorithm-diff-xs-perl",
"libalgorithm-merge-perl",
"libapparmor-perl",
"libapt-pkg-perl",
"libarchive-extract-perl",
"libarchive-zip-perl",
"libarchive13",
"libasan1",
"libasn1-8-heimdal",
"libasprintf-dev",
"libasprintf0c2",
"libatm1",
"libatomic1",
"libauthen-sasl-perl",
"libbabeltrace-ctf1",
"libbabeltrace1",
"libboost-filesystem1.55.0",
"libboost-iostreams1.55.0",
"libboost-program-options1.55.0",
"libboost-system1.55.0",
"libbotan-1.10-0",
"libc-dev-bin",
"libc6-dbg",
"libc6-dev",
"libcap-ng0",
"libcgi-fast-perl",
"libcgi-pm-perl",
"libclass-accessor-perl",
"libclass-c3-perl",
"libclass-c3-xs-perl",
"libclick-0.4-0",
"libclone-perl",
"libcloog-isl4",
"libcommon-sense-perl",
"libcpan-meta-perl",
"libcroco3",
"libcurl3",
"libcurl3-gnutls",
"libdata-optlist-perl",
"libdata-section-perl",
"libdbus-1-3",
"libdbus-glib-1-2",
"libdigest-hmac-perl",
"libdistro-info-perl",
"libdns-export100",
"libdpkg-perl",
"libemail-valid-perl",
"libencode-locale-perl",
"liberror-perl",
"libmpfr4",
"libmpc3",
"perl",
"libisl13",
"make",
"matchbox-common",
"matchbox-window-manager",
"matchbox-desktop",
"matchbox-panel",
"matchbox-panel-manager",
"matchbox-keyboard",
"libfakekey0",
"libmatchbox1",
"libxsettings-client0",
"ttf-dejavu",
"matchbox-keyboard-im",
"libpango1.0-0",
"libpangox-1.0-0",
"libpangoxft-1.0-0",
"libstartup-notification0",
"libxft2",
"libpthread-stubs0-dev",
"libxau-dev",
"libxcb-xinerama0",
"libxcb1-dev",
"libxdmcp-dev",
"x11proto-core-dev",
"xorg-sgml-doctools",
"zlib1g",
"gcc-4.9-base",
"libstdc++-4.9-dev"
]
def create_webroot_url_from_self_link(self_link):
scheme, netloc, _, _, _ = urlparse.urlsplit(self_link)
netloc = netloc.lstrip("api.")
return u"%s://%s/" % (scheme, netloc)
def get_deb(archive, package, series, arch):
re_version = re.compile(r"^\d+\:")
arch_series = series.getDistroArchSeries(archtag=arch)
x = archive.getPublishedBinaries(binary_name=package,
distro_arch_series=arch_series,
status="Published", pocket='Release',
exact_match=True)
webroot = create_webroot_url_from_self_link(archive.self_link)
version = x[0].binary_package_version
version = re_version.sub("", version, 1)
if archive.owner.name == "ubuntu-archive":
yield "%subuntu/+archive/primary/+files/%s_%s_%s.deb" \
% (webroot, x[0].binary_package_name, version, arch)
else:
yield "%s/~ubuntu-sdk-team/+archive/ubuntu/ppa/+files/%s_%s_%s.deb" \
% (webroot, x[0].binary_package_name, version, arch)
def main():
parser = OptionParser(usage="usage: %prog [options] source ...")
parser.add_option(
"-l", "--launchpad", dest="launchpad_instance", default="production")
parser.add_option(
"-a", "--arch", dest="arch", default="armhf", choices=['armhf', 'i386', 'amd64',], help="architecture of the package")
options, args = parser.parse_args()
arch = options.arch
launchpad = Launchpad.login_anonymously('just testing',
options.launchpad_instance)
ubuntu = launchpad.distributions["ubuntu"]
distro_archive = ubuntu.main_archive
overlay_archive = launchpad.people["ubuntu-sdk-team"].\
getPPAByName(name="ppa")
series = ubuntu.getSeries(name_or_version="vivid")
arch_series = series.getDistroArchSeries(archtag=arch)
build_directory = "./click-%s/" % arch
if not os.path.exists(build_directory):
os.makedirs(build_directory)
src="./click/"
src_files = os.listdir(src)
for file_name in src_files:
full_file_name = os.path.join(src, file_name)
if (os.path.isfile(full_file_name)):
shutil.copy(full_file_name, build_directory)
for ide_package in ide_packages:
re_version = re.compile(r"^\d+\:")
archive = overlay_archive
x = overlay_archive.getPublishedBinaries(
binary_name=ide_package,
distro_arch_series=arch_series,
status="Published", pocket='Release',
exact_match=True)
if len(x) == 0:
archive = distro_archive
x = distro_archive.getPublishedBinaries(
binary_name=ide_package,
distro_arch_series=arch_series,
status="Published", pocket='Release',
exact_match=True)
if len(x) == 0:
print("Could not find "+ide_package)
sys.exit(1)
else:
print(ide_package+" found in Archive")
else:
print(ide_package+" found in SDK PPA")
x = x[0].binary_package_version
generator = get_deb(archive, ide_package, series, arch)
for i in generator:
request = requests.get(i)
if request.status_code != 200:
i = re.sub('_%s.deb' % arch, '_all.deb', i)
if ide_package != 'ubuntu-ui-toolkit':
binary_package_name = re.sub(r'-opensource-src',
r'',
ide_package.rstrip())
else:
binary_package_name = re.sub(r'ubuntu-ui-toolkit',
r'ubuntu-sdk',
ide_package.rstrip())
call(["wget", i, "-nv"])
for deb_file in glob.glob('%s*deb' % ide_package):
call(["dpkg-deb", "-x", deb_file, build_directory])
for junk_files in glob.glob("*.deb"):
os.remove(junk_files)
# click_package_rev = subprocess.Popen(["bzr", "revno"], stdout=subprocess.PIPE).communicate()[0]
# click_package_rev = click_package_rev.rstrip()
# manifest_file = open('click/manifest.json','r')
# manifest_with_orig_version = manifest_file.read()
# manifest_file.close()
# manifest_with_new_version = re.sub("\"version\":\s+\".*\"", "\"version\": \"%s\"" % click_package_rev, manifest_with_orig_version)
# manifest_file = open('click/manifest.json','w')
# manifest_file.write(manifest_with_new_version)
# manifest_file.close()
call(["create_kit.sh","-a",arch])
s=open("%s/manifest.json" % build_directory).read()
s=s.replace('armhf', '%s' % arch)
f=open("%s/manifest.json" % build_directory, 'w')
f.write(s)
f.close()
call(["click", "build", build_directory])
main()

76
create_kit.sh Executable file
View File

@@ -0,0 +1,76 @@
#!/bin/bash
ARCH="armhf"
while getopts "ha:" opt; do
case $opt in
a)
ARCH=$OPTARG
;;
h)
echo "Usage: create_kit.sh -a [arch]"
echo -e "\t-a : Creat Kit for the given arch type. Default: ${ARCH} [armhf, i386, amd64]"
exit
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
QT_UID="UbuntuSDK-API-Qt"
SDK_TOOL="/usr/ubuntu-sdk-ide/bin/sdktool"
SDKPATH="./click-${ARCH}/usr/ubuntu-sdk-ide/share/qtcreator/QtProject/qtcreator"
rm ${SDKPATH}/*.xml
case "${ARCH}" in
amd64)
GCC_UID="ProjectExplorer.ToolChain.Gcc:UbuntuSDKGCC-x86_64-linux-gnu"
NAME="GCC (x86 64bit in /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/bin/g++)"
ABI="x86-linux-generic-elf-64bit"
SUPPORTED_ABIS="x86-linux-generic-elf-64bit,x86-linux-generic-elf-32bit"
;;
i386)
GCC_UID="ProjectExplorer.ToolChain.Gcc:UbuntuSDKGCC-x86-linux-generic-elf-32bit"
NAME="GCC (x86 32bit in /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/bin/g++)"
ABI="x86-linux-generic-elf-32bit"
SUPPORTED_ABIS="x86-linux-generic-elf-32bit"
;;
armhf)
GCC_UID="ProjectExplorer.ToolChain.Gcc:UbuntuSDKGCC-arm-linux-generic-elf-32bit"
NAME="GCC (armhf in /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/bin/g++)"
ABI="arm-linux-generic-elf-32bit"
SUPPORTED_ABIS="arm-linux-generic-elf-32bit"
;;
*)
echo "Unknown architecture"
exit 1
;;
esac
${SDK_TOOL} --sdkpath=${SDKPATH} addTC \
--id "${GCC_UID}" \
--name "${NAME}" \
--path /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/bin/g++ \
--abi "${ABI}" \
--supportedAbis "${SUPPORTED_ABIS}"
${SDK_TOOL} --sdkpath=${SDKPATH} addQt \
--id "${QT_UID}" \
--name "Ubuntu SDK Desktop Qt" \
--qmake /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/bin/qmake-clicksdk \
--type Qt4ProjectManager.QtVersion.Desktop
${SDK_TOOL} --sdkpath=${SDKPATH} addKit \
--id "UbuntuSDK-API-Desktop-Kit" \
--name "Ubuntu SDK Desktop Kit" \
--debuggerengine 1 \
--debugger /opt/click.ubuntu.com/com.ubuntu.sdk/current/usr/bin/gdb \
--devicetype Desktop \
--toolchain "${GCC_UID}" \
--qt "${QT_UID}"

View File

@@ -0,0 +1,13 @@
[Desktop Entry]
Exec=ubuntu-sdk-ide %F
TryExec=ubuntu-sdk-ide
Icon=${SNAP}/meta/gui/ubuntu-sdk-ide.png
Type=Application
Terminal=false
Name=Ubuntu SDK IDE
GenericName=Integrated Development Environment
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.nokia.qt.qmakeprofile;application/vnd.nokia.xml.qt.resource;application/x-qmlproject;
Categories=Qt;Development;IDE;
InitialPreference=9
Keywords=IDE;Ubuntu SDK IDE;buntu SDK;SDK;Ubuntu Touch;Qt Creator;Qt

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

23
snapcraft.yaml Normal file
View File

@@ -0,0 +1,23 @@
name: ubuntu-sdk-ide
version: "0"
summary: Integrated Development Environment for Ubuntu Touch
description: |
Qt Creator is a lightweight, cross-platform integrated development environment (IDE) designed to make
development with the Qt application framework even faster and easier.
This package contains the Qt Creator and the Ubuntu plugins providing deeper integration for developing
applications for Ubuntu using the Ubuntu UI Toolkit. It also introduces an Ubuntu themed welcome screen.
confinement: devmode
apps:
ubuntu-sdk-ide:
command: desktop-launch $SNAP/usr/ubuntu-sdk-ide/bin/qtcreator.sh -noload Ubuntu
plugs: [unity7, opengl, network-bind]
parts:
ubuntu-sdk-ide:
plugin: nil
stage-packages:
- ubuntu-sdk-ide
# https://wiki.ubuntu.com/snapcraft/parts
after: [desktop-glib-only]