It is stated in the Ethereum yellow paper:
codeHash: The hash of the EVM code of this account—this is the code that gets executed should this address receive a message call; it is immutable and thus, unlike all other fields, can-not be changed after construction. All such code fragments are contained in the state database un-der their corresponding hashes for later retrieval. This hash is formally denoted σ[a]c, and thus the code may be denoted as b, given that KEC(b) = σ[a]c.
However, later on, in the Contract Creation section depicting the contract deployment scenario (so not an external address):
The account’s nonce is initially defined as zero, the balance as the value passed, the storage as empty and the code hash as the Keccak 256-bit hash of the empty string;
states that codeHash is set to a hash of an empty string after contract deployment.
The question is: What is set in the codeHash variable after contract deployment? It seems to me that these two quotations are contradictory, one stating the codeHash variable contains the hash of the contract code, the other the hash of an empty string.