No edit summary |
|||
(73 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
Jabber: pavlix AT pavlix DOT net | Jabber: pavlix AT pavlix DOT net | ||
IRC Freenode: pavlix (#nm | IRC Freenode: pavlix (#nm, #gentoo, ...) | ||
Timezone: Europe/Prague (CET), sometimes available through later hours | Timezone: Europe/Prague (CET), sometimes available through later hours | ||
Line 11: | Line 9: | ||
== About == | == 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 | After learning a bit of programming, I was attracted by the networking world. I got from petty Pascal/C++ projects through web development using PHP and later Python, to years of freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. I was active in the community, wrote articles and spoke at conferences which finally led to my joining Red Hat in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. Since August 2013 I'm working on various network related packages and projects. | ||
== Projects == | |||
Fedora projects: | |||
* [https://github.com/pavlix/network-testing User space networking test suite] (owner) | |||
* [https://github.com/pavlix/netresolve Non-blocking network name resolution library and tools] (owner) | |||
* [https://github.com/pavlix/gentoo-rpm Gentoo ebuilds for Fedora and CentOS development] (owner) | |||
* [https://github.com/pavlix/fptool Wrapper over Fedora package maintainance tools] (owner) | |||
* DNSSEC in Fedora (contributor) | |||
* IPv6 and dual-stack networking (contributor) | |||
* [https://wiki.gnome.org/Projects/NetworkManager NetworkManager development] (contributor, former developer | |||
Fedora wiki documentation: | |||
* [[Networking]] – A starting point for information related to networking. | * [[Networking]] – A starting point for information related to networking. | ||
* [[Tools/NetworkManager]] – NetworkManager information page. | * [[Tools/NetworkManager]] – NetworkManager information page. | ||
* [[QA/Networking]] – Dual-stack networking issues in Fedora. | |||
(Contributions are welcome.) | |||
Packages: | |||
[https://admin.fedoraproject.org/pkgdb/packager/pavlix/ Fedora Package Database]. | |||
== Other resources == | |||
Fedora features: | |||
* [[Changes/Default_Local_DNS_Resolver]] | |||
Ideas: | |||
* [[Networking/Ideas/ServiceOrdering]] | |||
* [[Networking/Ideas/NameResolution]] | |||
* [[Networking/Ideas/NetworkManagerMethods]] | |||
* [[Networking/Ideas/NetworkManagerRuntimeConfiguration]] | |||
* [[Networking/Ideas/ConfigurationService]] | |||
* [[Networking/Ideas/AutomaticConfiguration]] | |||
* [[Networking/Ideas/NetworkNameResolution]] | |||
* [[Networking/Ideas/NetworkManagerBugReporting]] | |||
* [[Networking/Ideas/NetworkManagerOnServers]] | |||
== Fedora notes == | |||
=== Simple maintainance tasks === | |||
==== Make a fix and a build ==== | |||
<pre> | |||
bug=123456 | |||
message="do something" | |||
# ... add/modify files ... | |||
rpmdev-bumpspec *.spec -c "Resolves: #$bug - $message" | |||
fedpkg commit -c | |||
# ... check using gitk ... | |||
fedpkg push && fedpkg build | |||
</pre> | |||
==== Make a scratch build from locally generated SRPM ==== | |||
<pre> | |||
fedpkg build --scratch --srpm | |||
</pre> | |||
==== Bump a rawhide package to a newer version ==== | |||
In the package git directory: | |||
<pre> | |||
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 | |||
</pre> | |||
Requires development version, see: | |||
* https://fedorahosted.org/rpmdevtools/attachment/ticket/14 | |||
=== | ==== 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. | |||
<pre> | |||
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 | |||
</pre> | |||
== | ==== Update branches to match rawhide and build them ==== | ||
Use the above technique to prepare rawhide if branches can't be fast forwarded to rawhide. | |||
<pre> | |||
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 | |||
</pre> | |||
==== Issue updates ==== | |||
=== | <pre> | ||
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 | |||
</pre> | |||
Resources: | |||
* [https://apps.fedoraproject.org/packages/ Package version in Fedora and EPEL] | |||
* [https://admin.fedoraproject.org/updates/ Package updates] | |||
=== Patchwork === | |||
== | ==== Using vim ==== | ||
* | Open three panes containing (1) patch to be edited, (2) patched file and (3) rejected hunks. | ||
* | |||
* | <pre> | ||
* | package=... | ||
version=... | |||
patch=... | |||
file=... | |||
vim -O $patch $package-$version/$file{,.rej} | |||
</pre> | |||
==== Using git ==== | |||
Warning: Untested. I used a similar command but lost it. | |||
<pre> | |||
package=... | |||
version=... | |||
dir=/path/to/upstream/workdir | |||
(echo cd $dir; for patch in `awk '/^Patch[0-9]*: / { print $2 }' *.spec`; do echo -n "git apply --index "; realpath $patch; echo git commit -m $patch; done) | sh | |||
</pre> | |||
=== New package === | |||
==== Create a local Git repository ==== | |||
<pre> | |||
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 | |||
</pre> | |||
==== Create a review request ==== | |||
<pre> | |||
rawhide=f22 | |||
fedpkg --dist $rawhide srpm | |||
fedora-create-review --no-scratch-build *.spec *.src.rpm | |||
</pre> | |||
==== Update a review request ==== | |||
<pre> | |||
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 | |||
</pre> | |||
Requires: | |||
* https://fedorahosted.org/FedoraReview/ticket/237 | |||
=== Review a new package === | |||
System configuration: | |||
<pre> | |||
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 | |||
</pre> | |||
Review local files: | |||
<pre> | |||
name=... | |||
fedora-review -n $name | |||
</pre> | |||
Review bugzilla: | |||
<pre> | |||
bz=... | |||
fedora-review -b $bz | |||
</pre> | |||
== Fedora tools on Gentoo == | |||
<pre> | |||
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 | |||
</pre> |
Latest revision as of 14:31, 26 August 2024
Mail: psimerda AT redhat DOT com, pavlix AT pavlix DOT net
Jabber: pavlix AT pavlix DOT net
IRC Freenode: pavlix (#nm, #gentoo, ...)
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 PHP and later Python, to years of freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. I was active in the community, wrote articles and spoke at conferences which finally led to my joining Red Hat in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. Since August 2013 I'm working on various network related packages and projects.
Projects
Fedora projects:
- User space networking test suite (owner)
- Non-blocking network name resolution library and tools (owner)
- Gentoo ebuilds for Fedora and CentOS development (owner)
- Wrapper over Fedora package maintainance tools (owner)
- DNSSEC in Fedora (contributor)
- IPv6 and dual-stack networking (contributor)
- NetworkManager development (contributor, former developer
Fedora wiki documentation:
- Networking – A starting point for information related to networking.
- Tools/NetworkManager – NetworkManager information page.
- QA/Networking – Dual-stack networking issues in Fedora.
(Contributions are welcome.)
Packages:
Other resources
Fedora features:
Ideas:
- Networking/Ideas/ServiceOrdering
- Networking/Ideas/NameResolution
- Networking/Ideas/NetworkManagerMethods
- Networking/Ideas/NetworkManagerRuntimeConfiguration
- Networking/Ideas/ConfigurationService
- Networking/Ideas/AutomaticConfiguration
- Networking/Ideas/NetworkNameResolution
- Networking/Ideas/NetworkManagerBugReporting
- Networking/Ideas/NetworkManagerOnServers
Fedora notes
Simple maintainance tasks
Make a fix and a build
bug=123456 message="do something" # ... add/modify files ... rpmdev-bumpspec *.spec -c "Resolves: #$bug - $message" fedpkg commit -c # ... check using gitk ... fedpkg push && fedpkg build
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:
Patchwork
Using vim
Open three panes containing (1) patch to be edited, (2) patched file and (3) rejected hunks.
package=... version=... patch=... file=... vim -O $patch $package-$version/$file{,.rej}
Using git
Warning: Untested. I used a similar command but lost it.
package=... version=... dir=/path/to/upstream/workdir (echo cd $dir; for patch in `awk '/^Patch[0-9]*: / { print $2 }' *.spec`; do echo -n "git apply --index "; realpath $patch; echo git commit -m $patch; done) | sh
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