Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/bin/sh | 1 #!/bin/sh |
| 2 # | 2 # |
| 3 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 # | 6 # |
| 7 #@ This script builds a Debian Wheezy sysroot for building Google Chrome. | 7 #@ This script builds a Debian Wheezy sysroot for building Google Chrome. |
| 8 #@ | 8 #@ |
| 9 #@ Generally this script is invoked as: | 9 #@ Generally this script is invoked as: |
| 10 #@ sysroot-creator-debian.wheezy.sh <mode> <args>* | 10 #@ sysroot-creator-debian.wheezy.sh <mode> <args>* |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 readonly INSTALL_ROOT_I386=$(pwd)/debian_wheezy_i386_staging | 26 readonly INSTALL_ROOT_I386=$(pwd)/debian_wheezy_i386_staging |
| 27 | 27 |
| 28 readonly REQUIRED_TOOLS="wget" | 28 readonly REQUIRED_TOOLS="wget" |
| 29 | 29 |
| 30 ###################################################################### | 30 ###################################################################### |
| 31 # Package Config | 31 # Package Config |
| 32 ###################################################################### | 32 ###################################################################### |
| 33 | 33 |
| 34 # this is where we get all the debian packages from | 34 # this is where we get all the debian packages from |
| 35 readonly DEBIAN_REPO=http://http.us.debian.org/debian | 35 readonly DEBIAN_REPO=http://http.us.debian.org/debian |
| 36 readonly REPO_BASEDIR="${DEBIAN_REPO}/dists/wheezy" | |
| 36 | 37 |
| 37 readonly PACKAGE_LIST_AMD64="${DEBIAN_REPO}/dists/wheezy/main/binary-amd64/Packa ges.bz2" | 38 readonly RELEASE_FILE="Release" |
| 38 readonly PACKAGE_LIST_I386="${DEBIAN_REPO}/dists/wheezy/main/binary-i386/Package s.bz2" | 39 readonly RELEASE_FILE_GPG="Release.gpg" |
| 40 readonly RELEASE_LIST="${REPO_BASEDIR}/${RELEASE_FILE}" | |
| 41 readonly RELEASE_LIST_GPG="${REPO_BASEDIR}/${RELEASE_FILE_GPG}" | |
| 42 readonly PACKAGE_FILE_AMD64="main/binary-amd64/Packages.bz2" | |
| 43 readonly PACKAGE_FILE_I386="main/binary-i386/Packages.bz2" | |
| 44 readonly PACKAGE_LIST_AMD64="${REPO_BASEDIR}/${PACKAGE_FILE_AMD64}" | |
| 45 readonly PACKAGE_LIST_I386="${REPO_BASEDIR}/${PACKAGE_FILE_I386}" | |
| 39 | 46 |
| 40 # Sysroot packages: these are the packages needed to build chrome. | 47 # Sysroot packages: these are the packages needed to build chrome. |
| 41 # NOTE: When DEBIAN_PACKAGES is modified, the packagelist files must be updated | 48 # NOTE: When DEBIAN_PACKAGES is modified, the packagelist files must be updated |
| 42 # by running this script in GeneratePackageList mode. | 49 # by running this script in GeneratePackageList mode. |
| 43 readonly DEBIAN_PACKAGES="\ | 50 readonly DEBIAN_PACKAGES="\ |
| 44 comerr-dev \ | 51 comerr-dev \ |
| 45 gcc-4.6 \ | 52 gcc-4.6 \ |
| 46 krb5-multidev \ | 53 krb5-multidev \ |
| 47 libasound2 \ | 54 libasound2 \ |
| 48 libasound2-dev \ | 55 libasound2-dev \ |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 443 #@ Build everything and package it | 450 #@ Build everything and package it |
| 444 BuildSysrootI386() { | 451 BuildSysrootI386() { |
| 445 ClearInstallDir | 452 ClearInstallDir |
| 446 InstallIntoSysroot ${DEBIAN_DEP_FILES_I386} | 453 InstallIntoSysroot ${DEBIAN_DEP_FILES_I386} |
| 447 CleanupJailSymlinks | 454 CleanupJailSymlinks |
| 448 HacksAndPatchesI386 | 455 HacksAndPatchesI386 |
| 449 CreateTarBall $1 | 456 CreateTarBall $1 |
| 450 } | 457 } |
| 451 | 458 |
| 452 # | 459 # |
| 460 # VerifyPackageListing | |
| 461 # | |
| 462 # Verifies the downloaded Packages.bz2 file has the right checksums. | |
| 463 # | |
| 464 VerifyPackageListing() { | |
| 465 local file_path=$1 | |
| 466 local output_file=$2 | |
| 467 local release_file="${TMP}/${RELEASE_FILE}" | |
| 468 local release_file_gpg="${TMP}/${RELEASE_FILE_GPG}" | |
| 469 DownloadOrCopy ${RELEASE_LIST} ${release_file} | |
| 470 DownloadOrCopy ${RELEASE_LIST_GPG} ${release_file_gpg} | |
| 471 echo "Verifying: ${release_file} with ${release_file_gpg}" | |
| 472 gpgv --keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg \ | |
| 473 --keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg \ | |
|
Michael Moss
2013/11/06 18:32:45
Where do these keyrings come from? Is it safe to a
| |
| 474 ${release_file_gpg} ${release_file} | |
| 475 | |
| 476 echo "Verifying: ${output_file}" | |
| 477 local checksums=$(grep ${file_path} ${release_file} | cut -d " " -f 2) | |
| 478 local md5sum=$(echo ${checksums} | cut -d " " -f 1) | |
| 479 local sha1sum=$(echo ${checksums} | cut -d " " -f 2) | |
| 480 local sha256sum=$(echo ${checksums} | cut -d " " -f 3) | |
| 481 | |
| 482 if [ "${#md5sum}" -ne "32" ]; then | |
| 483 echo "Bad md5sum from ${RELEASE_LIST}" | |
| 484 exit 1 | |
| 485 fi | |
| 486 if [ "${#sha1sum}" -ne "40" ]; then | |
| 487 echo "Bad sha1sum from ${RELEASE_LIST}" | |
| 488 exit 1 | |
| 489 fi | |
| 490 if [ "${#sha256sum}" -ne "64" ]; then | |
| 491 echo "Bad sha256sum from ${RELEASE_LIST}" | |
| 492 exit 1 | |
| 493 fi | |
| 494 | |
| 495 echo "${md5sum} ${output_file}" | md5sum --quiet -c | |
| 496 echo "${sha1sum} ${output_file}" | sha1sum --quiet -c | |
| 497 echo "${sha256sum} ${output_file}" | sha256sum --quiet -c | |
| 498 } | |
| 499 | |
| 500 # | |
| 453 # GeneratePackageList | 501 # GeneratePackageList |
| 454 # | 502 # |
| 455 # Looks up package names in ${TMP}/Packages and write list of URLs | 503 # Looks up package names in ${TMP}/Packages and write list of URLs |
| 456 # to output file. | 504 # to output file. |
| 457 # | 505 # |
| 458 GeneratePackageList() { | 506 GeneratePackageList() { |
| 459 local output_file=$1 | 507 local output_file=$1 |
| 460 echo "Updating: ${output_file}" | 508 echo "Updating: ${output_file}" |
| 461 /bin/rm -f ${output_file} | 509 /bin/rm -f ${output_file} |
| 462 shift | 510 shift |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 473 } | 521 } |
| 474 | 522 |
| 475 #@ | 523 #@ |
| 476 #@ UpdatePackageListsAmd64 | 524 #@ UpdatePackageListsAmd64 |
| 477 #@ | 525 #@ |
| 478 #@ Regenerate the package lists such that they contain an up-to-date | 526 #@ Regenerate the package lists such that they contain an up-to-date |
| 479 #@ list of URLs within the Debian archive. (For amd64) | 527 #@ list of URLs within the Debian archive. (For amd64) |
| 480 UpdatePackageListsAmd64() { | 528 UpdatePackageListsAmd64() { |
| 481 local package_list="${TMP}/Packages.wheezy_amd64.bz2" | 529 local package_list="${TMP}/Packages.wheezy_amd64.bz2" |
| 482 DownloadOrCopy ${PACKAGE_LIST_AMD64} ${package_list} | 530 DownloadOrCopy ${PACKAGE_LIST_AMD64} ${package_list} |
| 531 VerifyPackageListing ${PACKAGE_FILE_AMD64} ${package_list} | |
| 483 bzcat ${package_list} | egrep '^(Package:|Filename:)' > ${TMP}/Packages | 532 bzcat ${package_list} | egrep '^(Package:|Filename:)' > ${TMP}/Packages |
| 484 | 533 |
| 485 GeneratePackageList ${DEBIAN_DEP_LIST_AMD64} "${DEBIAN_PACKAGES}" | 534 GeneratePackageList ${DEBIAN_DEP_LIST_AMD64} "${DEBIAN_PACKAGES}" |
| 486 } | 535 } |
| 487 | 536 |
| 488 #@ | 537 #@ |
| 489 #@ UpdatePackageListsI386 | 538 #@ UpdatePackageListsI386 |
| 490 #@ | 539 #@ |
| 491 #@ Regenerate the package lists such that they contain an up-to-date | 540 #@ Regenerate the package lists such that they contain an up-to-date |
| 492 #@ list of URLs within the Debian archive. (For i386) | 541 #@ list of URLs within the Debian archive. (For i386) |
| 493 UpdatePackageListsI386() { | 542 UpdatePackageListsI386() { |
| 494 local package_list="${TMP}/Packages.wheezy_i386.bz2" | 543 local package_list="${TMP}/Packages.wheezy_i386.bz2" |
| 495 DownloadOrCopy ${PACKAGE_LIST_I386} ${package_list} | 544 DownloadOrCopy ${PACKAGE_LIST_I386} ${package_list} |
| 545 VerifyPackageListing ${PACKAGE_FILE_I386} ${package_list} | |
| 496 bzcat ${package_list} | egrep '^(Package:|Filename:)' > ${TMP}/Packages | 546 bzcat ${package_list} | egrep '^(Package:|Filename:)' > ${TMP}/Packages |
| 497 | 547 |
| 498 GeneratePackageList ${DEBIAN_DEP_LIST_I386} "${DEBIAN_PACKAGES}" | 548 GeneratePackageList ${DEBIAN_DEP_LIST_I386} "${DEBIAN_PACKAGES}" |
| 499 } | 549 } |
| 500 | 550 |
| 501 if [ $# -eq 0 ] ; then | 551 if [ $# -eq 0 ] ; then |
| 502 echo "ERROR: you must specify a mode on the commandline" | 552 echo "ERROR: you must specify a mode on the commandline" |
| 503 echo | 553 echo |
| 504 Usage | 554 Usage |
| 505 exit 1 | 555 exit 1 |
| 506 elif [ "$(type -t $1)" != "function" ]; then | 556 elif [ "$(type -t $1)" != "function" ]; then |
| 507 echo "ERROR: unknown function '$1'." >&2 | 557 echo "ERROR: unknown function '$1'." >&2 |
| 508 echo "For help, try:" | 558 echo "For help, try:" |
| 509 echo " $0 help" | 559 echo " $0 help" |
| 510 exit 1 | 560 exit 1 |
| 511 else | 561 else |
| 512 ChangeDirectory | 562 ChangeDirectory |
| 513 SetEnvironmentVariables "$1" | 563 SetEnvironmentVariables "$1" |
| 514 SanityCheck | 564 SanityCheck |
| 515 "$@" | 565 "$@" |
| 516 fi | 566 fi |
| OLD | NEW |