Using the repo.linaro.org

Install the Linaro Archive key E13D88F7E3C1D56C to authenticate packages:

wget -O - http://repo.linaro.org/ubuntu/linarorepo.key|sudo apt-key add -

Add the linaro-overlay repo with these lines into a /etc/apt.sources.d/linaro.list file:

deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main
deb-src http://repo.linaro.org/ubuntu/linaro-overlay jessie main

Change 'jessie' to your distro release, and change 'linaro-overlay' in case you need to use some of the other repositories @ repo.linaro.org

Common repositories

  • ubuntu/linaro-overlay
    Updated/new/extra arm packages to overlay the base Ubuntu/Debian releases, to go into images and releases

  • ubuntu/linaro-staging
    Staging area to test packages

  • ubuntu/linaro-tools
    Build tools for linaro CI/builds/releases to be installed on developer machines CI instances or build machines.

PPA style team and user specific repositories are created as needed.

Documenting changes

Before preparing uploads to ci.linaro.org, make sure the debian/changelog file has a relevant entry explaining your changes. This is needed to ensure the changes flow back to upstream distributions. Include at least one of the following strings to broadly categorize the changes type:

  • Initial release
    • A completely new package
  • Backport from foo
    • backported package, with possible changes to compile in older distro
  • Added patch
    • patche(s) added, please document in the patch if it has been submitted
  • Upstream snapshot
    • Package updated to VCS snapshot from upstream
  • HACK
    • hacks not really intended upstream

New types can be added if needed. Make sure debian/changelog also has your email address for contacting.

Using Jenkins to upload to repo.linaro.org

We use a jenkins jobs to use to build and upload to repo.l.o. This can both be manually triggered, or connected to a CI loop.

https://ci.linaro.org/job/build-package

The builds are done natively for amd64, armhf, and arm64. Distributions targeted will change over time.

For building packages manually, Select the "build with parameters" and set the"source" field to point to an url to of the .dsc file. The job will then pull the .dsc and related source files, build for linaro targets and if successful upload to repo.linaro.org. An example build parameters:

source = https://launchpad.net/~linaro-maintainers/+archive/ubuntu/qcom-overlay/+files/cogl_1.18.2-2linaro1.dsc
repo = qcom-overlay
codename = jessie

Uploading from a Jenkins CI loop

In case you want to build continuously, you need to generate a debian source package in your CI job. See the kvmtool CI job for example: https://git.linaro.org/ci/job/configs.git/blob/HEAD:/build-kvmtool.yaml:

The relevant bits are:

build-all-packages will build for all supported distros, while build-package lets you target jessie/vivid/whatever.

cat > parameters <<EOF
source=$BUILD_URL/artifact/${dsc}
repo=linaro-staging
EOF

archiving the resulting source package and triggering an parameterized build:

    publishers:
        - archive:
            artifacts: '*.changes, *.dsc, *.gz, *.bz2, *.xz'
            latest-only: true
        - trigger-parameterized-builds:
            - project: build-all-packages
              property-file: kvmtool-params
              condition: SUCCESS

Uploading manually to repo

To upload manually without ci.linaroi.org builds, you need to ask for your gpg key to be added.

To upload directly, use the dput file from:

https://git.linaro.org/infrastructure/ansible-playbooks.git/blob/HEAD:/per-service/jenkins/roles/dput-config/files/dput.cf

notice that dput-ng or dput from ubuntu is required - dput in debian is abanonded upstream.

Moving packages from one repo to another

To move packages from one repo to another (for example from linaro-staging to linaro-overlay), use repocopy script:

repocopy -f linaro-staging -t linaro-overlay -p chromium-browser -v 53.0.2785.92-2linarostretch1

The script is just sugarcoating of cp and dcmd, which you may prefer to run manually.

Moving package from one release to another

To move packages form one release to another (for example from jessie to stretch), you can use reprepro directly:

reprepro copyfilter stretch jessie '$Source (== hello)'

This assumes the package (in this case hello) doesn't need recompiling for the new distribution. Check all dependencies of the binary package can still be satisfied.

Admin Contacts

This machine is an amazon EC2 instance administered by the Builds And Baselines team. Contact Fathi, Wookey and Riku.

See Platform/Systems/RepositoryAdmin for setup details.

Platform/Systems/Repository (last modified 2016-09-16 13:10:19)