diff options
author | Fathi Boudra <fabo@debian.org> | 2011-05-30 14:08:12 +0300 |
---|---|---|
committer | Fathi Boudra <fabo@debian.org> | 2011-05-30 14:08:12 +0300 |
commit | 1d34b927e59d8f921fb755a2251ebacf70dd46c1 (patch) | |
tree | 5c4b283d50b7c23a6baaa02fde9be8a985d5d00a |
Initial commit
22 files changed, 1087 insertions, 0 deletions
diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..8f15051 --- /dev/null +++ b/README.txt @@ -0,0 +1,18 @@ +Linaro Release and Project Management +------------------------------------- + +Here you will find a set of processes, methods and templates that a Release and +Platform Project Manager should follow and use. This is supplied in the hope +that it is of use to whomever takes over all or part of this role. + +/examples +Complete examples of documents that have been produced. + +/notes +Any useful notes for the role(s) including the weekly work breakdown procedure. + +/templates +Templates used for email and the wiki. + +/tools +Tools that are used to help with RM/PM activities. diff --git a/examples/linaro_metrics-201103.odp b/examples/linaro_metrics-201103.odp Binary files differnew file mode 100644 index 0000000..9362355 --- /dev/null +++ b/examples/linaro_metrics-201103.odp diff --git a/notes/make_release.txt b/notes/make_release.txt new file mode 100644 index 0000000..abfc2c2 --- /dev/null +++ b/notes/make_release.txt @@ -0,0 +1,50 @@ + +Making a Release image +====================== + +Currently there is a manual aspect to making a release from our build +infrastructure. In future this may be more automated but for now, here are +the steps to producing a release image. You will need ssh access to +releases.linaro.org. + +Release minus 2 days +-------------------- + * Setup http://qatracker.linaro.org with the build information for the + release. + - A daily is targeted for extra testing, this will be the candidate + for the release milestone + * Put out a call for testing on this daily to the + http://lists.linaro.org/mailman/listinfo/linaro-dev|linaro-dev + and + http://lists.linaro.org/mailman/listinfo/linaro-announce|linaro-announce + mailing lists. (see template) + * Test the daily on all available hardware you have. + * Chase individuals that you know have specific hardware to test and submit + results. + +Release minus 1 day +------------------- + * Produce the wiki release page adding release notes, highlights, issues + e.t.c. See the template dir for an example. + * Check that enough tests are + happening, chase where necessary. + * If bugs are being filed on the images assess how important each one is to + determine if any of them will effect the release. Escalate where necessary. + +Release day +----------- + * Check the results at http://qatracker.linaro.org for any serious bugs. Do + any last minute resolving before release. + * Release note any issues that are outstanding. + * Make the release. + - ssh to releases.linaro.org + - Released images reside in + /srv/releases.linaro.org - Daily images reside in + /srv/snapshots.linaro.org - Copy the daily candidate release image and all + its files to the releases.linaro.org/www/platform/linaro-X/ hierarchy + - Announce the image on the + http://lists.linaro.org/mailman/listinfo/linaro-dev|linaro-dev and + http://lists.linaro.org/mailman/listinfo/linaro-announce|linaro-announce + mailing lists (-announce only if its a final release). See the templates + dir for an example + * Blog about the release
\ No newline at end of file diff --git a/notes/new_qatracker_build.txt b/notes/new_qatracker_build.txt new file mode 100644 index 0000000..62e89a9 --- /dev/null +++ b/notes/new_qatracker_build.txt @@ -0,0 +1,15 @@ +Creating a new build set in qatracker +------------------------------------- + +These are the steps used when creating a new build set for either a milestone release or the weekly testing initiative. + + 1) Go to http://qatracker.linaro.org (log in if not already done) + 2) Click “Manage Milestones” in the navigation menu to create a new milestone release. + 2a) Name the milestone, if its a daily build milestone name it as ‘date Weekly Testing’ e.g. ‘2011-05-05 Weekly Testing’. Click “Add milestone”. + 2b) Set the default milestone to the new milestone using the drop down box. + 2c) Set the last milestone build to hidden by clicking the tick box next to it, choosing ‘hidden’ from the drop down box and clicking “Update selected status’. + 3) Add a build set to the milestone. + 3a) Click “Add a build set” in the navigation menu. + 3b) Select all the products that will be part of the milestone, currently that is ALIP, Developer, Nano and Desktop. + 3c) The version number is the same as the milestone name e.g. “2011-05-05 Weekly Testing”. + 3d) Click the ‘Add build(s)’ button.
\ No newline at end of file diff --git a/notes/rm_pm_activities.txt b/notes/rm_pm_activities.txt new file mode 100644 index 0000000..dc7345e --- /dev/null +++ b/notes/rm_pm_activities.txt @@ -0,0 +1,64 @@ +Weekly Release and Project Manager tasks in the Platform Group + +This list is not exhaustive but provides a foundation on which to base the role around. + +Daily +----- + * Triage bugs from all Linaro projects in Launchpad that are part of the release (linux-linaro-*, linaro-gcc, live-helper config branches, l-m-c e.t.c). + * Assign to team members and milestones where appropriate or just highlight concerns where necessary. + * Check https://oem-ibs.canonical.com/project-groups/linaro/ (soon to be http://offsping.linaro.org) for build failures. Investigate any failures and consult with the appropriate team members either in Ubuntu or Linaro. Where possible fix yourself. + * Help to code review any image branch merge requests, provide feedback and merge where necessary + +Monday +------ + * Chase up any ACTION items from the previous weekly release meeting + * Triage Linaro Blueprints in Launchpad that have deliverables to the images. Ensure that work items are on track and ask questions on timings and schedule. + * 1-on-1 meeting with Ubuntu Release Manager to discuss release related topics, concerns, bugs and upcoming workload + * Check the overview of burndown information at http://status.linaro.org to ensure things are on track. Email tech leads if something looks concerning (way behind, no progress, ...) + * Attend the Tech Leads call. + * Send out a reminder for activity reports to the Infrastructure team. + +Tuesday +------- + * Start to gather information on the status of the release, image problems and concerns + * Attend the Infrastructure team meeting, chair if necessary. + * Produce the weekly Infrastructure team meeting page after the meeting, add the irc log, ACTION items and attendee list. + * Create next weeks Infrastructure team meeting adding in ACTION items. + * Attend the Platform Team Leads call. + * Send out a reminder for activity reports to the Android team. + * Send out a reminder for activity reports to the Developer Platforms team. + +Wednesday +--------- + * Setup http://wiki.linaro.org/Cycles meeting page for the current week. Highlight any important bugs and any questions that need to be asked of the team leads. + * Send out reminder for weekly release meeting to linaro dev@lists.linaro.org including any past ACTION items from the previous meeting and any agenda for this week. + * Produce the weekly Infrastructure team report page. + * Send the report to linaro-dev. + * Weekly meeting with the head of Platform. + * Attend and chair the Android team meeting. + * Produce the weekly Android team meeting page after the meeting, add the irc log, ACTION items and attendee list. + * Create next weeks Android team meeting adding in ACTION items. + * Attend and chair if necessary the Developer Platforms team meeting. + * Produce the weekly Developer Platforms team meeting page after the meeting, add the irc log, ACTION items and attendee list. + * Create next weeks Developer Platforms team meeting adding in ACTION items. + * Send out a reminder for activity reports to the Validation team. + +Thursday +-------- + * Setup http://qatracker.linaro.org for weekly testing, new build set with weekly image name. + * Send out call for weekly testing to linaro-dev@lists.linaro.org + * Test images on any available hardware. + * Read Working Group team status reports at http://wiki.linaro.org/Status. + * Hold weekly release meeting gathering information from each team, asking release related questions and bug information. + * Complete release meeting page, adding meeting log, ACTION items e.t.c + * Setup next weeks Release meeting page with ACTION items. + * Produce the weekly Android team report page. + * Produce the weekly Developer Platforms team report page. + * Send both reports to linaro-dev. + * Attend the tech leads call + +Friday +------ + * Analyse results from weekly testing, act on any relevant outcomes. + * Attend Ubuntu weekly release meeting, gather information on any aspects that will affect Linaro and give the Ubuntu Release Manager information on intersecting projects and issues + * Catch up on the weekly happenings in the Working Groups
\ No newline at end of file diff --git a/templates/milestone_release_annoucement_template.txt b/templates/milestone_release_annoucement_template.txt new file mode 100644 index 0000000..a05c2a0 --- /dev/null +++ b/templates/milestone_release_annoucement_template.txt @@ -0,0 +1,103 @@ +Hi, + +The Linaro team is pleased to announce the availability of the 11.05 +Beta-2 images. These are still early developer images but we encourage +all with supported hardware to use and test them by downloading from: + + http://releases.linaro.org/platform/linaro-n/ + +Highlights of this release include: + + * This milestone includes a first release of the Linaro Android + evaluation images for Beagle XM and Panda. + * Efforts from the Android team include: + * Generic AOSP builds with Linaro components. + * The Linaro Android 2.6.38 kernel. + * Toolchain packages based on Linaro toolchain release of March. + Initial benchmarks for this toolchain can be found at + https://wiki.linaro.org/JimHuang/Sandbox/LinaroToolchainAndroidBenchmarking + * An Android platform code branch for direct evaluation of the + Linaro toolchain. + * Initial low hanging fruit optimisations; integrated and upstreamed + to AOSP (16 patch sets currently). + * Mouse support for developer convenience on the Panda image. + * The 0xBenchmark package comes pre-integrated into the builds for + benchmarking and demos. + * Four images based on Ubuntu 11.04 including ubuntu-desktop, nano, + developer and ALIP. + * linaro-image-tools support for installing Android images on SDcard + * Support for 11 different developer boards including the newly added + Freescale iMX53 LoCo board. + +Using the Android-based images +============================= + +The Android-based images come in three parts, system, userdata and boot. +These need to be combined to form a complete Android install. For an +explanation of how to do this please see: + + https://wiki.linaro.org/Platform/Android/InstallImages + +If you are interested in getting the source and building these images +yourself please see the following pages: + + https://wiki.linaro.org/Platform/Android/GetSource + https://wiki.linaro.org/Platform/Android/BuildSource + +Using the Ubuntu-based images +============================= + +The Ubuntu-based images consist of two parts. A hardware pack which can +be found under the ./hwpacks directory which contains hardware specific +packages such as the kernel and bootloader. The second part is the roofs +which is combined with the hardware pack to create a complete image. For +information on how to create an image please see: + + http://wiki.linaro.org/Releases/MilestoneBuilds + +Comparisons +=========== + +A comparison of packages from the ubuntu-desktop beta and beta2 images +can be found at: + + http://people.linaro.org/~jamiebennett/comparisons/comparisons-linaro-11.05-beta-beta2.html + +Getting involved +================ + +More information on Linaro in general and the 11.05 plans can be +found at: + + * Homepage: http://www.linaro.org + * Wiki: http://wiki.linaro.org + * 11.05: http://wiki.linaro.org/Releases/1105 + +Also subscribe to the important Linaro mailing lists and join our IRC +channels to stay on top of Linaro developments: + + * Announcements: + http://lists.linaro.org/mailman/listinfo/linaro-announce + * Development: + http://lists.linaro.org/mailman/listinfo/linaro-dev + * IRC: + #linaro on irc.linaro.org or irc.freenode.net + #linaro-android irc.linaro.org or irc.freenode.net + +Issues with this release +======================== + +For any errata issues please see: + + http://wiki.linaro.org/Releases/1105/Beta2#Issues + +Bug reports for this release should be filed in Launchpad against the +individual packages that are affected, if a suitable package cannot be +identified, feel free to assign them to: + + http://www.launchpad.net/linaro + +Regards, +Jamie. +-- +Linaro Release Manager | Platform Project Manag
\ No newline at end of file diff --git a/templates/milestone_release_page_template.moin.txt b/templates/milestone_release_page_template.moin.txt new file mode 100644 index 0000000..8226605 --- /dev/null +++ b/templates/milestone_release_page_template.moin.txt @@ -0,0 +1,156 @@ += Development Release Information = +<<TableOfContents>> + +== Release Info == + * '''Audience''': Linaro Platform and WG Developers, early adopters + * '''Download''': + * http://releases.linaro.org/platform/linaro-n/ubuntu-desktop/beta-2 + * http://releases.linaro.org/platform/linaro-n/android/beta-2 + * '''Hardware support''': OMAP3 (Beagle C3/C4/XM), IGEPV2, Gumstix Overo COMs, OMAP4, v310, ARM Versatile Express (ca9x4_ct_vxp), iMX53 LoCo, Efika Netbook and Smarttop, iMX51 (serial console). + * '''Image ID''': + * linaro-n-ubuntu-desktop-tar-20110426-0 + * '''Milestone''': Beta 2 + * '''Profile''': + * Linaro Ubuntu Desktop (LEB) + * Linaro Android snapshot + * '''Release Cycle''': [[https://wiki.linaro.org/Releases/1105/|Linaro 11.05]] + +== Instructions == + * Android-based + * [[Platform/Android/InstallImages|Android build instructions]]. + * Ubuntu-based + * [[Cycles/MilestoneBuilds|Milestone build instructions]]. + +== News == + * This milestone includes a first release of the Linaro Android evaluation images for Beagle XM and Panda. + * Efforts from the Android team include: + * Generic AOSP builds with Linaro components. + * The Linaro Android 2.6.38 kernel. + * Toolchain packages based on Linaro toolchain release of March. Initial benchmarks for this toolchain can be found at https://wiki.linaro.org/JimHuang/Sandbox/LinaroToolchainAndroidBenchmarking + * An Android platform code branch for direct evaluation of the Linaro toolchain. + * Initial low hanging fruit optimisations; integrated and upstreamed to AOSP (16 patch sets currently). + * Mouse support for developer convenience on the Panda image. + * The 0xBenchmark package comes pre-integrated into the builds for benchmarking and demos. + * Four images based on Ubuntu 11.04 including ubuntu-desktop, nano, developer and ALIP. + * linaro-image-tools support for installing Android images on an SDcard + * Support for 11 different developer boards including the newly added Freescale iMX53 LoCo board. + +== Issues == +=== Android === + * The Android Panda build does not come with GFX hardware acceleration. This is planned for the 11.05 final release. + * The Android Beagle XM build does not have mouse support. + * The provision screen is killed on the Android images to ease integration into the Linaro validation lab. + * Bug:772520 - Mouse falls asleep and need keyboard to wake up + * Bug:772528 - Music player crashes on Panda + * Bug:772530 - Gallery application does not find any photos + * Bug:772533 - Shadow in launcher can not keep up with focus + +== Release Progress == + * Please see http://status.linaro.org for up-to-the-minute progress information. + +== Announcement == +{{{ +Hi, + +The Linaro team is pleased to announce the availability of the 11.05 +Beta-2 images. These are still early developer images but we encourage +all with supported hardware to use and test them by downloading from: + + http://releases.linaro.org/platform/linaro-n/ + +Highlights of this release include: + + * This milestone includes a first release of the Linaro Android + evaluation images for Beagle XM and Panda. + * Efforts from the Android team include: + * Generic AOSP builds with Linaro components. + * The Linaro Android 2.6.38 kernel. + * Toolchain packages based on Linaro toolchain release of March. + Initial benchmarks for this toolchain can be found at + https://wiki.linaro.org/JimHuang/Sandbox/LinaroToolchainAndroidBenchmarking + * An Android platform code branch for direct evaluation of the + Linaro toolchain. + * Initial low hanging fruit optimisations; integrated and upstreamed + to AOSP (16 patch sets currently). + * Mouse support for developer convenience on the Panda image. + * The 0xBenchmark package comes pre-integrated into the builds for + benchmarking and demos. + * Four images based on Ubuntu 11.04 including ubuntu-desktop, nano, + developer and ALIP. + * linaro-image-tools support for installing Android images on SDcard + * Support for 11 different developer boards including the newly added + Freescale iMX53 LoCo board. + +Using the Android-based images +============================= + +The Android-based images come in three parts, system, userdata and boot. +These need to be combined to form a complete Android install. For an +explanation of how to do this please see: + + https://wiki.linaro.org/Platform/Android/InstallImages + +If you are interested in getting the source and building these images +yourself please see the following pages: + + https://wiki.linaro.org/Platform/Android/GetSource + https://wiki.linaro.org/Platform/Android/BuildSource + +Using the Ubuntu-based images +============================= + +The Ubuntu-based images consist of two parts. A hardware pack which can +be found under the ./hwpacks directory which contains hardware specific +packages such as the kernel and bootloader. The second part is the roofs +which is combined with the hardware pack to create a complete image. For +information on how to create an image please see: + + http://wiki.linaro.org/Releases/MilestoneBuilds + +Comparisons +=========== + +A comparison of packages from the ubuntu-desktop beta and beta2 images +can be found at: + + http://people.linaro.org/~jamiebennett/comparisons/comparisons-linaro-11.05-beta-beta2.html + +Getting involved +================ + +More information on Linaro in general and the 11.05 plans can be +found at: + + * Homepage: http://www.linaro.org + * Wiki: http://wiki.linaro.org + * 11.05: http://wiki.linaro.org/Releases/1105 + +Also subscribe to the important Linaro mailing lists and join our IRC +channels to stay on top of Linaro developments: + + * Announcements: + http://lists.linaro.org/mailman/listinfo/linaro-announce + * Development: + http://lists.linaro.org/mailman/listinfo/linaro-dev + * IRC: + #linaro on irc.linaro.org or irc.freenode.net + #linaro-android irc.linaro.org or irc.freenode.net + +Issues with this release +======================== + +For any errata issues please see: + + http://wiki.linaro.org/Releases/1105/Beta2#Issues + +Bug reports for this release should be filed in Launchpad against the +individual packages that are affected, if a suitable package cannot be +identified, feel free to assign them to: + + http://www.launchpad.net/linaro + +Regards, +Jamie. +-- +Linaro Release Manager | Platform Project Manager +}}} diff --git a/templates/milestone_release_testing_annoucement_template.txt b/templates/milestone_release_testing_annoucement_template.txt new file mode 100644 index 0000000..ca5472b --- /dev/null +++ b/templates/milestone_release_testing_annoucement_template.txt @@ -0,0 +1,48 @@ +Hi, + +In preparation for the release of Linaro 11.05 Beta-2 images on Thursday +a suitable candidate has been selected for testing. The Beta-2 release is +expected to be tested heavily and provide the most stable and +feature-rich images to date this cycle. + +If you have supported hardware, as found at: + + http://releases.linaro.org/platform/linaro-n/hwpacks/latest/ + +please help our initiative by testing the official Linaro Evaluation +Build (LEB): + +Ubuntu Desktop: + http://releases.linaro.org/platform/linaro-n/ubuntu-desktop/latest/ + +and our Developer images: + +Nano: + http://releases.linaro.org/platform/linaro-n/nano/latest/ + +ALIP: + http://releases.linaro.org/platform/linaro-n/alip/latest/ + +Developer Tools: + http://releases.linaro.org/platform/linaro-n/developer/latest/ + +As a side note, hwpacks that have an -lt- in their name are outputs from +the Linaro Landing teams, using some of their components. + +Make your way to: + + http://wiki.linaro.org/Releases/MilestoneBuilds + +for an explanation of how to test and submit your results to the QA +tracker at: + + http://qatracker.linaro.org + +For an explanation of how to use the qatracker please see: + + https://wiki.linaro.org/QA/QATracker + +Regards, +Jamie. +-- +Linaro Release Manager | Platform Project Manager
\ No newline at end of file diff --git a/templates/weekly_team_activity_report_reminder.txt b/templates/weekly_team_activity_report_reminder.txt new file mode 100644 index 0000000..5449c70 --- /dev/null +++ b/templates/weekly_team_activity_report_reminder.txt @@ -0,0 +1,18 @@ +Hi, + +This is a reminder sent out once per week to remind you to add your +activity reports to the TeamName team page at: + + https://wiki.linaro.org/Platform/TeamName/Meetings/2011-xx-xx + +before the meeting today. + +These activity reports are used to create a report that highlights the +work that the team is doing to Management and beyond so your input is +vital. + +Regards, +Jamie. +-- +Linaro Release Manager | Platform Project Manager +Office: +44 1761 348 220 | Mobile: +44 7962 259 437
\ No newline at end of file diff --git a/templates/weekly_team_meeting_page_template.moin.txt b/templates/weekly_team_meeting_page_template.moin.txt new file mode 100644 index 0000000..8148502 --- /dev/null +++ b/templates/weekly_team_meeting_page_template.moin.txt @@ -0,0 +1,41 @@ +---- +||<tablebgcolor="#f1f1ed" tablewidth="35%" tablestyle="margin: 0pt 0pt 1em 1em; float: right; font-size: 0.9em;"style="padding: 0.5em;"><<TableOfContents>>|| +<<Include(Platform/Team, , from="^## meetings$", to="^## end-meetings$")>> += Team Meeting = +== Agenda == + * Actions from last meeting + * Blueprint discussion + * Deliverables and Validation discussion + * Team issues discussion + * AOB + +== Past Action items == + * To be added. + +== People Present == + * To be added + +== Actions Recorded == + * To be added. + +---- + += Engineers Reports = + +== Your Name <irc nick> == + +=== Highlights === + * Short bullet points of work you've done that week which convey progress and highlights which can be used to report on how the team is progressing as a whole. + +=== Plans === + * Your individual plans for the coming week(s). + +=== Issues === + * Your individual plans for the coming week(s). + +---- + += IRC logs = +{{{ +To be added. +}}} diff --git a/templates/weekly_team_report_template.moin.txt b/templates/weekly_team_report_template.moin.txt new file mode 100644 index 0000000..bb5e56e --- /dev/null +++ b/templates/weekly_team_report_template.moin.txt @@ -0,0 +1,29 @@ + * Period: (2011xxxx-2011xxxx) + * PM: JamieBennett <jamie.bennett@linaro.org> + * Past reports : https://wiki.linaro.org/Platform/xxxx/Status + * Burndown information : http://status.linaro.org/xxxx + +== Key Points for wider discussion == + * Point 1 + * Point 2 + +== Team Highlights == + * Include any major updates, good, bad news and issues. + * Include highlights and lowlights. + * Hit or missed deadlines. + * Impact of completed/uncompleted task if relevant. + * List team milestones (milestone number, title, Planned due date, actual date, notes). + +== Upcoming Deliverables == + * Note any milestones and other big events happening in the next month including deliverables from your team. + +== Risks / Issues == + * Outline the risks, issues you think might happen and how to mitigate them. Show the impact of the risk. + * List any issues resolved since the last report. + * Ageing for issues (number of weeks an issue goes unresolved). + +== Miscellaneous == + * New starters, staffing changes. + * vacations/holidays. + * links to important info. + * reminders. diff --git a/templates/weekly_testing_annoucement_template.txt b/templates/weekly_testing_annoucement_template.txt new file mode 100644 index 0000000..5fe72a4 --- /dev/null +++ b/templates/weekly_testing_annoucement_template.txt @@ -0,0 +1,42 @@ +Hi, + +This is a message sent out once per week to call on our community to +help test the Linaro evaluation builds we produce. If you have supported +hardware, as found on: + + http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/ + +please help our initiative by testing the official Linaro Evaluation +Build (LEB): + +Ubuntu Desktop: + http://snapshots.linaro.org/11.05-daily/linaro-ubuntu-desktop/ + +and our Community images: + +Nano: + http://snapshots.linaro.org/11.05-daily/linaro-nano/ + +ALIP: + http://snapshots.linaro.org/11.05-daily/linaro-alip/ + +Developer Tools: + http://snapshots.linaro.org/11.05-daily/linaro-developer/ + +Make your way to: + + http://wiki.linaro.org/Releases/DailyBuilds + +for an explanation on how to test and submit your results to the QA +tracker at: + + http://qatracker.linaro.org + +For an explanation of how to use the qatracker please see: + + https://wiki.linaro.org/QA/QATracker + +Regards, +Jamie. +-- +Linaro Release Manager | Platform Project Manager diff --git a/tools/bug-track/bug-status b/tools/bug-track/bug-status new file mode 100755 index 0000000..be63e7f --- /dev/null +++ b/tools/bug-track/bug-status @@ -0,0 +1,8 @@ +python ./bug-track.py ubuntu +cp interesting-bugs.txt history/ubuntu-bugs-`date -I`.txt +EDITOR=./bug-status-editor editmoin https://wiki.linaro.org/Bugs/Tagged/Ubuntu +python ./bug-track.py linaro +cp interesting-bugs.txt history/linaro-bugs-`date -I`.txt +EDITOR=./bug-status-editor editmoin https://wiki.linaro.org/Bugs/Tagged/Linaro + + diff --git a/tools/bug-track/bug-status-editor b/tools/bug-track/bug-status-editor new file mode 100755 index 0000000..a79e266 --- /dev/null +++ b/tools/bug-track/bug-status-editor @@ -0,0 +1,3 @@ +#!/bin/bash + +cat interesting-bugs.txt >"$1" diff --git a/tools/bug-track/bug-track.py b/tools/bug-track/bug-track.py new file mode 100755 index 0000000..9591def --- /dev/null +++ b/tools/bug-track/bug-track.py @@ -0,0 +1,117 @@ +#!/usr/bin/python +# +# bug-track +# A simple script to get a list of bugs associated with a list of tags for a given project +# +# Jamie Bennett <jb@canonical.com> + +import os +import sys + +from launchpadlib.launchpad import Launchpad + +# Configuration options +APP_NAME = 'bug-track' +CACHE_DIR = os.path.expanduser('~/.launchpadlib/cache') +TMPFILE = os.path.expanduser('~/.launchpadlib/tmp_file') +OUTFILE = os.path.expanduser('./interesting-bugs.txt') + +# Interesting tags FIXME: support tags passed in from the command line +TAGS = { + 'armel' : 0, + 'armv7' : 0, + 'arm-mode' : 0, + 'linaro' : 0, + 'omap3' : 0, + 'beagle' : 0, + 'beaglexm' : 0, + 'igep' : 0, + 'imx51' : 0, + 'dove' : 0, + 'omap4' : 0, + 'panda' : 0, + 'ux500' : 0, + 've-a9' : 0, + 've-a9x4' : 0 } + +def main(args): + # FIXME: use getopt to parse the command line properly + try: + pillar_name = args[1] + except IndexError: + print "Please specify a project to gather bug information on" + return 1 + + launchpad = Launchpad.login_anonymously(APP_NAME, 'production', CACHE_DIR) + pillar = launchpad.projects[pillar_name] + + outfile = open(TMPFILE, 'w') + + # Type of bugs we are searching for. Ignore closed and fixed bugs. + interesting_bugs = pillar.searchTasks( + tags=TAGS.keys(), + order_by='importance', + status=[ + "New", + "Incomplete", + "Confirmed", + "Triaged", + "In Progress", + "Fix Committed"]) + + # Parse the list of bugs returned into something we can display. + for bug in interesting_bugs: + (a, b) = bug.title.split("\"", 1) + title = b.strip("\"") + if bug.importance == 'Critical': + importance = '<bgcolor="#FF0000">Critical' + elif bug.importance == 'High': + importance = '<bgcolor="#FF9900">High' + elif bug.importance == 'Medium': + importance = '<bgcolor="#FFFF00">Medium' + elif bug.importance == 'Low': + importance = '<bgcolor="#00FF00">Low' + else: + importance = bug.importance + + (project_url, project) = bug.target_link.rsplit('/', 1) + (bug_url, bug_num) = bug.bug_link.rsplit('/',1) + + # Keep a count of the number of individual tags + for tag in bug.bug.tags: + if tag in TAGS: + TAGS[tag] += 1 + + outfile.write("||[[%s|%s]]||%s||%s||%s||%s||%s||%s||\n" % ( + 'http://www.launchpad.net/bugs/' + bug_num, bug_num, + project, + title, + importance, + bug.status, + bug.date_created.date(), + bug.bug.tags)) + outfile.close() + + # Output into a wiki syntax document. FIXME: Allow for plain text + # non-formatted output. + + outfile = open(OUTFILE, 'w') + outfile.write("= Interesting bugs for Linaro from the %s project =\n" % pillar_name) + outfile.write("The follow list is generated by checking for the tags listed at [[Process/Bugs/Tags]].\n") + + outfile.write("== Tag Occurances ==\n") + outfile.write("||<rowbgcolor=\"black\" rowstyle=\"color: white; font-weight: bold;\">Tag || Occurances ||\n") + + for tag in TAGS: + outfile.write("||[[http://bugs.edge.launchpad.net/%s/+bugs?field.searchtext=%s|%s]]||%s||\n" % (pillar_name, tag, tag, TAGS[tag])) + + outfile.write("== Bugs ==\n") + outfile.write("||<rowbgcolor=\"black\" rowstyle=\"color: white; font-weight: bold;\">Bug || Project || Description || Importance || Status || Created || Tags ||\n") + + # Launchpad returns a list of bugs in reverse order when asking for + # sorting by importance. Reverse the list and append. + for line in reversed(open(TMPFILE).readlines()): + outfile.write(line) + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/tools/comparisons/manifest-compare.py b/tools/comparisons/manifest-compare.py new file mode 100755 index 0000000..2645745 --- /dev/null +++ b/tools/comparisons/manifest-compare.py @@ -0,0 +1,179 @@ +#! /usr/bin/env python + +import os.path +import sys + +class CompareManifest: + + def __init__(self): + self.numPkgs1 = 0 + self.numPkgs2 = 0 + self.totalMatches = 0 + self.exact = 0 + + def compareProjects(self, firstProject, secondProject, outputFile, unique, count): + file1Packages = {} + file2Packages = {} + + packageFile = open(firstProject, 'r') + comparedFile = open(outputFile, 'w') + + # read in the first list of packages + for line in packageFile: + line = line.rstrip('\n') + (package, version) = line.split("\t") + + file1Packages[package] = version + + if count: + self.numPkgs1 = self.numPkgs1 + 1 + + packageFile.close() + packageFile = open(secondProject, 'r') + + # read in the second list of packages + for line in packageFile: + line = line.rstrip('\n') + (package, version) = line.split("\t") + file2Packages[package] = version + + if count: + self.numPkgs2 = self.numPkgs2 + 1 + + packageFile.close() + + comparedFile.write('<table>\n') + + if unique == True: + headerLine = '<tr><th>Package</th><th>' + firstProject + '</th></tr>\n' + else: + headerLine = '<tr><th>Package</th><th>' + firstProject + '</th><th>' + secondProject + '</th></tr>\n' + comparedFile.write(headerLine) + + # initialise colour coding + oddEven = "odd" + status = "same" + + for package in file1Packages: + if file2Packages.has_key(package): + if unique == False: + if oddEven == "odd": + oddEven = "even" + else: + oddEven = "odd" + if file1Packages[package] > file2Packages[package]: + status = "upgraded" + elif file1Packages[package] == file2Packages[package]: + status = 'same' + self.exact = self.exact + 1 + else: + status = "downgraded" + + line = "<tr class=\"" + oddEven + "\"><td>" + package + "</td><td>" + file1Packages[package] + "</td><td class=\"" + status + "\">" + file2Packages[package] + "</td></tr>\n" + comparedFile.write(line) + + self.totalMatches = self.totalMatches + 1 + + else: + if unique == True: + if oddEven == "odd": + oddEven = "even" + else: + oddEven = "odd" + + line = "<tr class=\"" + oddEven + "\"><td>" + package + "</td><td>" + file1Packages[package] + "</td><td class=\"" + status + "\"></tr>\n" + comparedFile.write(line) + + comparedFile.write('</table>\n') + + def GetNumPkgs(self, project): + if project == 1: + RetVal = self.numPkgs1 + else: + RetVal = self.numPkgs2 + + return RetVal + + def GetTotalMatches(self): + return self.totalMatches + + def GetExactMatches(self): + return self.exact + +if __name__ == '__main__': + if len(sys.argv) != 3: + print 'usage: compare-projects <manifest1> <manifest2>\n' + else: + if os.path.exists(sys.argv[1]): + if os.path.exists(sys.argv[1]): + firstProject = sys.argv[1] + secondProject = sys.argv[2] + outputFilename = firstProject + "-vs-" + secondProject + ".html" + + cm = CompareManifest() + + cm.compareProjects(firstProject, secondProject, 'temp1.tmp', True, True) + cm.compareProjects(secondProject, firstProject, 'temp2.tmp', True, False) + cm.compareProjects(firstProject, secondProject, 'temp3.tmp', False, False) + + numPkgs1 = cm.GetNumPkgs(1) + numPkgs2 = cm.GetNumPkgs(2) + totalMatches = cm.GetTotalMatches() + exact = cm.GetExactMatches() + + # construct the final comparison file + comparedFile = open(outputFilename, 'w') + + # spit out the html header for the comparison file + comparedFile.write('<head>\n') + headerLine = '<title>Differences between ' + firstProject + ' and ' + secondProject + '</title>\n' + comparedFile.write(headerLine) + comparedFile.write('<link href=\"compare-diff.css\" rel=\"stylesheet\" type=\"text/css\" />\n') + comparedFile.write('</head>\n') + comparedFile.write('<body>\n') + + headerLine = '<h2>Differences between ' + firstProject + ' and ' + secondProject + '</h2>\n' + comparedFile.write(headerLine) + comparedFile.write('<h2>Summary</h2>\n') + headerLine = '<table><tr><td>Number of packages in ' + firstProject + '</td><td>' + str(numPkgs1) + '</td></tr>' + comparedFile.write(headerLine) + headerLine = '<tr><td>Number of packages in ' + secondProject + '</td><td>' + str(numPkgs2) + '</td></tr>\n' + comparedFile.write(headerLine) + headerLine = '<tr><td>Number of similar packages</td><td>' + str(totalMatches) + '</td></tr>' + comparedFile.write(headerLine) + headerLine = '<tr><td>Exact package matches</td><td>' + str(exact / 3) + '</td></tr>' + comparedFile.write(headerLine) + perc = float(totalMatches) / float (numPkgs1) * 100 + perc = '%.2f' % perc + headerLine = '<tr><td>Percentage of similar packages in \n' + firstProject + '</td><td>' + str(perc) + '%</td></tr>' + comparedFile.write(headerLine) + perc = float(totalMatches) / float (numPkgs2) * 100 + perc = '%.2f' % perc + headerLine = '<tr><td>Percentage of similar packages in \n' + secondProject + '</td><td>' + str(perc) + '%</td></tr>' + comparedFile.write(headerLine) + comparedFile.write('</table>\n') + + # packages in both projects + comparedFile2 = open('temp3.tmp', 'r') + headerLine = '<h2>Packages in both ' + firstProject + ' and ' + secondProject + '\n' + comparedFile.write(headerLine) + comparedFile.write(comparedFile2.read()) + comparedFile.write('\n') + comparedFile2.close(); + + comparedFile2 = open('temp1.tmp', 'r') + headerLine = '<h2>Packages unique to ' + firstProject + ': ' + str(numPkgs1-totalMatches) + '\n' + comparedFile.write(headerLine) + comparedFile.write(comparedFile2.read()) + comparedFile.write('\n') + comparedFile2.close(); + + comparedFile2 = open('temp2.tmp', 'r') + headerLine = '<h2>Packages unique to ' + secondProject + ': ' + str(numPkgs2-totalMatches) + '\n' + comparedFile.write(headerLine) + comparedFile.write(comparedFile2.read()) + comparedFile.write('\n') + + comparedFile.close() + comparedFile2.close(); + diff --git a/tools/comparisons/parse-raw.py b/tools/comparisons/parse-raw.py new file mode 100644 index 0000000..518dc34 --- /dev/null +++ b/tools/comparisons/parse-raw.py @@ -0,0 +1,29 @@ +#! /usr/bin/env python + +import os +import sys + +if __name__ == '__main__': + if len(sys.argv) != 3: + print 'usage: parse-raw <raw list> <output file>\n' + else: + if os.path.exists(sys.argv[1]): + inputFile = open(sys.argv[1], 'r') + outputFile = open(sys.argv[2], 'w') + + package = '' + version = '' + + for line in inputFile: + if line[:8] == 'Package:': + package = line[9:] + + if line[:8] == 'Version:': + version = line[9:] + + if package and version: + package = package.rstrip('\n') + outputFile.write(package + ' ' + version) + package = '' + version = '' + diff --git a/tools/image-checker/linaro-image-checker.py b/tools/image-checker/linaro-image-checker.py new file mode 100755 index 0000000..715cd84 --- /dev/null +++ b/tools/image-checker/linaro-image-checker.py @@ -0,0 +1,65 @@ +from datetime import date + +import urllib2 +import sys + +urls_to_check = { + 'http://snapshots.linaro.org/11.05-daily/linaro-alip/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-developer/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-headless/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-multimedia-engineering/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-netbook-efl/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-graphical-engineering/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/igep/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/imx51/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/lt-s5pv310/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/omap3/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/overo/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/panda/': 0, + 'http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/vexpress/': 0, +} + +def main(args): + d = date.today().strftime("20%y%m%d") + + for checking in urls_to_check.keys(): + # If a build was attempted see which is the latest + latest = 0 + found = 0 + + while found == 0: + try: + url_to_open = checking + d + "/%d" % latest + urllib2.urlopen(url_to_open) + latest = latest + 1 + + # latest build was found, was this successful? + except urllib2.HTTPError: + found = 1 + try: + if latest > 0: + url_to_open = checking + "%s/%d/images" % (d, (latest - 1)) + urllib2.urlopen(url_to_open) + urls_to_check[checking] = 1 + print "%slatest build %d has output" % (checking, (latest - 1)) + else: + print "%s didn't build today" % checking + + except urllib2.HTTPError: + print "%s latest build has no output" % checking + + out = "\n" + d + + for key in urls_to_check.keys(): + out = out + ', %d' % urls_to_check[key] + + try: + f = open('./build-stats.csv', 'a') + f.write(out) + f.close() + except IOError: + print "ERROR: cannot open ./build-stats.csv for appending" + +if __name__ == '__main__': + sys.exit(main(sys.argv)) + diff --git a/tools/image-download-logs/get_download_logs.sh b/tools/image-download-logs/get_download_logs.sh new file mode 100755 index 0000000..cfc83e8 --- /dev/null +++ b/tools/image-download-logs/get_download_logs.sh @@ -0,0 +1,4 @@ +scp snapshots.linaro.org:/home/weblogs/logs/release.log . +scp snapshots.linaro.org:/home/weblogs/logs/snapshot.log . +mv release.log release.csv +mv snapshot.log snapshot.csv diff --git a/tools/image-download-logs/image-data.sh b/tools/image-download-logs/image-data.sh new file mode 100755 index 0000000..3124002 --- /dev/null +++ b/tools/image-download-logs/image-data.sh @@ -0,0 +1,13 @@ +ubuntu=`grep ubuntu-desktop * | wc -l` +developer=`grep developer * | wc -l` +alip=`grep alip * | wc -l` +nano=`grep nano * | wc -l` +hwpacks=`grep hwpack * | wc -l` +let total=ubuntu+developer+alip+nano+hwpacks +echo -e "Ubuntu:\t\t$ubuntu" +echo -e "Developer:\t$developer" +echo -e "ALIP:\t\t$alip" +echo -e "Nano:\t\t$nano" +echo -e "HWPacks:\t$hwpacks" +echo -e "------------------------" +echo -e "\t\t$total" diff --git a/tools/image-download-logs/organise-images.sh b/tools/image-download-logs/organise-images.sh new file mode 100755 index 0000000..cd32278 --- /dev/null +++ b/tools/image-download-logs/organise-images.sh @@ -0,0 +1,22 @@ +for f in `ls *.log`; do + name=`echo "$f"|cut -c1-8 | sed 's/-//'` + + if [ ! -d "$name" ]; then + mkdir "$name" + fi + + date=`echo "$f"|cut -c8-20 | sed 's/-//' | sed 's/.log//' | sed 's/t//'` + year=`echo "$date" | cut -c1-4` + + if [ ! -d "$name/$year" ] ; then + mkdir "$name/$year" + fi + + month=`echo "$date" | cut -c5-6` + + if [ ! -d "$name/$year/$month" ] ; then + mkdir "$name/$year/$month" + fi + + mv "$f" "$name/$year/$month" +done diff --git a/tools/social-media-stats/get_social_media_stats.py b/tools/social-media-stats/get_social_media_stats.py new file mode 100644 index 0000000..e0d2cb8 --- /dev/null +++ b/tools/social-media-stats/get_social_media_stats.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# Script to collect stats on social media stats +# Copyright 2011, Michael Opdenacker, Linaro.org +# License: Public Domain + +# Need the below packages: +# python-beautifulsoup +# Tested on Ubuntu Maverick + +import urllib2, re +from BeautifulSoup import BeautifulSoup + +def get_stat (url, tag, attribute, value): + + page = urllib2.urlopen(url) + soup = BeautifulSoup(page) + return soup.find(tag, { attribute : value }).string.strip() + +def get_stat_raw(url, regexp, index): + + # For pages the BeautifulSoup can't digest (like Google search results) + + opener = urllib2.build_opener() + # User agent needed only for Google search pages + opener.addheaders = [('User-agent', 'Mozilla/5.0')] + page = opener.open(url) + + match=re.search(regexp, page.read()) + return match.group(index) + +def get_twitter_stat (user, stat): + + res = 'N/A' + url = 'http://twitter.com/' + user + + if stat == 'tweets': + res = get_stat (url, '', 'id', 'update_count') + + elif stat == 'followers': + res = get_stat (url, '', 'id', 'follower_count') + + return res + +def get_launchpad_subscribers (group): + + return get_stat ('https://launchpad.net/~' + group, '', 'id', 'approved-member-count') + +def get_youtube_subscribers (user): + + return get_stat ('http://www.youtube.com/profile?user=' + user + '&view=subscribers' , '', 'name', 'channel-box-item-count') + +def get_google_search_results (string): + res = get_stat_raw ('http://google.com/search?q=' + string, 'About ([0-9,]+) results', 1) + return res.replace(',', '') + +print 'LinaroTech tweets: ' + get_twitter_stat('LinaroTech', 'tweets') +print 'LinaroTech followers: ' + get_twitter_stat('LinaroTech', 'followers') +print 'LinaroOrg tweets: ' + get_twitter_stat('LinaroOrg', 'tweets') +print 'LinaroOrg followers: ' + get_twitter_stat('LinaroOrg', 'followers') +print 'Launchpad linaro-community subscribers: ' + get_launchpad_subscribers('linaro-community') +print 'YouTube linaroorg subscribers: ' + get_youtube_subscribers('LinaroOrg') +print 'Number of Linaro pages (Google estimate): ' + get_google_search_results('site:linaro.org') +print 'Number of links to linaro.org (Google estimate): ' + get_google_search_results('link:%20linaro.org') |