Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Odd path calculation with --hl2sdk-manifests with sample plugin #154

Closed
zer0k-z opened this issue Dec 13, 2023 · 5 comments
Closed

Odd path calculation with --hl2sdk-manifests with sample plugin #154

zer0k-z opened this issue Dec 13, 2023 · 5 comments

Comments

@zer0k-z
Copy link
Contributor

zer0k-z commented Dec 13, 2023

Given the folder structure below, running the following command inside the build folder will result in the script trying to find hl2sdk-manifests in plugin/hl2sdk-manifests instead.

python3 ../configure.py --hl2sdk-root <hl2sdk root> --mms_path "../metamod-source" --hl2sdk-manifest "../hl2sdk-manifests" -s cs2 --targets x86_64

|--plugin
  |-- sample_mm2
      |-- AMBuildScript
      |-- AMBuilder
      |-- PackageScript
      |-- README.md
      |-- build
      |-- configure.py
      |-- hl2sdk-manifests
      |-- metamod-source
      |-- sample_mm.cpp
      `-- sample_mm.h
@inolen
Copy link

inolen commented Dec 14, 2023

Also having some odd issues with this.

If I try to use absolute paths, e.g. -

~/projects/mm-test/build$ python3 ../configure.py --plugin-name=mm-test --plugin-alias=test --sdks=cs2 --targets=x86_64 --mms_path=/home/inolen/projects/metamod-source/ --hl2sdk-root=/home/inolen/projects/hl2sdk/ --hl2sdk-manifests=/home/inolen/projects/hl2sdk-manifests/

I end up with

No such file or directory: '/home/inolen/projects/mm-test/home/inolen/projects/hl2sdk-manifests/SdkHelpers.ambuild'

which seems to be caused by some path computation down inside of AMBuild.

If I try to use a relative path, e.g. -

~/projects/mm-test/build$ python3 ../configure.py --plugin-name=mm-test--plugin-alias=test--sdks=cs2 --targets=x86_64 --mms_path=/home/inolen/projects/metamod-source/ --hl2sdk-root=/home/inolen/projects/hl2sdk/ --hl2sdk-manifests=../../hl2sdk-manifests/

I end up with

FileNotFoundError: [Errno 2] No such file or directory: '/home/inolen/hl2sdk-manifests/SdkHelpers.ambuild'

which I assume is because the relative path ends up being relative to configure.py, however if I try to adjust for that, e.g. -

~/projects/mm-test/build$ python3 ../configure.py --plugin-name=mm-test--plugin-alias=test--sdks=cs2 --targets=x86_64 --mms_path=/home/inolen/projects/metamod-source/ --hl2sdk-root=/home/inolen/projects/hl2sdk/ --hl2sdk-manifests=../hl2sdk-manifests/

it gets further, but I end up with

FileNotFoundError: [Errno 2] No such file or directory: '/home/inolen/projects/mm-test/hl2sdk-manifests/manifests'

where the path is seemingly relative to the build directory for this path computation (not configure.py).

@inolen
Copy link

inolen commented Dec 14, 2023

More closely read -

5ccaa37

and I realized the hl2sdk-manifests module needs to be accessible from the directory containing configure.py, and the path you're passing the command line needs to be relative to that seemingly.

@JeremiahK96
Copy link

JeremiahK96 commented May 2, 2024

Has anybody found a solution to this? I am trying to compile s2_sample_mm like so:

cd metamod-source/samples/s2_sample_mm
mkdir build
cd build
python ../configure.py -s insurgency --mms_path /mnt/hdd/alliedmodders/metamod-source/ --hl2sdk-root /mnt/hdd/alliedmodders/ --hl2sdk-manifests /mnt/hdd/alliedmodders/metamod-source/hl2sdk-manifests/

This fails with this output:
Configure failed: [Errno 2] No such file or directory: '/mnt/hdd/alliedmodders/metamod-source/samples/s2_sample_mm/mnt/hdd/alliedmodders/metamod-source/hl2sdk-manifests/SdkHelpers.ambuild'

I tried using a relative path for --hl2sdk-manifests by going up 2 directories:
--hl2sdk-manifests ../../
.....
Configure failed: [Errno 2] No such file or directory: '/mnt/hdd/alliedmodders/metamod-source/SdkHelpers.ambuild'

Almost there! So I tried this:
--hl2sdk-manifests ../../hl2sdk-manifests/
.....
Configure failed: [Errno 2] No such file or directory: '/mnt/hdd/alliedmodders/metamod-source/samples/s2_sample_mm/hl2sdk-manifests/manifests'

This is really frustrating. After 2 weeks of messing around late 2023, I finally managed to compile a basic "Hello World" MM:S plugin, but now I can't remember how I did it. I believe I was using somebody's personal MM:S template repo. I'll have to see if I can find the upstream URL for it...

@JeremiahK96
Copy link

I found it, here is the template repo I used before:
https://github.com/nosoop/mmsplugin-base

I was able to compile it like this:

git clone https://github.com/nosoop/mmsplugin-base
mkdir mmsplugin-base/build
cd mmsplugin-base/build
python ../configure.py -s insurgency --hl2sdk-root /mnt/hdd/alliedmodders --mms_path /mnt/hdd/alliedmodders/metamod-source

This gives an error:

File "/home/user/code/source/metamod/test/mmsplugin-base/AMBuildScript", line 168, in configure
    cxx.cflags += proj_c_flags
                  ^^^^^^^^^^^^
NameError: name 'proj_c_flags' is not defined
Configure failed: name 'proj_c_flags' is not defined

To fix this, I just commented out line 168 of ../AMBuildScript and that did the trick.

python ../configure.py -s insurgency --hl2sdk-root /mnt/hdd/alliedmodders --mms_path /mnt/hdd/alliedmodders/metamod-source
ambuild

I don't know if this info will help anyone, but I hope it might!

@psychonic
Copy link
Member

This has now been addressed with the below. The hl2sdk-manifests directory should be able to live anywhere now, as long as a valid path is given, and relative paths are now better supported for that directory, as well as MM:S's and the SDK root.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants