cannot patch upstream debian package

42 views
Skip to first unread message

jlacvdr L.

unread,
Feb 19, 2020, 11:10:29 AM2/19/20
to isar-users

Hi,

I'm trying apply patch to an upstream debian package

recipe looks like:

inherit dpkg

SRC_URI = "apt://${PN} \
file://files/mypatch.patch \
"

during  do_dpkg_build, I've got the error:

 dpkg-source -I --before-build nano-2.9.3
dpkg-buildpackage: info: host architecture amd64
 fakeroot debian/rules clean
dh clean --parallel
   dh_clean -O--parallel
 dpkg-source -I -b nano-2.9.3
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building nano using existing ./nano_2.9.3.orig.tar.bz2
dpkg-source: info: local changes detected, the modified files are:
 nano-2.9.3/.applied_patches/.patch-commands
 nano-2.9.3/.applied_patches/files/mypatch.patch
 nano-2.9.3/src/utils.c
dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/nano_2.9.3-1.diff.rSd68A
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-buildpackage: error: dpkg-source -I -b nano-2.9.3 subprocess returned exit status 2
WARNING: exit code 2 from a shell command.


How fix it ? 
Can you confirm that patching an upstream package is supported ?

Regards,




Jan Kiszka

unread,
Feb 19, 2020, 11:21:03 AM2/19/20
to jlacvdr L., isar-users
Yes. The trick (which we should probably share via meta-isar) is to do this:

...
SRC_URI += "file://my.patch;apply=no"

CHANGELOG_V = "${PV}+patch1"

do_prepare_build() {
deb_add_changelog

cd ${S}
quilt import ${WORKDIR}/*.patch
quilt push -a
}

Jan

--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

jlacvdr L.

unread,
Feb 19, 2020, 11:30:11 AM2/19/20
to isar-users
thanks

it works fine

Henning Schild

unread,
Feb 20, 2020, 5:34:33 AM2/20/20
to [ext] Jan Kiszka, jlacvdr L., isar-users
Am Wed, 19 Feb 2020 17:21:00 +0100
schrieb "[ext] Jan Kiszka" <jan.k...@siemens.com>:
Good idea. But debian packages use different patching mechanisms. This
is the solution for quilt-based patching.

A more generic approach would be to "convert" your patches to patch the
debian stuff as well.

So you take the original debinanized source-tree ... apply your patch
... do the quilt or whatever changes to make debian happy .. now diff
the original with the patched and you get a patch that covers debian/
as well and will work without a patch-specific prepare function.

Henning
Reply all
Reply to author
Forward
0 new messages