#!/usr/bin/perl # # Coded by Gabriel Gerhardsson, 2001 # # # Instructions: # ------------- # You need this file, the spec-file and the data-files (preferably checkout module 'abispell' from cvs). # You may need to change the paths to those two and maybe others to (depending of your setup). # # Then you just start this script as root and collect the finished rpms when it's done. # $RPM_BUILD_DIR = "/usr/src/redhat/BUILD"; $RPM_SOURCE_DIR = "/usr/src/redhat/SOURCES"; $RPM_SPEC_DIR = "/usr/src/redhat/SPECS"; # Name of specfile $FN_SPECFILE = "abispell-general-0.0.2-2.spec"; # The directory where the abispell directory is (from cvs, tarball or somewhere else) # This is where the hash-files and -encoding-files is taken from $FN_ABISPELL_DIR = "../cvs/abispell"; # Directory for temporary files during build $FN_TEMP_DIR = "temp"; # Package name and version info $FN_PREFIX = "abispell"; $FN_VERSION = "0.0.2"; $FN_RELEASE = "1"; `mkdir -p ${FN_TEMP_DIR}`; `\\rm -f ${FN_TEMP_DIR}/*`; # Little endian @dict = ("catala.hash", "czech.hash", "dansk.hash", "deutsch.hash", "deutsch.hash", "deutsch.hash", "ellhnika.hash", "british.hash", "british.hash", "british.hash", "british.hash", "british.hash", "american.hash", "british.hash", "esperanto.hash", "espanol.hash", "francais.hash", "francais.hash", "francais.hash", "francais.hash", "irish.hash", "galician.hash", "italian.hash", "mlatin.hash", "lietuviu.hash", "nederlands.hash", "norsk.hash", "nynorsk.hash", "polish.hash", "portugues.hash", "portugues.hash", "russian.hash", "svenska.hash"); @includeEnc = (0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0); @acr = ("ca-ES", "cs-CZ", "da-DK", "de-CH", "de-DE", "de-AT", "el-GR", "en-AU", "en-CA", "en-GB", "en-IE", "en-NZ", "en-US", "en-ZA", "eo", "es-ES", "fr-BE", "fr-CA", "fr-CH", "fr-FR", "ga-IE", "gl-ES", "it-IT", "la-IT", "lt-LT", "nl-NL", "nb-NO", "nn-NO", "pl-PL", "pt-PT", "pt-BR", "ru-RU", "sv-SE"); @name = ("Catalan", "Czech", "Danish", "German", "German", "German", "Greek", "English", "English", "English", "English", "English", "English", "English", "Esperanto", "Spanish", "French", "French", "French", "French", "Irish gaelic", "Galician", "Italian", "Latin", "Latvian", "Dutch", "Norwegian", "Norwegian(nynorsk)", "Polish", "Portuguese", "Portuguese", "Russian", "Swedish"); @build_little = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); @build_big = (0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1); for ($i = 0; $i < @dict; $i++) { if ($build_little[$i]) { $full_name = "${FN_PREFIX}-$acr[$i]-${FN_VERSION}-${FN_RELEASE}"; print "--- Building: $name[$i]($acr[$i]) - Little endian ---\n"; # Copying the contents of the rpm to the temp-dir `cp ${FN_ABISPELL_DIR}/le/$dict[$i] ${FN_TEMP_DIR}/`; if ($includeEnc[$i]) { `cp ${FN_ABISPELL_DIR}/enc/$dict[$i]-encoding ${FN_TEMP_DIR}/`; } # Tar the contents `cd ${FN_TEMP_DIR}; tar zcvf ${RPM_SOURCE_DIR}/${full_name}.tar.gz *`; # Copy spec-file `cp ${FN_SPECFILE} ${RPM_SPEC_DIR}/${full_name}.spec`; # Search and replace in the spec-file `perl -pi -e 's/LOCALE_SHORT/$acr[$i]/g' ${RPM_SPEC_DIR}/${full_name}.spec`; `perl -pi -e 's/LOCALE/$name[$i]/g' ${RPM_SPEC_DIR}/${full_name}.spec`; `perl -pi -e 's/VERSION/${FN_VERSION}/g' ${RPM_SPEC_DIR}/${full_name}.spec`; `perl -pi -e 's/RELEASE/${FN_RELEASE}/g' ${RPM_SPEC_DIR}/${full_name}.spec`; # Build the rpm `cd ${RPM_SPEC_DIR}; rpm -bb --target=i386 ${full_name}.spec`; # Try this instead for compatibility-mode on rpm >= 4.0.3(?) (Creates rpms compatible with rpm3). But know this; This has not been tested at all and is not guaranteed to work! # `cd ${RPM_SPEC_DIR}; rpm -bb --target=i386 --define '_noPayloadPrefix 1' --nodirtokens ${full_name}.spec`; `rm -f ${FN_TEMP_DIR}/*`; `rm -f ${RPM_SPEC_DIR}/${full_name}.spec`; `rm -f ${RPM_SOURCE_DIR}/${full_name}.tar.gz`; } if ($build_big[$i]) { $full_name = "${FN_PREFIX}-$acr[$i]-${FN_VERSION}-${FN_RELEASE}"; print "--- Building: $name[$i]($acr[$i]) - Big endian ---\n"; # Copying the contents of the rpm to the temp-dir `cp ${FN_ABISPELL_DIR}/be/$dict[$i] ${FN_TEMP_DIR}/`; if ($includeEnc[$i]) { `cp ${FN_ABISPELL_DIR}/enc/$dict[$i]-encoding ${FN_TEMP_DIR}/`; } # Tar the contents `cd ${FN_TEMP_DIR}; tar zcvf ${RPM_SOURCE_DIR}/${full_name}.tar.gz *`; # Copy spec-file `cp ${FN_SPECFILE} ${RPM_SPEC_DIR}/${full_name}.spec`; # Search and replace in the spec-file `perl -pi -e 's/LOCALE_SHORT/$acr[$i]/g' ${RPM_SPEC_DIR}/${full_name}.spec`; `perl -pi -e 's/LOCALE/$name[$i]/g' ${RPM_SPEC_DIR}/${full_name}.spec`; `perl -pi -e 's/VERSION/${FN_VERSION}/g' ${RPM_SPEC_DIR}/${full_name}.spec`; `perl -pi -e 's/RELEASE/${FN_RELEASE}/g' ${RPM_SPEC_DIR}/${full_name}.spec`; # Build the rpm `cd ${RPM_SPEC_DIR}; rpm -bb --target=ppc ${full_name}.spec`; # Try this instead for compatibility-mode on rpm >= 4.0.3(?) (Creates rpms compatible with rpm3). But know this; This has not been tested at all and is not guaranteed to work! # `cd ${RPM_SPEC_DIR}; rpm -bb --target=ppc --define '_noPayloadPrefix 1' --nodirtokens ${full_name}.spec`; `rm -f ${FN_TEMP_DIR}/*`; `rm -f ${RPM_SPEC_DIR}/${full_name}.spec`; `rm -f ${RPM_SOURCE_DIR}/${full_name}.tar.gz`; } } `rmdir ${FN_TEMP_DIR}`; print "\n--- All done!\n";