Releases/Firefox 15.0b6/BuildNotes: Difference between revisions

(initial setup)
 
(push to google play)
 
(12 intermediate revisions by 2 users not shown)
Line 4: Line 4:
<small>
<small>
<strike>
<strike>
</strike>
</small>
<strong>
* [[Release:Release_Automation_on_Mercurial:Preparation#L10N_Changesets | Ship the l10n milestone]] {{DesktopTag}} {{MobileTag}} {{ReleaseTag}} {{BetaTag}}
* [[Release:Release_Automation_on_Mercurial:Preparation#L10N_Changesets | Ship the l10n milestone]] {{DesktopTag}} {{MobileTag}} {{ReleaseTag}} {{BetaTag}}
</strong>
* [[Release:Release_Automation_on_Mercurial:Starting_a_Release#Setting_reserved_slaves | Set reserved_slaves]] {{DesktopTag}} {{MobileTag}} {{AllTag}}
* [[Release:Release_Automation_on_Mercurial:Starting_a_Release#Setting_reserved_slaves | Set reserved_slaves]] {{DesktopTag}} {{MobileTag}} {{AllTag}}
* [[Release:Release_Automation_on_Mercurial:Starting_a_Release#Locking_slaves | Check to make sure you have all of the different types of slaves that you need]] {{DesktopTag}} {{MobileTag}} {{AllTag}}
* [[Release:Release_Automation_on_Mercurial:Starting_a_Release#Locking_slaves | Check to make sure you have all of the different types of slaves that you need]] {{DesktopTag}} {{MobileTag}} {{AllTag}}
Line 25: Line 21:
* [[Release:Release_Automation_on_Mercurial:Updates#Check_Throttling | Verify throttling]] {{DesktopTag}} {{ReleaseTag}}
* [[Release:Release_Automation_on_Mercurial:Updates#Check_Throttling | Verify throttling]] {{DesktopTag}} {{ReleaseTag}}
-->
-->
* [[Release:Release_Automation_on_Mercurial:Updates#Push_snippets | Run pushsnip]] {{DesktopTag}} {{AllTag}}
</strike>
</small>
<strong>
</strong>
* [[Release:Release_Automation_on_Mercurial:Updates#Publish_Fennec | Publish Fennec]] {{MobileTag}} {{ReleaseTag}} {{BetaTag}}
* [[Release:Release_Automation_on_Mercurial:Updates#Publish_Fennec | Publish Fennec]] {{MobileTag}} {{ReleaseTag}} {{BetaTag}}
* [[Release:Release_Automation_on_Mercurial:Updates#Push_snippets | Run pushsnip]] {{DesktopTag}} {{AllTag}}
<!--
<!--
* [[Release:Release_Automation_on_Mercurial:Updates#Update_XULRunner_wiki_page | Update XULRunner wiki pages]] {{DesktopTag}} {{ReleaseTag}}
* [[Release:Release_Automation_on_Mercurial:Updates#Update_XULRunner_wiki_page | Update XULRunner wiki pages]] {{DesktopTag}} {{ReleaseTag}}
Line 38: Line 38:
release engineer: [[Hwine]] <br />
release engineer: [[Hwine]] <br />
buildbot master: builbot-master13
buildbot master: builbot-master13
== Build 1 ==
* l10n locales shipped for firefox & fennec
** url for firefox: https://l10n.mozilla.org/shipping/l10n-changesets?ms=fx15_beta_b6
* did clobber for grins
* reserved slaves:
    [cltbld@buildbot-master13 ~]$ cd /builds/buildbot/build1/master/
    [cltbld@buildbot-master13 master]$ cat reserved_slaves
    0
    [cltbld@buildbot-master13 master]$ echo 8 > !:$
    echo 8 > reserved_slaves
    [cltbld@buildbot-master13 master]$ cat !:$
    cat reserved_slaves
    8
    [cltbld@buildbot-master13 master]$
* have enough slaves to start - will wrangle more after build starts
** grabbed lion-r5 builders: <tt>bld-lion-r5-0{68,71,73,75,83,86}</tt>
* update & reconfig via fabric
* release-sanity dry run passed:
    (build1)[cltbld@buildbot-master13 master]$ PYTHONPATH=. python \
    ../tools/buildbot-helpers/release_sanity.py -u hwine -V 15.0b6 --branch \
    mozilla-beta --build-number 1 --release-config \
    release-firefox-mozilla-beta.py --release-config \
    release-fennec-mozilla-beta.py --products firefox,fennec --dryrun \
    localhost:9001
* release automation start:
    (build1)[cltbld@buildbot-master13 master]$ PYTHONPATH=. python \
        ../tools/buildbot-helpers/release_sanity.py -u hwine -V 15.0b6 --branch \
        mozilla-beta --build-number 1 --release-config \
        release-firefox-mozilla-beta.py --release-config \
        release-fennec-mozilla-beta.py --products firefox,fennec localhost:9001
    ...
    2012-08-21 16:51:36,142 : INFO : command: START
    2012-08-21 16:51:36,143 : INFO : command: buildbot sendchange --username hwine --master localhost:9001 --branch releases/mozilla-beta -p products:firefox,fennec -p script_repo_revision:FIREFOX_15_0b6_RELEASE release_build
    2012-08-21 16:51:36,143 : INFO : command: cwd: /builds/buildbot/build1/master
    2012-08-21 16:51:36,143 : INFO : command: output:
    change sent successfully
    2012-08-21 16:51:36,527 : INFO : command: END (0.38s elapsed)


== Build 1 ==
=== Failed Fennec Native repacks ===
Fennec Native repacks failed with:
<pre>
Traceback (most recent call last):
  File "scripts/scripts/mobile_l10n.py", line 501, in <module>
    single_locale.run()
  File "/builds/slave/rel-m-beta-andrd-rpk-1/scripts/mozharness/base/script.py", line 620, in run
    self._possibly_run_method(method_name, error_if_missing=True)
  File "/builds/slave/rel-m-beta-andrd-rpk-1/scripts/mozharness/base/script.py", line 591, in _possibly_run_method
    return getattr(self, method_name)()
  File "scripts/scripts/mobile_l10n.py", line 331, in setup
    env = self.query_repack_env()
  File "scripts/scripts/mobile_l10n.py", line 133, in query_repack_env
    rc = self.query_release_config()
  File "/builds/slave/rel-m-beta-andrd-rpk-1/scripts/mozharness/mozilla/release.py", line 41, in query_release_config
    self.release_config['old_version'] = rc['oldVersion']
KeyError: 'oldVersion'
</pre>
 
Tracked in {{bug|773290}}, bhearsum will be finding a fix ET morning on August 22nd. These block signing even the en-US build, so bhearsum re-added old* variables to the fennec config as a workaround. The updated config was transplanted to the production branch and retagged with FENNEC_15_0b6_{RELEASE,BUILD1}. Then, 'rebuild' was used on the repack chunks to get them going again.
 
=== 'ach' repacks failed ===
The 'ach' locale was newly added in this release and failed to build across all platforms. This was filed in {{bug|784577}} and fixed by Rail. Afterwards, the standalone repack builders for linux, linux64, and mac were triggered with the following data to build ach:
* revision: FIREFOX_15_0b6_RELEASE
* properties:
** locale: ach
** release_config: mozilla/release-firefox-mozilla-beta.py
** script_repo_revision: FIREFOX_15_0b6_RELEASE
 
After those completed, "force build" was used on the linux, linux64, and mac "repack complete" builders to unwedge the automation. See below for Windows stuff.
 
=== No slaves available for Windows repacks ===
While fixing up the 'ach' repacks bhearsum+rail noticed that Windows repacks hadn't started. This was because there was no slaves available for the repacks. bhearsum locked 6 mw32-ix slaves to bm13 and rebooted them to move over. Because Windows repacks never ran we never hit the 'ach' issue with them and thus don't need to use the standalone builder for win32.
 
=== Preemptive fix of the patcher config ===
When the Thunderbird 15.0b5 updates builder failed, bhearsum noticed that he hadn't updated the patcher-configs in the tools repo after last week's betas. Because Firefox updates hadn't run yet, we were able to fix this preemptively with [https://bugzilla.mozilla.org/attachment.cgi?id=654179&action=edit this patch]. We retagged the repo with FIREFOX_15_0b6_{RELEASE,BUILD1} to make sure the automation picks up the new configs.
 
=== Normal notes (con't) ===
* signed android builds (after above repacks completed successfully):
    [cltsign@signing1 ~]$ cd  ~/signing-work/mozharness
    [cltsign@signing1 mozharness]$ hg pull -u
    pulling from http://hg.mozilla.org/build/mozharness/
    searching for changes
    adding changesets
    adding manifests
    adding file changes
    added 5 changesets with 8 changes to 6 files
    6 files updated, 0 files merged, 0 files removed, 0 files unresolved
    [cltsign@signing1 mozharness]$ hg up -C
    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
    [cltsign@signing1 mozharness]$ cd ..
    [cltsign@signing1 signing-work]$ python2.6 mozharness/scripts/sign_android.py --config-file signing/android_mozilla-beta.py --platform android
    ...
    19:17:41    INFO - ##### SignAndroid summary:
    19:17:41    INFO - #####
    19:17:41    INFO - Downloaded 29 of 29 unsigned apks successfully.
    19:17:41    INFO - Signed 29 of 29 apks successfully.
    19:17:41    INFO - Copying logs to upload dir...
    19:17:41    INFO - mkdir: /home/cltsign/signing-work/beta/upload/logs
 
* A linux repack failed (only 1/6, rest ran fine), so restarted failed repack:
** failing run log http://buildbot-master13.build.mozilla.org:8001/builders/release-mozilla-beta-linux_repack_1%2F6/builds/18/steps/run_script/logs/stdio
 
=== Update verify notes ===
* For 14.0 and earlier, we had this diff in the full checks:
<pre>
diff -r source/thunderbird/defaults/pref/channel-prefs.js target/thunderbird/defaults/pref/channel-prefs.js
1a2,5
> /* This Source Code Form is subject to the terms of the Mozilla Public
>  * License, v. 2.0. If a copy of the MPL was not distributed with this
>  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
>
WARN: non-binary files found in diff
</pre>
 
This is related to {{bug|750294}} and happens because channel-prefs.js doesn't get updated through MARs. We'll see this difference for <= 14.0 -> latest in perpetuity.
 
* For 14.0 and earlier on Linux, Linux64 and Windows:
Only in source/firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}: preview.png
 
This happened because preview.png wasn't added to removed-files.in when {{bug|753618}}. It's since been added ({{bug|783241}}). Nothing to worry about here.
=== Normal notes (con't) ===
* reset reserved slaves
    [cltbld@buildbot-master13 ~]$ cd /builds/buildbot/build1/master/
    [cltbld@buildbot-master13 master]$ cat reserved_slaves
    8
    [cltbld@buildbot-master13 master]$ echo 0 > reserved_slaves
    [cltbld@buildbot-master13 master]$ cat reserved_slaves
    0
    [cltbld@buildbot-master13 master]$
* unlocked slaves
* push ff beta:
    [hwine@dp-ausstage01 ~]$ sudo su - ffxbld
    [ffxbld@dp-ausstage01 ~]$ set -o vi
    [ffxbld@dp-ausstage01 ~]$ cd /opt/aus2/snippets/staging
    [ffxbld@dp-ausstage01 staging]$ ~/bin/pushsnip Firefox-15.0b6-build1
    ---------------------------------------------------------------------------
    Updating PHX1:
    ...
    Firefox/15.0/WINNT_x86-msvc/20120814224555/zu/beta/partial.txt
            446 100%    0.32kB/s    0:00:01 (xfer#18200, to-check=0/53032)
   
    sent 9944749 bytes  received 381994 bytes  16173.44 bytes/sec
    total size is 8101589  speedup is 0.78
   
    Touching /opt/aus2/incoming/3/Firefox
    [ffxbld@dp-ausstage01 staging]$
* push fennec to google play
** download apk
    0 [Hal@Hals-MacBook-Air Desktop]
    $ curl -O 'http://ftp.mozilla.org/pub/mozilla.org/mobile/candidates/15.0b6-candidates/build1/android/multi/fennec-15.0b6.multi.android-arm.apk'
      % Total    % Received % Xferd  Average Speed  Time    Time    Time  Current
                                    Dload  Upload  Total  Spent    Left  Speed
    100 18.3M  100 18.3M    0    0  2770k      0  0:00:06  0:00:06 --:--:-- 3033k
    0 [Hal@Hals-MacBook-Air Desktop]
    $ md5 -r fennec-15.0b6.multi.android-arm.apk
    2d8f2b4ab042be57c4ae8e3a0b068206 fennec-15.0b6.multi.android-arm.apk
    0 [Hal@Hals-MacBook-Air Desktop]
** upload & activate on google play: versionCode: 2012082117
** push files
    [cltbld@buildbot-master13 ~]$ ssh -l ffxbld -i ~/.ssh/ffxbld_dsa stage.mozilla.org
    Last login: Wed Aug 22 14:58:55 2012 from zlb1.dmz.scl3.mozilla.com
    -bash-4.1$ mv -i push_fennec.sh push_fennec.sh
    push_fennec.sh      push_fennec.sh.bak
    -bash-4.1$ mv -i push_fennec.sh push_fennec.sh.old
    -bash-4.1$ curl -O http://hg.mozilla.org/build/braindump/raw-file/tip/releases-related/push_fennec.sh
      % Total    % Received % Xferd  Average Speed  Time    Time    Time  Current
                                    Dload  Upload  Total  Spent    Left  Speed
    110  776  110  776    0    0    704      0  0:00:01  0:00:01 --:--:--  705
    110  776  110  776    0    0    704      0  0:00:01  0:00:01 --:--:--  705
    -bash-4.1$ head push_fennec.sh
    #!/bin/bash
    # VERSION & BUILDNUM are the "version" and "buildNumber" from the
    # release's cofiguration file
    export VERSION=15.0b6
    export BUILDNUM=1
    fennec-15.0b6.zh-TW.android-arm.apk
   
    sent 18528269 bytes  received 34 bytes  7411321.20 bytes/sec
    total size is 18525874  speedup is 1.00
    -bash-4.1$ echo $?
    0
    -bash-4.1$

Latest revision as of 01:07, 24 August 2012

Be sure to take notes on manual steps and any problems you encounter.

Checklist

Notes

tracking bug: bug 772032
release engineer: Hwine
buildbot master: builbot-master13

Build 1

   [cltbld@buildbot-master13 ~]$ cd /builds/buildbot/build1/master/
   [cltbld@buildbot-master13 master]$ cat reserved_slaves 
   0
   [cltbld@buildbot-master13 master]$ echo 8 > !:$
   echo 8 > reserved_slaves
   [cltbld@buildbot-master13 master]$ cat !:$
   cat reserved_slaves
   8
   [cltbld@buildbot-master13 master]$ 
  • have enough slaves to start - will wrangle more after build starts
    • grabbed lion-r5 builders: bld-lion-r5-0{68,71,73,75,83,86}
  • update & reconfig via fabric
  • release-sanity dry run passed:
   (build1)[cltbld@buildbot-master13 master]$ PYTHONPATH=. python \
   ../tools/buildbot-helpers/release_sanity.py -u hwine -V 15.0b6 --branch \
   mozilla-beta --build-number 1 --release-config \
   release-firefox-mozilla-beta.py --release-config \
   release-fennec-mozilla-beta.py --products firefox,fennec --dryrun \
   localhost:9001
  • release automation start:
   (build1)[cltbld@buildbot-master13 master]$ PYTHONPATH=. python \
       ../tools/buildbot-helpers/release_sanity.py -u hwine -V 15.0b6 --branch \
       mozilla-beta --build-number 1 --release-config \
       release-firefox-mozilla-beta.py --release-config \
       release-fennec-mozilla-beta.py --products firefox,fennec localhost:9001
   ...
   2012-08-21 16:51:36,142 : INFO : command: START
   2012-08-21 16:51:36,143 : INFO : command: buildbot sendchange --username hwine --master localhost:9001 --branch releases/mozilla-beta -p products:firefox,fennec -p script_repo_revision:FIREFOX_15_0b6_RELEASE release_build
   2012-08-21 16:51:36,143 : INFO : command: cwd: /builds/buildbot/build1/master
   2012-08-21 16:51:36,143 : INFO : command: output:
   change sent successfully
   2012-08-21 16:51:36,527 : INFO : command: END (0.38s elapsed)

Failed Fennec Native repacks

Fennec Native repacks failed with:

Traceback (most recent call last):
  File "scripts/scripts/mobile_l10n.py", line 501, in <module>
    single_locale.run()
  File "/builds/slave/rel-m-beta-andrd-rpk-1/scripts/mozharness/base/script.py", line 620, in run
    self._possibly_run_method(method_name, error_if_missing=True)
  File "/builds/slave/rel-m-beta-andrd-rpk-1/scripts/mozharness/base/script.py", line 591, in _possibly_run_method
    return getattr(self, method_name)()
  File "scripts/scripts/mobile_l10n.py", line 331, in setup
    env = self.query_repack_env()
  File "scripts/scripts/mobile_l10n.py", line 133, in query_repack_env
    rc = self.query_release_config()
  File "/builds/slave/rel-m-beta-andrd-rpk-1/scripts/mozharness/mozilla/release.py", line 41, in query_release_config
    self.release_config['old_version'] = rc['oldVersion']
KeyError: 'oldVersion'

Tracked in bug 773290, bhearsum will be finding a fix ET morning on August 22nd. These block signing even the en-US build, so bhearsum re-added old* variables to the fennec config as a workaround. The updated config was transplanted to the production branch and retagged with FENNEC_15_0b6_{RELEASE,BUILD1}. Then, 'rebuild' was used on the repack chunks to get them going again.

'ach' repacks failed

The 'ach' locale was newly added in this release and failed to build across all platforms. This was filed in bug 784577 and fixed by Rail. Afterwards, the standalone repack builders for linux, linux64, and mac were triggered with the following data to build ach:

  • revision: FIREFOX_15_0b6_RELEASE
  • properties:
    • locale: ach
    • release_config: mozilla/release-firefox-mozilla-beta.py
    • script_repo_revision: FIREFOX_15_0b6_RELEASE

After those completed, "force build" was used on the linux, linux64, and mac "repack complete" builders to unwedge the automation. See below for Windows stuff.

No slaves available for Windows repacks

While fixing up the 'ach' repacks bhearsum+rail noticed that Windows repacks hadn't started. This was because there was no slaves available for the repacks. bhearsum locked 6 mw32-ix slaves to bm13 and rebooted them to move over. Because Windows repacks never ran we never hit the 'ach' issue with them and thus don't need to use the standalone builder for win32.

Preemptive fix of the patcher config

When the Thunderbird 15.0b5 updates builder failed, bhearsum noticed that he hadn't updated the patcher-configs in the tools repo after last week's betas. Because Firefox updates hadn't run yet, we were able to fix this preemptively with this patch. We retagged the repo with FIREFOX_15_0b6_{RELEASE,BUILD1} to make sure the automation picks up the new configs.

Normal notes (con't)

  • signed android builds (after above repacks completed successfully):
   [cltsign@signing1 ~]$ cd  ~/signing-work/mozharness
   [cltsign@signing1 mozharness]$ hg pull -u
   pulling from http://hg.mozilla.org/build/mozharness/
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 5 changesets with 8 changes to 6 files
   6 files updated, 0 files merged, 0 files removed, 0 files unresolved
   [cltsign@signing1 mozharness]$ hg up -C
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   [cltsign@signing1 mozharness]$ cd ..
   [cltsign@signing1 signing-work]$ python2.6 mozharness/scripts/sign_android.py --config-file signing/android_mozilla-beta.py --platform android
   ...
   19:17:41     INFO - ##### SignAndroid summary:
   19:17:41     INFO - #####
   19:17:41     INFO - Downloaded 29 of 29 unsigned apks successfully.
   19:17:41     INFO - Signed 29 of 29 apks successfully.
   19:17:41     INFO - Copying logs to upload dir...
   19:17:41     INFO - mkdir: /home/cltsign/signing-work/beta/upload/logs

Update verify notes

  • For 14.0 and earlier, we had this diff in the full checks:
diff -r source/thunderbird/defaults/pref/channel-prefs.js target/thunderbird/defaults/pref/channel-prefs.js
1a2,5
> /* This Source Code Form is subject to the terms of the Mozilla Public
>  * License, v. 2.0. If a copy of the MPL was not distributed with this
>  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
> 
WARN: non-binary files found in diff

This is related to bug 750294 and happens because channel-prefs.js doesn't get updated through MARs. We'll see this difference for <= 14.0 -> latest in perpetuity.

  • For 14.0 and earlier on Linux, Linux64 and Windows:

Only in source/firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}: preview.png

This happened because preview.png wasn't added to removed-files.in when bug 753618. It's since been added (bug 783241). Nothing to worry about here.

Normal notes (con't)

  • reset reserved slaves
   [cltbld@buildbot-master13 ~]$ cd /builds/buildbot/build1/master/
   [cltbld@buildbot-master13 master]$ cat reserved_slaves 
   8
   [cltbld@buildbot-master13 master]$ echo 0 > reserved_slaves 
   [cltbld@buildbot-master13 master]$ cat reserved_slaves 
   0
   [cltbld@buildbot-master13 master]$ 
  • unlocked slaves
  • push ff beta:
   [hwine@dp-ausstage01 ~]$ sudo su - ffxbld
   [ffxbld@dp-ausstage01 ~]$ set -o vi
   [ffxbld@dp-ausstage01 ~]$ cd /opt/aus2/snippets/staging
   [ffxbld@dp-ausstage01 staging]$ ~/bin/pushsnip Firefox-15.0b6-build1
   ---------------------------------------------------------------------------
   Updating PHX1:
   ...
   Firefox/15.0/WINNT_x86-msvc/20120814224555/zu/beta/partial.txt
            446 100%    0.32kB/s    0:00:01 (xfer#18200, to-check=0/53032)
   
   sent 9944749 bytes  received 381994 bytes  16173.44 bytes/sec
   total size is 8101589  speedup is 0.78
   
   Touching /opt/aus2/incoming/3/Firefox
   [ffxbld@dp-ausstage01 staging]$
  • push fennec to google play
    • download apk
   0 [Hal@Hals-MacBook-Air Desktop]
   $ curl -O 'http://ftp.mozilla.org/pub/mozilla.org/mobile/candidates/15.0b6-candidates/build1/android/multi/fennec-15.0b6.multi.android-arm.apk'
     % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                    Dload  Upload   Total   Spent    Left  Speed
   100 18.3M  100 18.3M    0     0  2770k      0  0:00:06  0:00:06 --:--:-- 3033k
   0 [Hal@Hals-MacBook-Air Desktop]
   $ md5 -r fennec-15.0b6.multi.android-arm.apk 
   2d8f2b4ab042be57c4ae8e3a0b068206 fennec-15.0b6.multi.android-arm.apk
   0 [Hal@Hals-MacBook-Air Desktop]
    • upload & activate on google play: versionCode: 2012082117
    • push files
   [cltbld@buildbot-master13 ~]$ ssh -l ffxbld -i ~/.ssh/ffxbld_dsa stage.mozilla.org
   Last login: Wed Aug 22 14:58:55 2012 from zlb1.dmz.scl3.mozilla.com
   -bash-4.1$ mv -i push_fennec.sh push_fennec.sh
   push_fennec.sh      push_fennec.sh.bak
   -bash-4.1$ mv -i push_fennec.sh push_fennec.sh.old
   -bash-4.1$ curl -O http://hg.mozilla.org/build/braindump/raw-file/tip/releases-related/push_fennec.sh
     % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                    Dload  Upload   Total   Spent    Left  Speed
   110   776  110   776    0     0    704      0  0:00:01  0:00:01 --:--:--   705
   110   776  110   776    0     0    704      0  0:00:01  0:00:01 --:--:--   705
   -bash-4.1$ head push_fennec.sh
   #!/bin/bash
   # VERSION & BUILDNUM are the "version" and "buildNumber" from the
   # release's cofiguration file
   export VERSION=15.0b6
   export BUILDNUM=1
   fennec-15.0b6.zh-TW.android-arm.apk
   
   sent 18528269 bytes  received 34 bytes  7411321.20 bytes/sec
   total size is 18525874  speedup is 1.00
   -bash-4.1$ echo $?
   0
   -bash-4.1$