aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFathi Boudra <fabo@debian.org>2011-05-30 14:08:12 +0300
committerFathi Boudra <fabo@debian.org>2011-05-30 14:08:12 +0300
commit1d34b927e59d8f921fb755a2251ebacf70dd46c1 (patch)
tree5c4b283d50b7c23a6baaa02fde9be8a985d5d00a
Initial commit
-rw-r--r--README.txt18
-rw-r--r--examples/linaro_metrics-201103.odpbin0 -> 481130 bytes
-rw-r--r--notes/make_release.txt50
-rw-r--r--notes/new_qatracker_build.txt15
-rw-r--r--notes/rm_pm_activities.txt64
-rw-r--r--templates/milestone_release_annoucement_template.txt103
-rw-r--r--templates/milestone_release_page_template.moin.txt156
-rw-r--r--templates/milestone_release_testing_annoucement_template.txt48
-rw-r--r--templates/weekly_team_activity_report_reminder.txt18
-rw-r--r--templates/weekly_team_meeting_page_template.moin.txt41
-rw-r--r--templates/weekly_team_report_template.moin.txt29
-rw-r--r--templates/weekly_testing_annoucement_template.txt42
-rwxr-xr-xtools/bug-track/bug-status8
-rwxr-xr-xtools/bug-track/bug-status-editor3
-rwxr-xr-xtools/bug-track/bug-track.py117
-rwxr-xr-xtools/comparisons/manifest-compare.py179
-rw-r--r--tools/comparisons/parse-raw.py29
-rwxr-xr-xtools/image-checker/linaro-image-checker.py65
-rwxr-xr-xtools/image-download-logs/get_download_logs.sh4
-rwxr-xr-xtools/image-download-logs/image-data.sh13
-rwxr-xr-xtools/image-download-logs/organise-images.sh22
-rw-r--r--tools/social-media-stats/get_social_media_stats.py63
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
new file mode 100644
index 0000000..9362355
--- /dev/null
+++ b/examples/linaro_metrics-201103.odp
Binary files differ
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')