diff --git a/Cabal.cabal b/Cabal.cabal
--- a/Cabal.cabal
+++ b/Cabal.cabal
@@ -1,5 +1,5 @@
 name: Cabal
-version: 1.22.2.0
+version: 1.22.3.0
 copyright: 2003-2006, Isaac Jones
            2005-2011, Duncan Coutts
 license: BSD3
diff --git a/Distribution/PackageDescription/Check.hs b/Distribution/PackageDescription/Check.hs
--- a/Distribution/PackageDescription/Check.hs
+++ b/Distribution/PackageDescription/Check.hs
@@ -692,6 +692,11 @@
         "'ghc-prof-options: -auto-all' is fine during development, but "
         ++ "not recommended in a distributed package. "
 
+  , checkProfFlags ["-fprof-auto"] $
+      PackageDistSuspicious $
+        "'ghc-prof-options: -fprof-auto' is fine during development, but "
+        ++ "not recommended in a distributed package. "
+
   , check ("-threaded" `elem` lib_ghc_options) $
       PackageDistSuspicious $
            "'ghc-options: -threaded' has no effect for libraries. It should "
diff --git a/Distribution/Simple/GHCJS.hs b/Distribution/Simple/GHCJS.hs
--- a/Distribution/Simple/GHCJS.hs
+++ b/Distribution/Simple/GHCJS.hs
@@ -101,20 +101,20 @@
     }
     anyVersion (userMaybeSpecifyPath "ghcjs-pkg" hcPkgPath conf1)
 
-  Just ghcjsPkgGhcVersion <- findGhcjsPkgGhcVersion
-                               verbosity (programPath ghcjsPkgProg)
+  Just ghcjsPkgGhcjsVersion <- findGhcjsPkgGhcjsVersion
+                                  verbosity (programPath ghcjsPkgProg)
 
-  when (ghcjsVersion /= ghcjsPkgVersion) $ die $
+  when (ghcjsVersion /= ghcjsPkgGhcjsVersion) $ die $
        "Version mismatch between ghcjs and ghcjs-pkg: "
     ++ programPath ghcjsProg ++ " is version " ++ display ghcjsVersion ++ " "
-    ++ programPath ghcjsPkgProg ++ " is version " ++ display ghcjsPkgVersion
+    ++ programPath ghcjsPkgProg ++ " is version " ++ display ghcjsPkgGhcjsVersion
 
-  when (ghcjsGhcVersion /= ghcjsPkgGhcVersion) $ die $
+  when (ghcjsGhcVersion /= ghcjsPkgVersion) $ die $
        "Version mismatch between ghcjs and ghcjs-pkg: "
     ++ programPath ghcjsProg
     ++ " was built with GHC version " ++ display ghcjsGhcVersion ++ " "
     ++ programPath ghcjsPkgProg
-    ++ " was built with GHC version " ++ display ghcjsPkgGhcVersion
+    ++ " was built with GHC version " ++ display ghcjsPkgVersion
 
   -- be sure to use our versions of hsc2hs, c2hs, haddock and ghc
   let hsc2hsProgram' =
@@ -870,9 +870,9 @@
 findGhcjsGhcVersion verbosity pgm =
   findProgramVersion "--numeric-ghc-version" id verbosity pgm
 
-findGhcjsPkgGhcVersion :: Verbosity -> FilePath -> IO (Maybe Version)
-findGhcjsPkgGhcVersion verbosity pgm =
-  findProgramVersion "--numeric-ghc-version" id verbosity pgm
+findGhcjsPkgGhcjsVersion :: Verbosity -> FilePath -> IO (Maybe Version)
+findGhcjsPkgGhcjsVersion verbosity pgm =
+  findProgramVersion "--numeric-ghcjs-version" id verbosity pgm
 
 -- -----------------------------------------------------------------------------
 -- Registering
diff --git a/Distribution/Simple/Program/Builtin.hs b/Distribution/Simple/Program/Builtin.hs
--- a/Distribution/Simple/Program/Builtin.hs
+++ b/Distribution/Simple/Program/Builtin.hs
@@ -144,9 +144,10 @@
     programFindVersion = findProgramVersion "--numeric-ghcjs-version" id
   }
 
+-- note: version is the version number of the GHC version that ghcjs-pkg was built with
 ghcjsPkgProgram :: Program
 ghcjsPkgProgram = (simpleProgram "ghcjs-pkg") {
-    programFindVersion = findProgramVersion "--ghcjs-version" $ \str ->
+    programFindVersion = findProgramVersion "--version" $ \str ->
       -- Invoking "ghcjs-pkg --version" gives a string like
       -- "GHCJS package manager version 6.4.1"
       case words str of
diff --git a/Distribution/Simple/Setup.hs b/Distribution/Simple/Setup.hs
--- a/Distribution/Simple/Setup.hs
+++ b/Distribution/Simple/Setup.hs
@@ -266,7 +266,10 @@
 -- * Config flags
 -- ------------------------------------------------------------
 
--- | Flags to @configure@ command
+-- | Flags to @configure@ command.
+--
+-- IMPORTANT: every time a new flag is added, 'D.C.Setup.filterConfigureFlags'
+-- should be updated.
 data ConfigFlags = ConfigFlags {
     --FIXME: the configPrograms is only here to pass info through to configure
     -- because the type of configure is constrained by the UserHooks.
@@ -1653,7 +1656,7 @@
 replCommand :: ProgramConfiguration -> CommandUI ReplFlags
 replCommand progConf = CommandUI
   { commandName         = "repl"
-  , commandSynopsis     = 
+  , commandSynopsis     =
       "Open an interpreter session for the given component."
   , commandDescription  = Just $ \pname -> wrapText $
          "If the current directory contains no package, ignores COMPONENT "
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,4 +1,9 @@
 -*-change-log-*-
+1.22.3.0 Ryan Thomas <ryan@ryant.org> April 2015
+	* Fix for the ghcjs-pkg version number handling (Luite Stegeman)
+	* filterConfigureFlags: filter more flags (Mikhail Glushenkov)
+	* Cabal check will fail on -fprof-auto passed as a ghc-option - Fixes #2479 (John Chee)
+
 1.22.2.0 Ryan Thomas <ryan@ryant.org> March 2015
 	* Don't pass '--{en,dis}able-profiling' to old setup.
 	* Add -Wall police
