PACKAGE=drakxtools PKGVERSION:=$(shell rpm -q --qf '%{VERSION}\n' --specfile $(PACKAGE).spec|head -n 1) RELEASE:=$(shell rpm -q --qf '%{RELEASE}\n' --specfile $(PACKAGE).spec|head -n 1) TAG := $(shell echo "V$(PKGVERSION)_$(RELEASE)" | tr -- '-.' '__') include ../Makefile.config include Makefile.config POFILES = $(shell ls share/po/*.po) MOFILES = $(POFILES:%.po=%.mo) DISTFILES = *.pm $(PMS_DIRS) Makefile Makefile.config ddcprobe drakxtools.spec serial_probe share/po share/diskdrake.rc $(STANDALONEPMS) standalone/icons standalone/man/C/* pixmaps pixmaps/langs standalone/interactive_http rpcinfo-flushed.c standalone/service_harddrake.sh OTHERS = $(OTHERDIRS) $(OTHERFILES) OTHERDIRS = tools/ddcprobe tools/serial_probe OTHERFILES = tools/rpcinfo-flushed.c STAGE1 = ../mdk-stage1 USE_PCMCIA := n ifeq ($(ARCH),i386) USE_PCMCIA := y endif ifeq ($(ARCH),x86_64) USE_PCMCIA := y endif .PHONY: all $(DIRS) install clean stage2 full_stage2 all: list_modules.pm TAGS $(DIRS) up: (cd ..; cvs up;cd -;make localsrpm;up /home/tv/rpm/SRPMS/drakxtools-$(PKGVERSION)-$(RELEASE:).src.rpm) xs: $(DIRS) list_modules.pm: ln -sf ../kernel/list_modules.pm TAGS: $(ALLPMS) @etags -o - $^ /usr/lib/perl5/*/*/MDK/Common/*.pm | ./perl2etags > $@ clean: for i in $(DIRS) share/po; do $(MAKE) -C $$i clean; done;: rm -rf auto ../drakxtools.tar.bz2 *.bak find . -name "*~" -o -name ".#*" -o -name "TAGS" -o -name "*.old" | xargs rm -f check: perl -I. -Mlang -e 'lang::check' perl -I. -Mkeyboard -e 'keyboard::check' localcopy: clean rm -rf standalone/pixmaps $(MAKE) -C ../tools clean || : cd .. ; rm -rf $(PACKAGE)-$(PKGVERSION) ; cp -af perl-install $(PACKAGE)-$(PKGVERSION) ; cp -af $(OTHERS) $(PACKAGE)-$(PKGVERSION) cd .. ; rm -f $(PACKAGE)-$(PKGVERSION)/probe.c; cp -a mdk-stage1/{log.h,pcmcia_/{probe.c,*.h}} $(PACKAGE)-$(PKGVERSION)/c/ cd @make nuke_perl $(DIRS): install -d auto $(MAKE) -C $@ test_pms: perl_checker install2.pm install_steps_gtk.pm install_steps_stdio.pm partition_table/*.pm standalone/{harddrake2,diskdrake,draksec} test_pms_all: perl_checker $(shell echo $(ALLPMS) | perl -pe 's!(printer|share/advertising)\S+!!g') %.mo: %.po msgfmt -o $@ $< install_pms: $(DIRS) for i in `perl -ne 's/sub (\w+?)_?(\(\))? {.*/$$1/ and print' commands.pm` sync; do ln -sf commands $(DEST)/usr/bin/$$i; done install -d $(DESTREP4PMS) find $(DESTREP4PMS) -name "*.pm.gz" | xargs rm -f for i in $(PMS); do \ dest=$(DESTREP4PMS)/`dirname $$i`; \ install -d $$dest; \ perl -ne 'print' $$i > $(DESTREP4PMS)/$$i; \ perl -pe 's/#[-+].*//; $$_ = "\n" if (/^=(head|begin)/ .. /^=cut/) || /use (diagnostics|strict|vars|warnings)/' $$i > $(DESTREP4PMS)/$$i; \ done rm -f $(DESTREP4PMS)/{bootlook,tinyfirewall}.pm cp share/*.rc $(DESTREP4PMS) chmod a+x $(DESTREP4PMS)/install2 chmod a+x $(DESTREP4PMS)/commands mo_files : $(MOFILES) get_needed_files: $(DIRS) mo_files eval `perl -V:version`; \ cat share/list `../tools/specific_arch share/list` | \ perl -pe "s/ARCH/$(ARCH)/g ; s/PERL_VERSION/$$version/g ; s|/LIB/|/$(LIB)/|g " | \ perl -lpe '@l = glob; m|\*.*/| && @l != 1 and die "no/multiple match for $$_\n"; $$_ = join("\n", @l)' > $(TMPDIR)/list rpm -ql perl-Gtk2 perl-Glib | perl -lne 'print if m!^/usr/lib/perl5! && !/\.pod$$/ && ! -d' >> $(TMPDIR)/list @missing=`perl -lne 'print if !-e $$_' $(TMPDIR)/list`; [ -z "$$missing" ] || { echo "missing or multiple files vvvvvvvvvvvvvvvvvvvvvvvvvv" ; echo "$$missing" ; echo "missing or multiple files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" ; exit 1; } find auto -follow -name "*.so" >> $(TMPDIR)/list for i in $(LOCALFILES) `cat $(TMPDIR)/list` ; do \ ldd $$i 2>/dev/null | grep "=>" | perl -pe 's/.*=> //; s/ .*//; s,^/(lib(64)?)/.*?/,/\1/,' | sort | uniq >> $(TMPDIR)/list; \ done perl -Mlang -I. -e 'print "$$_\n" foreach lang::console_font_files()' >> $(TMPDIR)/list install -d $(DEST)/etc install -d $(DEST)/etc/sysconfig/network-scripts install -d $(DEST)/lib install -d $(DEST)/$(LIB) install -d $(DEST)/bin install -d $(DEST)/usr/bin install -d $(DEST)/usr/lib install -d $(DEST)/usr/$(LIB) install -d $(DEST)/usr/share install -d $(DEST)/usr/share/langs install -d $(DEST)/usr/share/gtk install -d $(DEST)/usr/share/xmodmap install -d $(DEST)/usr/X11R6/lib/X11/locale install -d $(MEDIA_INFO_DEST) install -s $(LOCALFILES) $(DEST)/usr/bin # cp -f $(LOCALFILES2) $(DEST)/usr/bin ln -s ../X11R6/lib/X11 $(DEST)/usr/lib/X11 ifeq (sparc,$(ARCH)) cp -a /usr/X11R6/lib/X11/xkb $(DEST)/usr/X11R6/lib/X11 rm -f $(DEST)/usr/X11R6/lib/X11/xkb/compiled ln -s /tmp $(DEST)/usr/X11R6/lib/X11/xkb/compiled ln -s /usr/X11R6/lib/X11/xkb/xkbcomp $(DEST)/usr/bin/xkbcomp endif cp -a /usr/X11R6/lib/X11/locale/{C,en_US.UTF-8,iso8859-1} $(DEST)/usr/X11R6/lib/X11/locale ifeq (y,$(USE_PCMCIA)) install -s /sbin/cardmgr $(DEST)/usr/bin endif for i in `cat $(TMPDIR)/list`; do \ if (echo $$i | grep -q "lib/[^/]*\.so"); then \ install -s $$i $(DEST)/lib; \ elif (echo $$i | grep -q "lib64/[^/]*\.so"); then \ install -s $$i $(DEST)/lib64; \ else \ d=$$i; \ (echo $$d | grep -q "^[^/]") && d="$(REP4PMS)/$$d"; \ d=`echo $(DEST)/$$d | sed 's/\/usr\/local\//\/usr\//'`; \ install -d `dirname $$d` && \ if (echo $$i | grep -q "\.pm"); then \ perl -pe '$$_ =~ /^__END__/ and exit(0);' $$i > $$d; \ elif (echo $$i | grep -q "\.so"); then \ install -s $$i $$d; \ else \ cp -f $$i $$d; \ fi; \ fi; \ done perl -pi -e 's/\s*use\s+(warnings|diagnostics|strict|vars|warnings).*//g' $(DEST)/usr/*/*/*/utf8_heavy.pl mv -f $(DEST)/bin/* $(DEST)/sbin/* $(DEST)/usr/bin cd $(DEST)/usr/bin ; mv insmod insmod_ rmdir $(DEST)/bin $(DEST)/sbin perl -pe 's!^echo!/usr/bin/echo!' /bin/unicode_start > $(DEST)/usr/bin/unicode_start chmod a+x $(DEST)/usr/bin/unicode_start perl -ane 'symlink "$$F[1]", "$(DEST)/usr/bin/$$F[0]"' share/aliases ifeq (i386,$(ARCH)) cp ../tools/i386/busybox $(DEST)/usr/bin endif ifeq (x86_64,$(ARCH)) cp ../tools/x86_64/busybox $(DEST)/usr/bin/ endif ifeq (ia64,$(ARCH)) ln -sf bash $(DEST)/usr/bin/sh else ln -sf ash $(DEST)/usr/bin/sh endif for i in fonts keyboards locales-skeleton keymaps; do tar xfj share/$$i.tar.bz2 -C $(DEST); done grep ChangeLog CVS/Entries > $(DEST)/usr/share/VERSION gzip -9f $(DEST)/usr/share/ldetect-lst/* cd share ; cp -a consolefonts devices $(DEST)/usr/share cat share/symlinks `../tools/specific_arch share/symlinks` > $(DEST)/usr/share/symlinks -cd share ; cp -f *.png $(DEST)/usr/share -cd pixmaps ; cp -af *.png *.xpm $(DEST)/usr/share ; rm -f $(DEST)/usr/share/wiz_* cp `perl -I. -Mlang -e 'lang::png_lang_files()'` $(DEST)/usr/share/langs cd share ; cp compssUsers.pl* rpmsrate $(MEDIA_INFO_DEST) perl -I. -Mlang -e 'symlink "UTF-8", "$(DEST)/usr/share/locale/$$_" foreach lang::list_langs()' clean-rpmsrate $(MEDIA_INFO_DEST)/rpmsrate $(MAIN_RPMS_DIR) cp -f ../kernel/{modules.description,all.modules/modules.cz*} $(DEST)/lib/ ls $(DEST)/lib | sed -n 's/modules.cz-//p' > $(STAGE2_DEST)/mdkinst.kernels $(MAKE) -C share/po install SUDO= NAME=libDrakX LOCALEDIR=$(DEST)/usr/share/locale_special # ga and sl are disabled because too few messages are translated rm -rf $(DEST)/usr/share/locale_special/{ga,sl} ifeq (y,$(USE_PCMCIA)) cp -a /etc/pcmcia $(DEST)/etc ../tools/patch_pcmcia_config.pl $(DEST)/etc/pcmcia/config ../kernel/all.modules/`cat ../kernel/all.kernels/.main`/modules.dep endif cp -f $(STAGE1)/init-stage2 $(DEST)/usr/bin/init find $(DEST) -name CVS | xargs rm -rf full_stage2: $(MAKE) stage2 $(MAKE) mdkinst_stage2 mdkinst_stage2: $(MISC_DEST)/make_mdkinst_stage2 $(DEST) $(STAGE2_DEST)/mdkinst_stage2 stage2: if [ `id -u` = 0 ]; then rm -rf $(DEST); else $(SUDO) rm -rf $(DEST); fi mkdir -p $(DEST) $(MAKE) get_needed_files $(MAKE) install_pms find $(DEST)/usr -name "*.pm" | xargs gzip -9f cd $(DEST)/usr/lib/perl5 ; gunzip 5.*/{PerlIO,Exporter}.pm.gz 5.*/*-linux-thread-multi/{XSLoader,lib}.pm.gz vendor_perl/*/*-linux-thread-multi/PerlIO/gzip.pm.gz # rules to build a test rpm localrpm: localdist buildrpm localsrpm: spec_test localdist buildsrpm srpm: spec_test cvstag localsrpm localdist: cleandist localcopy tar cleandist: rm -rf ../$(PACKAGE)-$(PKGVERSION) ../$(PACKAGE)-$(PKGVERSION).tar.bz2 spec_test: @if [[ -z "$(PKGVERSION)" ]]; then echo "unable to get spec version"; exit 3;fi @if [[ -z "$(RELEASE)" ]]; then echo "unable to get spec release"; exit 2;fi tar: cd ../$(PACKAGE)-$(PKGVERSION) && perl -pi -e 's/^C_RPM.*/C_RPM=0/; s/^C_DRAKX.*/C_DRAKX=0/' c/Makefile cd ../$(PACKAGE)-$(PKGVERSION) && perl -pi -e 's/^all: help/all:/' share/po/Makefile cd ../$(PACKAGE)-$(PKGVERSION) && rm -rf install* pkgs.pm help.pm ftp.pm http.pm crypto.pm t.pm debug.log `find -name CVS` cd ../$(PACKAGE)-$(PKGVERSION) && mv -f Makefile.drakxtools Makefile cd ../$(PACKAGE)-$(PKGVERSION) && rm -f list_modules.pm && cp -f ../kernel/list_modules.pm . cd ..; tar cfj $(PACKAGE)-$(PKGVERSION).tar.bz2 $(patsubst %,$(PACKAGE)-$(PKGVERSION)/%,$(DISTFILES)) cd ..; rm -rf $(PACKAGE)-$(PKGVERSION) buildrpm: rpm -ta ../$(PACKAGE)-$(PKGVERSION).tar.bz2 buildsrpm: rpm -ts --nodeps ../$(PACKAGE)-$(PKGVERSION).tar.bz2 # rules to build a distributable rpm rpm: cvstag dist buildrpm slowsrpm: spec_test cvstag dist buildsrpm dist: cleandist export tar export: cd ..; cvs export -d $(PACKAGE)-$(PKGVERSION) -r $(TAG) $(PACKAGE) cd ../$(PACKAGE)-$(PKGVERSION) && rm -rf $(OTHERDIRS) && set -x && for f in $(OTHERDIRS); do cvs -d `cat ../CVS/Root` export -r $(TAG) -d `basename $$f` gi/$$f; done cd ..; set -x && for f in $(OTHERFILES); do cvs -d `cat ../CVS/Root` export -r $(TAG) -d $(PACKAGE)-$(PKGVERSION) gi/$$f; done @make nuke_perl cvstag: cvs tag $(CVSTAGOPT) $(TAG) cd ..; cvs tag $(CVSTAGOPT) $(TAG) $(OTHERS) nuke_perl: find ../$(PACKAGE)-$(PKGVERSION) -name '*.pm' | xargs perl -pi -e 's/\s*use\s+(diagnostics|strict|vars|warnings).*//g' find ../$(PACKAGE)-$(PKGVERSION)/standalone -type f | xargs perl -pi -e 's/\s*use\s+(diagnostics|strict|vars|warnings).*//g' dont_run_directly_stage2: echo -e '#!/bin/sh\n\nexec /usr/bin/busybox sh' > $(DEST)/usr/bin/runinstall2.sh chmod a+x $(DEST)/usr/bin/runinstall2.sh ln -sf runinstall2.sh $(DEST)/usr/bin/runinstall2 trace_stage2: eval `perl -V:vendorlib`; install -m 644 -D $$vendorlib/Devel/Trace.pm $(DEST)$$vendorlib/Devel/Trace.pm perl -pi -e 's|(#!/usr/bin/perl).*|$$1 -d:Trace|' $(DEST)/usr/bin/runinstall2