summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYves Fischer <yvesf-git@xapek.org>2015-12-20 18:47:45 +0100
committerYves Fischer <yvesf-git@xapek.org>2015-12-20 18:47:45 +0100
commit570c0a93fb24a393a2bf013a5aad5b6759713ce7 (patch)
tree430499b41b4defac779fa3f3967bf0fa7af9f418
downloaddebian-packages-570c0a93fb24a393a2bf013a5aad5b6759713ce7.tar.gz
debian-packages-570c0a93fb24a393a2bf013a5aad5b6759713ce7.zip
start migrating from shell scripts
-rw-r--r--.gitignore3
-rw-r--r--build.gradle54
-rw-r--r--buildSrc/build.gradle7
-rw-r--r--buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy61
-rw-r--r--gradle/wrapper/gradle-wrapper.jarbin0 -> 51010 bytes
-rw-r--r--gradle/wrapper/gradle-wrapper.properties6
-rwxr-xr-xgradlew164
-rw-r--r--packages/grails3/build.gradle11
-rw-r--r--packages/gwt-chromium/build.gradle43
-rwxr-xr-xpackages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-persistent12
-rwxr-xr-xpackages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-volatile16
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/bin/product_logo_48.pngbin0 -> 2961 bytes
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/000003.logbin0 -> 513 bytes
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/CURRENT1
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOCK0
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOG1
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/MANIFEST-000002bin0 -> 50 bytes
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Preferences529
-rw-r--r--packages/gwt-chromium/resources/chrome-profile/chrome-profile/Local State5
-rwxr-xr-xpackages/gwt-chromium/resources/chrome-profile/lib/chrome-support/libudev.so.0bin0 -> 55184 bytes
-rwxr-xr-xpackages/gwt-chromium/resources/rewrite-locale/data_pack.py115
-rw-r--r--packages/gwt-chromium/resources/rewrite-locale/input.pakbin0 -> 196003 bytes
-rw-r--r--packages/gwt-chromium/resources/rewrite-locale/output.pakbin0 -> 196603 bytes
-rw-r--r--packages/idea-iu/build.gradle17
-rw-r--r--packages/scheme2ddl/build.gradle12
-rw-r--r--settings.gradle8
26 files changed, 1065 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..64053d4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/.idea
+*.iml
+/packages/*/build \ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..1d69d90
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,54 @@
+plugins {
+ id "nebula.ospackage" version "3.2.0"
+}
+ext {
+ sshKeyfile = new File(System.getProperty('user.home'), '.ssh/id_rsa')
+ sshKnownHosts =new File(System.getProperty('user.home'), '.ssh/known_hosts')
+ sshUser = 'yvesf'
+ sshHost = 'xapek.org'
+ sshTargetDir = 'public_html/public/debian/files'
+ sshRebuildCommand = 'public_html/public/debian/rebuild.sh'
+}
+
+subprojects {
+ configurations { sshAntTask }
+ repositories {
+ mavenCentral()
+ }
+ dependencies { sshAntTask 'org.apache.ant:ant-jsch:1.9.2' }
+ ant.taskdef(
+ name: 'scp',
+ classname: 'org.apache.tools.ant.taskdefs.optional.ssh.Scp',
+ classpath: configurations.sshAntTask.asPath)
+
+ ant.taskdef(
+ name: 'ssh',
+ classname: 'org.apache.tools.ant.taskdefs.optional.ssh.SSHExec',
+ classpath: configurations.sshAntTask.asPath)
+
+ group 'org.xapek.yvesf.debian'
+ version '1.0-SNAPSHOT'
+
+ apply plugin: 'nebula.ospackage'
+
+ def buildDeb = project.getTasks().getByName('buildDeb')
+ task upload() << {
+ ant.scp(
+ file: new File(project.buildDir, "distributions/${buildDeb.assembleArchiveName()}"),
+ todir: "${sshUser}@${sshHost}:${sshTargetDir}",
+ keyfile: file(sshKeyfile),
+ knownhosts: file(sshKnownHosts),
+ verbose: true,
+ )
+ ant.ssh(
+ host: sshHost,
+ username: sshUser,
+ keyfile: file(sshKeyfile),
+ knownhosts: file(sshKnownHosts),
+ command: sshRebuildCommand,
+ verbose: true,
+
+ )
+ }
+ upload.dependsOn(buildDeb)
+} \ No newline at end of file
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
new file mode 100644
index 0000000..17d9385
--- /dev/null
+++ b/buildSrc/build.gradle
@@ -0,0 +1,7 @@
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ compile 'commons-codec:commons-codec:1.10'
+}
diff --git a/buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy b/buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy
new file mode 100644
index 0000000..1a49dd5
--- /dev/null
+++ b/buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy
@@ -0,0 +1,61 @@
+package buildSrc
+
+import org.apache.commons.codec.binary.Hex
+import org.gradle.api.DefaultTask
+import org.gradle.api.tasks.*
+
+import java.security.MessageDigest
+
+class DownloadTask extends DefaultTask {
+ @OutputFile
+ File destFile
+
+ @Input
+ URL source
+
+ String sha256sum
+
+ void setSource(URL url) {
+ this.@source = url
+ if (destFile == null) {
+ final basename = url.path.substring(url.path.lastIndexOf('/') + 1)
+ destFile = new File(project.buildDir, basename)
+ }
+ }
+
+ void source(URL url) {
+ setSource(url)
+ }
+
+ void source(String sourceUrl) {
+ source new URL(sourceUrl)
+ }
+
+ void sha256sum(String sha256sum) {
+ this.@sha256sum = sha256sum
+ }
+
+ private void checkSha256Sum(File file, String sum) {
+ final md = MessageDigest.getInstance('SHA-256')
+ final digestBytes = md.digest(file.bytes)
+ final digestHex = Hex.encodeHexString(digestBytes)
+ if (digestHex != sum) {
+ throw new TaskExecutionException(this,
+ new Exception("Checksum mismatch, expected ${sum} got ${digestHex}"))
+ }
+ }
+
+ @TaskAction
+ void doExecute() {
+ final tempFile = new File(destFile.path + '_download')
+ project.logger.info("Download ${source} to ${tempFile}")
+ ant.get(src: source, dest: tempFile, verbose: true)
+
+ if (sha256sum) {
+ checkSha256Sum(tempFile, sha256sum)
+ }
+
+ project.logger.info("Rename downloaded ${tempFile} to ${destFile}")
+ ant.rename(src: tempFile, dest: destFile)
+ }
+} \ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..2322723
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..12ac71e
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Dec 19 22:03:27 CET 2015
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/packages/grails3/build.gradle b/packages/grails3/build.gradle
new file mode 100644
index 0000000..2e4e041
--- /dev/null
+++ b/packages/grails3/build.gradle
@@ -0,0 +1,11 @@
+version '3.0.10'
+
+task downloadFiles(type: buildSrc.DownloadTask) {
+ source "https://github.com/grails/grails-core/releases/download/v${project.version}/grails-${project.version}.zip"
+ sha256sum '31b0627cfabca76cc38a4f32f5e7e1cc31979ec9e9eaf45243514d1306e96ccd'
+}
+
+ospackage {
+ into "/opt/${project.name}"
+ from downloadFiles.outputs.files
+}
diff --git a/packages/gwt-chromium/build.gradle b/packages/gwt-chromium/build.gradle
new file mode 100644
index 0000000..5b3c467
--- /dev/null
+++ b/packages/gwt-chromium/build.gradle
@@ -0,0 +1,43 @@
+//chrome nightly build, one of the last with npapi
+final revision = '242519'
+version "34-r${revision}"
+
+task downloadChrome(type: buildSrc.DownloadTask) {
+ source "http://gsdview.appspot.com/chromium-browser-continuous/Linux_x64/${revision}/chrome-linux.zip"
+ sha256sum '7269d35b51fb16ebd11af92cdaba933fb73f8984949952888e30fab63dc78df8'
+}
+
+task unpackChrome(type: Copy) {
+ from zipTree(downloadChrome.destFile)
+ into file("${buildDir}/unpacked/dist")
+}
+unpackChrome.dependsOn(downloadChrome)
+
+task downloadGwtPlugin(type: buildSrc.DownloadTask) {
+ source 'https://clients2.googleusercontent.com/crx/blobs/QgAAAC6zw0qH2DJtnXe8Z7rUJP3brylTnXsqSLH8EJLp' +
+ 'Cpq2560pdQWMapnnCQsWYAxwMN2Pa2mZkH4aA9in1i3WTJKG0OUyFhe7lScnMNxhS1yjAMZSmuVxRW6MIEDyZkO8bJcfTSNy6GZA2g/' +
+ 'extension_1_0_11357.crx'
+ sha256sum '5716f39ca4dadb47f571f65f631a00854487971f42ad24aa3a36a99e78d33134'
+}
+
+task downloadPdfPlugin(type: buildSrc.DownloadTask) {
+ source 'https://clients2.googleusercontent.com/crx/blobs/QgAAAC6zw0qH2DJtnXe8Z7rUJP2i3UKpz0eTiopC2Qlk_FXWm-wYwG' +
+ 'N2MPtjDt7LaoCfAScKzPva1bZi2q-9pYXZOibTl1nwFns1ZGCCvKGnyPQ0AMZSmuVlD6-IvZI2Yaw8Sj800M072EC85w/'+
+ 'extension_1_1_527.crx'
+ sha256sum ''
+}
+
+ospackage {
+ into("/opt/${project.name}")
+ from(unpackChrome.outputs.files)
+ from(fileTree(dir: 'resources/chrome-profile'))
+ from('resources/rewrite-locale/output.pak') {
+ into '/chrome-linux/locales/en-US.pak'
+ }
+ from(downloadGwtPlugin.outputs.files) {
+ into "/opt/${project.name}/chrome-profile/Default/Extensions/jpjpnpmbddbjkfaccnmhnkdgjideieim"
+ }
+ from(downloadPdfPlugin.outputs.files) {
+ into "/opt/${project.name}/chrome-profile/Default/Extensions/oemmndcbldboiebfnladdacbdfmadadm"
+ }
+} \ No newline at end of file
diff --git a/packages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-persistent b/packages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-persistent
new file mode 100755
index 0000000..c0b2ef1
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-persistent
@@ -0,0 +1,12 @@
+#!/bin/sh
+HERE=`dirname "$0"`
+profile="$HOME/.config/gwt-chrome"
+if ! [ -e "$profile" ]; then
+ mkdir -p "$profile"
+ cp -r "$HERE/../chrome-profile"/* "$profile"
+fi
+chmod -R u+w "$profile"
+LD_LIBRARY_PATH="$HERE/../lib/chrome-support" \
+ "$HERE"/../chrome-linux/chrome \
+ --auth-server-whitelist="*cern.ch" \
+ --disable-setuid-sandbox --user-data-dir="$profile" $*
diff --git a/packages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-volatile b/packages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-volatile
new file mode 100755
index 0000000..99f2a21
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/bin/gwt-chrome-volatile
@@ -0,0 +1,16 @@
+#!/bin/sh
+HERE=`dirname "$0"`
+persistent_profile="$HOME/.config/gwt-chrome"
+tmp_profile=`mktemp -d`
+cp -r "$HERE/../chrome-profile"/* "$tmp_profile"
+chmod -R u+w "$tmp_profile"
+
+# copy from persistent profile
+test -e "$persistent_profile/Default/Bookmarks" && \
+ cp "$persistent_profile/Default/Bookmarks" "$tmp_profile/Default/Bookmarks"
+
+LD_LIBRARY_PATH="$HERE/../lib/chrome-support" \
+ "$HERE/../chrome-linux/"/chrome \
+ --auth-server-whitelist="*cern.ch" \
+ --disable-setuid-sandbox --user-data-dir="$tmp_profile" $*
+rm -r "$tmp_profile"
diff --git a/packages/gwt-chromium/resources/chrome-profile/bin/product_logo_48.png b/packages/gwt-chromium/resources/chrome-profile/bin/product_logo_48.png
new file mode 100644
index 0000000..7690049
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/bin/product_logo_48.png
Binary files differ
diff --git a/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/000003.log b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/000003.log
new file mode 100644
index 0000000..da73f93
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/000003.log
Binary files differ
diff --git a/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/CURRENT b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/CURRENT
new file mode 100644
index 0000000..1a84852
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/CURRENT
@@ -0,0 +1 @@
+MANIFEST-000002
diff --git a/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOCK b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOCK
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOCK
diff --git a/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOG b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOG
new file mode 100644
index 0000000..1f2a05e
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/LOG
@@ -0,0 +1 @@
+2015/02/16-10:24:53.226 17564 Delete type=3 #1
diff --git a/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/MANIFEST-000002 b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Extension State/MANIFEST-000002
Binary files differ
diff --git a/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Preferences b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Preferences
new file mode 100644
index 0000000..8d11020
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Default/Preferences
@@ -0,0 +1,529 @@
+{
+ "apps": {
+ "shortcuts_have_been_created": true
+ },
+ "bookmark_bar": {
+ "show_on_all_tabs": true
+ },
+ "browser": {
+ "last_known_google_url": "https://www.google.ch/",
+ "last_prompted_google_url": "https://www.google.ch/",
+ "window_placement": {
+ "bottom": 1029,
+ "left": 1330,
+ "maximized": false,
+ "right": 2275,
+ "top": 33,
+ "work_area_bottom": 1058,
+ "work_area_left": 1280,
+ "work_area_right": 3200,
+ "work_area_top": 33
+ }
+ },
+ "countryid_at_install": 21843,
+ "default_apps_install_state": 3,
+ "default_search_provider": {
+ "alternate_urls": [ "{google:baseURL}#q={searchTerms}", "{google:baseURL}search#q={searchTerms}", "{google:baseURL}webhp#q={searchTerms}" ],
+ "enabled": true,
+ "encodings": "UTF-8",
+ "icon_url": "http://www.google.com/favicon.ico",
+ "id": "2",
+ "image_url": "{google:baseURL}searchbyimage/upload",
+ "image_url_post_params": "encoded_image={google:imageThumbnail},image_url={google:imageURL},sbisrc={google:imageSearchSource},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight}",
+ "instant_url": "{google:baseURL}webhp?sourceid=chrome-instant&{google:RLZ}{google:forceInstantResults}{google:instantExtendedEnabledParameter}{google:ntpIsThemedParameter}{google:omniboxStartMarginParameter}ie={inputEncoding}",
+ "instant_url_post_params": "",
+ "keyword": "google.ch",
+ "name": "Google",
+ "new_tab_url": "{google:baseURL}_/chrome/newtab?{google:RLZ}{google:instantExtendedEnabledParameter}{google:ntpIsThemedParameter}ie={inputEncoding}",
+ "prepopulate_id": "1",
+ "search_terms_replacement_key": "espv",
+ "search_url": "{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:bookmarkBarPinned}{google:searchClient}{google:sourceId}{google:instantExtendedEnabledParameter}{google:omniboxStartMarginParameter}ie={inputEncoding}",
+ "search_url_post_params": "",
+ "suggest_url": "{google:baseSuggestURL}search?{google:searchFieldtrialParameter}client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:cursorPosition}{google:currentPageUrl}{google:pageClassification}sugkey={google:suggestAPIKeyParameter}",
+ "suggest_url_post_params": ""
+ },
+ "dns_prefetching": {
+ "host_referral_list": [ 2, [ "https://accounts.google.com/", [ "https://apis.google.com/", 2.2733802, "https://oauth.googleusercontent.com/", 2.2733802, "https://ssl.gstatic.com/", 2.2733802 ] ], [ "https://apis.google.com/", [ "https://apis.google.com/", 2.6037003999999997, "https://fonts.gstatic.com/", 2.2733802 ] ], [ "https://www.google.com/", [ "https://accounts.google.com/", 2.2733802, "https://apis.google.com/", 3.2643407999999994, "https://fonts.googleapis.com/", 2.2733802, "https://fonts.gstatic.com/", 3.2643407999999994, "https://ssl.google-analytics.com/", 2.6037003999999997, "https://ssl.gstatic.com/", 2.2733802, "https://www.google.com/", 5.246261999999999, "https://www.gstatic.com/", 2.2733802, "https://www.youtube.com/", 2.2733802 ] ], [ "https://www.youtube.com/", [ "https://i.ytimg.com/", 2.2733802, "https://s.ytimg.com/", 3.5946609999999994, "https://www.google.com/", 2.2733802 ] ] ],
+ "startup_list": [ 1, "http://tools.google.com/", "https://clients2.google.com/", "https://clients2.googleusercontent.com/", "https://fonts.googleapis.com/", "https://fonts.gstatic.com/", "https://ssl.google-analytics.com/", "https://ssl.gstatic.com/", "https://www.google.com/", "https://www.gstatic.com/", "https://www.youtube.com/" ]
+ },
+ "extensions": {
+ "alerts": {
+ "initialized": true
+ },
+ "autoupdate": {
+ "next_check": "13068571833446583"
+ },
+ "chrome_url_overrides": {
+ "bookmarks": [ "chrome-extension://eemcgdkfndhakfknompkggombfjjjeno/main.html" ]
+ },
+ "known_disabled": [ ],
+ "last_chrome_version": "34.0.1761.0",
+ "settings": {
+ "hnmkfcicjochbbdloamlldphmhbbkenb": {
+ "active_permissions": {
+ "api": [ "plugin", "tabs" ],
+ "manifest_permissions": [ ]
+ },
+ "content_settings": [ ],
+ "creation_flags": 38,
+ "events": [ ],
+ "from_bookmark": false,
+ "from_webstore": false,
+ "granted_permissions": {
+ "api": [ "plugin", "tabs" ],
+ "manifest_permissions": [ ]
+ },
+ "incognito_content_settings": [ ],
+ "incognito_preferences": {
+
+ },
+ "initial_keybindings_set": true,
+ "install_time": "13068552374378446",
+ "location": 4,
+ "newAllowFileAccess": true,
+ "path": "jpjpnpmbddbjkfaccnmhnkdgjideieim",
+ "preferences": {
+
+ },
+ "regular_only_preferences": {
+
+ },
+ "state": 1,
+ "was_installed_by_default": false
+ },
+ "mfehgcgbbipciphmccgaenjidiccnmng": {
+ "active_permissions": {
+ "api": [ "cloudPrintPrivate" ],
+ "manifest_permissions": [ ]
+ },
+ "content_settings": [ ],
+ "creation_flags": 1,
+ "events": [ ],
+ "from_bookmark": false,
+ "from_webstore": false,
+ "incognito_content_settings": [ ],
+ "incognito_preferences": {
+
+ },
+ "install_time": "13068552291983812",
+ "location": 5,
+ "manifest": {
+ "app": {
+ "launch": {
+ "web_url": "https://www.google.com/cloudprint"
+ },
+ "urls": [ "https://www.google.com/cloudprint/enable_chrome_connector" ]
+ },
+ "description": "Cloud Print",
+ "display_in_launcher": false,
+ "icons": {
+
+ },
+ "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDqOhnwk4+HXVfGyaNsAQdU/js1Na56diW08oF1MhZiwzSnJsEaeuMN9od9q9N4ZdK3o1xXOSARrYdE+syV7Dl31nf6qz3A6K+D5NHe6sSB9yvYlIiN37jdWdrfxxE0pRYEVYZNTe3bzq3NkcYJlOdt1UPcpJB+isXpAGUKUvt7EQIDAQAB",
+ "name": "Cloud Print",
+ "permissions": [ "cloudPrintPrivate" ],
+ "version": "0.1"
+ },
+ "path": "/home/yfischer/.nixpkgs/store/wmzb416rhym02j7rp19ffnqjdi2q093v-gwt-chromium/opt/chrome-linux/resources/cloud_print",
+ "preferences": {
+
+ },
+ "regular_only_preferences": {
+
+ },
+ "was_installed_by_default": false
+ },
+ "oemmndcbldboiebfnladdacbdfmadadm": {
+ "active_permissions": {
+ "api": [ "fileBrowserHandler", "fileBrowserHandlerInternal", "storage", "tabs", "webNavigation", "webRequest", "webRequestBlocking", "webRequestInternal" ],
+ "explicit_host": [ "\u003Call_urls>", "chrome://favicon/*" ],
+ "manifest_permissions": [ ],
+ "scriptable_host": [ "file:///*", "ftp://*/*", "http://*/*", "https://*/*" ]
+ },
+ "content_settings": [ ],
+ "creation_flags": 9,
+ "events": [ ],
+ "from_bookmark": false,
+ "from_webstore": true,
+ "granted_permissions": {
+ "api": [ "fileBrowserHandler", "fileBrowserHandlerInternal", "storage", "tabs", "webNavigation", "webRequest", "webRequestBlocking", "webRequestInternal" ],
+ "explicit_host": [ "\u003Call_urls>", "chrome://favicon/*" ],
+ "manifest_permissions": [ ],
+ "scriptable_host": [ "file:///*", "ftp://*/*", "http://*/*", "https://*/*" ]
+ },
+ "incognito_content_settings": [ ],
+ "incognito_preferences": {
+
+ },
+ "initial_keybindings_set": true,
+ "install_time": "13069340611715590",
+ "location": 1,
+ "manifest": {
+ "background": {
+ "page": "pdfHandler.html"
+ },
+ "content_scripts": [ {
+ "all_frames": true,
+ "css": [ "contentstyle.css" ],
+ "js": [ "contentscript.js" ],
+ "matches": [ "http://*/*", "https://*/*", "ftp://*/*", "file://*/*" ],
+ "run_at": "document_start"
+ } ],
+ "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
+ "description": "Uses HTML5 to display PDF files directly in the browser.",
+ "file_browser_handlers": [ {
+ "default_title": "Open with PDF Viewer",
+ "file_filters": [ "filesystem:*.pdf" ],
+ "id": "open-as-pdf"
+ } ],
+ "icons": {
+ "128": "icon128.png",
+ "16": "icon16.png",
+ "48": "icon48.png"
+ },
+ "incognito": "split",
+ "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDb5PIb8ayK6vHvEIY1nJKRSCDE8iJ1T43qFN+5dvCVQrmyEkgqB9ZuZNT24Lwot96HV51VoITHKRNIVKI2Nrbfn0M49t7qtaP34g/GXJ7mAIbSzsY4+i+Wsz8EL2SNEIw6uH8RmXG7nZ29NJ7sk7jn17QmMsO2UJ01UT8hfOOOEQIDAQAB",
+ "manifest_version": 2,
+ "mime_types": [ "application/pdf" ],
+ "name": "PDF Viewer",
+ "options_page": "options/options.html",
+ "options_ui": {
+ "chrome_style": true,
+ "page": "options/options.html"
+ },
+ "page_action": {
+ "default_icon": {
+ "19": "icon19.png",
+ "38": "icon38.png"
+ },
+ "default_popup": "pageActionPopup.html",
+ "default_title": "Show PDF URL"
+ },
+ "permissions": [ "fileBrowserHandler", "webRequest", "webRequestBlocking", "\u003Call_urls>", "tabs", "webNavigation", "storage", "streamsPrivate" ],
+ "storage": {
+ "managed_schema": "preferences_schema.json"
+ },
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "version": "1.0.1143",
+ "web_accessible_resources": [ "getFrameId", "content/web/viewer.html", "http:/*", "https:/*", "ftp:/*", "file:/*", "chrome-extension:/*", "filesystem:/*", "drive:*" ]
+ },
+ "path": "oemmndcbldboiebfnladdacbdfmadadm",
+ "preferences": {
+
+ },
+ "regular_only_preferences": {
+
+ },
+ "state": 1,
+ "was_installed_by_default": false
+ },
+ "pafkbggdmjlpgkdkcbjmhmfcdpncadgh": {
+ "active_permissions": {
+ "api": [ "alarms", "identity", "location", "metricsPrivate", "notifications", "preferencesPrivate", "pushMessaging", "storage", "tabs", "webstorePrivate" ],
+ "explicit_host": [ "\u003Call_urls>", "chrome://favicon/*" ],
+ "manifest_permissions": [ ]
+ },
+ "content_settings": [ ],
+ "creation_flags": 1,
+ "events": [ "alarms.onAlarm", "identity.onSignInChanged", "location.onLocationUpdate", "notifications.onButtonClicked", "notifications.onClicked", "notifications.onClosed", "notifications.onPermissionLevelChanged", "notifications.onShowSettings", "pushMessaging.onMessage", "runtime.onInstalled", "runtime.onStartup", "runtime.onSuspend", "types.private.ChromeDirectSetting.googlegeolocationaccess.enabled.onChange" ],
+ "from_bookmark": false,
+ "from_webstore": false,
+ "incognito_content_settings": [ ],
+ "incognito_preferences": {
+
+ },
+ "initial_keybindings_set": true,
+ "install_time": "13068552291985445",
+ "location": 5,
+ "manifest": {
+ "background": {
+ "persistent": false,
+ "scripts": [ "utility.js", "cards.js", "background.js" ]
+ },
+ "description": "Integrates Google Now into Chrome.",
+ "icons": {
+ "128": "images/icon128.png",
+ "16": "images/icon16.png",
+ "48": "images/icon48.png"
+ },
+ "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhqJr32OFD/bMXW4Md7jMfd7LbwHXVc6x5bBQG5U+dloofoxrICDR20yur/40mQ8O//0sS1b8srvbab1CRlSrxoNCr9T80NAkfzx0gHyVS+p1Zow+1FzLMu9PiGwwFyN80HIB7GI/dIa0wC9K/2OrrzcHEhVH96DacTtWQqjfDVtZPjT7Xwv23dgoWcpbkRC86jMJot3dmX9xnn0KzoVc9gDOHSIkBLbkkr6Sp3LGXCCM4L0DJgxdFwaLr5WBzgC3y5x0/wwPIwN4PtIaK3BhH6njlksfnKwwIJ9iRT41V4BqbWu4mszO/7VJ3HJyw2DBpIc2grU9ZRRxrV3fRQG4wIDAQAB",
+ "manifest_version": 2,
+ "name": "Google Now",
+ "oauth2": {
+ "auto_approve": true,
+ "scopes": [ "https://www.googleapis.com/auth/googlenow" ]
+ },
+ "optional_permissions": [ "background" ],
+ "permissions": [ "alarms", "identity", "location", "metricsPrivate", "notifications", "preferencesPrivate", "pushMessaging", "storage", "tabs", "webstorePrivate", "\u003Call_urls>" ],
+ "version": "1.2.0.1"
+ },
+ "path": "/home/yfischer/.nixpkgs/store/wmzb416rhym02j7rp19ffnqjdi2q093v-gwt-chromium/opt/chrome-linux/resources/google_now",
+ "preferences": {
+
+ },
+ "regular_only_preferences": {
+
+ },
+ "was_installed_by_default": false
+ },
+ "pmjbhfmaphnpbehdanbjphdcniaelfie": {
+ "active_bit": true,
+ "active_permissions": {
+ "api": [ "background", "storage", "tabs", "webRequest", "webRequestBlocking", "webRequestInternal" ],
+ "explicit_host": [ "\u003Call_urls>", "chrome://favicon/*" ],
+ "manifest_permissions": [ ]
+ },
+ "content_settings": [ ],
+ "creation_flags": 9,
+ "events": [ ],
+ "from_bookmark": false,
+ "from_webstore": true,
+ "granted_permissions": {
+ "api": [ "background", "storage", "tabs", "webRequest", "webRequestBlocking", "webRequestInternal" ],
+ "explicit_host": [ "\u003Call_urls>", "chrome://favicon/*" ],
+ "manifest_permissions": [ ]
+ },
+ "incognito_content_settings": [ ],
+ "incognito_preferences": {
+
+ },
+ "initial_keybindings_set": true,
+ "install_time": "13069340790430209",
+ "last_launch_time": "13069340811551561",
+ "location": 1,
+ "manifest": {
+ "background": {
+ "persistent": true,
+ "scripts": [ "lib/dojo.js", "code/background.js" ]
+ },
+ "browser_action": {
+ "default_icon": "icons/icon.png",
+ "default_popup": "popup.html"
+ },
+ "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
+ "description": "An Extension for chrome to easily change the language. This makes testing locale related problems easier",
+ "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAge4+rEOVAsU1R7JIe8HE/wiaU5SnyrGPWFkSOk5uRfXdxcfZdj9UnTnIpGdexs8iGD1G63+NMeL0R0sxeZEAb4FLdRKAcslf4DwbxZPrV+rb8j4GcEzwaz/VEBvblE8TyfJTymWO3ZjpR93PvEIwjkDLiAXUabfL0JrPGGTYXg+rcINJDnXc8+8FIYfrXlaY76HtCEXRplqIFxEB8lxcXUyPtoD2Ugg7tXbKGQCkWjxiCA3ZFQneEymWmXWhS9NOpH0cf1qnvqtLt4cHGAFB/vRP1hKIwNE63NNsbB2DYrOtaGs2bglNrsKHLCjjVoTt58cZQaUbBwR1vczjpdqtFQIDAQAB",
+ "manifest_version": 2,
+ "name": "Quick Language Switcher",
+ "options_page": "options.html",
+ "permissions": [ "\u003Call_urls>", "webRequest", "webRequestBlocking", "background", "storage", "tabs" ],
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "version": "0.0.0.4"
+ },
+ "path": "pmjbhfmaphnpbehdanbjphdcniaelfie",
+ "preferences": {
+
+ },
+ "regular_only_preferences": {
+
+ },
+ "state": 1,
+ "was_installed_by_default": false
+ }
+ },
+ "theme": {
+ "use_system": false
+ },
+ "ui": {
+ "developer_mode": true
+ }
+ },
+ "google": {
+ "services": {
+ "signin": {
+ "LSID": "",
+ "SID": ""
+ }
+ }
+ },
+ "intl": {
+ "accept_languages": "en-US,en"
+ },
+ "invalidator": {
+ "client_id": "l+abZwfh80KDwgMJkMLA1g=="
+ },
+ "media": {
+ "device_id_salt": "FtrdBPEmfQM7NJMrmjg9KQ=="
+ },
+ "net": {
+ "http_server_properties": {
+ "servers": {
+ "accounts.google.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "apis.google.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "clients2.google.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "clients2.googleusercontent.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "fonts.googleapis.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "fonts.gstatic.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "supports_spdy": false
+ },
+ "i.ytimg.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "supports_spdy": false
+ },
+ "oauth.googleusercontent.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "s.ytimg.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "ssl.google-analytics.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "ssl.gstatic.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "supports_spdy": false
+ },
+ "tools.google.com:80": {
+ "alternate_protocol": {
+ "port": 80,
+ "protocol_str": "quic"
+ },
+ "supports_spdy": false
+ },
+ "www.google.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "www.google.com:80": {
+ "alternate_protocol": {
+ "port": 80,
+ "protocol_str": "quic"
+ },
+ "supports_spdy": false
+ },
+ "www.gstatic.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ },
+ "www.youtube.com:443": {
+ "alternate_protocol": {
+ "port": 443,
+ "protocol_str": "quic"
+ },
+ "settings": {
+ "4": 100
+ },
+ "supports_spdy": true
+ }
+ },
+ "version": 2
+ }
+ },
+ "pinned_tabs": [ ],
+ "plugins": {
+ "plugins_list": [ ],
+ "removed_old_component_pepper_flash_settings": true
+ },
+ "profile": {
+ "avatar_index": 0,
+ "content_settings": {
+ "clear_on_exit_migrated": true,
+ "pattern_pairs": {
+
+ },
+ "pref_version": 1
+ },
+ "created_by_version": "34.0.1761.0",
+ "exit_type": "Normal",
+ "exited_cleanly": true,
+ "local_profile_id": 11453368,
+ "managed_user_id": "",
+ "name": "First user"
+ },
+ "session": {
+ "restore_on_startup_migrated": true,
+ "startup_urls_migration_time": "13068552291979007"
+ },
+ "translate_blocked_languages": [ "en" ],
+ "translate_whitelists": {
+
+ }
+}
diff --git a/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Local State b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Local State
new file mode 100644
index 0000000..df85908
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/chrome-profile/Local State
@@ -0,0 +1,5 @@
+{
+ "background_mode": {
+ "enabled": false
+ }
+}
diff --git a/packages/gwt-chromium/resources/chrome-profile/lib/chrome-support/libudev.so.0 b/packages/gwt-chromium/resources/chrome-profile/lib/chrome-support/libudev.so.0
new file mode 100755
index 0000000..2786d6a
--- /dev/null
+++ b/packages/gwt-chromium/resources/chrome-profile/lib/chrome-support/libudev.so.0
Binary files differ
diff --git a/packages/gwt-chromium/resources/rewrite-locale/data_pack.py b/packages/gwt-chromium/resources/rewrite-locale/data_pack.py
new file mode 100755
index 0000000..ba9790b
--- /dev/null
+++ b/packages/gwt-chromium/resources/rewrite-locale/data_pack.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Support for formatting a data pack file used for platform agnostic resource
+files.
+"""
+
+import collections
+import exceptions
+import os
+import struct
+import sys
+if __name__ == '__main__':
+ sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
+
+
+PACK_FILE_VERSION = 4
+HEADER_LENGTH = 2 * 4 + 1 # Two uint32s. (file version, number of entries) and
+ # one uint8 (encoding of text resources)
+BINARY, UTF8, UTF16 = range(3)
+
+
+class WrongFileVersion(Exception):
+ pass
+
+
+DataPackContents = collections.namedtuple(
+ 'DataPackContents', 'resources encoding')
+
+
+def ReadDataPack(input_file):
+ """Reads a data pack file and returns a dictionary."""
+ data = open(input_file, "rb").read()
+ original_data = data
+
+ # Read the header.
+ version, num_entries, encoding = struct.unpack('<IIB', data[:HEADER_LENGTH])
+ if version != PACK_FILE_VERSION:
+ print 'Wrong file version in ', input_file
+ raise WrongFileVersion
+
+ resources = {}
+ if num_entries == 0:
+ return DataPackContents(resources, encoding)
+
+ # Read the index and data.
+ data = data[HEADER_LENGTH:]
+ kIndexEntrySize = 2 + 4 # Each entry is a uint16 and a uint32.
+ for _ in range(num_entries):
+ id, offset = struct.unpack('<HI', data[:kIndexEntrySize])
+ data = data[kIndexEntrySize:]
+ next_id, next_offset = struct.unpack('<HI', data[:kIndexEntrySize])
+ resources[id] = original_data[offset:next_offset]
+
+ return DataPackContents(resources, encoding)
+
+
+def WriteDataPackToString(resources, encoding):
+ """Returns a string with a map of id=>data in the data pack format."""
+ ids = sorted(resources.keys())
+ ret = []
+
+ # Write file header.
+ ret.append(struct.pack('<IIB', PACK_FILE_VERSION, len(ids), encoding))
+ HEADER_LENGTH = 2 * 4 + 1 # Two uint32s and one uint8.
+
+ # Each entry is a uint16 + a uint32s. We have one extra entry for the last
+ # item.
+ index_length = (len(ids) + 1) * (2 + 4)
+
+ # Write index.
+ data_offset = HEADER_LENGTH + index_length
+ for id in ids:
+ ret.append(struct.pack('<HI', id, data_offset))
+ data_offset += len(resources[id])
+
+ ret.append(struct.pack('<HI', 0, data_offset))
+
+ # Write data.
+ for id in ids:
+ ret.append(resources[id])
+ return ''.join(ret)
+
+
+def WriteDataPack(resources, output_file, encoding):
+ """Writes a map of id=>data into output_file as a data pack."""
+ content = WriteDataPackToString(resources, encoding)
+ with open(output_file, 'wb') as file:
+ file.write(content)
+
+
+
+
+
+# Temporary hack for external programs that import data_pack.
+# TODO(benrg): Remove this.
+class DataPack(object):
+ pass
+DataPack.ReadDataPack = staticmethod(ReadDataPack)
+DataPack.WriteDataPackToString = staticmethod(WriteDataPackToString)
+DataPack.WriteDataPack = staticmethod(WriteDataPack)
+
+
+def main():
+ data = ReadDataPack("input.pak").resources
+ for (key,val) in data.items():
+ if "Chromium" in val:
+ data[key] = val.replace("Chromium", "GWT-Chromium")
+ WriteDataPack(data, "output.pak", UTF8)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/packages/gwt-chromium/resources/rewrite-locale/input.pak b/packages/gwt-chromium/resources/rewrite-locale/input.pak
new file mode 100644
index 0000000..689c22f
--- /dev/null
+++ b/packages/gwt-chromium/resources/rewrite-locale/input.pak
Binary files differ
diff --git a/packages/gwt-chromium/resources/rewrite-locale/output.pak b/packages/gwt-chromium/resources/rewrite-locale/output.pak
new file mode 100644
index 0000000..fe141a2
--- /dev/null
+++ b/packages/gwt-chromium/resources/rewrite-locale/output.pak
Binary files differ
diff --git a/packages/idea-iu/build.gradle b/packages/idea-iu/build.gradle
new file mode 100644
index 0000000..5ea9000
--- /dev/null
+++ b/packages/idea-iu/build.gradle
@@ -0,0 +1,17 @@
+version '14.1.5'
+
+task download(type: buildSrc.DownloadTask) {
+ source "https://download.jetbrains.com/idea/ideaIU-${project.version}.tar.gz"
+ sha256sum '1a7a07871e31f8628e17be2b066665a596e758f8'
+}
+
+task untar(type: Copy) {
+ from tarTree(download.destFile)
+ into file("${buildDir}/unpacked/dist")
+}
+untar.dependsOn(download)
+
+ospackage {
+ into "/opt/${project.name}"
+ from untar.outputs.files
+}
diff --git a/packages/scheme2ddl/build.gradle b/packages/scheme2ddl/build.gradle
new file mode 100644
index 0000000..6ab84aa
--- /dev/null
+++ b/packages/scheme2ddl/build.gradle
@@ -0,0 +1,12 @@
+version '2.3.12'
+
+task downloadFiles(type: buildSrc.DownloadTask) {
+ source "https://bintray.com/artifact/download/qwazer/maven/com/googlecode/" +
+ "scheme2ddl/${project.version}/scheme2ddl-${project.version}.jar"
+ sha256sum '31b0627cfabca76cc38a4f32f5e7e1cc31979ec9e9eaf45243514d1306e96ccd'
+}
+
+ospackage {
+ into "/opt/${project.name}"
+ from downloadFiles.outputs.files
+}
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..5f70845
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,8 @@
+rootProject.name = 'debian-packages'
+
+fileTree('.') {
+ include 'packages/**/build.gradle'
+}.collect {
+ relativePath(it.parent).replace(File.separator, ':')
+}.each { include(it) }
+