Changeset 42002


Ignore:
Timestamp:
2014-08-05T13:24:24+02:00 (3 years ago)
Author:
jow
Message:

build: introduce per feed repository support

This changeset implements a new menuconfig option to generate separate
repositories for each enabled package feed instead of one monolithic one.

Signed-off-by: Jo-Philipp Wich <jow@…>

Location:
trunk
Files:
1 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/package-dumpinfo.mk

    r32171 r42002  
    4747)$(if $(BUILDONLY),Build-Only: $(BUILDONLY) 
    4848)$(if $(HIDDEN),Hidden: $(HIDDEN) 
     49)$(if $(FEED),Feed: $(FEED) 
    4950)Description: $(if $(Package/$(1)/description),$(Package/$(1)/description),$(TITLE)) 
    5051$(if $(URL),$(URL) 
  • trunk/include/package-ipkg.mk

    r41459 r42002  
    55# See /LICENSE for more information. 
    66# 
     7 
     8include $(INCLUDE_DIR)/feeds.mk 
    79 
    810# invoke ipkg-build with some default options 
     
    7577ifeq ($(DUMP),) 
    7678  define BuildTarget/ipkg 
    77     IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk 
     79    PDIR_$(1):=$(call FeedPackageDir,$(1)) 
     80    IPKG_$(1):=$$(PDIR_$(1))/$(1)_$(VERSION)_$(PKGARCH).ipk 
    7881    IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1) 
    7982    KEEP_$(1):=$(strip $(call Package/$(1)/conffiles)) 
     
    188191    endif 
    189192 
    190         $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR) 
     193        $(INSTALL_DIR) $$(PDIR_$(1)) 
     194        $(IPKG_BUILD) $$(IDIR_$(1)) $$(PDIR_$(1)) 
    191195        @[ -f $$(IPKG_$(1)) ] 
    192196 
    193197    $(1)-clean: 
    194         rm -f $(PACKAGE_DIR)/$(1)_* 
     198        rm -f $$(PDIR_$(1))/$(1)_* 
    195199 
    196200    clean: $(1)-clean 
  • trunk/include/scan.mk

    r37431 r42002  
    2222endif 
    2323 
     24define feedname 
     25$(if $(patsubst feeds/%,,$(1)),,$(word 2,$(subst /, ,$(1)))) 
     26endef 
     27 
    2428define PackageDir 
    2529  $(TMP_DIR)/.$(SCAN_TARGET): $(TMP_DIR)/info/.$(SCAN_TARGET)-$(1) 
     
    2832                $$(call progress,Collecting $(SCAN_NAME) info: $(SCAN_DIR)/$(2)) \ 
    2933                echo Source-Makefile: $(SCAN_DIR)/$(2)/Makefile; \ 
    30                 $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) 2>/dev/null || { \ 
     34                $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) 2>/dev/null || { \ 
    3135                        mkdir -p "$(TOPDIR)/logs/$(SCAN_DIR)/$(2)"; \ 
    32                         $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) > $(TOPDIR)/logs/$(SCAN_DIR)/$(2)/dump.txt 2>&1; \ 
     36                        $(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) > $(TOPDIR)/logs/$(SCAN_DIR)/$(2)/dump.txt 2>&1; \ 
    3337                        $$(call progress,ERROR: please fix $(SCAN_DIR)/$(2)/Makefile - see logs/$(SCAN_DIR)/$(2)/dump.txt for details\n) \ 
    3438                        rm -f $$@; \ 
  • trunk/include/toplevel.mk

    r41871 r42002  
    7272                [ "$$t" -nt "$$f" ] || ./scripts/metadata.pl $${type}_config "$$f" > "$$t" || { rm -f "$$t"; echo "Failed to build $$t"; false; break; }; \ 
    7373        done 
     74        [ tmp/.config-feeds.in -nt tmp/.packagefeeds ] || ./scripts/feeds feed_config > tmp/.config-feeds.in 
    7475        ./scripts/metadata.pl package_mk tmp/.packageinfo > tmp/.packagedeps || { rm -f tmp/.packagedeps; false; } 
     76        ./scripts/metadata.pl package_feeds tmp/.packageinfo > tmp/.packagefeeds || { rm -f tmp/.packagefeeds; false; } 
    7577        touch $(TOPDIR)/tmp/.build 
    7678 
  • trunk/package/Makefile

    r40927 r42002  
    77 
    88curdir:=package 
     9 
     10include $(INCLUDE_DIR)/feeds.mk 
    911 
    1012-include $(TMP_DIR)/.packagedeps 
     
    128130endif 
    129131 
     132PACKAGE_SUBDIRS=. 
     133ifneq ($(CONFIG_PER_FEED_REPO),) 
     134  PACKAGE_SUBDIRS=base $(FEEDS_ENABLED) 
     135endif 
     136 
    130137$(curdir)/index: FORCE 
    131138        @echo Generating package index... 
    132         @(cd $(PACKAGE_DIR); \ 
     139        @for d in $(PACKAGE_SUBDIRS); do ( \ 
     140                [ -d $(PACKAGE_DIR)/$$d ] && \ 
     141                        cd $(PACKAGE_DIR)/$$d || continue; \ 
    133142                $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages && \ 
    134                 gzip -9c Packages > Packages.gz ) 
     143                        gzip -9c Packages > Packages.gz; \ 
     144        ); done 
    135145ifeq ($(call qstrip,$(CONFIG_OPKGSMIME_KEY)),) 
    136146        @echo Signing key has not been configured 
     
    140150else 
    141151        @echo Signing package index... 
    142         @(cd $(PACKAGE_DIR); \ 
     152        @for d in $(PACKAGE_SUBDIRS); do ( \ 
     153                [ -d $(PACKAGE_DIR)/$$d ] && \ 
     154                        cd $(PACKAGE_DIR)/$$d || continue; \ 
    143155                openssl smime -binary -in Packages.gz \ 
    144156                        -out Packages.sig -outform PEM -sign \ 
    145157                        -signer $(CONFIG_OPKGSMIME_CERT) \ 
    146158                        -inkey $(CONFIG_OPKGSMIME_KEY) \ 
    147                         $(PASSOPT) $(PASSARG) ) 
     159                        $(PASSOPT) $(PASSARG); \ 
     160        ); done 
    148161endif 
    149162endif 
  • trunk/package/base-files/image-config.in

    r41884 r42002  
    209209endif 
    210210 
     211 
     212menuconfig PER_FEED_REPO 
     213        bool "Separate feed repositories" if IMAGEOPT 
     214        default n 
     215        help 
     216                If set, a separate repository is generated within bin/*/packages/ 
     217                for the core packages and each enabled feed. 
     218 
     219source "tmp/.config-feeds.in" 
     220 
     221 
    211222menuconfig SMIMEOPT 
    212223        bool "Package signing options" if IMAGEOPT 
  • trunk/package/system/opkg/Makefile

    r40766 r42002  
    88include $(INCLUDE_DIR)/kernel.mk 
    99include $(INCLUDE_DIR)/version.mk 
     10include $(INCLUDE_DIR)/feeds.mk 
    1011 
    1112PKG_NAME:=opkg 
     
    105106        $(INSTALL_DIR) $(1)/etc 
    106107        $(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf 
     108  ifeq ($(CONFIG_PER_FEED_REPO),) 
     109        echo "src/gz %n %U" >> $(1)/etc/opkg.conf 
     110  else 
     111        for d in base $(FEEDS_ENABLED); do \ 
     112                echo "src/gz %n_$$$$d %U/$$$$d" >> $(1)/etc/opkg.conf; \ 
     113        done 
     114  endif 
    107115        $(VERSION_SED) $(1)/etc/opkg.conf 
    108116        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg 
  • trunk/package/system/opkg/files/opkg-smime.conf

    r38284 r42002  
    1 src/gz %n %U 
    21dest root / 
    32dest ram /tmp 
  • trunk/package/system/opkg/files/opkg.conf

    r37007 r42002  
    1 src/gz %n %U 
    21dest root / 
    32dest ram /tmp 
  • trunk/scripts/feeds

    r41407 r42002  
    263263        my %opts; 
    264264 
    265         getopts('r:d:sh', \%opts); 
     265        getopts('r:d:nsh', \%opts); 
    266266        if ($opts{h}) { 
    267267                usage(); 
     268                return 0; 
     269        } 
     270        if ($opts{n}) { 
     271                foreach my $feed (@feeds) { 
     272                        printf "%s\n", $feed->[1]; 
     273                } 
    268274                return 0; 
    269275        } 
     
    599605} 
    600606 
     607sub feed_config() { 
     608        foreach my $feed (@feeds) { 
     609                my $installed = (-f "feeds/$feed->[1].index"); 
     610 
     611                printf "\tconfig FEED_%s\n", $feed->[1]; 
     612                printf "\t\tbool \"Enable feed %s\"\n", $feed->[1]; 
     613                printf "\t\tdepends on PER_FEED_REPO\n"; 
     614                printf "\t\tdefault y\n" if $installed; 
     615                printf "\t\thelp\n"; 
     616                printf "\t\t Enable the \\\"%s\\\" feed at %s.\n", $feed->[1], $feed->[2][0]; 
     617                printf "\n"; 
     618        } 
     619 
     620        return 0; 
     621} 
     622 
    601623sub usage() { 
    602624        print <<EOF; 
     
    606628        list [options]: List feeds, their content and revisions (if installed) 
    607629        Options: 
     630            -n :            List of feed names. 
    608631            -s :            List of feed names and their URL. 
    609632            -r <feedname>:  List packages of specified feed. 
     
    641664        'search' => \&search, 
    642665        'uninstall' => \&uninstall, 
     666        'feed_config' => \&feed_config, 
    643667        'clean' => sub { 
    644668                system("rm -rf feeds"); 
  • trunk/scripts/metadata.pl

    r41160 r42002  
    849849} 
    850850 
     851sub gen_package_feeds() { 
     852        parse_package_metadata($ARGV[0]) or exit 1; 
     853        foreach my $name (sort {uc($a) cmp uc($b)} keys %package) { 
     854                my $pkg = $package{$name}; 
     855                if ($pkg->{name} && $pkg->{feed}) { 
     856                        print "Package/$name/feed = $pkg->{feed}\n"; 
     857                } 
     858        } 
     859} 
     860 
    851861sub parse_command() { 
    852862        my $cmd = shift @ARGV; 
     
    857867                /^kconfig/ and return gen_kconfig_overrides(); 
    858868                /^package_source$/ and return gen_package_source(); 
     869                /^package_feeds$/ and return gen_package_feeds(); 
    859870        } 
    860871        print <<EOF 
     
    865876        $0 kconfig [file] [config]      Kernel config overrides 
    866877        $0 package_source [file]        Package source file information 
     878        $0 package_feeds [file]         Package feed information in makefile format 
    867879 
    868880EOF 
  • trunk/scripts/metadata.pm

    r37397 r42002  
    120120                /^Build-Depends\/(\w+): \s*(.+)\s*$/ and $pkg->{"builddepends/$1"} = [ split /\s+/, $2 ]; 
    121121                /^Build-Types:\s*(.+)\s*$/ and $pkg->{buildtypes} = [ split /\s+/, $1 ]; 
     122                /^Feed:\s*(.+?)\s*$/ and $pkg->{feed} = $1; 
    122123                /^Category: \s*(.+)\s*$/ and do { 
    123124                        $pkg->{category} = $1; 
  • trunk/target/imagebuilder/files/Makefile

    r34439 r42002  
    127127        @echo 
    128128        @echo Installing packages... 
    129         $(OPKG) install $(PACKAGE_DIR)/libc_*.ipk 
    130         $(OPKG) install $(PACKAGE_DIR)/kernel_*.ipk 
     129        $(OPKG) install $(firstword $(wildcard $(PACKAGE_DIR)/libc_*.ipk $(PACKAGE_DIR)/base/libc_*.ipk)) 
     130        $(OPKG) install $(firstword $(wildcard $(PACKAGE_DIR)/kernel_*.ipk $(PACKAGE_DIR)/base/kernel_*.ipk)) 
    131131        $(OPKG) install $(BUILD_PACKAGES) 
    132132        rm -f $(TARGET_DIR)/usr/lib/opkg/lists/* 
Note: See TracChangeset for help on using the changeset viewer.