xmlsec / python-xmlsec

Python bindings for the XML Security Library.
MIT License
94 stars 97 forks source link

Unable to (pip install xmlsec) since brew version 4.0.13 #254

Closed abdwebus closed 7 months ago

abdwebus commented 1 year ago

Hi,

I am using MacOS 13.2.1 (22D68), I didn't have any issue Installing xmlsec when I had brew version ~2.x.x. I've recently updated brew to version 4.0.13, and I haven't been able to pip install xmlsec since. Any idea what might this be? I have below dependencies installed

libxml2 = 2.10.4
libxmlsec1 = 1.3.0

The error that I am getting

pip install xmlsec
Collecting xmlsec
  Using cached xmlsec-1.3.13.tar.gz (64 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting lxml>=3.8
  Using cached lxml-4.9.2-cp38-cp38-macosx_10_15_x86_64.whl (4.7 MB)
Building wheels for collected packages: xmlsec
  Building wheel for xmlsec (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for xmlsec (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [65 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-13.2-x86_64-cpython-38
      creating build/lib.macosx-13.2-x86_64-cpython-38/xmlsec
      copying src/xmlsec/py.typed -> build/lib.macosx-13.2-x86_64-cpython-38/xmlsec
      copying src/xmlsec/tree.pyi -> build/lib.macosx-13.2-x86_64-cpython-38/xmlsec
      copying src/xmlsec/__init__.pyi -> build/lib.macosx-13.2-x86_64-cpython-38/xmlsec
      copying src/xmlsec/constants.pyi -> build/lib.macosx-13.2-x86_64-cpython-38/xmlsec
      copying src/xmlsec/template.pyi -> build/lib.macosx-13.2-x86_64-cpython-38/xmlsec
      running build_ext
      building 'xmlsec' extension
      creating build/temp.macosx-13.2-x86_64-cpython-38
      creating build/temp.macosx-13.2-x86_64-cpython-38/private
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders/3r
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442
      creating build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src
      clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -DOPENSSL_NO_SSL3 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -D__XMLSEC_FUNCTION__=__func__ -DXMLSEC_NO_FTP=1 -DXMLSEC_NO_MD5=1 -DXMLSEC_NO_GOST=1 -DXMLSEC_NO_GOST2012=1 -DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1 -DXMLSEC_CRYPTO_OPENSSL=1 -DMODULE_NAME=xmlsec -DMODULE_VERSION=1.3.13 -I/usr/local/Cellar/libxmlsec1/1.3.0/include/xmlsec1 -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/openssl@1.1/include/openssl -I/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-build-env-wv9r2lgj/overlay/lib/python3.8/site-packages/lxml/includes -I/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-build-env-wv9r2lgj/overlay/lib/python3.8/site-packages/lxml -I/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-build-env-wv9r2lgj/overlay/lib/python3.8/site-packages/lxml/includes/libxml -I/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-build-env-wv9r2lgj/overlay/lib/python3.8/site-packages/lxml/includes/libxslt -I/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-build-env-wv9r2lgj/overlay/lib/python3.8/site-packages/lxml/includes/libexslt -I/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-build-env-wv9r2lgj/overlay/lib/python3.8/site-packages/lxml/includes/extlibs -I/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-build-env-wv9r2lgj/overlay/lib/python3.8/site-packages/lxml/includes/__pycache__ -I/Users/abed/.pyenv/versions/3.8.13/include/python3.8 -c /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/constants.c -o build/temp.macosx-13.2-x86_64-cpython-38/private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/constants.o -g -std=c99 -fPIC -fno-strict-aliasing -Wno-error=declaration-after-statement -Werror=implicit-function-declaration -Os
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/constants.c:319:5: error: use of undeclared identifier 'xmlSecSoap11Ns'
          PYXMLSEC_ADD_NS_CONSTANT(Soap11Ns, "SOAP11");
          ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/constants.c:304:46: note: expanded from macro 'PYXMLSEC_ADD_NS_CONSTANT'
          tmp = PyUnicode_FromString((const char*)(JOIN(xmlSec, name))); \
                                                   ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/common.h:19:19: note: expanded from macro 'JOIN'
      #define JOIN(X,Y) DO_JOIN1(X,Y)
                        ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/common.h:20:23: note: expanded from macro 'DO_JOIN1'
      #define DO_JOIN1(X,Y) DO_JOIN2(X,Y)
                            ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/common.h:21:23: note: expanded from macro 'DO_JOIN2'
      #define DO_JOIN2(X,Y) X##Y
                            ^
      <scratch space>:60:1: note: expanded from here
      xmlSecSoap11Ns
      ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/constants.c:320:5: error: use of undeclared identifier 'xmlSecSoap12Ns'; did you mean 'xmlSecXPath2Ns'?
          PYXMLSEC_ADD_NS_CONSTANT(Soap12Ns, "SOAP12");
          ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/constants.c:304:46: note: expanded from macro 'PYXMLSEC_ADD_NS_CONSTANT'
          tmp = PyUnicode_FromString((const char*)(JOIN(xmlSec, name))); \
                                                   ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/common.h:19:19: note: expanded from macro 'JOIN'
      #define JOIN(X,Y) DO_JOIN1(X,Y)
                        ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/common.h:20:23: note: expanded from macro 'DO_JOIN1'
      #define DO_JOIN1(X,Y) DO_JOIN2(X,Y)
                            ^
      /private/var/folders/3r/5tl2g0hd1s5892x7v6_l80680000gp/T/pip-install-l82wgx3k/xmlsec_b1821a1b8b0e4f2e9d01654d56c1f442/src/common.h:21:23: note: expanded from macro 'DO_JOIN2'
      #define DO_JOIN2(X,Y) X##Y
                            ^
      <scratch space>:62:1: note: expanded from here
      xmlSecSoap12Ns
      ^
      /usr/local/Cellar/libxmlsec1/1.3.0/include/xmlsec1/xmlsec/strings.h:34:33: note: 'xmlSecXPath2Ns' declared here
      XMLSEC_EXPORT_VAR const xmlChar xmlSecXPath2Ns[];
                                      ^
      2 errors generated.
      error: command '/usr/bin/clang' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for xmlsec
Failed to build xmlsec
ERROR: Could not build wheels for xmlsec, which is required to install pyproject.toml-based projects
dpritchett commented 1 year ago

libxmlsec1 released v1.3.0 yesterday, guessing it's related 😵‍💫

Release 1.3.0 on GitHub

dpritchett commented 1 year ago

Can confirm that manually reverting to a copy of the last known good pre-1.3.0 xmlsec1 version (1.2.37) Formula fixed me up:

https://raw.githubusercontent.com/Homebrew/homebrew-core/7f35e6ede954326a10949891af2dba47bbe1fc17/Formula/libxmlsec1.rb

Specific workaround steps:

  1. brew edit libxmlsec1. An editor opens up, full of the contents of the latest downloaded xmlsec formula from GitHub or wherever they come from
  2. i paste in the contents of the last pre-1.3.0 brew formula and hit save
  3. Install that local formula: brew install /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/libxmlsec1.rb
  4. pip install xmlsec

References

dpritchett commented 1 year ago

Here's the PR that removed soap from xmlsec back in November: https://github.com/lsh123/xmlsec/pull/427

abdwebus commented 1 year ago

Thank you @dpritchett. Your workaround worked for me 👍

dpritchett commented 1 year ago

Hopefully #252 will be addressed soon so this can be fixed 🤞🏻

johnnymetz commented 1 year ago

Per the workaround above, I had to run brew unlink libxmlsec1 in between steps 2 and 3 and it worked for me.

D3X commented 1 year ago

A "better" (cleaner) workaround is to create a local tap and extract the previous version, like so:

brew tap-new $USER/local
brew extract --version=1.2.37 libxmlsec1 $USER/local
brew uninstall libxmlsec1
brew install $USER/local/libxmlsec1@1.2.37

Once python-xmlsec is updated to support libxmlsec1 1.3+, you can uninstall the extracted version and remove the tap by doing:

brew uninstall $USER/local/libxmlsec1@1.2.37
brew untap $USER/local

Edit: This no longer works, because there were new patch versions of libxmlsec1 released and the formula can't find the archive for 1.2.37 at the old URL. A quick fix is to edit the formula to point to the correct URL before installing it:

brew edit $USER/local/libxmlsec1@1.2.37

And update line 4 with the correct URL:

-  url "https://www.aleksey.com/xmlsec/download/xmlsec1-1.2.37.tar.gz"
+  url "https://www.aleksey.com/xmlsec/download/older-releases/xmlsec1-1.2.37.tar.gz"

Thanks to @karthicraghupathi for that!

srivastavashobhit-sl commented 1 year ago

@D3X, I am facing this error when using the workaround. (I am new to MacOS) ~ % brew tap-new $USER/local-2
Error: /opt/homebrew/Library/Taps/ssrivastava/homebrew-local-2/README.md already exists ~ % brew extract --version=1.2.37 libxmlsec1 $USER/local-2 ==> Searching repository history Error: Could not find libxmlsec1! The formula or version may not have existed.

xibolun commented 1 year ago

when you use brew 4.0.14 version, you should pay attention to brew home path is /opt/homebrew, not /usr/local/Homebrew;

i also workaround it with below method;

brew unlink libxmlsec1
brew install /opt/homebrew/opt/libxmlsec1/.brew/libxmlsec1.rb
pip install xmlsec

very much thank to @dpritchett : )

dingxiong commented 1 year ago

I need one more step

cd /opt/homebrew/opt/
ln -s libxmlsec1\@1.2.37 libxmlsec1
orionsparks commented 1 year ago

Anxiously awaiting this update on an M1.

MattFisher commented 1 year ago

brew extract --version=1.2.37 libxmlsec1 $USER/local

Doesn't seem to work (anymore?) - it returns

==> Searching repository history
Error: Could not find libxmlsec1! The formula or version may not have existed.

Using Homebrew 4.0.24-4-g9e747d8

vdejager commented 1 year ago

I can confirm that downgrading to libxmlsec1 1.2.37 worked. 1.3.1 broke our SAML workflow completely

dpritchett commented 1 year ago

brew edit seems to have broken in a recent update, so here's an even hackier workaround that almost fails but still got me what I needed:

Remove the official formula

> brew uninstall libxmlsec1
Uninstalling /opt/homebrew/Cellar/libxmlsec1/1.3.1_1... (220 files, 7.5MB)

Download the last known good formula and shove it into /tmp

> export DESIRED_SHA="7f35e6ede954326a10949891af2dba47bbe1fc17"

# ⚠️ this wget call will fail if you haven't exported DESIRED_SHA as in the preceding line
> wget -O /tmp/libxmlsec1.rb "https://raw.githubusercontent.com/Homebrew/homebrew-core/${DESIRED_SHA}/Formula/libxmlsec1.rb"

--2023-06-30 11:40:48--  https://raw.githubusercontent.com/Homebrew/homebrew-core/7f35e6ede954326a10949891af2dba47bbe1fc17/Formula/libxmlsec1.rb
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2932 (2.9K) [text/plain]
Saving to: ‘/tmp/libxmlsec1.rb’

/tmp/libxmlsec1.rb                          100%[=========================================================================================>]   2.86K  --.-KB/s    in 0s

2023-06-30 11:40:48 (25.9 MB/s) - ‘/tmp/libxmlsec1.rb’ saved [2932/2932]

Install the local copy of the last known good formula from /tmp

> brew install --formula /tmp/libxmlsec1.rb

==> Fetching libxmlsec1
==> Downloading https://ghcr.io/v2/homebrew/core/libxmlsec1/manifests/1.2.37
Already downloaded: /Users/daniel/Library/Caches/Homebrew/downloads/0cff6c77c178a7b4826e3146309166ec9d19a0a6580d47e5a1ebaf367cd6c7d0--libxmlsec1-1.2.37.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/libxmlsec1/blobs/sha256:26d6ebddf4e97431819583ad699228360886d81786b332084693d0ad34aa2c72
####################################################################################################################################################################### 100.0%
Warning: libxmlsec1 1.3.1_1 is available and more recent than version 1.2.37.
==> Pouring libxmlsec1--1.2.37.arm64_ventura.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libxmlsec1/1.2.37: 221 files, 6MB
==> Running `brew cleanup libxmlsec1`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /Users/daniel/Library/Caches/Homebrew/libxmlsec1--1.2.37... (1.2MB)
alexeocto commented 1 year ago

brew edit seems to have broken in a recent update, so here's an even hackier workaround that almost fails but still got me what I needed:

I got a 404 when using the wget link you provided, however the concept for this did work when I found an alternative source. Thanks a lot for pointing this out. Would have never solved this otherwise.

timothestes commented 1 year ago

@alexeocto Can you post the alternative source?

alexshadley commented 1 year ago

@timothestes total brew noob over here, but I was able to give the link from the original workaround to wget and it worked.

e.g.

https://raw.githubusercontent.com/Homebrew/homebrew-core/7f35e6ede954326a10949891af2dba47bbe1fc17/Formula/libxmlsec1.rb
tvuotila commented 1 year ago

I made a tap to install libxmlsec1@1.2.37 Usage:

brew uninstall libxmlsec1
brew install tvuotila/libxmlsec1/libxmlsec1@1.2.37

Undo:

brew uninstall libxmlsec1@1.2.37
brew untap tvuotila/libxmlsec1
alexeocto commented 1 year ago

@alexeocto Can you post the alternative source?

You can paste this code into a file called libxmlsec1.rb and then install using formula.

# Libxmlsec1 definition for 1.2.37. This includes the bottles for this version.

class Libxmlsec1 < Formula
  desc "XML security library"
  homepage "https://www.aleksey.com/xmlsec/"
  url "https://www.aleksey.com/xmlsec/download/older-releases/xmlsec1-1.2.37.tar.gz"
  sha256 "5f8dfbcb6d1e56bddd0b5ec2e00a3d0ca5342a9f57c24dffde5c796b2be2871c"
  license "MIT"

  livecheck do
    url "https://www.aleksey.com/xmlsec/download/older-releases/"
    regex(/href=.*?xmlsec1[._-]v?(\d+(?:\.\d+)+)\.t/i)
  end

  bottle do
    sha256 cellar: :any,                 arm64_ventura:  "26d6ebddf4e97431819583ad699228360886d81786b332084693d0ad34aa2c72"
    sha256 cellar: :any,                 arm64_monterey: "66646e0a3c47fe21b5d6257d2940c1cbaddd68fd71845ae21eb34275b2913db4"
    sha256 cellar: :any,                 arm64_big_sur:  "6520bff7f714071fc7a5925dc2335c5482ce59383386500e1f51680bf3e69850"
    sha256 cellar: :any,                 ventura:        "15faa359429f324b4d18e49c70b0832cf93eb052ad0ef74ccddf1a2db0a4aad5"
    sha256 cellar: :any,                 monterey:       "dfc4528593b38556559a49053f7b5e3a46ae07d844ad3412a65c22214624a932"
    sha256 cellar: :any,                 big_sur:        "d428a24cc5c8165e84718292cd4a7a21519b1ce1f46c82ffff0bc27216b8a573"
    sha256 cellar: :any,                 catalina:       "b67b572409b3d79387f621c9f28338d0ec99342477f50643ff3a6032b58133c6"
    sha256 cellar: :any_skip_relocation, x86_64_linux:   "a52005111565d460c6774d5c5be9c8a0db05e0a06dc8715b7c1f59ab4a66fcb0"
  end

  depends_on "pkg-config" => :build
  depends_on "gnutls" # Yes, it wants both ssl/tls variations
  depends_on "libgcrypt"
  depends_on "libxml2"
  depends_on "openssl@1.1"
  uses_from_macos "libxslt"

  on_macos do
    depends_on xcode: :build
  end

  # Add HOMEBREW_PREFIX/lib to dl load path
  patch :DATA

  # Fix -flat_namespace being used on Big Sur and later.
  patch do
    url "https://raw.githubusercontent.com/Homebrew/formula-patches/03cf8088210822aa2c1ab544ed58ea04c897d9c4/libtool/configure-big_sur.diff"
    sha256 "35acd6aebc19843f1a2b3a63e880baceb0f5278ab1ace661e57a502d9d78c93c"
  end

  def install
    args = ["--disable-dependency-tracking",
            "--prefix=#{prefix}",
            "--disable-crypto-dl",
            "--disable-apps-crypto-dl",
            "--with-nss=no",
            "--with-nspr=no",
            "--enable-mscrypto=no",
            "--enable-mscng=no",
            "--with-openssl=#{Formula["openssl@1.1"].opt_prefix}"]

    system "./configure", *args
    system "make", "install"
  end

  test do
    system "#{bin}/xmlsec1", "--version"
    system "#{bin}/xmlsec1-config", "--version"
  end
end

__END__
diff --git a/src/dl.c b/src/dl.c
index 6e8a56a..0e7f06b 100644
--- a/src/dl.c
+++ b/src/dl.c
@@ -141,6 +141,7 @@ xmlSecCryptoDLLibraryCreate(const xmlChar* name) {
     }

 #ifdef XMLSEC_DL_LIBLTDL
+    lt_dlsetsearchpath("HOMEBREW_PREFIX/lib");
     lib->handle = lt_dlopenext((char*)lib->filename);
     if(lib->handle == NULL) {
         xmlSecError(XMLSEC_ERRORS_HERE,
tmarshall commented 1 year ago

I've installed libxmlsec1 at 1.2.37 but still cannot get xmlsec to work properly:

>>> import xmlsec
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/tmarshall/.pyenv/versions/3.10.6/envs/app/lib/python3.10/site-packages/xmlsec.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace (_xmlSecAddIDs)
ADR-007 commented 1 year ago

I found this solution (works with libxmlsec1==1.3.1):

$(brew86 --prefix Python@3.10)/bin/python3.10 -m venv .venv
source .venv/bin/activate
export C_INCLUDE_PATH="$(brew86 --prefix libxml2)/include:$(brew86 --prefix libxmlsec1)/include:${C_INCLUDE_PATH}"
pip cache purge
python -m pip install xmlsec

# validate
python -c "import xmlsec"

Where brew86 is alias brew86="arch -x86_64 /usr/local/bin/brew"

amir0ff commented 1 year ago

brew edit seems to have broken in a recent update, so here's an even hackier workaround that almost fails but still got me what I needed:

Remove the official formula

> brew uninstall libxmlsec1
Uninstalling /opt/homebrew/Cellar/libxmlsec1/1.3.1_1... (220 files, 7.5MB)

Download the last known good formula and shove it into /tmp

> export DESIRED_SHA="7f35e6ede954326a10949891af2dba47bbe1fc17"

# ⚠️ this wget call will fail if you haven't exported DESIRED_SHA as in the preceding line
> wget -O /tmp/libxmlsec1.rb "https://raw.githubusercontent.com/Homebrew/homebrew-core/${DESIRED_SHA}/Formula/libxmlsec1.rb"

--2023-06-30 11:40:48--  https://raw.githubusercontent.com/Homebrew/homebrew-core/7f35e6ede954326a10949891af2dba47bbe1fc17/Formula/libxmlsec1.rb
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2932 (2.9K) [text/plain]
Saving to: ‘/tmp/libxmlsec1.rb’

/tmp/libxmlsec1.rb                          100%[=========================================================================================>]   2.86K  --.-KB/s    in 0s

2023-06-30 11:40:48 (25.9 MB/s) - ‘/tmp/libxmlsec1.rb’ saved [2932/2932]

Install the local copy of the last known good formula from /tmp

> brew install --formula /tmp/libxmlsec1.rb

==> Fetching libxmlsec1
==> Downloading https://ghcr.io/v2/homebrew/core/libxmlsec1/manifests/1.2.37
Already downloaded: /Users/daniel/Library/Caches/Homebrew/downloads/0cff6c77c178a7b4826e3146309166ec9d19a0a6580d47e5a1ebaf367cd6c7d0--libxmlsec1-1.2.37.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/libxmlsec1/blobs/sha256:26d6ebddf4e97431819583ad699228360886d81786b332084693d0ad34aa2c72
####################################################################################################################################################################### 100.0%
Warning: libxmlsec1 1.3.1_1 is available and more recent than version 1.2.37.
==> Pouring libxmlsec1--1.2.37.arm64_ventura.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libxmlsec1/1.2.37: 221 files, 6MB
==> Running `brew cleanup libxmlsec1`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /Users/daniel/Library/Caches/Homebrew/libxmlsec1--1.2.37... (1.2MB)

Thanks a lot, that worked for me!

mohd-akram commented 1 year ago

For MacPorts users:

sudo port install xmlsec-1.2
PKG_CONFIG_PATH=/opt/local/lib/xmlsec-1.2/lib/pkgconfig pip install xmlsec
neruson commented 1 year ago

In case it helps anyone, I ran into two issues with the workaround @D3X posted above:

  1. Invalid tap name when running brew tap-new $USER/local My $USER has a . in it, making it an invalid tap name, so I had to manually set a name.
  2. curl: (22) The requested URL returned error: 404 when running brew install $USER/local/libxmlsec1@1.2.37. The xmlsec tarball that brew downloads has moved into the older-releases directory with the release of version 1.2.38, so I needed to change the URL in the libxmlsec1.rb file.

This worked for me:

MYNAME=neruson
brew tap-new $MYNAME/local
brew extract --version=1.2.37 libxmlsec1 $MYNAME/local
sed -i '' 's^/xmlsec/download/^/xmlsec/download/older-releases/^g' /opt/homebrew/Library/Taps/$MYNAME/homebrew-local/Formula/libxmlsec1@1.2.37.rb
brew uninstall libxmlsec1
brew install $MYNAME/local/libxmlsec1@1.2.37
D3X commented 1 year ago

In case it helps anyone, I ran into two issues with the workaround @D3X posted above

Ugh, it's so annoying that this issue has been open for so long the workarounds stop working... Thanks for posting an updated solution!

fahedm commented 1 year ago

For Windows. I couldn't find a work around hence used WSL

I installed Ubuntu 22.04 on WSL and tried installing xmlsec there. But again same kind of issue.

Installed brew in Ubuntu, and followed the same workaround as written in comment

Now, I could install xmlsec.

Hopefully, in new version these issues with different platforms will be taken care.

fsargent commented 1 year ago

Shell one liner of @amir0ff's fix.

brew uninstall libxmlsec1
export DESIRED_SHA="7f35e6ede954326a10949891af2dba47bbe1fc17"
wget -O /tmp/libxmlsec1.rb "https://raw.githubusercontent.com/Homebrew/homebrew-core/${DESIRED_SHA}/Formula/libxmlsec1.rb"
brew install --formula /tmp/libxmlsec1.rb
KaziOneflow commented 1 year ago

I am using 2,3 GHz Quad-Core Intel Core i7 with macOS 13.4.1. For me the workaround was https://github.com/xmlsec/python-xmlsec/issues/254#issuecomment-1511135314 with a combination of https://stackoverflow.com/a/76639165

iam-mhaseeb commented 9 months ago

brew edit seems to have broken in a recent update, so here's an even hackier workaround that almost fails but still got me what I needed:

Remove the official formula

> brew uninstall libxmlsec1
Uninstalling /opt/homebrew/Cellar/libxmlsec1/1.3.1_1... (220 files, 7.5MB)

Download the last known good formula and shove it into /tmp

> export DESIRED_SHA="7f35e6ede954326a10949891af2dba47bbe1fc17"

# ⚠️ this wget call will fail if you haven't exported DESIRED_SHA as in the preceding line
> wget -O /tmp/libxmlsec1.rb "https://raw.githubusercontent.com/Homebrew/homebrew-core/${DESIRED_SHA}/Formula/libxmlsec1.rb"

--2023-06-30 11:40:48--  https://raw.githubusercontent.com/Homebrew/homebrew-core/7f35e6ede954326a10949891af2dba47bbe1fc17/Formula/libxmlsec1.rb
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2932 (2.9K) [text/plain]
Saving to: ‘/tmp/libxmlsec1.rb’

/tmp/libxmlsec1.rb                          100%[=========================================================================================>]   2.86K  --.-KB/s    in 0s

2023-06-30 11:40:48 (25.9 MB/s) - ‘/tmp/libxmlsec1.rb’ saved [2932/2932]

Install the local copy of the last known good formula from /tmp

> brew install --formula /tmp/libxmlsec1.rb

==> Fetching libxmlsec1
==> Downloading https://ghcr.io/v2/homebrew/core/libxmlsec1/manifests/1.2.37
Already downloaded: /Users/daniel/Library/Caches/Homebrew/downloads/0cff6c77c178a7b4826e3146309166ec9d19a0a6580d47e5a1ebaf367cd6c7d0--libxmlsec1-1.2.37.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/libxmlsec1/blobs/sha256:26d6ebddf4e97431819583ad699228360886d81786b332084693d0ad34aa2c72
####################################################################################################################################################################### 100.0%
Warning: libxmlsec1 1.3.1_1 is available and more recent than version 1.2.37.
==> Pouring libxmlsec1--1.2.37.arm64_ventura.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libxmlsec1/1.2.37: 221 files, 6MB
==> Running `brew cleanup libxmlsec1`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /Users/daniel/Library/Caches/Homebrew/libxmlsec1--1.2.37... (1.2MB)

For M2 (Silicon chip) I had to run:

arch -arm64 brew install --formula /tmp/libxmlsec1.rb
jameshfisher commented 7 months ago

@bgaifullin I see this issue was fixed by https://github.com/xmlsec/python-xmlsec/pull/264, but I'm not sure how to access this fix. I see at https://pypi.org/project/xmlsec/#history that the latest release is 1.3.13 from 2022. Will there be a new release containing this fix?

karthicraghupathi commented 6 months ago

A "better" (cleaner) workaround is to create a local tap and extract the previous version, like so:

brew tap-new $USER/local
brew extract --version=1.2.37 libxmlsec1 $USER/local
brew uninstall libxmlsec1
brew install $USER/local/libxmlsec1@1.2.37

Once python-xmlsec is updated to support libxmlsec1 1.3+, you can uninstall the extracted version and remove the tap by doing:

brew uninstall $USER/local/libxmlsec1@1.2.37
brew untap $USER/local

I prefer this method. However I ran into this error when I ran these commands:

==> Downloading https://www.aleksey.com/xmlsec/download/xmlsec1-1.2.37.tar.gz
curl: (22) The requested URL returned error: 404

Error: libxmlsec1@1.2.37: Failed to download resource "libxmlsec1@1.2.37"
Download failed: https://www.aleksey.com/xmlsec/download/xmlsec1-1.2.37.tar.gz

The package's URL has now changed. It is present in older-releases. To fix this, run the following command:

brew edit $USER/local/libxmlsec1@1.2.37

And make the following changes:

...
  #url "https://www.aleksey.com/xmlsec/download/xmlsec1-1.2.37.tar.gz"
  url "https://www.aleksey.com/xmlsec/download/older-releases/xmlsec1-1.2.37.tar.gz"
...

Once these changes are complete, you can re-run the following to complete installation:

brew install $USER/local/libxmlsec1@1.2.37
wind-shift commented 5 months ago

It’s been a year and the issue is still not fixed on macos, requiring the user to use the abovementionned work-around Any hope to have the xmlsec build fixed at some point ?

DavidQuartz commented 5 months ago

I have this same issue. Is there any luck this would be fixed in the package without us having to resort to a workaround for MacOS?

vdejager commented 5 months ago

Same issue here. Its used in several SAML solutions, hampering implementation of single sign on modules

Op wo 17 apr 2024 om 13:27 schreef David Z Quartz @.***>

I have this same issue. Is there any luck this would be fixed in the package without us having to resort to a workaround for MacOS?

— Reply to this email directly, view it on GitHub https://github.com/xmlsec/python-xmlsec/issues/254#issuecomment-2061040212, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADRXHZ6UXHSOZLLEUSRURK3Y5ZMBVAVCNFSM6AAAAAAW5S7VYOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANRRGA2DAMRRGI . You are receiving this because you commented.Message ID: @.***>

mxamin commented 5 months ago

This is gonna be resolved in the new version, see https://github.com/xmlsec/python-xmlsec/issues/284

jffiorillo commented 1 month ago

I'm still having this issue, is it meant to be fixed?