summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rwxr-xr-xscripts/GeneratePackageMake228
1 files changed, 228 insertions, 0 deletions
diff --git a/scripts/GeneratePackageMake b/scripts/GeneratePackageMake
new file mode 100755
index 0000000..d5ccee5
--- a/dev/null
+++ b/scripts/GeneratePackageMake
@@ -0,0 +1,228 @@
+# generate file containg control name / package name / files
+find . -name *.control | grep -v -- "-mt.control" | while read i
+do
+ i=${i/.\//}
+ CDIR=${i%/*}
+ BNAME=${i##*/}
+ BNAME=${BNAME/.control/}
+ echo "cdir: ${CDIR}"
+ echo "bname: ${BNAME}"
+ grep -e "Package:" -e "Files:" ./${i}
+done > /tmp/ALL
+
+#
+# makefile header
+#
+
+cat << MAKEFILEHEADER
+
+#
+# generate -mt.control file from regular control
+# arg 1 : path to control file to convert
+#
+
+define GenerateMTControl
+@echo "Generating -mt control file for \$(basename \$<)"
+@\$(OPIEDIR)/scripts/tothreaded \$< \$(OPIEDIR)/AllThreadedPackages
+endef
+
+#
+# package one control file
+# arg 1 : directory from OPIEROOT where control file resides
+# arg 2 : control file basename without -mt (no .control)
+# arg 3 : control file basename with -mt if needed
+# arg 4 : package name (value specified by Package: ...)
+#
+
+define DoPackage
+@echo \"Building ipk of \$(4)\"
+@( \$(ForSubst) ) > \$(TOPDIR)/scripts/subst
+@( \$(ForFileSubst) ) > \$(TOPDIR)/scripts/Filesubst
+@( cd \$(OPIEDIR); \\
+ \$(OPIEDIR)/scripts/mkipkg \\
+ --subst=\$(OPIEDIR)/scripts/subst \\
+ --filesubst=\$(OPIEDIR)/scripts/filesubst \\
+ --control=\$(OPIEDIR)/\$(1)/\$(3).control \\
+ --prerm=\$(OPIEDIR)/\$(1)/\$(2).prerm \\
+ --preinst=\$(OPIEDIR)/\$(1)/\$(2).preinst \\
+ --postrm=\$(OPIEDIR)/\$(1)/\$(2).postrm \\
+ --postinst=\$(OPIEDIR)/\$(1)/\$(2).postinst \\
+ --strip=\$(STRIP) \$(OPIEDIR); \\
+ rm -f \$(OPIEDIR)/Packages/\$(4)_*.ipk; \\
+ mv *.ipk \$(OPIEDIR)/Packages; \\
+ touch \$(OPIEDIR)/Packages/\$(4) \\
+) || true
+endef
+
+#
+# prepared for generating the substfile for every build
+#
+
+define ForSubst
+echo 's,\\\$\$QPE_VERSION,\$(QPE_VERSION),g'; \\
+echo 's,\\\$\$OPIE_VERSION,\$(OPIE_VERSION),g'; \\
+echo 's,\\\$\$QTE_VERSION,\$(QTE_VERSION),g'; \\
+echo 's,\\\$\$QTE_REVISION,\$(QTE_REVISION),g'; \\
+echo 's,\\\$\$SUB_VERSION,\$(SUB_VERSION),g'; \\
+echo 's,\\\$\$EXTRAVERSION,\$(EXTRAVERSION),g'; \\
+echo 's,\\\$\$QTE_BASEVERSION,\$(QTE_BASEVERSION),g'
+endef
+
+define ForFileSubst
+echo 's,\\\$\$OPIEDIR/root/,/,g'; \\
+echo 's,\$(OPIEDIR)/root/,/,g'; \\
+echo 's,\\\$\$OPIEDIR,\$(prefix),g'; \\
+echo 's,\$(OPIEDIR),\$(prefix),g'; \\
+echo 's,\\\$\$QTDIR,\$(prefix),g'; \\
+echo 's,\$(QTDIR),\$(prefix),g'; \\
+echo 's,^\(\./\)*root/,/,g'; \\
+echo 's,^\(\./\)*etc/,\$(prefix)/etc/,g'; \\
+echo 's,^\(\./\)*lib/,\$(prefix)/lib/,g'; \\
+echo 's,^\(\./\)*bin/,\$(prefix)/bin/,g'; \\
+echo 's,^\(\./\)*pics/,\$(prefix)/pics/,g'; \\
+echo 's,^\(\./\)*sounds/,\$(prefix)/sounds/,g'; \\
+echo 's,^\(\./\)*i18n/,\$(prefix)/i18n/,g'; \\
+echo 's,^\(\./\)*plugins/,\$(prefix)/plugins/,g'; \\
+echo 's,^\(\./\)*apps/,\$(prefix)/apps/,g'; \\
+echo 's,^\(\./\)*share/,\$(prefix)/share/,g'; \\
+echo 's,^\(\./\)*i18n/,\$(prefix)/i18n/,g'; \\
+echo 's,^\(\./\)*help/,\$(prefix)/help/,g'
+endef
+
+#
+# Will contain a list of all non-mt control files
+ALLCONTROLFILES=
+
+#
+# Will contain a list of all packaging targets
+ALLPACKAGES=
+
+# s contains now single space
+s=\$(x) \$(x)
+
+#
+# for convenience : generate AllTh
+ATP=\$(OPIEDIR)/AllThreadedPackages
+
+MAKEFILEHEADER
+
+while read k
+do
+ CDIR="${k#* }"
+ read k
+ BNAME="${k#* }"
+ read k
+ case $k in
+ *"ackage:"*)
+ Pkg="${k#* }"
+ Pkg="${Pkg// }"
+ ;;
+ *"iles:"*)
+ Files="${k/Files:/}"
+ ;;
+ esac
+ read k
+ case $k in
+ *"ackage:"*)
+ Pkg="${k#* }"
+ Pkg="${Pkg// }"
+ ;;
+ *"iles:"*)
+ Files="${k/Files:/}"
+ ;;
+ esac
+
+ cat << HERE
+#
+# package $Pkg in ${BNAME}
+#
+
+package-${Pkg} : \$(OPIEDIR)/Packages/$Pkg
+package-${Pkg}-mt : \$(OPIEDIR)/Packages/$Pkg-mt
+
+# collect control files and package targets
+
+ALLCONTROLFILES += ${CDIR}/${BNAME}.control
+ALLPACKAGES += $Pkg
+
+# to generate -mt control file
+\$(OPIEDIR)/${CDIR}/${BNAME}-mt.control : \$(OPIEDIR)/${CDIR}/${BNAME}.control
+ \$(GenerateMTControl)
+
+HERE
+
+ if [ ! -z "${Files}" ]
+ then
+
+ cat << HERE
+# optimize speed
+.phony : \$(wildcard \$(addprefix \$(OPIEDIR)/,${Files}))
+
+# capture missing files (because not built)
+\$(OPIEDIR)/Packages/$Pkg \$(OPIEDIR)/Packages/$Pkg-mt \$(SUBSTFILES): \$(wildcard \$(addprefix \$(OPIEDIR)/,${Files}))
+HERE
+
+# echo "\$(wildcard \$(addprefix \$(OPIEDIR)/,${Files})) : "
+
+ fi
+
+ cat << HERE
+\$(OPIEDIR)/Packages/$Pkg : \$(OPIEDIR)/${CDIR}/${BNAME}.control
+ @\$(call DoPackage,${CDIR},${BNAME},${BNAME},${Pkg})
+\$(OPIEDIR)/Packages/$Pkg-mt : \$(OPIEDIR)/${CDIR}/${BNAME}-mt.control
+ @\$(call DoPackage,${CDIR},${BNAME},${BNAME}-mt,${Pkg}-mt)
+
+HERE
+
+done < /tmp/ALL
+
+cat << HERE
+#
+# regenerate package file if control files are modified
+#
+
+Package.make : \$(addprefix \$(OPIEDIR)/,\$(ALLCONTROLFILES))
+
+#
+# make targets to build packages
+# needs quicklauncher link in location (because dangling
+# links are not considered as true files by the wildcard command)
+#
+# if you want to build one package only then use
+# make package-<basenameof control>
+# or make package-<basenameof control>-mt
+#
+
+packages : /opt/QtPalmtop/bin/quicklauncher \\
+ \$(OPIEDIR)/Packages \\
+ \$(add prefix \$(OPIEDIR)/Packages/,\$(ALLPACKAGES))
+packages-mt : /opt/QtPalmtop/bin/quicklauncher \\
+ \$(ATP) \\
+ \$(OPIEDIR)/Packages \\
+ \$(addprefix \$(OPIEDIR)/Packages/,\$(addsuffix -mt,\$(ALLPACKAGES)))
+
+#
+# capture missing quichlauncher link
+#
+
+/opt/QtPalmtop/bin/quicklauncher :
+ @echo "create a link from /opt/QtPalmtop to \$(OPIEDIR) for this target to work"
+ exit 2
+
+#
+# Create Packages directory
+#
+
+\$(OPIEDIR)/Packages :
+ @mkdir \$(OPIEDIR)/Packages
+
+#
+# update file containing all packages
+#
+
+\$(ATP) : \$(addprefix \$(OPIEDIR)/,\$(ALLCONTROLFILES))
+ @echo "Generating \$(notdir \$(ATP))"
+ @echo -e "\$(subst \$(s),,\$(foreach i,\$(ALLPACKAGES),\$(i)\n))" > \$@
+HERE
+
+rm /tmp/ALL