schnitzeltony / meta-qt5-extra

OE layer for desktop environments based on Qt5 (KDE KF5+Plasma+Apps / lirios / lxqt / lumina)
MIT License
29 stars 32 forks source link

Conflict between sip and sip3 #52

Closed willdlcre closed 6 years ago

willdlcre commented 6 years ago

Hi everyone,

I'm trying to build an image including the python3-pyqt5 package. However, during the do_rootfs task of my image recipe's build, I got this error :

 * Solver encountered 1 problem(s):
 * Problem 1/1:
 *   - nothing provides sip3 = 4.19.2-r0 needed by sip3-dev-4.19.2-r0.cortexa9hf-neon
 * 
 * Solution 1:
 *   - do not ask to install a package providing sip3-dev

I've seen in the python3-pyqt5 recipe that there are dependencies to both sip-native and sip3-native. From the sip3 recipe, i've tried to remove this portion of code :

# we are inrterested in python3 modules only - for other stuff build sip
rm -rf ${D}/${includedir}
rm -rf ${D}/${bindir}

Which drove me to another error saying that there is a conflict between sip and sip3, and bitbake won't install the same files twice at the same place.

I'm stuck on that for a moment now, any help would be appreciated ! :-)

schnitzeltony commented 6 years ago

I have python3-pyqt5 in my image and it depends on

"python3-pyqt5" -> "libc6"
"python3-pyqt5" -> "libgcc1"
"python3-pyqt5" -> "libqt5svg5"
"python3-pyqt5" -> "libstdc++6"
"python3-pyqt5" -> "python3-core"
"python3-pyqt5" -> "python3-sip"
"python3-pyqt5" -> "qtbase"

The question is: What causes your image to contain sip3-dev? To find out: enable buildhistory. That creates a file depends.dot. Search there for sip3-dev (and let me know :)

willdlcre commented 6 years ago

Hi Andreas, thanks for your answer! I've checked a few output files and looked for the occurences of 'sip' Here is what I found :

python3-sip_4.19.2-r0_cortexa9hf-neon.ipk

*From depends.dot :

"python3-pyqt5" -> "libc6" "python3-pyqt5" -> "libgcc1" "python3-pyqt5" -> "libqt5svg5" "python3-pyqt5" -> "libstdc++6" "python3-pyqt5" -> "python3-core" "python3-pyqt5" -> "python3-sip" "python3-pyqt5" -> "qtbase" "python3-pyqt5" -> "qtwebkit"

There is no other occurence of 'sip' in depends.dot

From the /build/tmp/deploy/ipk/cortexa9 directory :

./sip_4.19.2-r0_cortexa9hf-neon.ipk ./python-sip_4.19.2-r0_cortexa9hf-neon.ipk ./sip3-dbg_4.19.2-r0_cortexa9hf-neon.ipk ./sip3-dev_4.19.2-r0_cortexa9hf-neon.ipk ./sip-dbg_4.19.2-r0_cortexa9hf-neon.ipk ./sip-dev_4.19.2-r0_cortexa9hf-neon.ipk

From sip3_4.19.2-pyqt5.bb DEPENDS += "sip sip-native sip3-native qtbase python3" DEPENDS_append_class-target = "qtsvg qtwebkit"

FILES_sip3 = "${libdir}/${PYTHONDIR}/site-packages/" FILES${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"

From python3pyqt5.bb: RDEPENDS${PN}_append_class-target = " python3-core python3-sip"

It seems that Bitbake always create a -dev package (same for -doc, -staticdev, -dbg etc...) but I don't understand why sometimes those packages are installed on the image, and sometimes not. I don't really understand how the PACKAGE/FILES system work anyway...

Hope those information can help..

Le ven. 3 août 2018 à 12:11, Andreas Müller notifications@github.com a écrit :

I have python3-pyqt5 in my image and it depends on

"python3-pyqt5" -> "libc6" "python3-pyqt5" -> "libgcc1" "python3-pyqt5" -> "libqt5svg5" "python3-pyqt5" -> "libstdc++6" "python3-pyqt5" -> "python3-core" "python3-pyqt5" -> "python3-sip" "python3-pyqt5" -> "qtbase"

The question is: What causes your image to contain sip3-dev? To find out: enable buildhistory. That creates a file depends.dot. Search there for sip3-dev (and let me know :)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/schnitzeltony/meta-qt5-extra/issues/52#issuecomment-410209712, or mute the thread https://github.com/notifications/unsubscribe-auth/AoGMUZbea6kK7JeFnyPBH7OavoFXtRxzks5uNCHIgaJpZM4VszDj .

schnitzeltony commented 6 years ago

For your understanding: dev packages are created for each recipe. By default dev packages require base package being installed/part of the image. For your case: sip3-dev requires sip3. Since sip3 is empty and recipe does not contain ALLOWEMPTY${PN} = "1", do_rootfs fails.

So the problem is sip3-dev. What in your environment causes sip3-dev being added to your image?

Maybe you drop your depends.dot somewhere so I can take a look...

schnitzeltony commented 6 years ago

For whatever reason your image contains sip3-devel (let's ignore)- the issue you reported caused me to look into and unveiled that python3-pyqt5 was built in the wrong way: It used sip (for python V2) to create bindings which is not a good idea when using python3. That (and the problem causing trouble for you) should be fixed. Please pull latest master and let me know.

willdlcre commented 6 years ago

I’m starting the image build from scratch to be sure I don’t keep any wrong packages or anything else. I’ll tell you if the problem is fixed for me :-)

About the depends.dot file (for the previously generated image) what is weird is that ”sip3-dev” does not appear anywhere. Neither as a package itself or as a dependency...

I’ve also ran bitbake -g -u taskexp demo-image to check out all the task listed and still no trace of sip3-dev...

Le sam. 4 août 2018 à 03:55, Andreas Müller notifications@github.com a écrit :

For whatever reason your image contains sip3-devel (let's ignore)- the issue you reported caused me to look into and unveiled that python3-pyqt5 was built in the wrong way: It used sip (for python V2) to create bindings which is not a good idea when using python3. That (and the problem causing trouble for you) should be fixed. Please pull latest master and let me know.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/schnitzeltony/meta-qt5-extra/issues/52#issuecomment-410414039, or mute the thread https://github.com/notifications/unsubscribe-auth/AoGMUVE-e2McJpU9IB6YLgWhBtSzRmqAks5uNP79gaJpZM4VszDj .

schnitzeltony commented 6 years ago

Can we close this?