Set ssh server using IMAGE_FEATURES, v3
cover Set ssh server using IMAGE_FEATURES, v3
From: Scott Garman <[email protected]>
Hi Saul,
It turns out the approach I was previously using to try to change the ssh server using IMAGE_FEATURES had a fundamental flaw. I confirmed the problem with Richard, and now take a slightly different approach where separate tasks are created to use dropbear vs. openssh as an SSH server. This means we can't set the SSH server explicitly by overriding a variable in local.conf, but it does improve the infrastructure to something more sensible and document-able.
This pull request will fix [YOCTO #378].
Pull URL: git://git.pokylinux.org/poky-contrib.git
Branch: sgarman/ssh-switch2
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=sgarman/ssh-switch2
Thanks,
Scott Garman <[email protected]>
---
Scott Garman (7):
task-base, task-poky-basic, task-poky: Remove hard-coded references
to dropbear
task-poky-ssh-dropbear: new task recipe for dropbear ssh
task-poky-ssh-openssh: new task recipe for openssh ssh poky-image.bbclass: add new IMAGE_FEATURES for ssh servers poky-image.bbclass: add ssh-server-dropbear to SATO_IMAGE_FEATURES
poky-image-lsb: add ssh-server-openssh to IMAGE_FEATURES
poky-image-basic: add ssh-server-openssh to IMAGE_FEATURES
meta/classes/poky-image.bbclass | 13 +++++++++++-- meta/recipes-core/tasks/task-base.bb | 8 +------- meta/recipes-core/tasks/task-poky-ssh-dropbear.bb | 17 +++++++++++++++++ meta/recipes-core/tasks/task-poky-ssh-openssh.bb | 17 +++++++++++++++++ meta/recipes-extended/images/poky-image-basic.bb | 2 +- meta/recipes-extended/images/poky-image-lsb-dev.bb | 2 +- meta/recipes-extended/images/poky-image-lsb-sdk.bb | 2 +- meta/recipes-extended/images/poky-image-lsb.bb | 2 +- meta/recipes-extended/tasks/task-poky-basic.bb | 3 +-- meta/recipes-sato/tasks/task-poky.bb | 3 +-- 10 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 meta/recipes-core/tasks/task-poky-ssh-dropbear.bb create mode 100644 meta/recipes-core/tasks/task-poky-ssh-openssh.bb
PATCH 1/7 task-base, task-poky-basic, task-poky: Remove hard-coded references to dropbear
From: Scott Garman <[email protected]>
This is the first step in refactoring the SSH server selection to be done in IMAGE_FEATURES instead of as hardcoded in these tasks.
--- meta/recipes-core/tasks/task-base.bb | 8 +------- meta/recipes-extended/tasks/task-poky-basic.bb | 3 +-- meta/recipes-sato/tasks/task-poky.bb | 3 +-- 3 files changed, 3 insertions(+), 11 deletions(-)
meta/recipes-core/tasks/task-base.bb +1 -7
@@ -2,7 +2,7 @@ DESCRIPTION = "Merge machine and distro options to create a basic machine task/p LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" -PR = "r69" +PR = "r70" inherit task
@@ -60,11 +60,6 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" HOTPLUG ?= "${@base_contains("MACHINE_FEATURES", "kernel24", "linux-hotplug","",d)} " # -# dropbear, openssh or none -# -DISTRO_SSH_DAEMON ?= "dropbear" - -# # pcmciautils for >= 2.6.13-rc1, pcmcia-cs for others # PCMCIA_MANAGER ?= "${@base_contains('MACHINE_FEATURES', 'kernel26','pcmciautils','pcmcia-cs',d)} "
@@ -81,7 +76,6 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= "" RDEPENDS_task-base = "\ task-distro-base \ task-machine-base \ - ${DISTRO_SSH_DAEMON} \ ${HOTPLUG} \ \ ${@base_contains('MACHINE_FEATURES', 'kernel26','task-base-kernel26','task-base-kernel24',d)} \
meta/recipes-extended/tasks/task-poky-basic.bb +1 -2
@@ -3,7 +3,7 @@ # DESCRIPTION = "Create Basic Image Tasks" -PR = "r2" +PR = "r3" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
@@ -55,7 +55,6 @@ RDEPENDS_task-poky-basic = "\ RDEPENDS_task-poky-base-utils = "\ busybox \ - dropbear \ " RDEPENDS_task-poky-basic-libs = "\
meta/recipes-sato/tasks/task-poky.bb +1 -2
@@ -6,7 +6,7 @@ DESCRIPTION = "Tasks for OpenedHand Poky" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" -PR = "r33" +PR = "r34" PACKAGES = "\ task-poky-apps-console \
@@ -37,7 +37,6 @@ FILEMANAGER_mips ?= "" RDEPENDS_task-poky-apps-console = "\ avahi-daemon \ - dropbear \ dbus \ portmap \ ${SPLASH}"
Signature · 1 line
1.7.1
PATCH 2/7 task-poky-ssh-dropbear: new task recipe for dropbear ssh
In reply to Scott GarmanFrom: Scott Garman <[email protected]>
This task can be used when IMAGE_FEATURES is set to ssh-server-dropbear.
--- meta/recipes-core/tasks/task-poky-ssh-dropbear.bb | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) create mode 100644 meta/recipes-core/tasks/task-poky-ssh-dropbear.bb
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb new file +17 -0
@@ -0,0 +1,17 @@ +DESCRIPTION = "Dropbear SSH task for Poky" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ + file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PR = "r0" + +PACKAGES = "\ + task-poky-ssh-dropbear \ + task-poky-ssh-dropbear-dbg \ + task-poky-ssh-dropbear-dev \ + " + +ALLOW_EMPTY = "1" + +RDEPENDS_task-poky-ssh-dropbear = "dropbear" +RDEPENDS_task-poky-ssh-dropbear-dbg = "dropbear-dbg" +RDEPENDS_task-poky-ssh-dropbear-dev = "dropbear-dev"
Signature · 1 line
1.7.1
Re: [PATCH 2/7] task-poky-ssh-dropbear: new task recipe for dropbear ssh
Op 16 mrt 2011, om 00:12 heeft Scott Garman het volgende geschreven:
Quoted 24 lines
From: Scott Garman <[email protected]>
This task can be used when
IMAGE_FEATURESis set to ssh-server-dropbear.Signed-off-by Scott Garman <[email protected]>---
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb | 17 +++++++++++++++++1 files changed, 17 insertions(+), 0 deletions(-)create mode 100644 meta/recipes-core/tasks/task-poky-ssh-dropbear.bb
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb new file +7
-0@@ -0,0 +1,17 @@ +DESCRIPTION = "Dropbear SSH task for Poky" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ + file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PR = "r0" + +PACKAGES = "\
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb line 17
Quoted 10 lines
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb new file +10
-0+ task-poky-ssh-dropbear \ + task-poky-ssh-dropbear-dbg \ + task-poky-ssh-dropbear-dev \ + " + +ALLOW_EMPTY = "1" + +RDEPENDS_task-poky-ssh-dropbear = "dropbear" +RDEPENDS_task-poky-ssh-dropbear-dbg = "dropbear-dbg" +RDEPENDS_task-poky-ssh-dropbear-dev = "dropbear-dev"
looks like a good candidate for 'inherit task'
Re: [PATCH 2/7] task-poky-ssh-dropbear: new task recipe for dropbear ssh
Quoted 31 lines · Koen Kooi
Op 16 mrt 2011, om 00:12 heeft Scott Garman het volgende geschreven:
Quoted 28 lines
From: Scott Garman<[email protected]>
This task can be used when
IMAGE_FEATURESis set to ssh-server-dropbear.Signed-off-by Scott Garman<[email protected]>---
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb | 17 +++++++++++++++++1 files changed, 17 insertions(+), 0 deletions(-)create mode 100644 meta/recipes-core/tasks/task-poky-ssh-dropbear.bb
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb new file +11
-0@@ -0,0 +1,17 @@ +DESCRIPTION = "Dropbear SSH task for Poky" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ + file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PR = "r0" + +PACKAGES = "\ + task-poky-ssh-dropbear \ + task-poky-ssh-dropbear-dbg \ + task-poky-ssh-dropbear-dev \ + "
Quoted 8 lines
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb line 17
Quoted 6 lines
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb new file +6
-0+ +ALLOW_EMPTY = "1" + +RDEPENDS_task-poky-ssh-dropbear = "dropbear" +RDEPENDS_task-poky-ssh-dropbear-dbg = "dropbear-dbg" +RDEPENDS_task-poky-ssh-dropbear-dev = "dropbear-dev"looks like a good candidate for 'inherit task'
Thanks for the suggestion, Koen.
Richard - a quick browse through Poky's tasks shows only one of them uses inherit task (task-base.bb). Is there any reason to avoid this that I'm not aware of? Otherwise, I'm happy to do a respin with inherit task.
Thanks,
Scott
Signature · 3 lines
Scott Garman Embedded Linux Engineer - Yocto Project Intel Open Source Technology Center
Re: [PATCH 2/7] task-poky-ssh-dropbear: new task recipe for dropbear ssh
Quoted 41 lines · Scott A
Quoted 31 lines · Koen Kooi
Op 16 mrt 2011, om 00:12 heeft Scott Garman het volgende geschreven:
Quoted 28 lines
From: Scott Garman<[email protected]>
This task can be used when
IMAGE_FEATURESis set to ssh-server-dropbear.Signed-off-by Scott Garman<[email protected]>---
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb | 17 +++++++++++++++++1 files changed, 17 insertions(+), 0 deletions(-)create mode 100644 meta/recipes-core/tasks/task-poky-ssh-dropbear.bb
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb new file +11
-0@@ -0,0 +1,17 @@ +DESCRIPTION = "Dropbear SSH task for Poky" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ + file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PR = "r0" + +PACKAGES = "\ + task-poky-ssh-dropbear \ + task-poky-ssh-dropbear-dbg \ + task-poky-ssh-dropbear-dev \ + "Quoted 8 lines
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb line 17
Quoted 6 lines
meta/recipes-core/tasks/task-poky-ssh-dropbear.bb new file +6
-0+ +ALLOW_EMPTY = "1" + +RDEPENDS_task-poky-ssh-dropbear = "dropbear" +RDEPENDS_task-poky-ssh-dropbear-dbg = "dropbear-dbg" +RDEPENDS_task-poky-ssh-dropbear-dev = "dropbear-dev"looks like a good candidate for 'inherit task'
Quoted 5 lines
Thanks for the suggestion, Koen.
Richard - a quick browse through Poky's tasks shows only one of them uses inherit task (task-base.bb). Is there any reason to avoid this that I'm not aware of? Otherwise, I'm happy to do a respin with inherit task.
No reason I can think of, we probably should do some cleanup in this regard...
Cheers,
Richard
PATCH 3/7 task-poky-ssh-openssh: new task recipe for openssh ssh
In reply to Scott GarmanFrom: Scott Garman <[email protected]>
This task can be used when IMAGE_FEATURES is set to ssh-server-openssh.
--- meta/recipes-core/tasks/task-poky-ssh-openssh.bb | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) create mode 100644 meta/recipes-core/tasks/task-poky-ssh-openssh.bb
meta/recipes-core/tasks/task-poky-ssh-openssh.bb new file +17 -0
@@ -0,0 +1,17 @@ +DESCRIPTION = "OpenSSH SSH task for Poky" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ + file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PR = "r0" + +PACKAGES = "\ + task-poky-ssh-openssh \ + task-poky-ssh-openssh-dbg \ + task-poky-ssh-openssh-dev \ + " + +ALLOW_EMPTY = "1" + +RDEPENDS_task-poky-ssh-openssh = "openssh" +RDEPENDS_task-poky-ssh-openssh-dbg = "openssh-dbg" +RDEPENDS_task-poky-ssh-openssh-dev = "openssh-dev"
Signature · 1 line
1.7.1
Re: [PATCH 3/7] task-poky-ssh-openssh: new task recipe for openssh ssh
Op 16 mrt 2011, om 00:12 heeft Scott Garman het volgende geschreven:
Quoted 24 lines
From: Scott Garman <[email protected]>
This task can be used when
IMAGE_FEATURESis set to ssh-server-openssh.Signed-off-by Scott Garman <[email protected]>---
meta/recipes-core/tasks/task-poky-ssh-openssh.bb | 17 +++++++++++++++++1 files changed, 17 insertions(+), 0 deletions(-)create mode 100644 meta/recipes-core/tasks/task-poky-ssh-openssh.bb
meta/recipes-core/tasks/task-poky-ssh-openssh.bb new file +7
-0@@ -0,0 +1,17 @@ +DESCRIPTION = "OpenSSH SSH task for Poky" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ + file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PR = "r0" + +PACKAGES = "\
meta/recipes-core/tasks/task-poky-ssh-openssh.bb line 17
Quoted 10 lines
meta/recipes-core/tasks/task-poky-ssh-openssh.bb new file +10
-0+ task-poky-ssh-openssh \ + task-poky-ssh-openssh-dbg \ + task-poky-ssh-openssh-dev \ + " + +ALLOW_EMPTY = "1" + +RDEPENDS_task-poky-ssh-openssh = "openssh" +RDEPENDS_task-poky-ssh-openssh-dbg = "openssh-dbg" +RDEPENDS_task-poky-ssh-openssh-dev = "openssh-dev"
As with the other patches, 'inherit task'
PATCH 4/7 poky-image.bbclass: add new IMAGE_FEATURES for ssh servers
In reply to Scott GarmanFrom: Scott Garman <[email protected]>
Image recipes can now add their ssh server of choice by adding ssh-server-dropbear or ssh-server-openssh to IMAGE_FEATURES.
--- meta/classes/poky-image.bbclass | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
meta/classes/poky-image.bbclass +10 -1
@@ -24,6 +24,8 @@ LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3 # - tools-profile - profiling tools # - tools-testapps - tools usable to make some device tests # - nfs-server - NFS server (exports / over NFS to everybody) +# - ssh-server-dropbear - SSH server (dropbear) +# - ssh-server-openssh - SSH server (openssh) # - dev-pkgs - development packages # - dbg-pkgs - debug packages #
@@ -79,9 +81,16 @@ POKY_BASE_INSTALL = '\ \ ${@base_contains("IMAGE_FEATURES", "nfs-server", "task-poky-nfs-server", "",d)} \ ${@base_contains("IMAGE_FEATURES", ["nfs-server", "dbg-pkgs"], "task-poky-nfs-server-dbg", "",d)} \ - \ ${@base_contains("IMAGE_FEATURES", ["nfs-server", "dev-pkgs"], "task-poky-nfs-server-dev", "",d)} \ \ + ${@base_contains("IMAGE_FEATURES", "ssh-server-dropbear", "task-poky-ssh-dropbear", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["ssh-server-dropbear", "dbg-pkgs"], "task-poky-ssh-dropbear-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["ssh-server-dropbear", "dev-pkgs"], "task-poky-ssh-dropbear-dev", "",d)} \ + \ + ${@base_contains("IMAGE_FEATURES", "ssh-server-openssh", "task-poky-ssh-openssh", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["ssh-server-openssh", "dbg-pkgs"], "task-poky-ssh-openssh-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["ssh-server-openssh", "dev-pkgs"], "task-poky-ssh-openssh-dev", "",d)} \ + \ ${@base_contains("IMAGE_FEATURES", "package-management", "${ROOTFS_PKGMANAGE}", "${ROOTFS_PKGMANAGE_BOOTSTRAP}",d)} \ ${@base_contains("IMAGE_FEATURES", "qt4-pkgs", "task-poky-qt-demos", "",d)} \ ${POKY_EXTRA_INSTALL} \
Signature · 1 line
1.7.1
PATCH 5/7 poky-image.bbclass: add ssh-server-dropbear to SATO_IMAGE_FEATURES
In reply to Scott GarmanFrom: Scott Garman <[email protected]>
--- meta/classes/poky-image.bbclass | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
meta/classes/poky-image.bbclass +1 -1
@@ -102,7 +102,7 @@ IMAGE_INSTALL ?= "${POKY_BASE_INSTALL}" X11_IMAGE_FEATURES = "x11-base apps-x11-core package-management" ENHANCED_IMAGE_FEATURES = "${X11_IMAGE_FEATURES} apps-x11-games apps-x11-pimlico package-management" -SATO_IMAGE_FEATURES = "${ENHANCED_IMAGE_FEATURES} x11-sato" +SATO_IMAGE_FEATURES = "${ENHANCED_IMAGE_FEATURES} x11-sato ssh-server-dropbear" inherit image
Signature · 1 line
1.7.1
PATCH 6/7 poky-image-lsb: add ssh-server-openssh to IMAGE_FEATURES
In reply to Scott GarmanFrom: Scott Garman <[email protected]>
--- meta/recipes-extended/images/poky-image-lsb-dev.bb | 2 +- meta/recipes-extended/images/poky-image-lsb-sdk.bb | 2 +- meta/recipes-extended/images/poky-image-lsb.bb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
meta/recipes-extended/images/poky-image-lsb-dev.bb +1 -1
@@ -1,4 +1,4 @@ -IMAGE_FEATURES += "apps-console-core dev-pkgs " +IMAGE_FEATURES += "apps-console-core dev-pkgs ssh-server-openssh" IMAGE_INSTALL = "\ ${POKY_BASE_INSTALL} \
meta/recipes-extended/images/poky-image-lsb-sdk.bb +1 -1
@@ -1,4 +1,4 @@ -IMAGE_FEATURES += "apps-console-core tools-debug tools-profile tools-sdk dev-pkgs" +IMAGE_FEATURES += "apps-console-core tools-debug tools-profile tools-sdk dev-pkgs ssh-server-openssh" IMAGE_INSTALL = "\ ${POKY_BASE_INSTALL} \
meta/recipes-extended/images/poky-image-lsb.bb +1 -1
@@ -1,4 +1,4 @@ -IMAGE_FEATURES += "apps-console-core " +IMAGE_FEATURES += "apps-console-core ssh-server-openssh" IMAGE_INSTALL = "\ ${POKY_BASE_INSTALL} \
Signature · 1 line
1.7.1
PATCH 7/7 poky-image-basic: add ssh-server-openssh to IMAGE_FEATURES
In reply to Scott GarmanFrom: Scott Garman <[email protected]>
--- meta/recipes-extended/images/poky-image-basic.bb | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
meta/recipes-extended/images/poky-image-basic.bb +1 -1
@@ -1,4 +1,4 @@ -IMAGE_FEATURES += "apps-console-core " +IMAGE_FEATURES += "apps-console-core ssh-server-openssh" IMAGE_INSTALL = "\ ${POKY_BASE_INSTALL} \
Signature · 1 line
1.7.1
Richard Purdie
AppliedQuoted 23 lines · Scott Garman
From: Scott Garman <[email protected]>
Hi Saul,
It turns out the approach I was previously using to try to change the ssh server using
IMAGE_FEATUREShad a fundamental flaw. I confirmed the problem with Richard, and now take a slightly different approach where separate tasks are created to use dropbear vs. openssh as an SSH server. This means we can't set the SSH server explicitly by overriding a variable in local.conf, but it does improve the infrastructure to something more sensible and document-able.This pull request will fix [YOCTO #378].
Pull URL:
git://git.pokylinux.org/poky-contrib.git
Branch: sgarman/ssh-switch2
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=sgarman/ssh-switch2Thanks,
Scott Garman <[email protected]>
---
Quoted 9 lines
Scott Garman (7):
task-base, task-poky-basic, task-poky: Remove hard-coded references
to dropbear
task-poky-ssh-dropbear: new task recipe for dropbear ssh
task-poky-ssh-openssh: new task recipe for openssh ssh poky-image.bbclass: add newIMAGE_FEATURESfor ssh servers poky-image.bbclass: add ssh-server-dropbear toSATO_IMAGE_FEATURES
poky-image-lsb: add ssh-server-openssh toIMAGE_FEATURES
poky-image-basic: add ssh-server-openssh toIMAGE_FEATURES
Merged to master, thanks.
For the inherit task tweak, please submit that as a separate patch.
Cheers,
Richard