Update script for package-management related changes.

A hpkg will be created locally, which contains the firmwares. This hpkg will
be copied to system. IIRC, the firmware must live in their respective
subdirectories.

To note, once the approve_license flags are implemented on the end-user
applicacation side, the Intel ipw2100 and Intel ipw2200 could be moved
to a separate package. However (and IIRC) the Broadcom involves using a closed
binary blob, that should not become a pre-made package.
This commit is contained in:
Matt Madia
2013-10-06 21:21:28 -04:00
parent 5b7ba6624e
commit c3cb090f10
+86 -20
View File
@@ -35,6 +35,7 @@ baseURL='http://www.haiku-files.org/files/wifi-firmwares'
firmwareDir=`finddir B_SYSTEM_DATA_DIRECTORY`/firmware firmwareDir=`finddir B_SYSTEM_DATA_DIRECTORY`/firmware
tempDir=`finddir B_COMMON_TEMP_DIRECTORY`/wifi-firmwares tempDir=`finddir B_COMMON_TEMP_DIRECTORY`/wifi-firmwares
driversDir=`finddir B_SYSTEM_ADDONS_DIRECTORY`/kernel/drivers driversDir=`finddir B_SYSTEM_ADDONS_DIRECTORY`/kernel/drivers
tempFirmwareDir=`finddir B_COMMON_TEMP_DIRECTORY`/package_me"$firmwareDir"
intelLicense='/boot/system/data/licenses/Intel (2xxx firmware)' intelLicense='/boot/system/data/licenses/Intel (2xxx firmware)'
@@ -84,21 +85,24 @@ function InstallAllFirmwares()
InstallIprowifi2200 InstallIprowifi2200
InstallBroadcom43xx InstallBroadcom43xx
InstallMarvell88w8335 InstallMarvell88w8335
MakeHPKG
} }
function UnlinkDriver() function UnlinkDriver()
{ {
# remove the driver's symlink # remove the driver's symlink
rm -f "${driversDir}/dev/net/${driver}" #rm -f "${driversDir}/dev/net/${driver}"
echo "TODO: UnlinkDriver"
} }
function SymlinkDriver() function SymlinkDriver()
{ {
# restore the driver's symlink # restore the driver's symlink
cd "${driversDir}/dev/net/" #cd "${driversDir}/dev/net/"
ln -sf "../../bin/${driver}" "${driver}" #ln -sf "../../bin/${driver}" "${driver}"
echo "TODO: SymlinkDriver"
} }
@@ -125,7 +129,7 @@ function DownloadFileIfNotCached()
function SetFirmwarePermissions() function SetFirmwarePermissions()
{ {
cd ${firmwareDir}/${driver}/ cd ${tempFirmwareDir}/${driver}/
for file in * ; do for file in * ; do
if [ "$file" != "$driver" ] && [ -f "$file" ] ; then if [ "$file" != "$driver" ] && [ -f "$file" ] ; then
chmod a=r $file chmod a=r $file
@@ -144,7 +148,7 @@ function CleanTemporaryFiles()
function PreFirmwareInstallation() function PreFirmwareInstallation()
{ {
echo "Installing firmware for ${driver} ..." echo "Installing firmware for ${driver} ..."
mkdir -p "${firmwareDir}/${driver}" mkdir -p "${tempFirmwareDir}/${driver}"
UnlinkDriver UnlinkDriver
} }
@@ -166,13 +170,14 @@ function InstallIpw2100()
# Extract contents. # Extract contents.
local file='ipw2100-fw-1.3.tgz' local file='ipw2100-fw-1.3.tgz'
local url="${baseURL}/intel/${file}" local url="${baseURL}/intel/${file}"
local dir="${firmwareDir}/${driver}" local dir="${tempFirmwareDir}/${driver}"
DownloadFileIfNotCached $url $file $dir DownloadFileIfNotCached $url $file $dir
# Install the firmware & license file by extracting in place. # Install the firmware & license file by extracting in place.
cd "${firmwareDir}/${driver}" cd "${tempFirmwareDir}/${driver}"
gunzip < "$file" | tar xf - gunzip < "$file" | tar xf -
rm "${tempFirmwareDir}/${driver}/${file}"
PostFirmwareInstallation PostFirmwareInstallation
} }
@@ -185,19 +190,20 @@ function InstallIprowifi2200()
# Extract contents. # Extract contents.
local file='ipw2200-fw-3.1.tgz' local file='ipw2200-fw-3.1.tgz'
local url="${baseURL}/intel/${file}" local url="${baseURL}/intel/${file}"
local dir="${firmwareDir}/${driver}" local dir="${tempFirmwareDir}/${driver}"
DownloadFileIfNotCached $url $file $dir DownloadFileIfNotCached $url $file $dir
cd "$tempDir" cd "$tempDir"
gunzip < "${firmwareDir}/${driver}/$file" | tar xf - gunzip < "${tempFirmwareDir}/${driver}/$file" | tar xf -
# Install the firmware & license file. # Install the firmware & license file.
cd "${tempDir}/ipw2200-fw-3.1" cd "${tempDir}/ipw2200-fw-3.1"
mv LICENSE.ipw2200-fw "${firmwareDir}/${driver}/" mv LICENSE.ipw2200-fw "${tempFirmwareDir}/${driver}/"
mv ipw2200-ibss.fw "${firmwareDir}/${driver}/" mv ipw2200-ibss.fw "${tempFirmwareDir}/${driver}/"
mv ipw2200-sniffer.fw "${firmwareDir}/${driver}/" mv ipw2200-sniffer.fw "${tempFirmwareDir}/${driver}/"
mv ipw2200-bss.fw "${firmwareDir}/${driver}/" mv ipw2200-bss.fw "${tempFirmwareDir}/${driver}/"
rm "${tempFirmwareDir}/${driver}/${file}"
PostFirmwareInstallation PostFirmwareInstallation
} }
@@ -233,7 +239,7 @@ function InstallMarvell88w8335()
# Download firmware archive. # Download firmware archive.
local file="malo-firmware-1.4.tgz" local file="malo-firmware-1.4.tgz"
local url="${baseURL}/marvell/${file}" local url="${baseURL}/marvell/${file}"
local dir="${firmwareDir}/${driver}" local dir="${tempFirmwareDir}/${driver}"
DownloadFileIfNotCached $url $file "$dir" DownloadFileIfNotCached $url $file "$dir"
if [ $result -gt 0 ]; then if [ $result -gt 0 ]; then
echo "...failed. ${driver}'s firmware will not be installed." echo "...failed. ${driver}'s firmware will not be installed."
@@ -242,12 +248,14 @@ function InstallMarvell88w8335()
# Extract archive. # Extract archive.
cd "$tempDir" cd "$tempDir"
tar xf "${firmwareDir}/${driver}/$file" tar xf "${tempFirmwareDir}/${driver}/$file"
# Move firmware files to destination. # Move firmware files to destination.
local sourceDir="${tempDir}/share/examples/malo-firmware" local sourceDir="${tempDir}/share/examples/malo-firmware"
mv ${sourceDir}/malo8335-h "${firmwareDir}/${driver}" mv ${sourceDir}/malo8335-h "${tempFirmwareDir}/${driver}"
mv ${sourceDir}/malo8335-m "${firmwareDir}/${driver}" mv ${sourceDir}/malo8335-m "${tempFirmwareDir}/${driver}"
rm "${tempFirmwareDir}/${driver}/${file}"
PostFirmwareInstallation PostFirmwareInstallation
} }
@@ -256,7 +264,7 @@ function BuildBroadcomFWCutter()
{ {
# Download & extract b43-fwcutter. # Download & extract b43-fwcutter.
local file="b43-fwcutter-012.tar.bz2" local file="b43-fwcutter-012.tar.bz2"
local dir="${firmwareDir}/${driver}/b43-fwcutter" local dir="${tempFirmwareDir}/${driver}/b43-fwcutter"
local url="${baseURL}/b43/fwcutter/${file}" local url="${baseURL}/b43/fwcutter/${file}"
DownloadFileIfNotCached $url $file $dir DownloadFileIfNotCached $url $file $dir
if [ $result -gt 0 ]; then if [ $result -gt 0 ]; then
@@ -298,6 +306,14 @@ function BuildBroadcomFWCutter()
fi fi
mv b43-fwcutter "$tempDir" mv b43-fwcutter "$tempDir"
cd "${tempFirmwareDir}/${driver}/b43-fwcutter"
rm b43-fwcutter-012.tar.bz2
rm byteswap.h
rm bits/byteswap.h
rmdir bits
cd ..
rmdir b43-fwcutter
return 0 return 0
} }
@@ -306,7 +322,7 @@ function CutAndInstallBroadcomFirmware()
{ {
# Download firmware. # Download firmware.
local file="wl_apsta-3.130.20.0.o" local file="wl_apsta-3.130.20.0.o"
local dir="${firmwareDir}/${driver}" local dir="${tempFirmwareDir}/${driver}"
local url="${baseURL}/b43/${file}" local url="${baseURL}/b43/${file}"
DownloadFileIfNotCached $url $file $dir DownloadFileIfNotCached $url $file $dir
if [ $result -gt 0 ]; then if [ $result -gt 0 ]; then
@@ -327,11 +343,61 @@ function CutAndInstallBroadcomFirmware()
touch bwi_v3_ucode touch bwi_v3_ucode
# Install files. # Install files.
mv * ${firmwareDir}/${driver}/ mv * ${tempFirmwareDir}/${driver}/
rm "${tempFirmwareDir}/${driver}/$file"
return 0 return 0
} }
function makePackageInfo()
{
cat << EOF > .PackageInfo
name wifi_firmwares
version 2013_10_06-1
architecture any
summary "Firmwares for various wireless network cards"
description "Installs firmwares for the following wireless network cards:
Broadcom 43xx, Intel ipw2100, Intel ipw2200, and Marvell 88W8335.
Firmware for broadcom43xx is under the Copyright of Broadcom Corporation(R).
Firmware for marvell88w8335 is under the Copyright of Marvell Technology(R).
ipw2100,iprowifi2200 firmware is covered by the Intel(R) license located in
/boot/system/data/licenses/Intel (2xxx firmware). The user is not granted a
license to use the package unless these terms are agreed to."
packager "me"
vendor "myself"
copyrights {
"Copyright of Broadcom Corporation(R)"
"Copyright of Intel(R) Corporation"
"Copyright of Marvell Technology(R)"
}
licenses "Intel (2xxx firmware)"
flags {
"approve_license"
"system_package"
}
provides {
wifi_firmwares = 2013_10_06
}
requires {
haiku >= R1~alpha4
}
EOF
}
function MakeHPKG()
{
cd "$tempFirmwareDir/../.."
makePackageInfo
package create wifi_firmwares-1-any.hpkg
mv wifi_firmwares-1-any.hpkg `finddir B_SYSTEM_PACKAGES_DIRECTORY`
}
mkdir -p "$tempDir" mkdir -p "$tempDir"
mkdir -p "$tempFirmwareDir"
DisplayAlert DisplayAlert