From Fedora Project Wiki

Line 130: Line 130:


<pre>
<pre>
VERSION=...
version=...


# Prepare a commit
# Prepare a commit
fedpkg switch-branch master
fedpkg switch-branch master
rpmdev-bumpspec --new="$VERSION" --comment="new version $VERSION" *.spec
rpmdev-bumpspec --new="$version" --comment="new version $version" *.spec
spectool -g *.spec
spectool -g *.spec
fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'`
fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'`
Line 155: Line 155:


<pre>
<pre>
BRANCHES="f20 f19"
branches="f20 f19"


# Fake-merge all branches into master:
# Fake-merge all branches into master:
for branch in $BRANCHES; do
for branch in $branches; do
     fedpkg switch-branch master
     fedpkg switch-branch master
     git merge -s ours $branch
     git merge -s ours $branch
Line 175: Line 175:


<pre>
<pre>
BRANCHES="f21 f20"
branches="f21 f20"


# Fast-forward all branches to master HEAD:
# Fast-forward all branches to master HEAD:
for branch in $BRANCHES; do
for branch in $branches; do
     fedpkg switch-branch $branch
     fedpkg switch-branch $branch
     git merge --ff-only master
     git merge --ff-only master
Line 192: Line 192:


<pre>
<pre>
BRANCHES="f21 f20"
branches="f21 f20"
TYPE=bugfix
type=bugfix
BUGS=
bugs=
COMMENT="Bug fix update."
comment="Bug fix update."


# Create updates for all branches
# Create updates for all branches
for branch in $BRANCHES; do
for branch in $branches; do
     fedpkg switch-branch $branch
     fedpkg switch-branch $branch
     bodhi --new --type="$TYPE" --bugs="$BUGS" --notes="$COMMENT" --close-bugs `fedpkg verrel`
     bodhi --new --type="$type" --bugs="$bugs" --notes="$comment" --close-bugs `fedpkg verrel`
done
done


Line 217: Line 217:


<pre>
<pre>
PACKAGE=...
package=...
EDITOR=...
editor=...


git init $PACKAGE
git init $package
cd $PACKAGE
cd $package


$EDITOR $PACKAGE.spec
$editor $package.spec
git add $PACKAGE.spec
git add $package.spec


fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'`
fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'`


rpmdev-bumpspec $PACKAGE.spec -m 'initial build'
rpmdev-bumpspec $package.spec -m 'initial build'
fedpkg commit -c
fedpkg commit -c
</pre>
</pre>
Line 235: Line 235:


<pre>
<pre>
RAWHIDE=f21
rawhide=f22


fedpkg --dist $RAWHIDE srpm
fedpkg --dist $rawhide srpm
fedora-create-review --no-scratch-build *.spec *.src.rpm
fedora-create-review --no-scratch-build *.spec *.src.rpm
</pre>
</pre>
Line 244: Line 244:


<pre>
<pre>
RAWHIDE=f21
rawhide=f22
MESSAGE="incorporated review feedback"
message="incorporated review feedback"


rpmdev-bumpspec *.spec -m "$MESSAGE"
rpmdev-bumpspec *.spec -m "$message"
fedpkg commit -c
fedpkg commit -c


fedpkg --dist $RAWHIDE srpm
fedpkg --dist $rawhide srpm
fedora-create-review --amend --no-scratch-build *.spec *.src.rpm
fedora-create-review --amend --no-scratch-build *.spec *.src.rpm
</pre>
</pre>
Line 266: Line 266:
ln -s /etc/mock/fedora-devel-x86_64.cfg /etc/mock/default.cfg
ln -s /etc/mock/fedora-devel-x86_64.cfg /etc/mock/default.cfg


MOCKUSER=...
mockuser=...


usermod -a -G mock $MOCKUSER
usermod -a -G mock $mockuser
</pre>
</pre>


Line 274: Line 274:


<pre>
<pre>
NAME=...
name=...


fedora-review -n $NAME
fedora-review -n $name
</pre>
</pre>


Line 282: Line 282:


<pre>
<pre>
BZ=...
bz=...


fedora-review -b $BZ
fedora-review -b $bz
</pre>
</pre>



Revision as of 09:13, 14 April 2015

Mail: psimerda AT redhat DOT com, pavlix AT pavlix DOT net

Jabber: pavlix AT pavlix DOT net

IRC Freenode: pavlix (#nm, #gentoo, ...)

Phone: +420 775 996 256

Timezone: Europe/Prague (CET), sometimes available through later hours

About

After learning a bit of programming, I was attracted by the networking world. I got from petty Pascal/C++ projects through web development using ugly PHP and later Python, to a freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. Most people in the business know me from my conference talks and articles.

One of my conference talk brought me an offer from Red Hat, which I joined in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. Since August 2013 I'm no longer working as a regular NetworkManager developer (staying an upstream contributor, though). Even before that I tried to put my hands on a number of other projects via bug reports, tests and code. I'm now working on name resolution features in Fedora including a local DNS/DNSSEC resolver setup. I'm also interested in various network-related standards and especially bugs and bad assumptions in IETF documents.

Wiki resources

Contributions are welcome.

Packages

Maintainer

  • aiccu (IPv6 tunneling client)
  • connman
  • getdns (with Paul Wouters)
  • hostname (taken over from Tomáš Hozza)
  • racoon2
  • radvd (taken over from Petr Písař)
  • strongswan

Help with specific features or integration issues welcome.

Co-maintainer

  • bind
  • bind10
  • NetworkManager-ssh
  • rsync
  • squid

Upstream contributions

  • netresolve (author)
  • dnssec-trigger
    • NetworkManager integration scripts (with Tomáš Hozza)
    • systemd integration
  • NetworkManager
    • Building on any distribution
    • Virtual device support (bridging/bonding, with others)
    • Valgrind and code coverage support for tests
    • Separate platform interaction module (nm-platform, with Dan Winship)
      • Refactored NetworkManager's bridging/bonding/vlan configuration
      • Refactored NetworkManager's IPv4/IPv6 configuration
    • Userspace IPv6 autoconfiguration (nm-rdisc/libndp, with Jiří Pírko)
      • Getting IPv6 autoconf features on par with IPv4
      • Avoiding loads of kernel IPv6 bugs and design flaws
    • Runtime (non-persistent) configuration support (with Dan Winship and Dan Williams)
    • A lot of bug triaging

Upstream bug reporting, triaging and minor contributions

  • glibc
    • The getaddrinfo() support is very complicated while not giving correct results in many cases.
    • Name resolution patches
  • kernel
    • Network configuration is a real pain.
    • Kernel IPv6 autoconfiguration is only designed for trivial use cases and is very buggy.
  • libnl
    • Most of the advanced stuff is very buggy.
  • rpmdevtools
    • Minor patches
  • avahi
    • Missing for IPv6 link-local addresses.
    • IPv6 disabled by default.
    • Problems with duplicates in discovery.

Daily usage

Distributions

  • Gentoo
  • Fedora/CentOS
  • Debian
  • OpenWRT

Development

  • vim
  • gcc
  • make, autotools
  • gdb
  • valgrind

Presentation

  • LaTeX/Beamer

Features

Ideas

Fedora notes

Make a scratch build from locally generated SRPM

fedpkg build --scratch --srpm

Bump a rawhide package to a newer version

In the package git directory:

version=...

# Prepare a commit
fedpkg switch-branch master
rpmdev-bumpspec --new="$version" --comment="new version $version" *.spec
spectool -g *.spec
fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'`
fedpkg commit -c

# Test it
fedpkg build --scratch --srpm

# Create a public build
fedpkg push && fedpkg build

Requires development version, see:

Prepare rawhide to replace branches

Warning: This method discards changes in all branches and should only be used after all of the important changes are incorporated into master. Also, it is only suitable for packages where it's practical to maintain the same version in branches as in rawhide.

branches="f20 f19"

# Fake-merge all branches into master:
for branch in $branches; do
    fedpkg switch-branch master
    git merge -s ours $branch
done

# Build a new release
rpmdev-bumpspec
fedpkg commit -c
fedpkg push
fedpkg build

Update branches to match rawhide and build them

Use the above technique to prepare rawhide if branches can't be fast forwarded to rawhide.

branches="f21 f20"

# Fast-forward all branches to master HEAD:
for branch in $branches; do
    fedpkg switch-branch $branch
    git merge --ff-only master
    fedpkg push
    fedpkg build --nowait
done

# Switch back to master
fedpkg switch-branch master

Issue updates

branches="f21 f20"
type=bugfix
bugs=
comment="Bug fix update."

# Create updates for all branches
for branch in $branches; do
    fedpkg switch-branch $branch
    bodhi --new --type="$type" --bugs="$bugs" --notes="$comment" --close-bugs `fedpkg verrel`
done

# Switch back to master
fedpkg switch-branch master

Resources:

Create a new package

Create a local Git repository

package=...
editor=...

git init $package
cd $package

$editor $package.spec
git add $package.spec

fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'`

rpmdev-bumpspec $package.spec -m 'initial build'
fedpkg commit -c

Create a review request

rawhide=f22

fedpkg --dist $rawhide srpm
fedora-create-review --no-scratch-build *.spec *.src.rpm

Update a review request

rawhide=f22
message="incorporated review feedback"

rpmdev-bumpspec *.spec -m "$message"
fedpkg commit -c

fedpkg --dist $rawhide srpm
fedora-create-review --amend --no-scratch-build *.spec *.src.rpm

Requires:

Review a new package

System configuration:

yum install @fedora-packager fedora-review
ln -s /etc/mock/fedora-devel-x86_64.cfg /etc/mock/default.cfg

mockuser=...

usermod -a -G mock $mockuser

Review local files:

name=...

fedora-review -n $name

Review bugzilla:

bz=...

fedora-review -b $bz

Fedora tools on Gentoo

emerge -av layman
echo source /var/lib/layman/make.conf > /etc/portage.make.conf
layman -a ixit
mkdir -p /etc/portage/sets
cat > /etc/portage/sets/fedora-packaging <<EOF
dev-util/fedora-packager
dev-util/quilt
EOF
emerge -av @fedora-packaging