Preheat oven to 325°F.
Remove neck, heart, gizzard, and liver from turkey. Reserve neck, heart, and gizzard for Homemade Turkey Stock.
Trim excess fat from onion, celery, 1 tablespoon rosemary, ½ teaspoon salt, and ¼ teaspoon pepper. Stuff turkey cavity with onion mixture.
Tie ends of legs with twine. Lift wing tips up and over back; tuck under bird.
Place a roasting rack coated with cooking spray in a roasting pan. Place turkey, breast side up, on rack.
Brush with butter; sprinkle evenly with 1 teaspoon salt and ¼ teaspoon pepper.
Pour ⅓ cup Homemade Turkey Stock into bottom of pan. Insert a meat thermometer into meaty part of thigh, making sure not to touch bone.
Cover turkey breast tightly with foil. Bake at 325°F for 2 hours, basting with ⅓ cup Homemade Turkey Stock every 30 minutes.
Remove foil; bake an additional 1 ½ hours or until thermometer registers 165°F, basting every 30 minutes with ⅔ cup total.
Remove turkey from oven; let stand 20 minutes. Discard skin.
Place a drip-top plastic bag inside a 2-cup glass measure. Pour pan drippings into bag; let stand 10 minutes.
Seal bag, and snip off 1 bottom corner of bag. Drain drippings into a measuring cup, stopping before the fat layer reaches the opening. Reserve 2 tablespoons fat.
Heat 2 tablespoons reserved fat in bottom of roasting pan over medium heat. Add flour, stirring with a whisk. Cook 1 minute, stirring constantly.
Stir in pan drippings mixture. Combine water and cornstarch, stirring with a whisk. Add cornstarch mixture to pan, stirring with a whisk.
Bring to a boil, stirring frequently. Add 1 tablespoon rosemary. Reduce heat, and simmer 5 minutes or until sauce thickens.
Stir in ¼ teaspoon salt and ¼ teaspoon pepper. Serve gravy with turkey.
