Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-03-04 Thread David Nyström

On 2014-03-03 21:41, Trevor Woerner wrote:

Does this resolve issue 5407?
https://bugzilla.yoctoproject.org/show_bug.cgi?id=5407



This patch satisfies a small part of 5407, when this patch has been 
reworked into a recipe and merged, there is still the issue to 
synchonize the formatting for repositories in f.ex. IPK_FEED_URIS, and a 
general cleanup of code made obsolete(poky-feed-config-ipk, distro-feeds 
et.c.)


Br,
David

___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-03-04 Thread Paul Eggleton
On Tuesday 04 March 2014 09:45:09 David Nyström wrote:
 On 2014-03-03 21:41, Trevor Woerner wrote:
  Does this resolve issue 5407?
  https://bugzilla.yoctoproject.org/show_bug.cgi?id=5407
 
 This patch satisfies a small part of 5407, when this patch has been
 reworked into a recipe and merged

I'm still confused as to why reworking this into a recipe is beneficial... ?

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-03-04 Thread Andreas Oberritter
On 04.03.2014 11:29, Paul Eggleton wrote:
 On Tuesday 04 March 2014 09:45:09 David Nyström wrote:
 On 2014-03-03 21:41, Trevor Woerner wrote:
 Does this resolve issue 5407?
 https://bugzilla.yoctoproject.org/show_bug.cgi?id=5407

 This patch satisfies a small part of 5407, when this patch has been
 reworked into a recipe and merged
 
 I'm still confused as to why reworking this into a recipe is beneficial... ?

Because if the feed info is stored in a package, it can be updated
without reflashing.

We used this once to stop updates for selected machines from a shared
feed (due to memory constraints), but allowed other machines to continue
to receive updates by pointing them to a new feed location.

Regards,
Andreas
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-03-04 Thread Paul Eggleton
On Tuesday 04 March 2014 12:02:41 Andreas Oberritter wrote:
 On 04.03.2014 11:29, Paul Eggleton wrote:
  On Tuesday 04 March 2014 09:45:09 David Nyström wrote:
  On 2014-03-03 21:41, Trevor Woerner wrote:
  Does this resolve issue 5407?
  https://bugzilla.yoctoproject.org/show_bug.cgi?id=5407
  
  This patch satisfies a small part of 5407, when this patch has been
  reworked into a recipe and merged
  
  I'm still confused as to why reworking this into a recipe is beneficial...
  ?

 Because if the feed info is stored in a package, it can be updated
 without reflashing.
 
 We used this once to stop updates for selected machines from a shared
 feed (due to memory constraints), but allowed other machines to continue
 to receive updates by pointing them to a new feed location.

I see - makes sense.

Thanks,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-03-03 Thread Trevor Woerner
Does this resolve issue 5407?
https://bugzilla.yoctoproject.org/show_bug.cgi?id=5407
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-03-03 Thread Otavio Salvador
On Mon, Mar 3, 2014 at 5:41 PM, Trevor Woerner
trevor.woer...@linaro.org wrote:
 Does this resolve issue 5407?
 https://bugzilla.yoctoproject.org/show_bug.cgi?id=5407

Seems so :D

-- 
Otavio Salvador O.S. Systems
http://www.ossystems.com.brhttp://code.ossystems.com.br
Mobile: +55 (53) 9981-7854Mobile: +1 (347) 903-9750
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-02-28 Thread David Nyström

On 2014-02-27 23:34, Paul Eggleton wrote:

On Thursday 27 February 2014 21:20:37 David Nyström wrote:

Adding a common interface to add predefined package manager
channels to prebuilt rootfs:es.

Adding PACKAGE_FEED_URIS = http://myre.po/repo/, will
assume repo directories named (rpm,ipk,deb) as subdirectories
and statically add them to the rootfs, using the same PKG_ARCHs
as the build which produced the images.

Tested with RPM, IPK and DEB.


Looks good. The only thing that looks like it might be missing here is there
appears to be no way to name the package repo entries individually, though I'm
not sure what syntax we would use to allow that.

Thoughts?


Well, there is the old moblin syntax for IPK_FEED_URIS:

For qemux86-64
--
IPK_FEED_URIS =  \

all##http://downloads.yoctoproject.org/releases/yocto/yocto-1.5/ipk/all \

x86_64##http://downloads.yoctoproject.org/releases/yocto/yocto-1.5/ipk/x86_64 
\


core2-64##http://downloads.yoctoproject.org/releases/yocto/yocto-1.5/ipk/core2-64 
\


qemux86_64##http://downloads.yoctoproject.org/releases/yocto/yocto-1.5/ipk/qemux86_64 
\

--
I don't particularly agree with above format.
When using the deploy directory as input it makes the feed_syntax 
MACHINE dependent, and difficult to keep in sync for new machines and 
upstream changes.


IMHO, bitbake should support the same input format as it generates as 
output format for the repos.
If someone want to share code for the post-processing of outputted 
bitbake repos(deb,ipk,rpm), I'll happily reconsider.


Having multiple feed formats is confusing though, we should fix this so 
we have the same format everywhere.


What could be done is to add names to the top level repos directory,
i.e. PACKAGE_FEED_URIS =stable##http://myre.op/deploy/ \
experimental#http://not_trusted.to/ext_deploy/;

But I'm not sure what this will accomplish. The real channel names would 
become experimental-all, stable-all instead of current hardcoded 
url0-all, url1-all et.c.

Is this what you were suggesting ?

With smart and apt, you can prioritize channels, which the 
implementation will do, in descending order, keeping the pkg_arch 
inter-priorities intact.

However, for opkg, you prioritize archs rather than channels afaik.



Cheers,
Paul



___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-02-27 Thread David Nyström
Adding a common interface to add predefined package manager
channels to prebuilt rootfs:es.

Adding PACKAGE_FEED_URIS = http://myre.po/repo/, will
assume repo directories named (rpm,ipk,deb) as subdirectories
and statically add them to the rootfs, using the same PKG_ARCHs
as the build which produced the images.

Tested with RPM, IPK and DEB.

deb feed functionality seem broken, is anyone using this ?

Signed-off-by: David Nyström david.c.nyst...@gmail.com
Signed-off-by: David Nyström david.nyst...@enea.com
---
 meta/lib/oe/package_manager.py | 89 +-
 meta/lib/oe/rootfs.py  | 16 ++--
 2 files changed, 92 insertions(+), 13 deletions(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index ff4f1de..c930572 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -223,6 +223,7 @@ class PackageManager(object):
 self.d = d
 self.deploy_dir = None
 self.deploy_lock = None
+self.feed_uris = self.d.getVar('PACKAGE_FEED_URIS', True) or 
 
 
 Update the package manager package database.
@@ -262,6 +263,10 @@ class PackageManager(object):
 def list_installed(self, format=None):
 pass
 
+@abstractmethod
+def insert_feeds_uris(self):
+pass
+
 
 Install complementary packages based upon the list of currently installed
 packages e.g. locales, *-dev, *-dbg, etc. This will only attempt to install
@@ -358,6 +363,46 @@ class RpmPM(PackageManager):
 
 self.ml_prefix_list, self.ml_os_list = 
self.indexer.get_ml_prefix_and_os_list(arch_var, os_var)
 
+
+def insert_feeds_uris(self):
+if self.feed_uris == :
+return
+
+# List must be prefered to least preferred order
+default_platform_extra = set()
+platform_extra = set()
+bbextendvariant = self.d.getVar('BBEXTENDVARIANT', True) or 
+for mlib in self.ml_os_list:
+for arch in self.ml_prefix_list[mlib]:
+plt = arch.replace('-', '_') + '-.*-' + self.ml_os_list[mlib]
+if mlib == bbextendvariant:
+default_platform_extra.add(plt)
+else:
+platform_extra.add(plt)
+
+platform_extra = platform_extra.union(default_platform_extra)
+
+arch_list = []
+for canonical_arch in platform_extra:
+arch = canonical_arch.split('-')[0]
+if not os.path.exists(os.path.join(self.deploy_dir, arch)):
+continue
+arch_list.append(arch)
+
+uri_iterator = 0
+channel_priority = 10 + 5 * len(self.feed_uris.split()) * 
len(arch_list)
+
+for uri in self.feed_uris.split():
+for arch in arch_list:
+bb.note('Note: adding Smart channel url%d%s (%s)' %
+(uri_iterator, arch, channel_priority))
+self._invoke_smart('channel --add url%d-%s type=rpm-md 
baseurl=%s/rpm/%s -y'
+   % (uri_iterator, arch, uri, arch))
+self._invoke_smart('channel --set url%d-%s priority=%d' %
+   (uri_iterator, arch, channel_priority))
+channel_priority -= 5
+uri_iterator += 1
+
 '''
 Create configs for rpm and smart, and multilib is supported
 '''
@@ -944,7 +989,6 @@ class OpkgPM(PackageManager):
 
 self.deploy_dir = self.d.getVar(DEPLOY_DIR_IPK, True)
 self.deploy_lock_file = os.path.join(self.deploy_dir, deploy.lock)
-
 self.opkg_cmd = bb.utils.which(os.getenv('PATH'), opkg-cl)
 self.opkg_args = -f %s -o %s  % (self.config_file, target_rootfs)
 self.opkg_args += self.d.getVar(OPKG_ARGS, True)
@@ -1050,6 +1094,29 @@ class OpkgPM(PackageManager):
 config_file.write(src oe-%s file:%s\n %
   (arch, pkgs_dir))
 
+def insert_feeds_uris(self):
+if self.feed_uris == :
+return
+
+rootfs_config = os.path.join('%s/etc/opkg/base-feeds.conf'
+  % self.target_rootfs)
+
+with open(rootfs_config, w+) as config_file:
+uri_iterator = 0
+for uri in self.feed_uris.split():
+config_file.write(src/gz url-%d %s/ipk\n %
+  (uri_iterator, uri))
+
+for arch in self.pkg_archs.split():
+if not os.path.exists(os.path.join(self.deploy_dir, arch)):
+continue
+bb.note('Note: adding opkg channel url-%s-%d (%s)' %
+(arch, uri_iterator, uri))
+
+config_file.write(src/gz uri-%s-%d %s/ipk/%s\n %
+  (arch, uri_iterator, uri, arch))
+uri_iterator += 1
+
 def update(self):
 self.deploy_dir_lock()
 
@@ -1410,6 +1477,26 @@ 

Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-02-27 Thread Paul Eggleton
On Thursday 27 February 2014 21:20:37 David Nyström wrote:
 Adding a common interface to add predefined package manager
 channels to prebuilt rootfs:es.
 
 Adding PACKAGE_FEED_URIS = http://myre.po/repo/, will
 assume repo directories named (rpm,ipk,deb) as subdirectories
 and statically add them to the rootfs, using the same PKG_ARCHs
 as the build which produced the images.
 
 Tested with RPM, IPK and DEB.

Looks good. The only thing that looks like it might be missing here is there 
appears to be no way to name the package repo entries individually, though I'm 
not sure what syntax we would use to allow that.

Thoughts?

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/2] do_rootfs: Added PACKAGE_FEED_URIS functionality

2014-02-27 Thread Laurentiu Palcu
Reviewed-by: Laurentiu Palcu laurentiu.pa...@intel.com

On Thu, Feb 27, 2014 at 09:20:37PM +0100, David Nyström wrote:
 Adding a common interface to add predefined package manager
 channels to prebuilt rootfs:es.
 
 Adding PACKAGE_FEED_URIS = http://myre.po/repo/, will
 assume repo directories named (rpm,ipk,deb) as subdirectories
 and statically add them to the rootfs, using the same PKG_ARCHs
 as the build which produced the images.
 
 Tested with RPM, IPK and DEB.
 
 deb feed functionality seem broken, is anyone using this ?
 
 Signed-off-by: David Nyström david.c.nyst...@gmail.com
 Signed-off-by: David Nyström david.nyst...@enea.com
 ---
  meta/lib/oe/package_manager.py | 89 
 +-
  meta/lib/oe/rootfs.py  | 16 ++--
  2 files changed, 92 insertions(+), 13 deletions(-)
 
 diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
 index ff4f1de..c930572 100644
 --- a/meta/lib/oe/package_manager.py
 +++ b/meta/lib/oe/package_manager.py
 @@ -223,6 +223,7 @@ class PackageManager(object):
  self.d = d
  self.deploy_dir = None
  self.deploy_lock = None
 +self.feed_uris = self.d.getVar('PACKAGE_FEED_URIS', True) or 
  
  
  Update the package manager package database.
 @@ -262,6 +263,10 @@ class PackageManager(object):
  def list_installed(self, format=None):
  pass
  
 +@abstractmethod
 +def insert_feeds_uris(self):
 +pass
 +
  
  Install complementary packages based upon the list of currently installed
  packages e.g. locales, *-dev, *-dbg, etc. This will only attempt to 
 install
 @@ -358,6 +363,46 @@ class RpmPM(PackageManager):
  
  self.ml_prefix_list, self.ml_os_list = 
 self.indexer.get_ml_prefix_and_os_list(arch_var, os_var)
  
 +
 +def insert_feeds_uris(self):
 +if self.feed_uris == :
 +return
 +
 +# List must be prefered to least preferred order
 +default_platform_extra = set()
 +platform_extra = set()
 +bbextendvariant = self.d.getVar('BBEXTENDVARIANT', True) or 
 +for mlib in self.ml_os_list:
 +for arch in self.ml_prefix_list[mlib]:
 +plt = arch.replace('-', '_') + '-.*-' + self.ml_os_list[mlib]
 +if mlib == bbextendvariant:
 +default_platform_extra.add(plt)
 +else:
 +platform_extra.add(plt)
 +
 +platform_extra = platform_extra.union(default_platform_extra)
 +
 +arch_list = []
 +for canonical_arch in platform_extra:
 +arch = canonical_arch.split('-')[0]
 +if not os.path.exists(os.path.join(self.deploy_dir, arch)):
 +continue
 +arch_list.append(arch)
 +
 +uri_iterator = 0
 +channel_priority = 10 + 5 * len(self.feed_uris.split()) * 
 len(arch_list)
 +
 +for uri in self.feed_uris.split():
 +for arch in arch_list:
 +bb.note('Note: adding Smart channel url%d%s (%s)' %
 +(uri_iterator, arch, channel_priority))
 +self._invoke_smart('channel --add url%d-%s type=rpm-md 
 baseurl=%s/rpm/%s -y'
 +   % (uri_iterator, arch, uri, arch))
 +self._invoke_smart('channel --set url%d-%s priority=%d' %
 +   (uri_iterator, arch, channel_priority))
 +channel_priority -= 5
 +uri_iterator += 1
 +
  '''
  Create configs for rpm and smart, and multilib is supported
  '''
 @@ -944,7 +989,6 @@ class OpkgPM(PackageManager):
  
  self.deploy_dir = self.d.getVar(DEPLOY_DIR_IPK, True)
  self.deploy_lock_file = os.path.join(self.deploy_dir, deploy.lock)
 -
  self.opkg_cmd = bb.utils.which(os.getenv('PATH'), opkg-cl)
  self.opkg_args = -f %s -o %s  % (self.config_file, target_rootfs)
  self.opkg_args += self.d.getVar(OPKG_ARGS, True)
 @@ -1050,6 +1094,29 @@ class OpkgPM(PackageManager):
  config_file.write(src oe-%s file:%s\n %
(arch, pkgs_dir))
  
 +def insert_feeds_uris(self):
 +if self.feed_uris == :
 +return
 +
 +rootfs_config = os.path.join('%s/etc/opkg/base-feeds.conf'
 +  % self.target_rootfs)
 +
 +with open(rootfs_config, w+) as config_file:
 +uri_iterator = 0
 +for uri in self.feed_uris.split():
 +config_file.write(src/gz url-%d %s/ipk\n %
 +  (uri_iterator, uri))
 +
 +for arch in self.pkg_archs.split():
 +if not os.path.exists(os.path.join(self.deploy_dir, 
 arch)):
 +continue
 +bb.note('Note: adding opkg channel url-%s-%d (%s)' %
 +(arch, uri_iterator, uri))
 +
 +