From b7f2098ab8b03ad570bd521d1c52c7c2bd59419a Mon Sep 17 00:00:00 2001 From: "Graydon, Tracy" Date: Mon, 22 Oct 2012 15:14:40 -0700 Subject: [PATCH 1/1] Set up branching for 2.0alpha --- .gitignore | 3 + Makefile | 51 +++++ README | 25 +++ VERSION | 1 + packaging/package-groups.changes | 3 + packaging/package-groups.spec | 33 +++ patterns/appscommon.yaml | 20 ++ patterns/appstargetsdk.yaml | 26 +++ patterns/common.yaml | 422 +++++++++++++++++++++++++++++++++++++++ patterns/emul.yaml | 50 +++++ patterns/ivi-base.yaml | 88 ++++++++ patterns/ivi-base.yaml.bak | 37 ++++ patterns/ivi-demos-support.yaml | 15 ++ patterns/ivi-demos.yaml | 7 + patterns/pinetrail-support.yaml | 25 +++ patterns/trats.yaml | 21 ++ scripts/cleanup-patterns.py | 34 ++++ scripts/convert-to-yaml.py | 41 ++++ scripts/find-duplicates.py | 23 +++ scripts/gitlog2changelog.py | 124 ++++++++++++ scripts/merge-patterns.py | 89 +++++++++ scripts/merge-request.sh | 20 ++ scripts/mkpatterns.py | 67 +++++++ scripts/mkpatterns_from_list.py | 49 +++++ scripts/test-patterns.sh | 15 ++ scripts/update.sh | 14 ++ test/test-patterns.sh | 72 +++++++ xsl/comps.xsl | 30 +++ xsl/filter.xsl | 39 ++++ xsl/merge.xsl | 13 ++ 30 files changed, 1457 insertions(+) create mode 100755 .gitignore create mode 100755 Makefile create mode 100755 README create mode 100755 VERSION create mode 100755 packaging/package-groups.changes create mode 100755 packaging/package-groups.spec create mode 100644 patterns/appscommon.yaml create mode 100644 patterns/appstargetsdk.yaml create mode 100644 patterns/common.yaml create mode 100644 patterns/emul.yaml create mode 100644 patterns/ivi-base.yaml create mode 100644 patterns/ivi-base.yaml.bak create mode 100644 patterns/ivi-demos-support.yaml create mode 100644 patterns/ivi-demos.yaml create mode 100644 patterns/pinetrail-support.yaml create mode 100644 patterns/trats.yaml create mode 100755 scripts/cleanup-patterns.py create mode 100755 scripts/convert-to-yaml.py create mode 100755 scripts/find-duplicates.py create mode 100755 scripts/gitlog2changelog.py create mode 100755 scripts/merge-patterns.py create mode 100755 scripts/merge-request.sh create mode 100755 scripts/mkpatterns.py create mode 100755 scripts/mkpatterns_from_list.py create mode 100755 scripts/test-patterns.sh create mode 100755 scripts/update.sh create mode 100755 test/test-patterns.sh create mode 100755 xsl/comps.xsl create mode 100755 xsl/filter.xsl create mode 100755 xsl/merge.xsl diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..c7a1576 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +group.xml +patterns.xml +*~ diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..3a7e55a --- /dev/null +++ b/Makefile @@ -0,0 +1,51 @@ +# ex: set tabstop=4 noexpandtab: +VERSION = $(shell cat VERSION) +NAME=package-groups +TAGVER = $(shell cat VERSION | sed -e "s/\([0-9\.]*\).*/\1/") +DESTDIR= +ARCH=i586 + +ifeq ($(VERSION), $(TAGVER)) + TAG = $(TAGVER) +else + TAG = "HEAD" +endif + +all: + python scripts/merge-patterns.py -a ${ARCH} + xsltproc xsl/comps.xsl patterns.xml > group.xml + +meta: + python scripts/merge-patterns.py -a ${ARCH} -s + +install: + install -d ${DESTDIR}/usr/share/package-groups + install -m 644 patterns.xml ${DESTDIR}/usr/share/package-groups + install -m 644 group.xml ${DESTDIR}/usr/share/package-groups + +tag: + git tag -a $(VERSION) -m "$(VERSION)" + git push --tags + +changelog: + python ./scripts/gitlog2changelog.py + +repackage: dist + osc branch -c Tizen:Base $(NAME) + rm home\:*\:branches\:Tizen:Base/$(NAME)/*tar.bz2 + cp $(NAME)-$(VERSION).tar.bz2 home\:*\:branches\:Tizen:Base/$(NAME) + + + +dist-bz2: + git archive --format=tar --prefix=$(NAME)-$(VERSION)/ $(TAG) | \ + bzip2 > $(NAME)-$(VERSION).tar.bz2 + +dist-gz: + git archive --format=tar --prefix=$(NAME)-$(VERSION)/ $(TAG) | \ + gzip > $(NAME)-$(VERSION).tar.gz + +dist: dist-bz2 + +clean: + rm -rf patterns.xml INDEX.xml group.xml *.xml diff --git a/README b/README new file mode 100755 index 0000000..e5000c5 --- /dev/null +++ b/README @@ -0,0 +1,25 @@ +Package Groups + +Currently groups and packages are maintained in the patterns directory +in pattern files. All changes need to be done only to the pattern files. +Other files are autogenerated. + +- Edit pattern files and make the desired changes +- Verfiy integrity of the changes using a syntax checker such as xmllint + + +To update the package: +- change the pattern files (yaml) +- Verify your changes +- Bump the version in the VERSION file +- commit and push +- Do not change the ChangeLog file, this is generated using a script + run 'python scripts/gitlog2changelog.py' +- commit and push +- run 'make tag' +- run 'make dist' +- Submit the newly generated tar + + + + diff --git a/VERSION b/VERSION new file mode 100755 index 0000000..d00491f --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1 diff --git a/packaging/package-groups.changes b/packaging/package-groups.changes new file mode 100755 index 0000000..f603dd9 --- /dev/null +++ b/packaging/package-groups.changes @@ -0,0 +1,3 @@ +------------------------------------------------------------------- +Tue Oct 2 19:11:39 UTC 2012 - tracy.graydon@intel.com +- Clean up for Tizen IVI 2.0 diff --git a/packaging/package-groups.spec b/packaging/package-groups.spec new file mode 100755 index 0000000..01e6f3a --- /dev/null +++ b/packaging/package-groups.spec @@ -0,0 +1,33 @@ +Summary: Tizen 2.0 Package Groups for IVI +Name: package-groups +Version: 1 +Release: 1 +License: GPLv2 +Group: System/Base +URL: http://www.tizen.org +Source: %{name}-%{version}.tar.bz2 +BuildRequires: libxslt +BuildRequires: python-yaml +BuildRequires: python-lxml + + +%description +Tizen Package Groups + +%prep +%setup -q + +%build +%ifarch %{arm} +make ARCH=arm +%else +make ARCH=i586 +%endif + +%install +%make_install + + +%files +/usr/share/package-groups/*xml + diff --git a/patterns/appscommon.yaml b/patterns/appscommon.yaml new file mode 100644 index 0000000..8fc2a77 --- /dev/null +++ b/patterns/appscommon.yaml @@ -0,0 +1,20 @@ +Description: Common Applications +Name: appscommon +Packages: +- org.tizen.app-selector +- org.tizen.browser +- org.tizen.call +- org.tizen.download-manager +- org.tizen.draglock +- org.tizen.indicator +- org.tizen.lowbat-syspopup +- org.tizen.lowmem-syspopup +- org.tizen.menu-screen +- org.tizen.poweroff-syspopup +- org.tizen.quickpanel +- org.tizen.tickernoti-syspopup +- org.tizen.usb-syspopup +- org.tizen.volume +- org.tizen.wifi-direct-popup +- org.tizen.wifi-direct-ugapp +Summary: Common Applications diff --git a/patterns/appstargetsdk.yaml b/patterns/appstargetsdk.yaml new file mode 100644 index 0000000..b5f5973 --- /dev/null +++ b/patterns/appstargetsdk.yaml @@ -0,0 +1,26 @@ +Description: Applications for Reference target +Name: appstargetsdk +Packages: +- libug-calendar-efl +- org.tizen.bluetooth-share-ui +- org.tizen.bt-syspopup +- org.tizen.calculator +- org.tizen.calendar +- org.tizen.calendar-viewer +- org.tizen.camera-app +- org.tizen.clock +- org.tizen.contacts +- org.tizen.contacts-viewer +- org.tizen.email +- org.tizen.gallery +- org.tizen.image-viewer +- org.tizen.memo +- org.tizen.message +- org.tizen.music-player +- org.tizen.phone +- org.tizen.pwlock +- org.tizen.smartsearch +- org.tizen.taskmgr +- org.tizen.video-player +- ug-gallery-efl +Summary: Applications for Reference target diff --git a/patterns/common.yaml b/patterns/common.yaml new file mode 100644 index 0000000..81f73bb --- /dev/null +++ b/patterns/common.yaml @@ -0,0 +1,422 @@ +Description: platform commonp packages +Name: common +Packages: +- ail +- alarm-server +- alsa-lib +- alsa-scenario +- alsa-utils +- app-checker +- app-checker-server +- appcore-agent +- app-core-common +- app-core-efl +- app-svc +- attr +- audio-session-manager +- aul +- avahi +- avahi-data +- avahi-libs +- avsystem +- bash +- binutils +- bluetooth-frwk +- bluetooth-frwk-agent +- bluez +- boost +- boost-program-options +- boost-thread +- boot-animation +- bundle +- busybox +- busybox-symlinks-bsdmainutils +- busybox-symlinks-busybox +- busybox-symlinks-console-tools +- busybox-symlinks-dnsutils +- busybox-symlinks-dosfstools +- busybox-symlinks-ifupdown +- busybox-symlinks-iputils-ping +- busybox-symlinks-klogd +- busybox-symlinks-net-tools +- busybox-symlinks-openbsd-inetd +- busybox-symlinks-passwd +- busybox-symlinks-sysklogd +- busybox-symlinks-telnetd +- busybox-symlinks-tofrodos +- busybox-symlinks-udhcpc +- busybox-symlinks-udhcpd +- busybox-symlinks-unzip +- busybox-symlinks-vlan +- bzip2 +- bzip2-libs +- ca-certificates +- cairo +- call-setting +- capi-appfw-package-manager +- capi-system-usb-accessory +- cbhm +- cert-svc +- cert-svc-ui +- connman +- contacts-service +- curl +- data-router +- dbus +- dbus-glib +- dbus-libs +- default-fonts-fc-sdk +- default-fonts-sdk +- dlogutil +- dnsmasq +- download-provider +- drm-client +- e17 +- e17-data +- e17-extra-modules +- e17-extra-private-modules +- e2fsprogs +- ecore +- ecore-con +- ecore-evas +- ecore-fb +- ecore-file +- ecore-imf +- ecore-imf-evas +- ecore-input +- ecore-input-evas +- ecore-ipc +- ecore-tools +- ecore-x +- edbus +- edje +- edje-tools +- eet +- eet-tools +- efl-theme-white-hd +- efreet +- eglibc +- eglibc-common +- eina +- elementary +- elementary-tools +- elfutils +- elfutils-libelf +- elfutils-libs +- elm-misc +- email-service +- embryo +- emotion +- emotion-gstreamer +- ethumb +- evas +- expat +- face-engine +- file +- filesystem +- findutils +- fontconfig +- freealut +- freetype +- fribidi +- gawk +- gconf-dbus +- gconf-dbus-utils +- gdb +- gdb-server +- geoclue +- geoclue-nominatim +- gettext-runtime +- giflib +- glib-networking +- gps-manager +- gst-ffmpeg +- gst-openmax +- gst-plugins-base +- gst-plugins-base-tools +- gst-plugins-ext0.10 +- gst-plugins-good +- gst-plugins-ugly +- gstreamer +- gstreamer-tools +- heynoti +- icu +- icu +- iniparser +- initscripts +- iptables +- iptables-ipv6 +- ise-default +- ise-engine-default +- ise-engine-hangul +- isf +- json-glib +- libaccounts-svc +- libalarm +- libarchive +- libasound +- libattr +- libavcodec +- libavformat +- libavutil +- libbluetooth3 +- libcamsrcjpegenc +- libcamsrcjpegenc-sw-libjpeg +- libcurl +- libdaemon +- libdecarta +- libdevman +- libdlog +- libdownload-agent +- libdmx +- libdri2 +- libdrm +- libdrm-slp1 +- libexif +- libface-engine +- libfile +- libfontenc +- libgcc +- libgcrypt +- libgeoclue +- libgomp +- libgpg-error +- libgphoto2 +- libgphoto2-port +- libgudev1 +- libhangul +- libhangul-data +- libICE +- libicu +- libijs +- libiri +- libjpeg +- libjpeg-turbo +- libkms +- libleveldb +- libmedia-service +- libmedia-thumbnail +- libmedia-utils +- libmm-camcorder +- libmm-common +- libmm-fileinfo +- libmm-imgp-gstcs +- libmm-player +- libmm-radio +- libmm-session +- libmm-sound +- libmm-sound-tool +- libmm-ta +- libmm-utility +- libnet-client +- libogg +- liboil +- libpci3 +- libpciaccess +- libpng +- libprivilege-control +- libprivilege-control-conf +- libpush +- librua +- libsecurity-server-client +- libsf-common +- libshortcut +- libslp-alarm +- libslp-db-util +- libslp-lbs-plugin-replay +- libslp-location +- libslp-memo +- libslp-pm +- libslp-tapi +- libslp-utilx +- libSM +- libsndfile +- libsoup2.4 +- libsqlfs +- libss-client +- libsvi +- libswscale +- libtcore +- libtheora +- libtiff +- libudev +- libug-phone-efl +- libug-setting-wifidirect-efl +- libug-worldclock-efl +- libusb +- libuuid +- libvorbis +- libwbxml2 +- libwbxml2-utils +- libwifi-direct +- libX11 +- libXau +- libXaw +- libxcb +- libxcb-devel +- libXcomposite +- libXcursor +- libXdamage +- libXdmcp +- libXext +- libXfixes +- libXfont +- libXft +- libXgesture +- libXi +- libXinerama +- libxkbfile +- libXmu +- libXpm +- libXpm-devel +- libXrandr +- libXrender +- libXres +- libXt +- libXtst +- libXv +- libXxf86dga +- libXxf86vm +- location-decarta +- location-geoclue-nominatim +- location-gps-manager +- login +- lsb +- ltrace +- lua +- lzo +- lzo-minilzo +- media-data-sdk +- media-server +- media-thumbnail-server +- menu-daemon +- minizip +- mms-plugin +- module-init-tools +- msg-service +- msg-service-tools +- net-config +- net.netpopup +- nettle +- nfc-common-lib +- nfc-manager +- notification +- openal-soft +- opencore-amr +- openssh-client +- openssh-server +- pciutils +- pcre +- pkgmgr +- pkgmgr-client +- pkgmgr-installer +- pkgmgr-parser +- pkgmgr-server +- power-manager-bin +- prelink +- psmisc +- pulseaudio +- pulseaudio-libs +- pulseaudio-locale +- pulseaudio-module-bluetooth +- pulseaudio-utils +- push-bin +- push-tool +- ragel +- readline +- rpm +- rpm-installer +- rpm-libs +- rpm-security-plugin +- sdbd +- security-server +- sensor +- sensor-framework +- shared-mime-info +- smack +- smack-utils +- smartcard-plugin-nfc +- smartcard-plugin-uicc +- smartcard-service +- smartcard-service-common +- smartcard-service-server +- sms-plugin +- speex +- speex-tools +- sqlite +- ss-server +- starter +- strace +- stt +- svi-data-sdk +- sys-assert +- sysman +- syspopup +- syspopup-caller +- sys-string +- systemd +- system-popup +- system-server +- sysvinit +- sysvinit-utils +- sysv-rc +- telephony-daemon +- tel-plugin-database +- tel-plugin-dbus_tapi +- tel-plugin-packetservice +- tel-plugin-vconf +- texinfo +- tizen-coreutils +- tts +- udev +- ug-image-viewer-efl +- ug-memo-efl +- ug-myfile-efl +- ug-nfc-efl +- ug-setting-gallery-efl +- ug-setting-location-efl +- ug-setting-manage-applications-efl +- ug-share-nfc-efl +- ui-gadget-1 +- usb-server +- usbutils +- uuidd +- vconf +- web-ui-fw +- web-ui-fw-theme-default +- web-ui-fw-theme-tizen-black +- web-ui-fw-theme-tizen-white +- which +- wrt +- wrt-commons +- wrt-installer +- wrt-plugins-common +- wrt-plugins-tizen +- wrt-security +- wrt-setting +- xcb-util-devel +- xdgmime +- xkb-data +- xkeyboard-config +- xmlsec1 +- xmlsec1-openssl +- xorg-x11-apps +- xorg-x11-drv-evdev +- xorg-x11-drv-evdev-multitouch +- xorg-x11-drv-gesture +- xorg-x11-font-utils +- xorg-x11-server-common +- xorg-x11-server-utils +- xorg-x11-server-Xorg +- xorg-x11-utils +- xorg-x11-xbitmaps +- xorg-x11-xinit +- xorg-x11-xinput +- xorg-x11-xkb-utils +- xorg-x11-xtrans-devel +- xrestop +- xz +- xz-libs +- zlib +- zypper +Summary: SLP Platform System diff --git a/patterns/emul.yaml b/patterns/emul.yaml new file mode 100644 index 0000000..832b22c --- /dev/null +++ b/patterns/emul.yaml @@ -0,0 +1,50 @@ +Description: emul +Name: emul +Packages: +- alsa-scenario-scn-data-0-mc1n2 +- boost-filesystem +- boost-system +- boost-test +- capi-media-metadata-extractor +- capi-system-media-key +- capi-uix-face +- check +- dbus-devel +- default-files-emulator +- device-manager-plugin-maru +- e17-misc +- eglibc-debuginfo +- emuld +- glib2 +- gnutls +- gst-ffmpeg-emul +- harfbuzz +- libbluetooth-share +- libdlog-devel +- libxml2 +- minicontrol +- mmfw-sysconf-simulator +- nfc-plugin-emul +- sensord +- sf-plugin-accel-emul +- sf-plugin-filter-accel-emul +- sf-plugin-filter-geo-emul +- sf-plugin-filter-light-emul +- sf-plugin-filter-proxi-emul +- sf-plugin-geo-emul +- sf-plugin-gyro-emul-pkgs +- sf-plugin-light-emul +- sf-plugin-proc-accel-emul +- sf-plugin-proc-geo-emul +- sf-plugin-proc-light-emul +- sf-plugin-proc-motion-emul +- sf-plugin-proc-proxi-emul +- sf-plugin-proxi-emul +- sqlite +- tel-plugin-atmodem +- tel-plugin-vmodem +- vmodemd-emul +- webkit2-efl +- xorg-x11-drv-emulfb +- xorg-x11-misc-emulfb +Summary: emul diff --git a/patterns/ivi-base.yaml b/patterns/ivi-base.yaml new file mode 100644 index 0000000..397d479 --- /dev/null +++ b/patterns/ivi-base.yaml @@ -0,0 +1,88 @@ +Description: IVI Base +Name: ivi-base +Packages: +- alsa-utils +- augeas-libs +- bash +- bluez +- bootchart +- bzip2 +- c-ares +- ca-certificates +- connman +- coreutils +- db4 +- e2fsprogs +- eglibc +- eglibc-common +- elfutils +- elfutils-libelf +- elfutils-libs +- expat +- file +- filesystem +- findutils +- gawk +- grep +- gzip +- iniparser +- iptables +- iptables-ipv6 +- json-c +- kmod +- libsqlfs +- linux-firmware-ivi +- lsb +- mkdevnodes +- mingetty +- mmfw-sysconf-simulator +- mtdev +- mtools +- net-tools +- ntp +- nspr +- nss +- nss-softokn-freebl +- nss-sysinit +- obexd +- openssh-client +- openssh-server +- openssl +- pam +- pciutils +- pkg-config +- popt +- prelink +- procps +- psmisc +- pulseaudio-libs +- pulseaudio-module-bluetooth +- pulseaudio-utils +- pulseaudio +- pwdutils +- python-base +- readline +- rfkill +- rpm +- sed +- setup +- satsolver-tools +- shared-mime-info +- smack +- speex +- sqlite +- systemd +- systemd-sysv +- tizen-release +- tzdata +- tzdata-slp +- udev +- usbutils +- util-linux +- vim-minimal +- which +- wpa_supplicant +- xz +- zlib +- zypper +Summary: IVI Base diff --git a/patterns/ivi-base.yaml.bak b/patterns/ivi-base.yaml.bak new file mode 100644 index 0000000..cb7ea2d --- /dev/null +++ b/patterns/ivi-base.yaml.bak @@ -0,0 +1,37 @@ +Description: IVI Base +Name: ivi-base +Packages: +- bash +- bluez +- bzip2 +- ca-certificates +- connman +- coreutils +- e2fsprogs +- filesystem +- gawk +- grep +- gzip +- kmod +- libsqlfs +- lsb +- mkdevnodes +- mtdev +- net-tools +- prelink +- procps +- psmisc +- readline +- rfkill +- rpm +- sed +- setup +- tizen-release +- tzdata-slp +- udev +- usbutils +- util-linux +- zypper +- openssl +- shared-mime-info +Summary: IVI Base diff --git a/patterns/ivi-demos-support.yaml b/patterns/ivi-demos-support.yaml new file mode 100644 index 0000000..d3563c0 --- /dev/null +++ b/patterns/ivi-demos-support.yaml @@ -0,0 +1,15 @@ +Description: IVI Demos Support +Name: ivi-demos-support +Packages: +- automotive-message-broker +- connman-test +- GhostCluster +- gst-ffmpeg +- gst-plugins-bad +- gstreamer-vaapi +- ivi-demo-config +- libva +- openbox +- vaapi-intel-driver +- webskeleton +Summary: IVI Demos Support diff --git a/patterns/ivi-demos.yaml b/patterns/ivi-demos.yaml new file mode 100644 index 0000000..71e7619 --- /dev/null +++ b/patterns/ivi-demos.yaml @@ -0,0 +1,7 @@ +Description: IVI Demos +Name: ivi-demos +Patterns: +- ivi-x-pc +- ivi-devel +- ivi-demos-support +Summary: IVI Demos diff --git a/patterns/pinetrail-support.yaml b/patterns/pinetrail-support.yaml new file mode 100644 index 0000000..e349f8c --- /dev/null +++ b/patterns/pinetrail-support.yaml @@ -0,0 +1,25 @@ +Description: Pinetrail Support +Name: pinetrail-support +Packages: +- device-config-touch-eGalax +- kernel-adaptation-pc +- linux-firmware +- mmfw-sysconf-simulator +- system-plugin-ia-generic +- device-config-touch-Hanvon +- device-config-touch-ILI +- device-config-touch-cando +- device-config-touch-eGalax +- device-config-touch-mxt224 +- device-config-touch-sitronix +- mingetty +- xorg-x11-drv-intel +- mesa-dri-i915-driver +- mesa-dri-i965-driver +- mesa-dri-swrast-driver +- mesa-libEGL +- mesa-libGLESv2 +- xorg-x11-server-misc-emulfb +- device-manager-plugin-pinetrail +- settings +Summary: Pinetrail Support diff --git a/patterns/trats.yaml b/patterns/trats.yaml new file mode 100644 index 0000000..7802eee --- /dev/null +++ b/patterns/trats.yaml @@ -0,0 +1,21 @@ +Description: trats +Name: trats +Packages: +- alsa-scenario-scn-data-0-mc1n2 +- bluetooth-firmware-bcm +- bluetooth-share +- bluetooth-tools +- e17-misc +- libbluetooth-share +- libflac +- libremix +- net.wifi-qs +- nfc-plugin-nxp +- obexd +- pango +- pixman +- rfkill +- ug-bluetooth-efl +- wifi-efl-ug +- wpa_supplicant +Summary: trats diff --git a/scripts/cleanup-patterns.py b/scripts/cleanup-patterns.py new file mode 100755 index 0000000..ab1e5ec --- /dev/null +++ b/scripts/cleanup-patterns.py @@ -0,0 +1,34 @@ +#!/usr/bin/python + +import yaml +import sys, os +import optparse + + +def sort_pkgs(patterns_dir='patterns'): + for f in os.listdir(patterns_dir): + if not f.endswith('.yaml'): + continue + print f + stream = file("%s/%s" %(patterns_dir,f), 'r+') + y = yaml.load(stream) + if y.has_key('Packages'): + y['Packages'] = sorted(y['Packages']) + yf = yaml.dump(y, default_flow_style=False) + stream.seek(0) + stream.write(yf) + stream.close() + + + +if __name__ == '__main__': + parser = optparse.OptionParser() + + parser.add_option("-s", "--sort", action="store_true", default=False, + help="sort packages") + + (options, args) = parser.parse_args() + + if options.sort: + sort_pkgs() + diff --git a/scripts/convert-to-yaml.py b/scripts/convert-to-yaml.py new file mode 100755 index 0000000..19eb0ee --- /dev/null +++ b/scripts/convert-to-yaml.py @@ -0,0 +1,41 @@ +#!/usr/bin/python + +import xml.etree.ElementTree as ET +import sys +import yaml +import os + + + +for f in os.listdir("patterns"): + if '.xml' not in f: + continue + tree = ET.parse("patterns/%s" %f) + + p = {} + namespace="http://linux.duke.edu/metadata/rpm" + pns = 'http://novell.com/package/metadata/suse/pattern' + n = tree.find('{%s}name' %pns).text + if n.startswith("meego-"): + n = n[6:] + p['Name'] = n + s = tree.find('{%s}summary' %pns).text + if s.startswith("MeeGo"): + s = s[5:].lstrip() + p['Summary'] = s + p['Description'] = tree.find('{%s}description' %pns).text + req = tree.findall('.//{%s}entry' % namespace) + pkgs = [] + for r in req: + pkgs.append(r.attrib.get("name")) + + p['Packages'] = pkgs + yf = yaml.dump(p, default_flow_style=False) + + yfn = os.path.basename(f).rpartition(".")[0] + ".yaml" + if yfn.startswith("meego-"): + yfn = yfn[6:] + fp = open("new/%s" %yfn, 'w') + fp.write(yf) + fp.close() + diff --git a/scripts/find-duplicates.py b/scripts/find-duplicates.py new file mode 100755 index 0000000..c725e92 --- /dev/null +++ b/scripts/find-duplicates.py @@ -0,0 +1,23 @@ +#!/usr/bin/python + +import xml.etree.ElementTree as ET +import sys + +tree1 = ET.parse(sys.argv[1]) +tree2= ET.parse(sys.argv[2]) + +namespace="http://linux.duke.edu/metadata/rpm" +req1 = tree1.findall('.//{%s}entry' % namespace) +req2 = tree2.findall('.//{%s}entry' % namespace) +l2 = [] +l1 = [] +for r in req1: + l1.append(r.attrib.get("name")) +for r in req2: + l2.append(r.attrib.get("name")) + +s1 = set(sorted(l1)) +s2 = set(sorted(l2)) +intersection = s1 & s2 +for i in intersection: + print i diff --git a/scripts/gitlog2changelog.py b/scripts/gitlog2changelog.py new file mode 100755 index 0000000..ce69b68 --- /dev/null +++ b/scripts/gitlog2changelog.py @@ -0,0 +1,124 @@ +#!/usr/bin/python +# Copyright 2008 Marcus D. Hanwell +# Distributed under the terms of the GNU General Public License v2 or later + +import string, re, os + +# Execute git log with the desired command line options. +fin = os.popen('git log --summary --stat --no-merges --date=short', 'r') +# Create a ChangeLog file in the current directory. +fout = open('ChangeLog', 'w') + +# Set up the loop variables in order to locate the blocks we want +authorFound = False +dateFound = False +messageFound = False +filesFound = False +message = "" +messageNL = False +files = "" +prevAuthorLine = "" + +# The main part of the loop +for line in fin: + # The commit line marks the start of a new commit object. + if string.find(line, 'commit') >= 0: + # Start all over again... + authorFound = False + dateFound = False + messageFound = False + messageNL = False + message = "" + filesFound = False + files = "" + continue + # Match the author line and extract the part we want + elif re.match('Author:', line) >=0: + authorList = re.split(': ', line, 1) + author = authorList[1] + author = author[0:len(author)-1] + authorFound = True + # Match the date line + elif re.match('Date:', line) >= 0: + dateList = re.split(': ', line, 1) + date = dateList[1] + date = date[0:len(date)-1] + dateFound = True + # The svn-id lines are ignored + elif re.match(' git-svn-id:', line) >= 0: + continue + # The sign off line is ignored too + elif re.search('Signed-off-by', line) >= 0: + continue + # Extract the actual commit message for this commit + elif authorFound & dateFound & messageFound == False: + # Find the commit message if we can + if len(line) == 1: + if messageNL: + messageFound = True + else: + messageNL = True + elif len(line) == 4: + messageFound = True + else: + if len(message) == 0: + message = message + line.strip() + else: + message = message + " " + line.strip() + # If this line is hit all of the files have been stored for this commit + elif re.search('files changed', line) >= 0: + filesFound = True + continue + # Collect the files for this commit. FIXME: Still need to add +/- to files + elif authorFound & dateFound & messageFound: + fileList = re.split(' \| ', line, 2) + if len(fileList) > 1: + if len(files) > 0: + files = files + ", " + fileList[0].strip() + else: + files = fileList[0].strip() + # All of the parts of the commit have been found - write out the entry + if authorFound & dateFound & messageFound & filesFound: + # First the author line, only outputted if it is the first for that + # author on this day + authorLine = date + " " + author + if len(prevAuthorLine) == 0: + fout.write(authorLine + "\n") + elif authorLine == prevAuthorLine: + pass + else: + fout.write("\n" + authorLine + "\n") + + # Assemble the actual commit message line(s) and limit the line length + # to 80 characters. + commitLine = "* " + files + ": " + message + i = 0 + commit = "" + while i < len(commitLine): + if len(commitLine) < i + 78: + commit = commit + "\n " + commitLine[i:len(commitLine)] + break + index = commitLine.rfind(' ', i, i+78) + if index > i: + commit = commit + "\n " + commitLine[i:index] + i = index+1 + else: + commit = commit + "\n " + commitLine[i:78] + i = i+79 + + # Write out the commit line + fout.write(commit + "\n") + + #Now reset all the variables ready for a new commit block. + authorFound = False + dateFound = False + messageFound = False + messageNL = False + message = "" + filesFound = False + files = "" + prevAuthorLine = authorLine + +# Close the input and output lines now that we are finished. +fin.close() +fout.close() diff --git a/scripts/merge-patterns.py b/scripts/merge-patterns.py new file mode 100755 index 0000000..cf630af --- /dev/null +++ b/scripts/merge-patterns.py @@ -0,0 +1,89 @@ +#!/usr/bin/python + +import yaml +import sys, os +import optparse +from lxml import etree + + + + +def create_patterns(arch='i586', split=False, patterns_dir='patterns'): + + rpm_ns="http://linux.duke.edu/metadata/rpm" + pattern_ns="http://novell.com/package/metadata/suse/pattern" + PATTERN = "{%s}" % pattern_ns + if not split: + xmlroot = etree.Element("patterns") + NSMAP = {None : pattern_ns, "rpm": rpm_ns, "patterns": pattern_ns} + else: + NSMAP = {None : pattern_ns, "rpm": rpm_ns} + + count = 0 + for f in os.listdir(patterns_dir): + if not f.endswith('.yaml'): + continue + print "Working on %s" %f + count = count + 1 + stream = file("%s/%s" %(patterns_dir,f), 'r') + y = yaml.load(stream) + if y.has_key('Arch') and y['Arch'] != arch: + print "Skipping pattern '%s' because architecture doesn't match ('%s' vs '%s')." % (y['Name'], y['Arch'], arch) + continue + if split: + proot = etree.Element("pattern", nsmap=NSMAP) + else: + proot = etree.SubElement(xmlroot, "pattern", nsmap=NSMAP) + + etree.SubElement(proot, "name").text = y['Name'] + etree.SubElement(proot, "summary").text = y['Summary'] + etree.SubElement(proot, "description").text = y['Description'] + etree.SubElement(proot, "uservisible") + cat = etree.SubElement(proot, "category") + cat.text = "Base Group" + cat.set("lang", "en") + req = etree.SubElement(proot, "{%s}requires" %rpm_ns) + if y.has_key('Patterns'): + collect = [] + for pat in y['Patterns']: + if os.path.exists("%s/%s.yaml" %(patterns_dir, pat)): + pf = file("%s/%s.yaml" %(patterns_dir, pat), 'r') + pfy = yaml.load(pf) + if pfy.has_key('Packages'): + collect += pfy['Packages'] + elif y.has_key('Packages'): + collect = y['Packages'] + + for p in collect: + if type(p).__name__=='dict': + a = p.values()[0] + if a == arch: + entry = etree.SubElement(req, "{%s}entry" %rpm_ns) + entry.set("name", p.keys()[0]) + entry.set("arch", arch) + else: + entry = etree.SubElement(req, "{%s}entry" %rpm_ns) + entry.set("name", p) + if split: + tree = etree.ElementTree(proot) + tree.write("%s.xml" %y['Name'], pretty_print=True) + + if not split: + xmlroot.set('count', "%d" %count) + tree = etree.ElementTree(xmlroot) + tree.write("patterns.xml") + + +if __name__ == '__main__': + parser = optparse.OptionParser() + + parser.add_option("-a", "--arch", type="string", dest="arch", + help="architecture") + parser.add_option("-s", "--split", action="store_true", dest="split", default=False, + help="split patterns into single files") + + (options, args) = parser.parse_args() + + if options.arch and options.arch in ['i586', 'arm']: + create_patterns(arch=options.arch, split=options.split) + diff --git a/scripts/merge-request.sh b/scripts/merge-request.sh new file mode 100755 index 0000000..43275d0 --- /dev/null +++ b/scripts/merge-request.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [ -z "$1" ]; then + echo "Merge request number needed" + exit 1 +fi + +# Check out a new branch for integration +git checkout -b merge-requests/$1 + +# Fetch the merge request into this branch +git pull git://gitorious.org/meego-os-base/package-groups.git refs/merge-requests/$1 + +# Show the commits, assess they are okay +git log --pretty=oneline --abbrev-commit master..merge-requests/$1 + +# To apply the changes to your branch: +git checkout master +git merge merge-requests/$1 +git push origin master diff --git a/scripts/mkpatterns.py b/scripts/mkpatterns.py new file mode 100755 index 0000000..9a86e92 --- /dev/null +++ b/scripts/mkpatterns.py @@ -0,0 +1,67 @@ +#!/usr/bin/python + +import os, sys + +group_template = ''' + + @GROUPNAME@ + @GROUPNAME@ + @GROUPNAME@ + + @GROUPNAME@ + +@PKGS@ + + +''' + +entry_template = ''' ''' + +def main(): + if not len(sys.argv) == 2: + exit() + data_file = open(sys.argv[1], 'r') + group_table = data_file.readlines() + data_file.close() + + pkg_group_info = [] + + for record_index in range(len(group_table)): + record = group_table[record_index].replace('\n', '') + if record_index == 0: + group_names = record.split(',') + else: + pkg_info = record.split(',') + pkgname = pkg_info[0] + groupnum = 0 + for index in range(len(pkg_info)): + if pkg_info[index] is not None and pkg_info[index] == "x": + groupnum = index + break + if groupnum == 0: + print('package not involved : ' + pkgname) + else: + pkg_group_info.append([pkgname, groupnum]) + + for group_index in range(len(group_names)): + if group_index == 0: + continue + group_file = open(os.getcwd() + '/patterns/' + group_names[group_index] + '.xml', 'w') + group_content = group_template.replace('@GROUPNAME@', group_names[group_index]) + pkgs = None + for item in pkg_group_info: + if item[1] == group_index: + if pkgs is None: + pkgs = entry_template.replace('@PKGNAME@', item[0]) + else: + pkgs = pkgs + '\n' + entry_template.replace('@PKGNAME@', item[0]) + + group_content = group_content.replace('@PKGS@', pkgs) + group_file.write(group_content) + group_file.close() + + +if __name__ == "__main__": + main() + diff --git a/scripts/mkpatterns_from_list.py b/scripts/mkpatterns_from_list.py new file mode 100755 index 0000000..f99d92b --- /dev/null +++ b/scripts/mkpatterns_from_list.py @@ -0,0 +1,49 @@ +#!/usr/bin/python + +import os, sys + +group_template = ''' + + @GROUPNAME@ + @GROUPNAME@ + @GROUPNAME@ + + @GROUPNAME@ + +@PKGS@ + + +''' + +entry_template = ''' ''' + +def main(): + if not len(sys.argv) == 3: + exit() + data_file = open(sys.argv[1], 'r') + group_table = data_file.readlines() + data_file.close() + + pkg_group_info = [] + + pkgs = None + + group_file = open(os.getcwd() + '/patterns/' + sys.argv[2] + '.xml', 'w') + group_content = group_template.replace('@GROUPNAME@', sys.argv[2]) + + for record_index in range(len(group_table)): + record = group_table[record_index].replace('\n', '') + if pkgs is None: + pkgs = entry_template.replace('@PKGNAME@', record) + else: + pkgs = pkgs + '\n' + entry_template.replace('@PKGNAME@', record) + + group_content = group_content.replace('@PKGS@', pkgs) + group_file.write(group_content) + group_file.close() + + +if __name__ == "__main__": + main() + diff --git a/scripts/test-patterns.sh b/scripts/test-patterns.sh new file mode 100755 index 0000000..fd1c888 --- /dev/null +++ b/scripts/test-patterns.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +if [ -z "$1" ]; then + echo "You need to provide a pattern name as an argument" + exit 1 +fi +PATTERN=$@ +TMPDIR=`mktemp -d` +mkdir -p $TMPDIR +CMD="zypper --gpg-auto-import-keys -R $TMPDIR " +$CMD ar http://download.meego.com/snapshots/1.1.90.3.20110216.81/oss/repos/ia32/packages/ oss +$CMD ar http://download.meego.com/snapshots/1.1.90.3.20110216.81/non-oss/repos/ia32/packages/ non-oss +$CMD in --dry-run --type pattern $PATTERN + +rm -rf $TMPDIR diff --git a/scripts/update.sh b/scripts/update.sh new file mode 100755 index 0000000..22eca32 --- /dev/null +++ b/scripts/update.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +ARCH=$1 +mkdir new +for i in `ls -1 patterns/*.xml`; do + base=`basename $i` + xsltproc --stringparam arch $ARCH xsl/filter.xsl $i > new/$base +done +echo "" > INDEX.xml; +for i in `ls -1 new/*.xml`; do echo "$i" >> INDEX.xml; done; +echo "" >> INDEX.xml +xsltproc xsl/merge.xsl INDEX.xml > patterns.xml +xsltproc xsl/comps.xsl patterns.xml > group.xml +rm -rf new diff --git a/test/test-patterns.sh b/test/test-patterns.sh new file mode 100755 index 0000000..42285ff --- /dev/null +++ b/test/test-patterns.sh @@ -0,0 +1,72 @@ +#!/bin/sh + + +TMPDIR=`mktemp -d` +mkdir -p $TMPDIR +CMD="zypper -v --no-gpg-checks --non-interactive --gpg-auto-import-keys -R $TMPDIR " + +function setup_repos() { + test -d "download.tz.otcshare.org" || ( + wget -m -I "live/Tizen:/Base/standard/repodata" --no-parent https://download.tz.otcshare.org/live/Tizen:/Base/standard/repodata + wget -m -I "live/Tizen:/Main/standard/repodata" --no-parent https://download.tz.otcshare.org/live/Tizen:/Main/standard/repodata + ) + $CMD ar file://$PWD/download.tz.otcshare.org/live/Tizen:/Main/standard/ staging + $CMD ar file://$PWD/download.tz.otcshare.org/live/Tizen:/Base/standard/ base +} +function show() +{ + setup_repos + $CMD pt +} +function patterns() +{ + setup_repos + PATTERNS=$(echo $1 | sed 's/,/ /g') + $CMD in --dry-run --type pattern $PATTERNS + +} +while getopts ":sp:n:c" opt; do + case $opt in + n) + echo "Using new pattern file $OPTARG" + NEW_PATTERN_FILE=$OPTARG + ;; + p) + echo "$OPTARG" >&2 + PATTERNS=$OPTARG + ;; + s) + SHOW_PATTERNS=1 + ;; + c) + CLEAN=1 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +if [ -z "$1" ]; then + echo "You need to provide a pattern name as an argument" + exit 1 +fi + + +if [ -n "$CLEAN" ]; then + rm -rf download.tz.otcshare.org +fi + +if [ -n "$NEW_PATTERN_FILE" ]; then + echo "Modifying repos with new pattern $NEW_PATTERN_FILE" + test -f $NEW_PATTERN_FILE && modifyrepo $NEW_PATTERN_FILE download.tz.otcshare.org/live/Tizen:/Main/standard/repodata +fi +if [ -n "$SHOW_PATTERNS" ]; then + show +fi +if [ -n "$PATTERNS" ]; then + patterns $PATTERNS +fi + +rm -rf $TMPDIR diff --git a/xsl/comps.xsl b/xsl/comps.xsl new file mode 100755 index 0000000..d18b0f8 --- /dev/null +++ b/xsl/comps.xsl @@ -0,0 +1,30 @@ + + ]> + + + + + + + + + + + + true + + + + + + + + + + + + diff --git a/xsl/filter.xsl b/xsl/filter.xsl new file mode 100755 index 0000000..03667f8 --- /dev/null +++ b/xsl/filter.xsl @@ -0,0 +1,39 @@ + + ]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/merge.xsl b/xsl/merge.xsl new file mode 100755 index 0000000..15b3487 --- /dev/null +++ b/xsl/merge.xsl @@ -0,0 +1,13 @@ + + + + + + + + + + + + -- 2.7.4