Ubuntu Development Primer

Similar documents
Getting Perl modules into Debian

Package your very own application. Andreas Tille. DebConf 15, Heidelberg, 17. August Debian. Live packaging workshop.

DESCRIPTION Git dpm is a tool to handle a debian source package in a git repository.

Software Development I

dh-virtualenv Documentation

February 2 nd Jean Parpaillon

A Survivor's Guide to Contributing to the Linux Kernel

Topics covered. Introduction to Git Git workflows Git key concepts Hands on session Branching models. Git 2

Github/Git Primer. Tyler Hague

manifold Documentation

From Tiny Acorns Your first submission to OpenAFS. Simon Wilkinson

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

git-flow Documentation

Getting Started with Contributing to OpenStack An Introductory Crash Course on OpenStack Development

Overview. 1. Install git and create a Github account 2. What is git? 3. How does git work? 4. What is GitHub? 5. Quick example using git and GitHub

Build Debian/Ubuntu packages to make it easy for users to install your software

dgit Use the Debian archive as a git remote Debconf 15, Heidelberg

Setting up a decent dev box for OSS work. LPC Student day 2008

xtensor-io Sep 20, 2018

Team Up: Contributing to the Tizen Platform. Narasimha Swamy Sanjay NM

dh-virtualenv Documentation

Frédéric Crozat SUSE Linux Enterprise Release Manager

MRCP. Asterisk Modules. Administrator Guide. Powered by Universal Speech Solutions LLC

Introduction to Git and Github Repositories

Review Version Control Concepts

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Gerrit

Agenda. Several projects are using GIT Developer(s) Junio Hamano, Linus Torvalds. Qt Stable release (January 31, 2011)

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

Roles and Responsibilities of Maintainers

Introduction to GIT. Jordi Blasco 14 Oct 2011

Common Git Commands. Git Crash Course. Teon Banek April 7, Teon Banek (TakeLab) Common Git Commands TakeLab 1 / 18

Git & Github Fundamental by Rajesh Kumar.

swiftenv Documentation

contribution-guide.org Release

Firmware Test Suite - Uses, Development, Contribution and GPL

Distributed Version Control (with Git)

Online Remote Repositories

Git. A Distributed Version Control System. Carlos García Campos

An Introduction to Debian Packaging

CSC 2700: Scientific Computing

Git. SSE2034: System Software Experiment 3, Fall 2018, Jinkyu Jeong

Organization, Structure, and How To Contribute

Working with GIT. Florido Paganelli Lund University MNXB Florido Paganelli MNXB Working with git 1/47

Version Control with Git

Install Eclipse Mosquitto MQTT on a Raspberry Pi 3B Running Raspbian Stretch

MOOSE-Based Application Development on GitLab

2 Initialize a git repository on your machine, add a README file, commit and push

Contribute To Linux Mainline

Russell Doty Red Hat

Version Control: Gitting Started

Practical C Programming

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b

Assumptions. GIT Commands. OS Commands

CESSDA Expert Seminar 13 & 14 September 2016 Prague, Czech Republic

Git Tutorial. André Sailer. ILD Technical Meeting April 24, 2017 CERN-EP-LCD. ILD Technical Meeting, Apr 24, 2017 A. Sailer: Git Tutorial 1/36

Getting the Source Code

CPSC 491. Lecture 19 & 20: Source Code Version Control. VCS = Version Control Software SCM = Source Code Management

ROS Qt Creator Plug-in. Release

The Rock branching strategy is based on the Git Branching Model documented by Vincent Driessen.

Submitting your Work using GIT

New Contributor Tutorial and Best Practices

Solved How To Manually Remove Old Kernels From Ubuntu 12.04

Upstreaming Hardware Enablement

The Debian Kernel and its Team http// kernel/

Managing build infrastructure of a Debian derivative

ROS Qt Creator Plug-in. Release

Working with Ubuntu Linux. Track 2 Workshop June 2010 Pago Pago, American Samoa

About SJTUG. SJTU *nix User Group SJTU Joyful Techie User Group

Long Term Support Initiative

Introduction to Git and GitHub. Tools for collaboratively managing your source code.

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Tutorial 2 GitHub Tutorial

Firmware Test Suite (fwts) Alex Hung BIOS Engineer, Hardware Enablement

How to git with proper etiquette

[RFC] Obtaining Management Buy-in for Mainline Development

Aurelien Jarno 26/02/2006 FOSDEM. Debian GNU/kFreeBSD. Aurelien Jarno. What? Why? Status. The future. How to help?

The Common Debian Build System

Dropping Packets in Ubuntu Linux using tc and iptables

The Embedded Linux Problem

Lab 01 How to Survive & Introduction to Git. Web Programming DataLab, CS, NTHU

Kaji Documentation. Release 0.2. Thibault Cohen

TDDC88 Lab 4 Software Configuration Management

linux-2.6 Packaging maximilian attems Debian Kernel Team Linuxwochen Graz May 20, 2006

FPLLL. Contributing. Martin R. Albrecht 2017/07/06

Software Project (Lecture 4): Git & Github

Drupal Command Line Instructions Windows 7 List All Files >>>CLICK HERE<<<

MariaDB ColumnStore C++ API Building Documentation

Branching and Merging

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

Lab Objective. Lab Assignment. Downloads and Installation

TangeloHub Documentation

Best Practices. Joaquim Rocha IT-DSS-TD

Revision Control. An Introduction Using Git 1/15

Building Custom Debian Distributions with the CDDTk

syslog-ng Apache Kafka destination

Software Revision Control for MASS. Git Basics, Best Practices

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum

Kinto Documentation. Release Mozilla Services Da French Team

projecto Documentation

Laboratorio di Programmazione. Prof. Marco Bertini

Transcription:

Ubuntu Development Primer How to stop monkey patching and start committing Dave Chiluk chiluk@ubuntu.com

Topics Getting support Launchpad Modifying Sources Building Submitting changes The Kernel

Me. Dave Chiluk Canonical Employee for 3.5 years supporting Users through Ubuntu Advantage Ubuntu Contributing Developer Honorary Kernel team member. Working toward Masters of the Universe, and Core Dev. Long time linux evangelist https://wiki.ubuntu.com/chiluk

Why you should care? You have self-maintained packages. You want to give back, but don t know where to start. You had to fix something for yourself, and don t want to have to re-fix it every time you upgrade. Mentorship beats reading wiki pages (but there will still be plenty of pages) Outdated documentation

Where do you go for support?

Where do you go for support? google.com askubuntu.com ubuntuforums.org Ubuntu Advantage IRC Freenode #ubuntu General User support #ubuntu-devel For development assistance, such as patching #ubuntu-bugs Launchpad

Launchpad.net So you found your bug on launchpad? Click this affects me too

Launchpad.net Subscribe yourself

Launchpad.net Assign yourself if you have a fix.

Launchpad.net All of these result in Karma.

There s no related bug? Create one using ubuntu-bug <source package name> This will package up a number of logs, and

New bugs Have you included related logs? Have you included debug output from the command being run (--verbose or --debug flags) Did you include a dump? Is your package up to date? Have you tested the development release? Bisect/backport if it s fixed there.

Fix it Check upstream? If fixed - Backport the change If not Fix it and upstream the patch

Getting sources Get the tools $ sudo apt install sbuild debhelper ubuntu-dev-tools devscripts build-essential fakeroot kernel-wedge kernel-package dpatch quilt rmadison <source package name> Shows the version of the package in every supported version of Ubuntu mkdir bash pull-lp-source bash xenial

The debian directory changelog rules control package definition, including depends, build-depends, recommends, and replaces. patches/ Patches because Ubuntu is a delta merged with debian, and this helps when new versions need to be brought into Ubuntu This could be improved patches/series $ what-patch https://wiki.debian.org/packaging

Package the patch Make changes dch -i # Modify the changelog dpkg-source --commit will create the patch for you will bring up an interface to request that you fill out a dep3 formatted template for the change Fill out the appropriate fields and information. This will allow your patch to be more readily acceptable to debian.

Package the patch - quilt quilt status quilt push -a Create a new quilt patch quilt add <filename> applies all patches quilt new What is the current patch we are at Tell quilt to start monitoring a file for changes patch -p1 < patch patches the files quilt refresh quilt header -e dep3 quilt pop -a removes all patches

Edit the Changelog dch -i adds a changelog entry Include description and LP# Follow format of other changes in the changelog Double check that patch is listed in debian/patches/series

Build the source package debuild -S

Build the binary package sbuild -A -d xenial-amd64 <new.dsc> https://wiki.ubuntu.com/simplesbuild debdiff <orig.dsc> <new.dsc> > lp#.<series>.debdiff

Test the Package YES YOU!

Submit the change Attach the debdiff to the launchpad bug Is the patch for a released series? Fill out the SRU Template

Stable Release Updates (SRU) https://wiki.ubuntu.com/stablereleaseupdates Copy the SRU Template to the top of the bug description and fill it out. Helps reviewers understand what s going on without having to wade through the entirety of the bug text

The archives Get Sponsorship Core dev Wait, Eventually someone will come along from ubuntu-sponsors Ask on #ubuntu-devel Get SRU Sponsorship SRU Team member Package is built by launchpad and added to the -proposed archive

Test it again! In addition to integration and build testing The original submitter is expected to test the package as it exists in -proposed. Then add verification-done tag on launchpad Wait 2-6 weeks for promotion to -updates

Submit to Debian There s a tool for that too! submittodebian Why? Because we want to be good members of the Debian community, We don t want to have to maintain the delta indefinitely.

The Kernel git clone git://kernel.ubuntu.com/ubuntu/ubuntuxenial.git http://kernel.ubuntu.com/ Git Branches master master-next kernel in -proposed being tested.

Building the kernel make make oldconfig ; make for quick iteration Not recommended alias fdr='fakeroot debian/rules' to ~/.bashrc $ fdr prepare-generic creates config $ fdr binary-generic when you want to build full debs

For New fixes Submit to Upstream Kernel Documentation/SubmittingPatches Then submit to linux-stable Rare occurence

Cherrypicks of Upstream patches Test Upstream https://wiki.ubuntu.com/kernel/mainlinebuilds http://kernel.ubuntu.com/~kernel-ppa/mainline/ git bisect to find correct upstream commit. git cherry-pick -sex <upstream commit> Submit the cherry-picks to linux-stable Documentation/stable_kernel_rules.txt This will eventually get included into Ubuntu via linux-stable patch streams Consider running an linux-image-generic-lts- kernel.

Other fixes Sometimes patches are not accepted by stable, but are still needed in Ubuntu Submit to kernel-team@lists.ubuntu.com Follow patch submission guidelines https://wiki.ubuntu.com/kernel/dev/kernelbugfixing Buy a kernel team member some beer.

Questions please Thank you Dave Chiluk chiluk@ubuntu.com irc: chiluk